estela 0.2.0 → 0.2.1
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 +2 -1
- package/dist/statusline.js +34 -21
- package/package.json +3 -1
- package/dist/billing/amortize.d.ts.map +0 -1
- package/dist/billing/amortize.js.map +0 -1
- package/dist/billing/amortize.test.d.ts +0 -2
- package/dist/billing/amortize.test.d.ts.map +0 -1
- package/dist/billing/amortize.test.js +0 -121
- package/dist/billing/amortize.test.js.map +0 -1
- package/dist/billing/assign.d.ts.map +0 -1
- package/dist/billing/assign.js.map +0 -1
- package/dist/billing/assign.test.d.ts +0 -2
- package/dist/billing/assign.test.d.ts.map +0 -1
- package/dist/billing/assign.test.js +0 -153
- package/dist/billing/assign.test.js.map +0 -1
- package/dist/billing/format.test.d.ts +0 -2
- package/dist/billing/format.test.d.ts.map +0 -1
- package/dist/billing/format.test.js +0 -110
- package/dist/billing/format.test.js.map +0 -1
- package/dist/billing/invoice.d.ts.map +0 -1
- package/dist/billing/invoice.js.map +0 -1
- package/dist/billing/invoice.test.d.ts +0 -2
- package/dist/billing/invoice.test.d.ts.map +0 -1
- package/dist/billing/invoice.test.js +0 -200
- package/dist/billing/invoice.test.js.map +0 -1
- package/dist/billing/localize.d.ts.map +0 -1
- package/dist/billing/localize.js.map +0 -1
- package/dist/billing/localize.test.d.ts +0 -2
- package/dist/billing/localize.test.d.ts.map +0 -1
- package/dist/billing/localize.test.js +0 -144
- package/dist/billing/localize.test.js.map +0 -1
- package/dist/billing/sessionize.d.ts.map +0 -1
- package/dist/billing/sessionize.js.map +0 -1
- package/dist/billing/sessionize.test.d.ts +0 -2
- package/dist/billing/sessionize.test.d.ts.map +0 -1
- package/dist/billing/sessionize.test.js +0 -187
- package/dist/billing/sessionize.test.js.map +0 -1
- package/dist/billing.d.ts.map +0 -1
- package/dist/billing.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli-badge.test.d.ts +0 -2
- package/dist/cli-badge.test.d.ts.map +0 -1
- package/dist/cli-badge.test.js +0 -118
- package/dist/cli-badge.test.js.map +0 -1
- package/dist/cli-idioma.test.d.ts +0 -2
- package/dist/cli-idioma.test.d.ts.map +0 -1
- package/dist/cli-idioma.test.js +0 -190
- package/dist/cli-idioma.test.js.map +0 -1
- package/dist/cli-import-recover.test.d.ts +0 -2
- package/dist/cli-import-recover.test.d.ts.map +0 -1
- package/dist/cli-import-recover.test.js +0 -191
- package/dist/cli-import-recover.test.js.map +0 -1
- package/dist/cli-quota.test.d.ts +0 -2
- package/dist/cli-quota.test.d.ts.map +0 -1
- package/dist/cli-quota.test.js +0 -281
- package/dist/cli-quota.test.js.map +0 -1
- package/dist/cli-statusline.test.d.ts +0 -2
- package/dist/cli-statusline.test.d.ts.map +0 -1
- package/dist/cli-statusline.test.js +0 -333
- package/dist/cli-statusline.test.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cloud/auth.d.ts.map +0 -1
- package/dist/cloud/auth.js.map +0 -1
- package/dist/cloud/client.d.ts.map +0 -1
- package/dist/cloud/client.js.map +0 -1
- package/dist/cloud/errors.test.d.ts +0 -2
- package/dist/cloud/errors.test.d.ts.map +0 -1
- package/dist/cloud/errors.test.js +0 -34
- package/dist/cloud/errors.test.js.map +0 -1
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js.map +0 -1
- package/dist/db/schema.test.d.ts +0 -2
- package/dist/db/schema.test.d.ts.map +0 -1
- package/dist/db/schema.test.js +0 -825
- package/dist/db/schema.test.js.map +0 -1
- package/dist/db/store.d.ts.map +0 -1
- package/dist/db/store.js.map +0 -1
- package/dist/demo.d.ts.map +0 -1
- package/dist/demo.js.map +0 -1
- package/dist/demo.test.d.ts +0 -2
- package/dist/demo.test.d.ts.map +0 -1
- package/dist/demo.test.js +0 -148
- package/dist/demo.test.js.map +0 -1
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/doctor.test.d.ts +0 -2
- package/dist/doctor.test.d.ts.map +0 -1
- package/dist/doctor.test.js +0 -167
- package/dist/doctor.test.js.map +0 -1
- package/dist/export/badge.d.ts.map +0 -1
- package/dist/export/badge.js.map +0 -1
- package/dist/export/badge.test.d.ts +0 -2
- package/dist/export/badge.test.d.ts.map +0 -1
- package/dist/export/badge.test.js +0 -32
- package/dist/export/badge.test.js.map +0 -1
- package/dist/export/clockify.d.ts.map +0 -1
- package/dist/export/clockify.js.map +0 -1
- package/dist/export/clockify.test.d.ts +0 -2
- package/dist/export/clockify.test.d.ts.map +0 -1
- package/dist/export/clockify.test.js +0 -51
- package/dist/export/clockify.test.js.map +0 -1
- package/dist/export/csv.d.ts.map +0 -1
- package/dist/export/csv.js.map +0 -1
- package/dist/export/dates.d.ts.map +0 -1
- package/dist/export/dates.js.map +0 -1
- package/dist/export/idioma.test.d.ts +0 -2
- package/dist/export/idioma.test.d.ts.map +0 -1
- package/dist/export/idioma.test.js +0 -255
- package/dist/export/idioma.test.js.map +0 -1
- package/dist/export/invoice-pdf.d.ts.map +0 -1
- package/dist/export/invoice-pdf.js.map +0 -1
- package/dist/export/panel.d.ts.map +0 -1
- package/dist/export/panel.js.map +0 -1
- package/dist/export/panel.test.d.ts +0 -2
- package/dist/export/panel.test.d.ts.map +0 -1
- package/dist/export/panel.test.js +0 -386
- package/dist/export/panel.test.js.map +0 -1
- package/dist/export/pdf.d.ts.map +0 -1
- package/dist/export/pdf.js.map +0 -1
- package/dist/export/pdf.test.d.ts +0 -2
- package/dist/export/pdf.test.d.ts.map +0 -1
- package/dist/export/pdf.test.js +0 -172
- package/dist/export/pdf.test.js.map +0 -1
- package/dist/export/pixelfont.d.ts.map +0 -1
- package/dist/export/pixelfont.js.map +0 -1
- package/dist/export/png.d.ts.map +0 -1
- package/dist/export/png.js.map +0 -1
- package/dist/export/receipt.d.ts.map +0 -1
- package/dist/export/receipt.js.map +0 -1
- package/dist/export/receipt.test.d.ts +0 -2
- package/dist/export/receipt.test.d.ts.map +0 -1
- package/dist/export/receipt.test.js +0 -207
- package/dist/export/receipt.test.js.map +0 -1
- package/dist/export/share.d.ts.map +0 -1
- package/dist/export/share.js.map +0 -1
- package/dist/export/share.test.d.ts +0 -2
- package/dist/export/share.test.d.ts.map +0 -1
- package/dist/export/share.test.js +0 -116
- package/dist/export/share.test.js.map +0 -1
- package/dist/i18n/en.d.ts.map +0 -1
- package/dist/i18n/en.js.map +0 -1
- package/dist/i18n/i18n.test.d.ts +0 -2
- package/dist/i18n/i18n.test.d.ts.map +0 -1
- package/dist/i18n/i18n.test.js +0 -226
- package/dist/i18n/i18n.test.js.map +0 -1
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/labels.d.ts.map +0 -1
- package/dist/i18n/labels.js.map +0 -1
- package/dist/metrics/index.d.ts.map +0 -1
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/metrics.test.d.ts +0 -2
- package/dist/metrics/metrics.test.d.ts.map +0 -1
- package/dist/metrics/metrics.test.js +0 -162
- package/dist/metrics/metrics.test.js.map +0 -1
- package/dist/metrics/people.d.ts.map +0 -1
- package/dist/metrics/people.js.map +0 -1
- package/dist/metrics/people.test.d.ts +0 -2
- package/dist/metrics/people.test.d.ts.map +0 -1
- package/dist/metrics/people.test.js +0 -92
- package/dist/metrics/people.test.js.map +0 -1
- package/dist/metrics/quota.d.ts.map +0 -1
- package/dist/metrics/quota.js.map +0 -1
- package/dist/metrics/quota.test.d.ts +0 -2
- package/dist/metrics/quota.test.d.ts.map +0 -1
- package/dist/metrics/quota.test.js +0 -325
- package/dist/metrics/quota.test.js.map +0 -1
- package/dist/metrics/team.d.ts.map +0 -1
- package/dist/metrics/team.js.map +0 -1
- package/dist/metrics/team.test.d.ts +0 -2
- package/dist/metrics/team.test.d.ts.map +0 -1
- package/dist/metrics/team.test.js +0 -90
- package/dist/metrics/team.test.js.map +0 -1
- package/dist/node-version.d.ts.map +0 -1
- package/dist/node-version.js.map +0 -1
- package/dist/node-version.test.d.ts +0 -2
- package/dist/node-version.test.d.ts.map +0 -1
- package/dist/node-version.test.js +0 -53
- package/dist/node-version.test.js.map +0 -1
- package/dist/paths.d.ts.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/paths.test.d.ts +0 -2
- package/dist/paths.test.d.ts.map +0 -1
- package/dist/paths.test.js +0 -32
- package/dist/paths.test.js.map +0 -1
- package/dist/pricing/catalog.d.ts.map +0 -1
- package/dist/pricing/catalog.js.map +0 -1
- package/dist/pricing/cost.d.ts.map +0 -1
- package/dist/pricing/cost.js.map +0 -1
- package/dist/pricing/cost.test.d.ts +0 -2
- package/dist/pricing/cost.test.d.ts.map +0 -1
- package/dist/pricing/cost.test.js +0 -100
- package/dist/pricing/cost.test.js.map +0 -1
- package/dist/project-of.d.ts.map +0 -1
- package/dist/project-of.js.map +0 -1
- package/dist/project-of.test.d.ts +0 -2
- package/dist/project-of.test.d.ts.map +0 -1
- package/dist/project-of.test.js +0 -203
- package/dist/project-of.test.js.map +0 -1
- package/dist/publish.d.ts.map +0 -1
- package/dist/publish.js.map +0 -1
- package/dist/publish.test.d.ts +0 -2
- package/dist/publish.test.d.ts.map +0 -1
- package/dist/publish.test.js +0 -113
- package/dist/publish.test.js.map +0 -1
- package/dist/quota.d.ts.map +0 -1
- package/dist/quota.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/server.test.d.ts +0 -2
- package/dist/server.test.d.ts.map +0 -1
- package/dist/server.test.js +0 -402
- package/dist/server.test.js.map +0 -1
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js.map +0 -1
- package/dist/setup.test.d.ts +0 -2
- package/dist/setup.test.d.ts.map +0 -1
- package/dist/setup.test.js +0 -144
- package/dist/setup.test.js.map +0 -1
- package/dist/statusline-cache.d.ts.map +0 -1
- package/dist/statusline-cache.js.map +0 -1
- package/dist/statusline-install.d.ts.map +0 -1
- package/dist/statusline-install.js.map +0 -1
- package/dist/statusline-run.d.ts.map +0 -1
- package/dist/statusline-run.js.map +0 -1
- package/dist/statusline.d.ts.map +0 -1
- package/dist/statusline.js.map +0 -1
- package/dist/statusline.test.d.ts +0 -2
- package/dist/statusline.test.d.ts.map +0 -1
- package/dist/statusline.test.js +0 -197
- package/dist/statusline.test.js.map +0 -1
- package/dist/sync/team.d.ts.map +0 -1
- package/dist/sync/team.js.map +0 -1
- package/dist/sync/team.test.d.ts +0 -2
- package/dist/sync/team.test.d.ts.map +0 -1
- package/dist/sync/team.test.js +0 -102
- package/dist/sync/team.test.js.map +0 -1
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js.map +0 -1
- package/dist/sync.test.d.ts +0 -2
- package/dist/sync.test.d.ts.map +0 -1
- package/dist/sync.test.js +0 -151
- package/dist/sync.test.js.map +0 -1
- package/dist/team.d.ts.map +0 -1
- package/dist/team.js.map +0 -1
- package/dist/team.test.d.ts +0 -2
- package/dist/team.test.d.ts.map +0 -1
- package/dist/team.test.js +0 -163
- package/dist/team.test.js.map +0 -1
- package/dist/updateCheck.d.ts.map +0 -1
- package/dist/updateCheck.js.map +0 -1
- package/dist/updateCheck.test.d.ts +0 -2
- package/dist/updateCheck.test.d.ts.map +0 -1
- package/dist/updateCheck.test.js +0 -27
- package/dist/updateCheck.test.js.map +0 -1
- package/dist/watchers/agents.d.ts.map +0 -1
- package/dist/watchers/agents.js.map +0 -1
- package/dist/watchers/agents.test.d.ts +0 -2
- package/dist/watchers/agents.test.d.ts.map +0 -1
- package/dist/watchers/agents.test.js +0 -96
- package/dist/watchers/agents.test.js.map +0 -1
- package/dist/watchers/claude.d.ts.map +0 -1
- package/dist/watchers/claude.js.map +0 -1
- package/dist/watchers/claude.test.d.ts +0 -2
- package/dist/watchers/claude.test.d.ts.map +0 -1
- package/dist/watchers/claude.test.js +0 -180
- package/dist/watchers/claude.test.js.map +0 -1
- package/dist/watchers/codex.d.ts.map +0 -1
- package/dist/watchers/codex.js.map +0 -1
- package/dist/watchers/codex.test.d.ts +0 -2
- package/dist/watchers/codex.test.d.ts.map +0 -1
- package/dist/watchers/codex.test.js +0 -207
- package/dist/watchers/codex.test.js.map +0 -1
- package/dist/watchers/copilot.d.ts.map +0 -1
- package/dist/watchers/copilot.js.map +0 -1
- package/dist/watchers/copilot.test.d.ts +0 -2
- package/dist/watchers/copilot.test.d.ts.map +0 -1
- package/dist/watchers/copilot.test.js +0 -98
- package/dist/watchers/copilot.test.js.map +0 -1
- package/dist/watchers/git.d.ts.map +0 -1
- package/dist/watchers/git.js.map +0 -1
- package/dist/watchers/git.test.d.ts +0 -2
- package/dist/watchers/git.test.d.ts.map +0 -1
- package/dist/watchers/git.test.js +0 -75
- package/dist/watchers/git.test.js.map +0 -1
- package/dist/watchers/identity.d.ts.map +0 -1
- package/dist/watchers/identity.js.map +0 -1
- package/dist/watchers/identity.test.d.ts +0 -2
- package/dist/watchers/identity.test.d.ts.map +0 -1
- package/dist/watchers/identity.test.js +0 -48
- package/dist/watchers/identity.test.js.map +0 -1
- package/dist/web-ui.test.d.ts +0 -2
- package/dist/web-ui.test.d.ts.map +0 -1
- package/dist/web-ui.test.js +0 -414
- package/dist/web-ui.test.js.map +0 -1
- package/dist/workitems.test.d.ts +0 -2
- package/dist/workitems.test.d.ts.map +0 -1
- package/dist/workitems.test.js +0 -59
- package/dist/workitems.test.js.map +0 -1
|
@@ -1,325 +0,0 @@
|
|
|
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 quota_js_1 = require("../quota.js");
|
|
44
|
-
const quota_js_2 = require("./quota.js");
|
|
45
|
-
/**
|
|
46
|
-
* "¿Qué proyecto se come mi cuota?"
|
|
47
|
-
*
|
|
48
|
-
* Lo que no puede fallar: que un turno repetido cuente dos veces (inflaría a un
|
|
49
|
-
* proyecto), que la semana empiece donde no es, y que se compare con un
|
|
50
|
-
* historial que no existe. Todo lo demás es presentación.
|
|
51
|
-
*/
|
|
52
|
-
const tok = (total, over = {}) => ({ input: 0, output: 0, cacheRead: total, cacheWrite5m: 0, cacheWrite1h: 0, ...over });
|
|
53
|
-
const turno = (at, repoPath, total, agent = "claude-code") => ({ agent, at: new Date(at), repoPath, tokens: tok(total) });
|
|
54
|
-
const porCarpeta = (repoPath) => repoPath ? { kind: "project", projectId: repoPath, projectName: repoPath } : { kind: "none" };
|
|
55
|
-
/** Fechas en hora local: los tests no dependen de la zona de quien los corre. */
|
|
56
|
-
const local = (y, m, d, h = 0, min = 0) => new Date(y, m - 1, d, h, min);
|
|
57
|
-
// ── La semana ───────────────────────────────────────────────────────────
|
|
58
|
-
(0, node_test_1.test)("la semana empieza el lunes a las 00:00 en hora local, también un domingo por la noche", () => {
|
|
59
|
-
// 2026-10-11 es domingo; 2026-10-05, lunes.
|
|
60
|
-
strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 11, 23, 59)), local(2026, 10, 5));
|
|
61
|
-
strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 5, 0, 0)), local(2026, 10, 5), "el propio lunes a medianoche");
|
|
62
|
-
strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 7, 15, 0)), local(2026, 10, 5));
|
|
63
|
-
});
|
|
64
|
-
(0, node_test_1.test)("cambio de semana: lo del domingo por la noche no cuenta en la semana que empieza el lunes", () => {
|
|
65
|
-
const now = local(2026, 10, 12, 0, 30); // lunes 00:30
|
|
66
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
67
|
-
turns: [
|
|
68
|
-
{ agent: "claude-code", at: local(2026, 10, 11, 23, 50), repoPath: "/a", tokens: tok(1000) },
|
|
69
|
-
{ agent: "claude-code", at: local(2026, 10, 12, 0, 10), repoPath: "/b", tokens: tok(10) },
|
|
70
|
-
],
|
|
71
|
-
firstTurnAt: new Map(), now, bucketOf: porCarpeta,
|
|
72
|
-
});
|
|
73
|
-
const semana = r.agents[0].week;
|
|
74
|
-
strict_1.default.deepEqual(semana.rows.map((x) => x.bucket.kind === "project" && x.bucket.projectId), ["/b"]);
|
|
75
|
-
strict_1.default.equal(semana.total.total, 10);
|
|
76
|
-
// Pero la ventana de 5 h sí cruza la medianoche: la cuota no sabe de semanas.
|
|
77
|
-
strict_1.default.equal(r.agents[0].window.total.total, 1010);
|
|
78
|
-
});
|
|
79
|
-
(0, node_test_1.test)("la semana del cambio de hora sigue empezando el lunes a las 00:00", () => {
|
|
80
|
-
// En Madrid, el domingo 25 de octubre de 2026 tiene 25 horas. Restar 7×24 h
|
|
81
|
-
// dejaría el "lunes" a las 23:00 del domingo.
|
|
82
|
-
const antes = process.env["TZ"];
|
|
83
|
-
process.env["TZ"] = "Europe/Madrid";
|
|
84
|
-
try {
|
|
85
|
-
const lunes = (0, quota_js_2.weekStart)(local(2026, 10, 28, 12));
|
|
86
|
-
strict_1.default.equal(lunes.getDay(), 1);
|
|
87
|
-
strict_1.default.equal(lunes.getHours(), 0);
|
|
88
|
-
const atras = (0, quota_js_2.sameStretch)(local(2026, 10, 28, 12), 1);
|
|
89
|
-
strict_1.default.equal(atras.start.getDay(), 1);
|
|
90
|
-
strict_1.default.equal(atras.start.getHours(), 0, "el lunes anterior, a medianoche y no a las 23:00 del domingo");
|
|
91
|
-
strict_1.default.equal(atras.end.getDay(), 3);
|
|
92
|
-
strict_1.default.equal(atras.end.getHours(), 12);
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
if (antes === undefined)
|
|
96
|
-
delete process.env["TZ"];
|
|
97
|
-
else
|
|
98
|
-
process.env["TZ"] = antes;
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
(0, node_test_1.test)("el mismo tramo de semanas anteriores: de lunes 00:00 al mismo día y hora", () => {
|
|
102
|
-
const t = (0, quota_js_2.sameStretch)(local(2026, 10, 7, 15, 0), 2); // miércoles 15:00, dos semanas atrás
|
|
103
|
-
strict_1.default.deepEqual(t.start, local(2026, 9, 21));
|
|
104
|
-
strict_1.default.deepEqual(t.end, local(2026, 9, 23, 15, 0));
|
|
105
|
-
});
|
|
106
|
-
// ── La ventana de 5 h ───────────────────────────────────────────────────
|
|
107
|
-
(0, node_test_1.test)("una ventana empieza con el primer turno después de que acabe la anterior y dura 5 h", () => {
|
|
108
|
-
const w = (0, quota_js_2.fiveHourWindows)([
|
|
109
|
-
local(2026, 10, 7, 9, 0), local(2026, 10, 7, 13, 59), // misma ventana
|
|
110
|
-
local(2026, 10, 7, 14, 0), // justo al cerrar: nueva
|
|
111
|
-
local(2026, 10, 7, 18, 30), // dentro de la segunda
|
|
112
|
-
]);
|
|
113
|
-
strict_1.default.deepEqual(w.map((x) => [x.start.getHours(), x.end.getHours()]), [[9, 14], [14, 19]]);
|
|
114
|
-
});
|
|
115
|
-
(0, node_test_1.test)("ventana abierta ahora, o la hora en que acabó la última", () => {
|
|
116
|
-
const veces = [local(2026, 10, 7, 9, 0), local(2026, 10, 7, 10, 0)];
|
|
117
|
-
const abierta = (0, quota_js_2.windowAt)(veces, local(2026, 10, 7, 12, 0));
|
|
118
|
-
strict_1.default.deepEqual(abierta.current?.start, local(2026, 10, 7, 9, 0));
|
|
119
|
-
strict_1.default.equal(abierta.lastEnded, null);
|
|
120
|
-
const cerrada = (0, quota_js_2.windowAt)(veces, local(2026, 10, 7, 16, 0));
|
|
121
|
-
strict_1.default.equal(cerrada.current, null);
|
|
122
|
-
strict_1.default.deepEqual(cerrada.lastEnded, local(2026, 10, 7, 14, 0));
|
|
123
|
-
strict_1.default.deepEqual((0, quota_js_2.windowAt)([], local(2026, 10, 7, 16, 0)), { current: null, lastEnded: null });
|
|
124
|
-
});
|
|
125
|
-
// ── Reparto ─────────────────────────────────────────────────────────────
|
|
126
|
-
(0, node_test_1.test)("el reparto va de mayor a menor, con su porcentaje, y suma bien los cinco campos", () => {
|
|
127
|
-
const now = local(2026, 10, 7, 12);
|
|
128
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
129
|
-
turns: [
|
|
130
|
-
{ agent: "claude-code", at: local(2026, 10, 7, 10), repoPath: "/a",
|
|
131
|
-
tokens: { input: 1, output: 2, cacheRead: 3, cacheWrite5m: 4, cacheWrite1h: 5 } },
|
|
132
|
-
turno("2026-10-06T10:00:00", "/b", 45),
|
|
133
|
-
],
|
|
134
|
-
firstTurnAt: new Map(), now, bucketOf: porCarpeta,
|
|
135
|
-
});
|
|
136
|
-
const w = r.agents[0].week;
|
|
137
|
-
strict_1.default.deepEqual(w.rows.map((x) => x.usage.total), [45, 15]);
|
|
138
|
-
strict_1.default.deepEqual(w.rows[1].usage, { input: 1, output: 2, cacheRead: 3, cacheWrite: 9, total: 15 });
|
|
139
|
-
strict_1.default.equal(w.rows[0].share, 0.75);
|
|
140
|
-
strict_1.default.equal(w.total.total, 60);
|
|
141
|
-
});
|
|
142
|
-
(0, node_test_1.test)("un proyecto sin actividad en el periodo no sale en la tabla", () => {
|
|
143
|
-
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
144
|
-
try {
|
|
145
|
-
store.upsertClient(db, { id: "c", name: "C", currency: "EUR" });
|
|
146
|
-
for (const [id, repo] of [["activo", "/repos/activo"], ["parado", "/repos/parado"]]) {
|
|
147
|
-
store.upsertProject(db, { id, clientId: "c", name: id, repoPaths: [repo], billable: true,
|
|
148
|
-
roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client" });
|
|
149
|
-
}
|
|
150
|
-
store.saveTurns(db, [turnoGuardado("t1", "/repos/activo", "2026-10-07T10:00:00")]);
|
|
151
|
-
const r = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12));
|
|
152
|
-
const ids = r.agents[0].week.rows.map((x) => x.bucket.kind === "project" ? x.bucket.projectId : "?");
|
|
153
|
-
strict_1.default.deepEqual(ids, ["activo"]);
|
|
154
|
-
}
|
|
155
|
-
finally {
|
|
156
|
-
db.close();
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
(0, node_test_1.test)("un turno fuera de cualquier proyecto cuenta, a nombre de su carpeta, y uno sin carpeta también", () => {
|
|
160
|
-
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
161
|
-
try {
|
|
162
|
-
store.saveTurns(db, [
|
|
163
|
-
turnoGuardado("t1", "/home/yo/notas", "2026-10-07T10:00:00"),
|
|
164
|
-
{ ...turnoGuardado("t2", null, "2026-10-07T10:05:00") },
|
|
165
|
-
]);
|
|
166
|
-
const filas = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12)).agents[0].week.rows.map((x) => x.bucket);
|
|
167
|
-
strict_1.default.deepEqual(filas, [{ kind: "folder", folder: "notas", path: "/home/yo/notas" }, { kind: "none" }]);
|
|
168
|
-
}
|
|
169
|
-
finally {
|
|
170
|
-
db.close();
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
(0, node_test_1.test)("deduplicación: el mismo turno leído dos veces cuenta una sola vez", () => {
|
|
174
|
-
// Es la garantía de los lectores (por message.id en Claude Code) y de la
|
|
175
|
-
// clave primaria de agent_turns. La cuota no la repite: la hereda.
|
|
176
|
-
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
177
|
-
try {
|
|
178
|
-
const t = turnoGuardado("msg_01ABC", "/repo", "2026-10-07T10:00:00", 1000);
|
|
179
|
-
store.saveTurns(db, [t, t]);
|
|
180
|
-
store.saveTurns(db, [t]);
|
|
181
|
-
const r = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12));
|
|
182
|
-
strict_1.default.equal(r.agents[0].week.total.total, 1000);
|
|
183
|
-
}
|
|
184
|
-
finally {
|
|
185
|
-
db.close();
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
// ── Agentes ─────────────────────────────────────────────────────────────
|
|
189
|
-
(0, node_test_1.test)("Claude Code y Codex van por separado; Copilot queda fuera y se dice", () => {
|
|
190
|
-
const now = local(2026, 10, 7, 12);
|
|
191
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
192
|
-
turns: [
|
|
193
|
-
turno("2026-10-07T10:00:00", "/a", 100, "claude-code"),
|
|
194
|
-
turno("2026-10-07T10:00:00", "/a", 7, "codex"),
|
|
195
|
-
turno("2026-10-07T10:00:00", "/a", 999_999, "copilot"),
|
|
196
|
-
],
|
|
197
|
-
firstTurnAt: new Map(), now, bucketOf: porCarpeta,
|
|
198
|
-
});
|
|
199
|
-
strict_1.default.deepEqual(r.agents.map((a) => [a.agent, a.week.total.total]), [["claude-code", 100], ["codex", 7]]);
|
|
200
|
-
strict_1.default.equal(r.copilotExcluded, true);
|
|
201
|
-
});
|
|
202
|
-
(0, node_test_1.test)("un agente sin actividad no aparece; sin Copilot no se menciona", () => {
|
|
203
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
204
|
-
turns: [turno("2026-10-07T10:00:00", "/a", 100, "claude-code")],
|
|
205
|
-
firstTurnAt: new Map(), now: local(2026, 10, 7, 12), bucketOf: porCarpeta,
|
|
206
|
-
});
|
|
207
|
-
strict_1.default.deepEqual(r.agents.map((a) => a.agent), ["claude-code"]);
|
|
208
|
-
strict_1.default.equal(r.copilotExcluded, false);
|
|
209
|
-
});
|
|
210
|
-
// ── Historial ───────────────────────────────────────────────────────────
|
|
211
|
-
const semanal = (n) => Array.from({ length: n }, (_, i) => ({ at: (0, quota_js_2.sameStretch)(local(2026, 10, 7, 15), i + 1).start, total: 100 }));
|
|
212
|
-
(0, node_test_1.test)("semana sin historial: no se compara, y se dice cuántas semanas hay", () => {
|
|
213
|
-
const now = local(2026, 10, 7, 15);
|
|
214
|
-
// El primer turno es de hace 10 días: solo una semana completa anterior.
|
|
215
|
-
const c = (0, quota_js_2.compareWithHistory)([], local(2026, 9, 28, 9), now);
|
|
216
|
-
strict_1.default.deepEqual(c, { status: "insufficient", completeWeeks: 1, weeks: 4 });
|
|
217
|
-
// Sin ningún turno guardado, ninguna.
|
|
218
|
-
strict_1.default.deepEqual((0, quota_js_2.compareWithHistory)([], null, now), { status: "insufficient", completeWeeks: 0, weeks: 4 });
|
|
219
|
-
});
|
|
220
|
-
(0, node_test_1.test)("con cuatro semanas de historial, media del mismo tramo; una semana vacía cuenta como cero", () => {
|
|
221
|
-
const now = local(2026, 10, 7, 15); // miércoles
|
|
222
|
-
const veces = [
|
|
223
|
-
...semanal(3), // 100 en cada una de las tres últimas
|
|
224
|
-
{ at: local(2026, 10, 6, 10), total: 150 }, // esta semana
|
|
225
|
-
{ at: local(2026, 10, 1, 9), total: 9999 }, // jueves de la semana pasada: fuera del tramo
|
|
226
|
-
];
|
|
227
|
-
// La cuarta semana atrás está cubierta (el primer turno es anterior) pero vacía.
|
|
228
|
-
const c = (0, quota_js_2.compareWithHistory)(veces, local(2026, 8, 1), now);
|
|
229
|
-
strict_1.default.equal(c.status, "ok");
|
|
230
|
-
if (c.status !== "ok")
|
|
231
|
-
return;
|
|
232
|
-
strict_1.default.equal(c.current, 150);
|
|
233
|
-
strict_1.default.equal(c.average, 75, "(100+100+100+0)/4: el jueves pasado no entra en un tramo que acaba el miércoles");
|
|
234
|
-
strict_1.default.equal(c.ratio, 2);
|
|
235
|
-
});
|
|
236
|
-
(0, node_test_1.test)("una media de cero no divide: el ratio va a null", () => {
|
|
237
|
-
const c = (0, quota_js_2.compareWithHistory)([{ at: local(2026, 10, 6, 10), total: 5 }], local(2026, 1, 1), local(2026, 10, 7, 15));
|
|
238
|
-
strict_1.default.equal(c.status, "ok");
|
|
239
|
-
if (c.status === "ok")
|
|
240
|
-
strict_1.default.equal(c.ratio, null);
|
|
241
|
-
});
|
|
242
|
-
// ── JSON ────────────────────────────────────────────────────────────────
|
|
243
|
-
(0, node_test_1.test)("el JSON lleva fechas en ISO, filas homogéneas y avisa de que la ventana es una estimación", () => {
|
|
244
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
245
|
-
turns: [turno("2026-10-07T10:00:00", "/a", 100), turno("2026-10-07T10:30:00", null, 100)],
|
|
246
|
-
firstTurnAt: new Map(), now: local(2026, 10, 7, 12), bucketOf: porCarpeta,
|
|
247
|
-
});
|
|
248
|
-
const j = (0, quota_js_2.quotaToJson)(r);
|
|
249
|
-
strict_1.default.equal(j.windowIsEstimate, true);
|
|
250
|
-
strict_1.default.deepEqual(Object.keys(j.agents[0].week.projects[0]).sort(), ["cacheRead", "cacheWrite", "folder", "input", "listCostMicroUsd", "output", "projectId", "projectName", "share", "total"]);
|
|
251
|
-
strict_1.default.equal(j.agents[0].week.projects[1]["projectId"], null);
|
|
252
|
-
strict_1.default.deepEqual(j.excluded, []);
|
|
253
|
-
strict_1.default.doesNotThrow(() => JSON.parse(JSON.stringify(j)));
|
|
254
|
-
});
|
|
255
|
-
// ---------------------------------------------------------------------------
|
|
256
|
-
function turnoGuardado(turnId, repoPath, at, cacheRead = 100) {
|
|
257
|
-
return {
|
|
258
|
-
agent: "claude-code", turnId, sessionId: "s", at: new Date(at), model: "claude-sonnet-4-6",
|
|
259
|
-
repoPath, branch: "main", tokens: tok(cacheRead), producerVersion: null,
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
// ── La ventana que dio Claude Code (resets_at) ──────────────────────────
|
|
263
|
-
(0, node_test_1.test)("con un resets_at de hace menos de 5 h, la ventana empieza 5 h antes del reinicio", () => {
|
|
264
|
-
const now = local(2026, 10, 7, 15, 0);
|
|
265
|
-
const w = (0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 17, 30), seenAt: local(2026, 10, 7, 14, 50) }, now);
|
|
266
|
-
strict_1.default.deepEqual(w, { start: local(2026, 10, 7, 12, 30), end: local(2026, 10, 7, 17, 30) });
|
|
267
|
-
});
|
|
268
|
-
(0, node_test_1.test)("un resets_at visto hace 5 h o más, o ya pasado, no vale: se estima", () => {
|
|
269
|
-
const now = local(2026, 10, 7, 15, 0);
|
|
270
|
-
strict_1.default.equal((0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 17, 0), seenAt: local(2026, 10, 7, 10, 0) }, now), null, "visto hace 5 h justas");
|
|
271
|
-
strict_1.default.equal((0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 14, 59), seenAt: local(2026, 10, 7, 14, 0) }, now), null, "el reinicio ya pasó: la ventana de ahora es otra que nadie ha visto");
|
|
272
|
-
strict_1.default.equal((0, quota_js_2.officialWindow)(null, now), null);
|
|
273
|
-
});
|
|
274
|
-
(0, node_test_1.test)("buildQuota usa la ventana oficial solo para Claude Code, y la marca como no estimada", () => {
|
|
275
|
-
const now = local(2026, 10, 7, 15, 0);
|
|
276
|
-
const r = (0, quota_js_2.buildQuota)({
|
|
277
|
-
turns: [
|
|
278
|
-
{ agent: "claude-code", at: local(2026, 10, 7, 12, 0), repoPath: "/a", tokens: tok(5) }, // antes de la ventana oficial
|
|
279
|
-
{ agent: "claude-code", at: local(2026, 10, 7, 13, 0), repoPath: "/a", tokens: tok(7) },
|
|
280
|
-
{ agent: "codex", at: local(2026, 10, 7, 14, 0), repoPath: "/a", tokens: tok(3) },
|
|
281
|
-
],
|
|
282
|
-
firstTurnAt: new Map(), now, bucketOf: porCarpeta,
|
|
283
|
-
claudeWindow: { start: local(2026, 10, 7, 12, 30), end: local(2026, 10, 7, 17, 30) },
|
|
284
|
-
});
|
|
285
|
-
const claude = r.agents.find((a) => a.agent === "claude-code");
|
|
286
|
-
const codex = r.agents.find((a) => a.agent === "codex");
|
|
287
|
-
strict_1.default.equal(claude.window.estimated, false);
|
|
288
|
-
strict_1.default.deepEqual(claude.window.start, local(2026, 10, 7, 12, 30));
|
|
289
|
-
strict_1.default.equal(claude.window.total.total, 7, "lo de antes del inicio oficial no entra");
|
|
290
|
-
strict_1.default.equal(codex.window.estimated, true, "Codex tiene su propia cuota: sigue estimada");
|
|
291
|
-
const j = (0, quota_js_2.quotaToJson)(r);
|
|
292
|
-
strict_1.default.equal(j.windowIsEstimate, true, "hay una ventana estimada (Codex)");
|
|
293
|
-
});
|
|
294
|
-
// ── --weighted ──────────────────────────────────────────────────────────
|
|
295
|
-
(0, node_test_1.test)("ponderado: el % sale del precio de lista de cada modelo, no de los tokens", () => {
|
|
296
|
-
const at = local(2026, 10, 7, 10);
|
|
297
|
-
const opus = { agent: "claude-code", at, repoPath: "/caro", model: "claude-opus-4-8",
|
|
298
|
-
tokens: { input: 0, output: 10_000, cacheRead: 0, cacheWrite5m: 0, cacheWrite1h: 0 } }; // 10k × 25 $/M = 0,25 $
|
|
299
|
-
const lectura = { agent: "claude-code", at, repoPath: "/barato", model: "claude-sonnet-4-6",
|
|
300
|
-
tokens: { input: 0, output: 0, cacheRead: 100_000, cacheWrite5m: 0, cacheWrite1h: 0 } }; // 100k × 3 $/M × 0,1 = 0,03 $
|
|
301
|
-
const desde = local(2026, 10, 7), hasta = local(2026, 10, 8);
|
|
302
|
-
const tokens = (0, quota_js_2.breakdown)([opus, lectura], desde, hasta, porCarpeta);
|
|
303
|
-
strict_1.default.equal(tokens.weighted, false);
|
|
304
|
-
strict_1.default.equal(tokens.rows[0].bucket.projectId, "/barato", "por tokens gana la caché");
|
|
305
|
-
const precio = (0, quota_js_2.breakdown)([opus, lectura], desde, hasta, porCarpeta, { weighted: true });
|
|
306
|
-
strict_1.default.equal(precio.weighted, true);
|
|
307
|
-
strict_1.default.ok(precio.listCost > 0);
|
|
308
|
-
const caro = precio.rows[0];
|
|
309
|
-
strict_1.default.equal(caro.bucket.projectId, "/caro", "por precio gana Opus: el orden se invierte");
|
|
310
|
-
strict_1.default.equal(caro.listCost, 250_000);
|
|
311
|
-
strict_1.default.equal(precio.rows[1].listCost, 30_000);
|
|
312
|
-
strict_1.default.equal(caro.share, 250_000 / 280_000);
|
|
313
|
-
// Mismos tokens en las dos: ponderar solo cambia el %, no las columnas.
|
|
314
|
-
strict_1.default.deepEqual(precio.total, tokens.total);
|
|
315
|
-
});
|
|
316
|
-
(0, node_test_1.test)("ponderado: un modelo sin precio cuenta como 0 y se cuenta aparte", () => {
|
|
317
|
-
const at = local(2026, 10, 7, 10);
|
|
318
|
-
const b = (0, quota_js_2.breakdown)([
|
|
319
|
-
{ agent: "claude-code", at, repoPath: "/a", model: "modelo-que-no-existe", tokens: tok(1000) },
|
|
320
|
-
{ agent: "claude-code", at, repoPath: "/b", model: "claude-sonnet-4-6", tokens: tok(10) },
|
|
321
|
-
], local(2026, 10, 7), local(2026, 10, 8), porCarpeta, { weighted: true });
|
|
322
|
-
strict_1.default.equal(b.unpriced, 1);
|
|
323
|
-
strict_1.default.equal(b.rows[0].share, 1, "todo el % es del único con precio");
|
|
324
|
-
});
|
|
325
|
-
//# sourceMappingURL=quota.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quota.test.js","sourceRoot":"","sources":["../../src/metrics/quota.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/metrics/team.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGjF;AAED,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;CAC1C;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,GACzD,UAAU,EAAE,CA4Cd"}
|
package/dist/metrics/team.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/metrics/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"team.test.d.ts","sourceRoot":"","sources":["../../src/metrics/team.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const team_js_1 = require("./team.js");
|
|
9
|
-
function commit(name, email, iso, branch = "main") {
|
|
10
|
-
return {
|
|
11
|
-
repoPath: "/repo", hash: `${name}-${iso}`, at: new Date(iso),
|
|
12
|
-
authorEmail: email, authorName: name, branch,
|
|
13
|
-
subject: "trabajo", linesAdded: 10, linesDeleted: 2, files: [],
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function entry(seconds) {
|
|
17
|
-
return {
|
|
18
|
-
id: "te_1", projectId: "p", startedAt: new Date("2026-08-20T09:00:00Z"),
|
|
19
|
-
endedAt: new Date("2026-08-20T12:00:00Z"), seconds,
|
|
20
|
-
description: "medido", billable: true, invoiceId: null,
|
|
21
|
-
aiCost: { microUsd: 0 }, agentSeconds: seconds, commitHashes: [],
|
|
22
|
-
agents: ["claude-code"], source: "agent", kind: "development", branch: "main",
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const COMMITS = [
|
|
26
|
-
commit("Yo", "yo@ejemplo.com", "2026-08-20T10:00:00Z"),
|
|
27
|
-
commit("Ana Ruiz", "ana@empresa.com", "2026-08-21T09:00:00Z", "feat/pagos"),
|
|
28
|
-
commit("Ana Ruiz", "ana@empresa.com", "2026-08-21T10:00:00Z", "feat/pagos"),
|
|
29
|
-
commit("aruiz", "ana@empresa.com", "2026-08-22T09:00:00Z", "feat/pagos"),
|
|
30
|
-
];
|
|
31
|
-
(0, node_test_1.test)("las horas de un compañero salen de sus commits", () => {
|
|
32
|
-
const team = (0, team_js_1.teamView)(COMMITS, {
|
|
33
|
-
myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
|
|
34
|
-
});
|
|
35
|
-
const ana = team.find((p) => p.name === "Ana Ruiz");
|
|
36
|
-
strict_1.default.ok(ana, "no se encontró a Ana");
|
|
37
|
-
strict_1.default.equal(ana.commits, 3, "sus tres identidades deben unirse");
|
|
38
|
-
strict_1.default.ok(ana.seconds > 0, "sin horas, la fila no dice nada");
|
|
39
|
-
strict_1.default.equal(ana.measured, false, "las de un compañero son estimadas");
|
|
40
|
-
});
|
|
41
|
-
(0, node_test_1.test)("tus horas son las medidas, no una reestimación de tus commits", () => {
|
|
42
|
-
const team = (0, team_js_1.teamView)(COMMITS, {
|
|
43
|
-
myEmails: new Set(["yo@ejemplo.com"]), myEntries: [entry(7200)],
|
|
44
|
-
});
|
|
45
|
-
const yo = team.find((p) => p.isMe);
|
|
46
|
-
strict_1.default.ok(yo);
|
|
47
|
-
strict_1.default.equal(yo.seconds, 7200, "debe usar la imputación real");
|
|
48
|
-
strict_1.default.equal(yo.measured, true);
|
|
49
|
-
});
|
|
50
|
-
(0, node_test_1.test)("sin imputaciones tuyas, tu fila también queda estimada", () => {
|
|
51
|
-
// Si no se marcara, tus horas parecerían medidas sin serlo.
|
|
52
|
-
const team = (0, team_js_1.teamView)(COMMITS, {
|
|
53
|
-
myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
|
|
54
|
-
});
|
|
55
|
-
strict_1.default.equal(team.find((p) => p.isMe)?.measured, false);
|
|
56
|
-
});
|
|
57
|
-
(0, node_test_1.test)("no se ordena por horas: eso sería un ranking de rendimiento", () => {
|
|
58
|
-
const team = (0, team_js_1.teamView)(COMMITS, {
|
|
59
|
-
myEmails: new Set(["yo@ejemplo.com"]),
|
|
60
|
-
myEntries: [entry(360_000)], // muchísimas horas para mí
|
|
61
|
-
});
|
|
62
|
-
// Ana commiteó después, así que va primera pese a tener menos horas.
|
|
63
|
-
strict_1.default.equal(team[0].name, "Ana Ruiz");
|
|
64
|
-
});
|
|
65
|
-
(0, node_test_1.test)("recoge las ramas en las que anda cada persona", () => {
|
|
66
|
-
const team = (0, team_js_1.teamView)(COMMITS, {
|
|
67
|
-
myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
|
|
68
|
-
});
|
|
69
|
-
strict_1.default.deepEqual(team.find((p) => p.name === "Ana Ruiz")?.branches, ["feat/pagos"]);
|
|
70
|
-
});
|
|
71
|
-
(0, node_test_1.test)("tus varias identidades de git son una sola fila", () => {
|
|
72
|
-
// Commiteas con el correo de cada cliente y con el que te da GitHub. Nada las
|
|
73
|
-
// relaciona en git, así que salías dos veces y cada fila enseñaba tus horas
|
|
74
|
-
// completas: el mismo tiempo contado dos veces en pantalla.
|
|
75
|
-
const commits = [
|
|
76
|
-
commit("JDev Leon", "yo@cliente.com", "2026-08-20T10:00:00Z"),
|
|
77
|
-
commit("jdleon", "1234+jd@users.noreply.github.com", "2026-08-21T10:00:00Z"),
|
|
78
|
-
commit("Ana Ruiz", "ana@empresa.com", "2026-08-22T10:00:00Z"),
|
|
79
|
-
];
|
|
80
|
-
const team = (0, team_js_1.teamView)(commits, {
|
|
81
|
-
myEmails: new Set(["yo@cliente.com", "1234+jd@users.noreply.github.com"]),
|
|
82
|
-
myEntries: [entry(7200)],
|
|
83
|
-
});
|
|
84
|
-
const me = team.filter((p) => p.isMe);
|
|
85
|
-
strict_1.default.equal(me.length, 1, "debes salir una sola vez");
|
|
86
|
-
strict_1.default.equal(me[0].seconds, 7200, "tus horas se cuentan una vez");
|
|
87
|
-
strict_1.default.equal(me[0].commits, 2, "y arrastran los commits de ambas identidades");
|
|
88
|
-
strict_1.default.equal(team.length, 2, "Ana sigue siendo otra persona");
|
|
89
|
-
});
|
|
90
|
-
//# sourceMappingURL=team.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"team.test.js","sourceRoot":"","sources":["../../src/metrics/team.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-version.d.ts","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAIhE;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,MAAM,CAGrG"}
|
package/dist/node-version.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-version.js","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,oCAIC;AAED,wBAQC;AAaD,wCAGC;AA9BD,SAAgB,YAAY,CAAC,CAAS;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,MAAM,CAAC,OAAe,EAAE,GAAW;IACjD,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,MAA0C,EAAE;IAC3F,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,mBAAmB,CAAC;IACrD,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kCAAkC,CAAC;AAC/F,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-version.test.d.ts","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const node_version_js_1 = require("./node-version.js");
|
|
9
|
-
/**
|
|
10
|
-
* Esto decide si el programa arranca en absoluto. Un fallo aquí no rompe una
|
|
11
|
-
* función: deja a alguien en una versión de Node vieja viendo un error de
|
|
12
|
-
* `node:sqlite` sin sentido, en vez del aviso claro que este fichero existe
|
|
13
|
-
* para dar. Ver bin.ts.
|
|
14
|
-
*/
|
|
15
|
-
(0, node_test_1.test)("versionParts: con o sin la 'v' de delante, da los tres números", () => {
|
|
16
|
-
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v22.5.0"), [22, 5, 0]);
|
|
17
|
-
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("22.5.0"), [22, 5, 0]);
|
|
18
|
-
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v16.20.2"), [16, 20, 2]);
|
|
19
|
-
});
|
|
20
|
-
(0, node_test_1.test)("versionParts: un formato raro no revienta, da ceros", () => {
|
|
21
|
-
strict_1.default.deepEqual((0, node_version_js_1.versionParts)(""), [0, 0, 0]);
|
|
22
|
-
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v"), [0, 0, 0]);
|
|
23
|
-
});
|
|
24
|
-
(0, node_test_1.test)("tooOld: por debajo del mínimo, en mayor, menor o parche", () => {
|
|
25
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v16.20.2", "22.5.0"), true);
|
|
26
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.4.9", "22.5.0"), true);
|
|
27
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.0", "22.5.1"), true);
|
|
28
|
-
});
|
|
29
|
-
(0, node_test_1.test)("tooOld: en el mínimo exacto, o por encima, no está anticuado", () => {
|
|
30
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.0", "22.5.0"), false);
|
|
31
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.1", "22.5.0"), false);
|
|
32
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.6.0", "22.5.0"), false);
|
|
33
|
-
strict_1.default.equal((0, node_version_js_1.tooOld)("v23.0.0", "22.5.0"), false);
|
|
34
|
-
});
|
|
35
|
-
(0, node_test_1.test)("upgradeCommand: en Windows no aconseja nvm, que allí no existe", () => {
|
|
36
|
-
// El fallo real: alguien en Windows con Node 18 vio "Actualiza con nvm (nvm
|
|
37
|
-
// install --lts)" y ese comando no existe en su sistema.
|
|
38
|
-
strict_1.default.match((0, node_version_js_1.upgradeCommand)("win32"), /^winget install /);
|
|
39
|
-
strict_1.default.doesNotMatch((0, node_version_js_1.upgradeCommand)("win32"), /nvm/);
|
|
40
|
-
strict_1.default.equal((0, node_version_js_1.upgradeCommand)("darwin"), "nvm install --lts");
|
|
41
|
-
strict_1.default.equal((0, node_version_js_1.upgradeCommand)("linux"), "nvm install --lts");
|
|
42
|
-
});
|
|
43
|
-
(0, node_test_1.test)("upgradeCommand: con nvm-windows no aconseja winget, chocaría con su Node", () => {
|
|
44
|
-
// El fallo real: alguien con nvm-windows instaló Node con winget, los dos
|
|
45
|
-
// escribieron en la misma carpeta y npx murió con "Class extends value
|
|
46
|
-
// undefined is not a constructor or null".
|
|
47
|
-
const conNvm = (0, node_version_js_1.upgradeCommand)("win32", { NVM_HOME: "C:\\Users\\x\\AppData\\Roaming\\nvm" });
|
|
48
|
-
strict_1.default.match(conNvm, /^nvm install lts/);
|
|
49
|
-
strict_1.default.doesNotMatch(conNvm, /winget/);
|
|
50
|
-
strict_1.default.match((0, node_version_js_1.upgradeCommand)("win32", {}), /^winget install /, "sin nvm-windows, winget");
|
|
51
|
-
strict_1.default.equal((0, node_version_js_1.upgradeCommand)("darwin", { NVM_HOME: "x" }), "nvm install --lts", "solo cuenta en Windows");
|
|
52
|
-
});
|
|
53
|
-
//# sourceMappingURL=node-version.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-version.test.js","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/C;AAQD,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnE;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C"}
|
package/dist/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAOH,sCASC;AASD,wCAGC;AAGD,4BAEC;AA/BD,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,qFAAqF;AACrF,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,GAAG;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAA8B,qBAAqB;IAC5E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC,CAAiB,4BAA4B;IAClF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sFAAsF;AACtF,SAAS,GAAG,CAAC,CAAS;IACpB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,6FAA6F;AAC7F,SAAgB,cAAc,CAAC,KAAa,EAAE,IAAY;IACxD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,SAAgB,QAAQ,CAAC,CAAS;IAChC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/paths.test.d.ts
DELETED
package/dist/paths.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../src/paths.test.ts"],"names":[],"mappings":""}
|