estela 0.1.17 → 0.1.19
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/LICENSE +21 -0
- package/README.md +21 -0
- package/dist/billing/amortize.test.js +1 -1
- package/dist/billing/amortize.test.js.map +1 -1
- package/dist/billing/format.test.js +1 -1
- package/dist/billing/format.test.js.map +1 -1
- package/dist/billing/invoice.test.js +19 -19
- package/dist/billing/invoice.test.js.map +1 -1
- package/dist/billing/sessionize.test.js +1 -1
- package/dist/billing/sessionize.test.js.map +1 -1
- package/dist/bin.d.ts +19 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +37 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -2
- package/dist/cli.js.map +1 -1
- package/dist/export/panel.test.js +8 -8
- package/dist/export/panel.test.js.map +1 -1
- package/dist/export/pdf.test.js +4 -4
- package/dist/export/pdf.test.js.map +1 -1
- package/dist/export/share.test.js +3 -3
- package/dist/export/share.test.js.map +1 -1
- package/dist/metrics/people.d.ts +9 -9
- package/dist/metrics/people.js +14 -14
- package/dist/metrics/people.js.map +1 -1
- package/dist/metrics/people.test.js +49 -41
- package/dist/metrics/people.test.js.map +1 -1
- package/dist/metrics/team.test.js +1 -1
- package/dist/metrics/team.test.js.map +1 -1
- package/dist/node-version.d.ts +8 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +26 -0
- package/dist/node-version.js.map +1 -0
- package/dist/node-version.test.d.ts +2 -0
- package/dist/node-version.test.d.ts.map +1 -0
- package/dist/node-version.test.js +35 -0
- package/dist/node-version.test.js.map +1 -0
- package/dist/setup.test.js +1 -1
- package/dist/setup.test.js.map +1 -1
- package/dist/sync/team.test.js +8 -8
- package/dist/sync/team.test.js.map +1 -1
- package/dist/team.test.js +8 -8
- package/dist/team.test.js.map +1 -1
- package/node_modules/@estela/shared/dist/types.d.ts +3 -2
- package/node_modules/@estela/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@estela/shared/dist/types.js.map +1 -1
- package/package.json +6 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 JD León
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -145,3 +145,24 @@ node --test packages/daemon/dist/**/*.test.js
|
|
|
145
145
|
Node 22 y **cero dependencias de runtime**, a propósito: nadie instala un
|
|
146
146
|
programa que lee sus transcripts si no puede auditarlo, y una lista de
|
|
147
147
|
dependencias vacía se audita en una tarde.
|
|
148
|
+
|
|
149
|
+
## Código abierto, servicio cerrado
|
|
150
|
+
|
|
151
|
+
Todo el programa que se instala en tu máquina es abierto y está bajo licencia
|
|
152
|
+
MIT: el CLI, lo que lee tus transcripts y tu git, lo que calcula las horas y
|
|
153
|
+
el coste, y el panel que abre `estela web`. Es exactamente lo que descarga
|
|
154
|
+
`npm install estela`, y puedes leerlo en
|
|
155
|
+
[github.com/jdleonruiz/estela-cli](https://github.com/jdleonruiz/estela-cli).
|
|
156
|
+
|
|
157
|
+
Lo que **no** está aquí es el servicio de pago: el servidor que sincroniza
|
|
158
|
+
entre tus máquinas y el que sostiene los proyectos de equipo. Eso es cerrado,
|
|
159
|
+
y es de lo que vive el proyecto.
|
|
160
|
+
|
|
161
|
+
La división no es casual. El plan gratuito funciona entero sin cuenta, sin
|
|
162
|
+
tarjeta y sin red, y esa afirmación no vale nada si tienes que creértela: con
|
|
163
|
+
el código delante puedes comprobar tú mismo que nada sale de tu máquina.
|
|
164
|
+
|
|
165
|
+
Las fixtures de los tests son inventadas a propósito. Los casos vienen de
|
|
166
|
+
repositorios reales —por eso cubren líos que a nadie se le ocurrirían— pero
|
|
167
|
+
ni la plantilla de un cliente ni cuánto commitea cada persona de su equipo
|
|
168
|
+
son cosas que deban viajar en un repositorio público.
|
|
@@ -37,7 +37,7 @@ const CLAUDE_MAX = {
|
|
|
37
37
|
(0, node_test_1.test)("el trabajo sin asignar a proyecto también diluye la cuota", () => {
|
|
38
38
|
// El fallo que esto previene: con un solo proyecto configurado y el 90% del
|
|
39
39
|
// consumo en repos sin registrar, ese proyecto cargaba con la cuota entera.
|
|
40
|
-
const shares = (0, amortize_js_1.amortize)([{ projectId: "
|
|
40
|
+
const shares = (0, amortize_js_1.amortize)([{ projectId: "nebula", month: "2026-08", consumption: { microUsd: 10_000_000 } }], [CLAUDE_MAX], new Map([["2026-08", { microUsd: 100_000_000 }]])); // total real de la máquina
|
|
41
41
|
strict_1.default.equal(shares[0].share, 0.1);
|
|
42
42
|
strict_1.default.equal((0, shared_1.formatMoney)(shares[0].amount), "$20,00");
|
|
43
43
|
strict_1.default.equal(shares[0].monthTotal.microUsd, 100_000_000, "el denominador es el consumo real de la máquina, no la suma de proyectos");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amortize.test.js","sourceRoot":"","sources":["../../src/billing/amortize.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,yCAAiC;AAGjC,2CAAgE;AAEhE,+CAAgF;AAEhF,MAAM,UAAU,GAAiB;IAC/B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY;IACpC,UAAU,EAAE,IAAA,mBAAU,EAAC,KAAK,EAAE,KAAK,CAAC;IACpC,aAAa,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,IAAI;CACnE,CAAC;AAEF,IAAA,gBAAI,EAAC,2CAA2C,EAAE,GAAG,EAAE;IACrD,MAAM,MAAM,GAAG,IAAA,sBAAQ,EAAC;QACtB,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM;QACnF,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM;KACpF,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAE,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAE,CAAC;IAEnD,gBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,gBAAM,CAAC,KAAK,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/C,gBAAM,CAAC,KAAK,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9C,gBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,gFAAgF;IAChF,MAAM,MAAM,GAAG,IAAA,sBAAQ,EAAC;QACtB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;QACjF,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;KACvF,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAE,CAAC;IAC/D,gBAAM,CAAC,KAAK,CAAC,IAAA,oBAAW,EAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IACrD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,2DAA2D,EAAE,GAAG,EAAE;IACrE,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,MAAM,GAAG,IAAA,sBAAQ,EACrB,CAAC,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"amortize.test.js","sourceRoot":"","sources":["../../src/billing/amortize.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,7 @@ function entryId(projectId, startedAt, branch) {
|
|
|
89
89
|
// y el servidor con localDate(). Para el mismo bloque salían dos ids, así que
|
|
90
90
|
// en vez de actualizar una fila se creaba otra y el día se contaba doble.
|
|
91
91
|
const tarde = new Date("2026-08-27T02:49:59Z"); // 21:49 del 26 en UTC-5
|
|
92
|
-
const id = entryId("
|
|
92
|
+
const id = entryId("nebula", tarde, "feature/x");
|
|
93
93
|
strict_1.default.ok(id.includes((0, shared_1.localDate)(tarde)), "el id lleva la fecha local");
|
|
94
94
|
if (tarde.getTimezoneOffset() > 0) {
|
|
95
95
|
strict_1.default.ok(!id.includes(tarde.toISOString().slice(0, 10)), "y no la UTC, que aquí es el día siguiente");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../src/billing/format.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../src/billing/format.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,20 +8,20 @@ const node_test_1 = require("node:test");
|
|
|
8
8
|
const shared_1 = require("@estela/shared");
|
|
9
9
|
const invoice_js_1 = require("./invoice.js");
|
|
10
10
|
// El caso real: freelance, proyecto por horas, 13 EUR/hora pactados.
|
|
11
|
-
const
|
|
12
|
-
id: "
|
|
11
|
+
const NEBULA = {
|
|
12
|
+
id: "nebula", name: "Nebula", currency: "EUR", taxId: "B-12345678",
|
|
13
13
|
};
|
|
14
14
|
const PROYECTO = {
|
|
15
|
-
id: "
|
|
16
|
-
clientId: "
|
|
17
|
-
name: "
|
|
18
|
-
repoPaths: ["/
|
|
15
|
+
id: "portal-ventas",
|
|
16
|
+
clientId: "nebula",
|
|
17
|
+
name: "Portal Ventas",
|
|
18
|
+
repoPaths: ["/home/dev/proyectos/portal-ventas"],
|
|
19
19
|
billable: true,
|
|
20
20
|
roundingMinutes: 0,
|
|
21
21
|
aiCostPolicy: "absorbed", kind: "client",
|
|
22
22
|
};
|
|
23
23
|
const TARIFA = {
|
|
24
|
-
projectId: "
|
|
24
|
+
projectId: "portal-ventas",
|
|
25
25
|
hourlyRate: (0, shared_1.money)(1300, "EUR"), // 13,00 EUR/hora
|
|
26
26
|
effectiveFrom: new Date("2025-01-01T00:00:00Z"),
|
|
27
27
|
effectiveTo: null,
|
|
@@ -29,7 +29,7 @@ const TARIFA = {
|
|
|
29
29
|
function entry(id, startIso, seconds, microUsd = 0) {
|
|
30
30
|
const startedAt = new Date(startIso);
|
|
31
31
|
return {
|
|
32
|
-
id, projectId: "
|
|
32
|
+
id, projectId: "portal-ventas", startedAt,
|
|
33
33
|
endedAt: new Date(startedAt.getTime() + seconds * 1000),
|
|
34
34
|
seconds, description: `Bloque ${id}`, billable: true, invoiceId: null,
|
|
35
35
|
aiCost: { microUsd }, agentSeconds: seconds, commitHashes: [], agents: ["claude-code"],
|
|
@@ -81,11 +81,11 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
81
81
|
(0, node_test_1.test)("subir la tarifa no reescribe lo ya trabajado", () => {
|
|
82
82
|
const rates = [
|
|
83
83
|
{ ...TARIFA, effectiveTo: new Date("2026-06-01T00:00:00Z") },
|
|
84
|
-
{ projectId: "
|
|
84
|
+
{ projectId: "portal-ventas", hourlyRate: (0, shared_1.money)(1600, "EUR"),
|
|
85
85
|
effectiveFrom: new Date("2026-06-01T00:00:00Z"), effectiveTo: null },
|
|
86
86
|
];
|
|
87
|
-
strict_1.default.equal((0, invoice_js_1.rateAt)(rates, "
|
|
88
|
-
strict_1.default.equal((0, invoice_js_1.rateAt)(rates, "
|
|
87
|
+
strict_1.default.equal((0, invoice_js_1.rateAt)(rates, "portal-ventas", new Date("2026-03-15T10:00:00Z")).amount, 1300);
|
|
88
|
+
strict_1.default.equal((0, invoice_js_1.rateAt)(rates, "portal-ventas", new Date("2026-08-15T10:00:00Z")).amount, 1600);
|
|
89
89
|
});
|
|
90
90
|
// ---------------------------------------------------------------------------
|
|
91
91
|
// Emisión
|
|
@@ -97,7 +97,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
97
97
|
entry("c", "2026-08-28T09:00:00Z", 3600), // después del corte
|
|
98
98
|
];
|
|
99
99
|
const invoice = (0, invoice_js_1.issueInvoice)({
|
|
100
|
-
client:
|
|
100
|
+
client: NEBULA, project: PROYECTO, rates: [TARIFA], entries,
|
|
101
101
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-001",
|
|
102
102
|
});
|
|
103
103
|
strict_1.default.equal(invoice.lines.length, 2);
|
|
@@ -108,7 +108,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
108
108
|
});
|
|
109
109
|
(0, node_test_1.test)("el coste de IA se registra aunque no se facture", () => {
|
|
110
110
|
const invoice = (0, invoice_js_1.issueInvoice)({
|
|
111
|
-
client:
|
|
111
|
+
client: NEBULA, project: PROYECTO, rates: [TARIFA],
|
|
112
112
|
entries: [entry("a", "2026-08-10T09:00:00Z", 3600, 8_016_665)],
|
|
113
113
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-002",
|
|
114
114
|
});
|
|
@@ -119,7 +119,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
119
119
|
(0, node_test_1.test)("repercutir IA en EUR exige tipo de cambio explícito", () => {
|
|
120
120
|
const passthrough = { ...PROYECTO, aiCostPolicy: "passthrough" };
|
|
121
121
|
const input = {
|
|
122
|
-
client:
|
|
122
|
+
client: NEBULA, project: passthrough, rates: [TARIFA],
|
|
123
123
|
entries: [entry("a", "2026-08-10T09:00:00Z", 3600, 10_000_000)], // $10
|
|
124
124
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-003",
|
|
125
125
|
};
|
|
@@ -132,7 +132,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
132
132
|
(0, node_test_1.test)("una tarifa en otra moneda que la del cliente se rechaza en vez de convertirse", () => {
|
|
133
133
|
const rateUsd = { ...TARIFA, hourlyRate: (0, shared_1.money)(1300, "USD") };
|
|
134
134
|
strict_1.default.throws(() => (0, invoice_js_1.issueInvoice)({
|
|
135
|
-
client:
|
|
135
|
+
client: NEBULA, project: PROYECTO, rates: [rateUsd],
|
|
136
136
|
entries: [entry("a", "2026-08-10T09:00:00Z", 3600)],
|
|
137
137
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-004",
|
|
138
138
|
}), /USD.*EUR|EUR.*USD/);
|
|
@@ -155,7 +155,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
155
155
|
});
|
|
156
156
|
(0, node_test_1.test)("sin tarifa definida, error claro en vez de factura a cero", () => {
|
|
157
157
|
strict_1.default.throws(() => (0, invoice_js_1.issueInvoice)({
|
|
158
|
-
client:
|
|
158
|
+
client: NEBULA, project: PROYECTO, rates: [],
|
|
159
159
|
entries: [entry("a", "2026-08-10T09:00:00Z", 3600)],
|
|
160
160
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-006",
|
|
161
161
|
}), /Sin tarifa vigente/);
|
|
@@ -166,7 +166,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
166
166
|
entry("b", "2026-08-11T09:00:00Z", 3600),
|
|
167
167
|
];
|
|
168
168
|
const invoice = (0, invoice_js_1.issueInvoice)({
|
|
169
|
-
client:
|
|
169
|
+
client: NEBULA, project: PROYECTO, rates: [TARIFA], entries,
|
|
170
170
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-007",
|
|
171
171
|
});
|
|
172
172
|
strict_1.default.equal(invoice.lines.length, 1);
|
|
@@ -174,7 +174,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
174
174
|
});
|
|
175
175
|
(0, node_test_1.test)("margen real tras descontar la IA", () => {
|
|
176
176
|
const invoice = (0, invoice_js_1.issueInvoice)({
|
|
177
|
-
client:
|
|
177
|
+
client: NEBULA, project: PROYECTO, rates: [TARIFA],
|
|
178
178
|
entries: [entry("a", "2026-08-10T09:00:00Z", 36_000, 8_016_665)], // 10 h, $8,02 de IA
|
|
179
179
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-008",
|
|
180
180
|
});
|
|
@@ -193,7 +193,7 @@ function entry(id, startIso, seconds, microUsd = 0) {
|
|
|
193
193
|
});
|
|
194
194
|
(0, node_test_1.test)("sin horas pendientes, error explicativo", () => {
|
|
195
195
|
strict_1.default.throws(() => (0, invoice_js_1.issueInvoice)({
|
|
196
|
-
client:
|
|
196
|
+
client: NEBULA, project: PROYECTO, rates: [TARIFA], entries: [],
|
|
197
197
|
cutoffAt: new Date("2026-08-25T23:59:59Z"), number: "F-2026-009",
|
|
198
198
|
}), invoice_js_1.InvoiceError);
|
|
199
199
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice.test.js","sourceRoot":"","sources":["../../src/billing/invoice.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,yCAAiC;AAGjC,2CAEwB;AAExB,6CAA4E;AAE5E,qEAAqE;AACrE,MAAM,
|
|
1
|
+
{"version":3,"file":"invoice.test.js","sourceRoot":"","sources":["../../src/billing/invoice.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,7 +88,7 @@ function commit(hash, iso, repo = "/r", branch = "main") {
|
|
|
88
88
|
// Por ruta —lo que hacía antes— salen dos, y con el mismo id se pisarían.
|
|
89
89
|
strict_1.default.equal((0, sessionize_js_1.groupByBranchAndDay)(bloques).length, 2);
|
|
90
90
|
// Por proyecto sale uno solo, con la suma de los dos.
|
|
91
|
-
const porProyecto = (0, sessionize_js_1.groupByBranchAndDay)(bloques, () => "
|
|
91
|
+
const porProyecto = (0, sessionize_js_1.groupByBranchAndDay)(bloques, () => "portal-ventas");
|
|
92
92
|
strict_1.default.equal(porProyecto.length, 1, "un proyecto, un día y una rama son UN concepto");
|
|
93
93
|
strict_1.default.equal(porProyecto[0].seconds, bloques.reduce((t, b) => t + b.seconds, 0), "no se puede perder ni un segundo por abrir el agente en otra carpeta");
|
|
94
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionize.test.js","sourceRoot":"","sources":["../../src/billing/sessionize.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionize.test.js","sourceRoot":"","sources":["../../src/billing/sessionize.test.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Punto de entrada real del CLI — antes lo era `cli.ts` directamente.
|
|
4
|
+
*
|
|
5
|
+
* `cli.ts` importa (transitivamente, a través de `db/schema.ts`) `node:sqlite`,
|
|
6
|
+
* que no existe antes de Node 22.5. En un Node más viejo eso revienta con
|
|
7
|
+
* `ERR_UNKNOWN_BUILTIN_MODULE` y una traza interna larga, con pinta de bug del
|
|
8
|
+
* programa — no de "actualiza tu Node". `npm` ya avisa de la versión mínima
|
|
9
|
+
* (`engines` en package.json), pero ese aviso es una línea gris entre mucho
|
|
10
|
+
* ruido de instalación, y casi nadie la lee antes de ver el error de verdad.
|
|
11
|
+
*
|
|
12
|
+
* Este fichero no importa nada más que módulos que existen en cualquier Node
|
|
13
|
+
* con soporte a ES modules — la comprobación tiene que poder correr y fallar
|
|
14
|
+
* con claridad ANTES de que el `import` de `cli.js` llegue a `node:sqlite`.
|
|
15
|
+
* `import()` dinámico, no estático: un `import` de arriba del fichero se
|
|
16
|
+
* resolvería antes de que este código tuviera ocasión de comprobar nada.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Punto de entrada real del CLI — antes lo era `cli.ts` directamente.
|
|
5
|
+
*
|
|
6
|
+
* `cli.ts` importa (transitivamente, a través de `db/schema.ts`) `node:sqlite`,
|
|
7
|
+
* que no existe antes de Node 22.5. En un Node más viejo eso revienta con
|
|
8
|
+
* `ERR_UNKNOWN_BUILTIN_MODULE` y una traza interna larga, con pinta de bug del
|
|
9
|
+
* programa — no de "actualiza tu Node". `npm` ya avisa de la versión mínima
|
|
10
|
+
* (`engines` en package.json), pero ese aviso es una línea gris entre mucho
|
|
11
|
+
* ruido de instalación, y casi nadie la lee antes de ver el error de verdad.
|
|
12
|
+
*
|
|
13
|
+
* Este fichero no importa nada más que módulos que existen en cualquier Node
|
|
14
|
+
* con soporte a ES modules — la comprobación tiene que poder correr y fallar
|
|
15
|
+
* con claridad ANTES de que el `import` de `cli.js` llegue a `node:sqlite`.
|
|
16
|
+
* `import()` dinámico, no estático: un `import` de arriba del fichero se
|
|
17
|
+
* resolvería antes de que este código tuviera ocasión de comprobar nada.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
const node_version_js_1 = require("./node-version.js");
|
|
21
|
+
const MIN_NODE = "22.5.0";
|
|
22
|
+
if ((0, node_version_js_1.tooOld)(process.version, MIN_NODE)) {
|
|
23
|
+
console.error(`\nEstela necesita Node ${MIN_NODE} o superior — tienes ${process.version} instalado.\n` +
|
|
24
|
+
`Actualiza con nvm (nvm install --lts) o desde https://nodejs.org, y vuelve a intentarlo.\n`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Este paquete compila a CommonJS (no admite `await` de nivel superior), así
|
|
29
|
+
// que un `import()` dinámico sigue siendo una promesa normal aquí — no algo
|
|
30
|
+
// que haya que esperar: `cli.js` arranca solo en cuanto se carga (termina en
|
|
31
|
+
// `main().catch(...)`), este `catch` es solo para un fallo de carga en sí.
|
|
32
|
+
void import("./cli.js").catch((error) => {
|
|
33
|
+
console.error(error);
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;GAeG;;AAEH,uDAA2C;AAE3C,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,IAAI,IAAA,wBAAM,EAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,KAAK,CACX,0BAA0B,QAAQ,wBAAwB,OAAO,CAAC,OAAO,eAAe;QACxF,4FAA4F,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAsCA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAsCA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA40CpD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -80,6 +80,11 @@ estela — registro de horas para desarrollo asistido por IA
|
|
|
80
80
|
Reconstruye tu historial desde los transcripts de los agentes y git.
|
|
81
81
|
|
|
82
82
|
estela client add --id <id> --name <nombre> --currency <EUR|USD|...>
|
|
83
|
+
[--tax-id <NIF/CIF>] [--email <a@b.com>]
|
|
84
|
+
--tax-id y --email son los datos del cliente que saldrán impresos en
|
|
85
|
+
el informe de "estela report". Repetir el comando con el mismo --id
|
|
86
|
+
reescribe la ficha entera: vuelve a pasar todo lo que quieras
|
|
87
|
+
conservar, lo que omitas se queda vacío.
|
|
83
88
|
estela project add --id <id> --client <id> --name <nombre> --repo <ruta>
|
|
84
89
|
[--rounding <min>] [--ai-cost absorbed|passthrough]
|
|
85
90
|
estela rate set --project <id> --rate <importe> [--from YYYY-MM-DD]
|
|
@@ -154,9 +159,10 @@ estela — registro de horas para desarrollo asistido por IA
|
|
|
154
159
|
estela team revoke --token <token>
|
|
155
160
|
Quita a alguien del equipo. Si pagas Teams, baja lo que se cobra.
|
|
156
161
|
|
|
157
|
-
estela upgrade --plan pro|teams
|
|
162
|
+
estela upgrade --plan pro|teams [--annual]
|
|
158
163
|
Da de alta el plan. Imprime un enlace de Stripe Checkout — el pago
|
|
159
|
-
se completa ahí, nunca en la terminal.
|
|
164
|
+
se completa ahí, nunca en la terminal. --annual cobra el año de una
|
|
165
|
+
vez, con dos meses de descuento frente al mensual.
|
|
160
166
|
estela billing portal
|
|
161
167
|
Cambiar de tarjeta o cancelar. Lo hace Stripe, no nosotros.
|
|
162
168
|
estela account
|
|
@@ -166,9 +172,16 @@ estela — registro de horas para desarrollo asistido por IA
|
|
|
166
172
|
|
|
167
173
|
estela report --project <id> --cutoff YYYY-MM-DD [--dry-run]
|
|
168
174
|
[--pdf <fichero.pdf>] [--csv <fichero.csv>] [--fx <tipo>]
|
|
175
|
+
[--number <nº>]
|
|
169
176
|
[--from-name <tu nombre>] [--from-email <email>]
|
|
177
|
+
[--from-tax-id <tu NIF/CIF>]
|
|
170
178
|
Informe de horas y commits para respaldar tu trabajo. No es una
|
|
171
179
|
factura: Estela no emite documentos fiscales.
|
|
180
|
+
--number fija el número del informe; sin él se numera solo y
|
|
181
|
+
correlativo por año (INF-${new Date().getFullYear()}-001, -002...).
|
|
182
|
+
Los --from-* son tus datos como emisor, en la cabecera del PDF.
|
|
183
|
+
Necesitan --from-name: sin nombre no se imprime ese bloque, y
|
|
184
|
+
--from-tax-id y --from-email se ignoran.
|
|
172
185
|
|
|
173
186
|
Opciones globales: --db <ruta> (por defecto ${schema_js_1.DEFAULT_DB_PATH})
|
|
174
187
|
--version Solo imprime la versión instalada.
|