@hasna/economy 0.2.31 → 0.2.32
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 +6 -6
- package/dist/cli/commands/tui.d.ts +1 -1
- package/dist/cli/commands/tui.d.ts.map +1 -1
- package/dist/cli/index.js +184 -832
- package/dist/db/database.d.ts +1 -3
- package/dist/db/database.d.ts.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -1049
- package/dist/ingest/billing.d.ts +1 -1
- package/dist/ingest/billing.d.ts.map +1 -1
- package/dist/ingest/claude-quota.d.ts +1 -1
- package/dist/ingest/claude-quota.d.ts.map +1 -1
- package/dist/ingest/claude.d.ts +1 -1
- package/dist/ingest/claude.d.ts.map +1 -1
- package/dist/ingest/codex-quota.d.ts +1 -1
- package/dist/ingest/codex-quota.d.ts.map +1 -1
- package/dist/ingest/codex.d.ts +1 -1
- package/dist/ingest/codex.d.ts.map +1 -1
- package/dist/ingest/cursor.d.ts +1 -1
- package/dist/ingest/cursor.d.ts.map +1 -1
- package/dist/ingest/gemini.d.ts +1 -1
- package/dist/ingest/gemini.d.ts.map +1 -1
- package/dist/ingest/hermes.d.ts +1 -1
- package/dist/ingest/hermes.d.ts.map +1 -1
- package/dist/ingest/opencode.d.ts +1 -1
- package/dist/ingest/opencode.d.ts.map +1 -1
- package/dist/ingest/otel.d.ts +1 -1
- package/dist/ingest/otel.d.ts.map +1 -1
- package/dist/ingest/pi.d.ts +1 -1
- package/dist/ingest/pi.d.ts.map +1 -1
- package/dist/ingest/plugin.d.ts +1 -1
- package/dist/ingest/plugin.d.ts.map +1 -1
- package/dist/lib/billing-diff.d.ts +1 -1
- package/dist/lib/billing-diff.d.ts.map +1 -1
- package/dist/lib/cloud-sync.d.ts +2 -9
- package/dist/lib/cloud-sync.d.ts.map +1 -1
- package/dist/lib/open-projects.d.ts +2 -3
- package/dist/lib/open-projects.d.ts.map +1 -1
- package/dist/lib/peer-sync.d.ts +1 -1
- package/dist/lib/peer-sync.d.ts.map +1 -1
- package/dist/lib/pricing.d.ts +1 -1
- package/dist/lib/pricing.d.ts.map +1 -1
- package/dist/lib/savings.d.ts +1 -1
- package/dist/lib/savings.d.ts.map +1 -1
- package/dist/lib/spikes.d.ts +1 -1
- package/dist/lib/spikes.d.ts.map +1 -1
- package/dist/lib/sync-all.d.ts +1 -1
- package/dist/lib/sync-all.d.ts.map +1 -1
- package/dist/lib/webhooks.d.ts +1 -1
- package/dist/lib/webhooks.d.ts.map +1 -1
- package/dist/mcp/index.js +34 -514
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/otel/index.js +15 -442
- package/dist/server/index.js +46 -492
- package/dist/server/serve.d.ts +1 -1
- package/dist/server/serve.d.ts.map +1 -1
- package/package.json +6 -5
- package/dist/db/storage-adapter.d.ts +0 -34
- package/dist/db/storage-adapter.d.ts.map +0 -1
- package/dist/lib/remote-storage.d.ts +0 -15
- package/dist/lib/remote-storage.d.ts.map +0 -1
- package/dist/lib/storage-sync.d.ts +0 -27
- package/dist/lib/storage-sync.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/economy",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.32",
|
|
4
4
|
"description": "AI coding cost tracker — CLI + MCP server + REST API + web dashboard for Claude Code, Codex, Gemini, OpenCode, Cursor, Pi, and Hermes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -57,20 +57,21 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@hasna/accounts": "0.1.6",
|
|
60
|
-
"@hasna/
|
|
60
|
+
"@hasna/cloud": "0.1.24",
|
|
61
|
+
"@hasna/projects": "0.1.51",
|
|
61
62
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
62
63
|
"chalk": "^5.4.1",
|
|
63
64
|
"commander": "^13.1.0",
|
|
64
|
-
"
|
|
65
|
-
"
|
|
65
|
+
"zod": "^3.24.2",
|
|
66
|
+
"@hasna/events": "^0.1.6"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
69
|
"@types/bun": "latest",
|
|
69
|
-
"@types/pg": "^8.20.0",
|
|
70
70
|
"bun-types": "latest",
|
|
71
71
|
"typescript": "^5.7.2"
|
|
72
72
|
},
|
|
73
73
|
"trustedDependencies": [
|
|
74
|
+
"@hasna/cloud",
|
|
74
75
|
"@hasna/projects"
|
|
75
76
|
]
|
|
76
77
|
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Database as BunDatabase } from 'bun:sqlite';
|
|
2
|
-
export interface RunResult {
|
|
3
|
-
changes: number;
|
|
4
|
-
lastInsertRowid: number | bigint;
|
|
5
|
-
}
|
|
6
|
-
export interface PreparedStatement {
|
|
7
|
-
run(...params: any[]): RunResult;
|
|
8
|
-
get(...params: any[]): unknown;
|
|
9
|
-
all(...params: any[]): unknown[];
|
|
10
|
-
finalize(): void;
|
|
11
|
-
}
|
|
12
|
-
export interface DbAdapter {
|
|
13
|
-
run(sql: string, ...params: any[]): RunResult;
|
|
14
|
-
get(sql: string, ...params: any[]): unknown;
|
|
15
|
-
all(sql: string, ...params: any[]): unknown[];
|
|
16
|
-
exec(sql: string): void;
|
|
17
|
-
prepare(sql: string): PreparedStatement;
|
|
18
|
-
close(): void;
|
|
19
|
-
transaction<T>(fn: () => T): T;
|
|
20
|
-
}
|
|
21
|
-
export declare class SqliteAdapter implements DbAdapter {
|
|
22
|
-
private readonly db;
|
|
23
|
-
constructor(path: string);
|
|
24
|
-
run(sql: string, ...params: any[]): RunResult;
|
|
25
|
-
get(sql: string, ...params: any[]): unknown;
|
|
26
|
-
all(sql: string, ...params: any[]): unknown[];
|
|
27
|
-
exec(sql: string): void;
|
|
28
|
-
query(sql: string): unknown;
|
|
29
|
-
prepare(sql: string): PreparedStatement;
|
|
30
|
-
close(): void;
|
|
31
|
-
transaction<T>(fn: () => T): T;
|
|
32
|
-
get raw(): BunDatabase;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=storage-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-adapter.d.ts","sourceRoot":"","sources":["../../src/db/storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC9B,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IAChC,QAAQ,IAAI,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC3C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IAC7C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACvC,KAAK,IAAI,IAAI,CAAA;IACb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;CAC/B;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,IAAI,EAAE,MAAM;IAIxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS;IAK7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO;IAI3C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE;IAI7C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAmBvC,KAAK,IAAI,IAAI;IAIb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,IAAI,GAAG,IAAI,WAAW,CAErB;CACF"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Pool, PoolClient } from 'pg';
|
|
2
|
-
import type { RunResult } from '../db/storage-adapter.js';
|
|
3
|
-
export declare class PgAdapterAsync {
|
|
4
|
-
private readonly pool;
|
|
5
|
-
constructor(connectionString: string);
|
|
6
|
-
constructor(pool: Pool);
|
|
7
|
-
run(sql: string, ...params: unknown[]): Promise<RunResult>;
|
|
8
|
-
get(sql: string, ...params: unknown[]): Promise<unknown>;
|
|
9
|
-
all(sql: string, ...params: unknown[]): Promise<unknown[]>;
|
|
10
|
-
exec(sql: string): Promise<void>;
|
|
11
|
-
close(): Promise<void>;
|
|
12
|
-
transaction<T>(fn: (client: PoolClient) => Promise<T>): Promise<T>;
|
|
13
|
-
get raw(): Pool;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=remote-storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-storage.d.ts","sourceRoot":"","sources":["../../src/lib/remote-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAkBzD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;gBAEf,gBAAgB,EAAE,MAAM;gBACxB,IAAI,EAAE,IAAI;IAOhB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK1D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAexE,IAAI,GAAG,IAAI,IAAI,CAEd;CACF"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { DbAdapter } from '../db/storage-adapter.js';
|
|
2
|
-
import { PgAdapterAsync } from './remote-storage.js';
|
|
3
|
-
export interface SyncProgress {
|
|
4
|
-
table: string;
|
|
5
|
-
phase: 'reading' | 'writing' | 'done';
|
|
6
|
-
rowsRead: number;
|
|
7
|
-
rowsWritten: number;
|
|
8
|
-
totalTables: number;
|
|
9
|
-
currentTableIndex: number;
|
|
10
|
-
}
|
|
11
|
-
export interface SyncOptions {
|
|
12
|
-
tables: string[];
|
|
13
|
-
onProgress?: (progress: SyncProgress) => void;
|
|
14
|
-
batchSize?: number;
|
|
15
|
-
conflictColumn?: string;
|
|
16
|
-
primaryKey?: string | string[];
|
|
17
|
-
}
|
|
18
|
-
export interface SyncResult {
|
|
19
|
-
table: string;
|
|
20
|
-
rowsRead: number;
|
|
21
|
-
rowsWritten: number;
|
|
22
|
-
rowsSkipped: number;
|
|
23
|
-
errors: string[];
|
|
24
|
-
}
|
|
25
|
-
export declare function syncPush(local: DbAdapter, remote: PgAdapterAsync, options: SyncOptions): Promise<SyncResult[]>;
|
|
26
|
-
export declare function syncPull(remote: PgAdapterAsync, local: DbAdapter, options: SyncOptions): Promise<SyncResult[]>;
|
|
27
|
-
//# sourceMappingURL=storage-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-sync.d.ts","sourceRoot":"","sources":["../../src/lib/storage-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAKD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGpH;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGpH"}
|