estela 0.1.18 → 0.1.20
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/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/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +29 -6
- package/dist/server.js.map +1 -1
- package/dist/server.test.d.ts +2 -0
- package/dist/server.test.d.ts.map +1 -0
- package/dist/server.test.js +125 -0
- package/dist/server.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/dist/web-ui.test.js +96 -7
- package/dist/web-ui.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 +5 -2
- package/web/app.js +213 -223
- package/web/i18n.js +635 -0
- package/web/index.html +40 -34
- package/web/lib.js +33 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jose Daniel Leon Ruiz
|
|
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/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.
|