@hasna/economy 0.3.9 → 0.3.12
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/CHANGELOG.md +37 -0
- package/dist/cli/brains.d.ts +3 -0
- package/dist/cli/brains.d.ts.map +1 -0
- package/dist/cli/commands/brief.d.ts +11 -0
- package/dist/cli/commands/brief.d.ts.map +1 -0
- package/dist/cli/commands/completion.d.ts +2 -0
- package/dist/cli/commands/completion.d.ts.map +1 -0
- package/dist/cli/commands/extras.d.ts +4 -0
- package/dist/cli/commands/extras.d.ts.map +1 -0
- package/dist/cli/commands/menubar.d.ts +7 -0
- package/dist/cli/commands/menubar.d.ts.map +1 -0
- package/dist/cli/commands/notification.d.ts +8 -0
- package/dist/cli/commands/notification.d.ts.map +1 -0
- package/dist/cli/commands/todos.d.ts +29 -0
- package/dist/cli/commands/todos.d.ts.map +1 -0
- package/dist/cli/commands/tui.d.ts +26 -0
- package/dist/cli/commands/tui.d.ts.map +1 -0
- package/dist/cli/commands/watch.d.ts +10 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +12204 -0
- package/dist/db/cloud.d.ts +45 -0
- package/dist/db/cloud.d.ts.map +1 -0
- package/dist/db/database.d.ts +157 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/dialect.d.ts +13 -0
- package/dist/db/dialect.d.ts.map +1 -0
- package/dist/db/pg-migrate.d.ts +30 -0
- package/dist/db/pg-migrate.d.ts.map +1 -0
- package/dist/db/pg-migrations.d.ts +7 -0
- package/dist/db/pg-migrations.d.ts.map +1 -0
- package/dist/db/pg-sync-worker.d.ts +2 -0
- package/dist/db/pg-sync-worker.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.d.ts +36 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sync-pg.d.ts +43 -0
- package/dist/db/sync-pg.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3406 -0
- package/dist/ingest/billing.d.ts +27 -0
- package/dist/ingest/billing.d.ts.map +1 -0
- package/dist/ingest/claude-quota.d.ts +5 -0
- package/dist/ingest/claude-quota.d.ts.map +1 -0
- package/dist/ingest/claude.d.ts +18 -0
- package/dist/ingest/claude.d.ts.map +1 -0
- package/dist/ingest/codex-quota.d.ts +5 -0
- package/dist/ingest/codex-quota.d.ts.map +1 -0
- package/dist/ingest/codex.d.ts +8 -0
- package/dist/ingest/codex.d.ts.map +1 -0
- package/dist/ingest/cursor.d.ts +6 -0
- package/dist/ingest/cursor.d.ts.map +1 -0
- package/dist/ingest/gemini.d.ts +6 -0
- package/dist/ingest/gemini.d.ts.map +1 -0
- package/dist/ingest/hermes.d.ts +6 -0
- package/dist/ingest/hermes.d.ts.map +1 -0
- package/dist/ingest/loops.d.ts +6 -0
- package/dist/ingest/loops.d.ts.map +1 -0
- package/dist/ingest/opencode.d.ts +7 -0
- package/dist/ingest/opencode.d.ts.map +1 -0
- package/dist/ingest/otel.d.ts +33 -0
- package/dist/ingest/otel.d.ts.map +1 -0
- package/dist/ingest/pi.d.ts +7 -0
- package/dist/ingest/pi.d.ts.map +1 -0
- package/dist/ingest/plugin.d.ts +17 -0
- package/dist/ingest/plugin.d.ts.map +1 -0
- package/dist/lib/accounts.d.ts +11 -0
- package/dist/lib/accounts.d.ts.map +1 -0
- package/dist/lib/agents.d.ts +11 -0
- package/dist/lib/agents.d.ts.map +1 -0
- package/dist/lib/analytics.d.ts +68 -0
- package/dist/lib/analytics.d.ts.map +1 -0
- package/dist/lib/billing-diff.d.ts +61 -0
- package/dist/lib/billing-diff.d.ts.map +1 -0
- package/dist/lib/brief.d.ts +72 -0
- package/dist/lib/brief.d.ts.map +1 -0
- package/dist/lib/cloud-ingest.d.ts +57 -0
- package/dist/lib/cloud-ingest.d.ts.map +1 -0
- package/dist/lib/cloud-storage.d.ts +48 -0
- package/dist/lib/cloud-storage.d.ts.map +1 -0
- package/dist/lib/config.d.ts +13 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/contracts-client/index.d.ts +3 -0
- package/dist/lib/contracts-client/index.d.ts.map +1 -0
- package/dist/lib/contracts-client/storage.d.ts +3 -0
- package/dist/lib/contracts-client/storage.d.ts.map +1 -0
- package/dist/lib/contracts-client/transport.d.ts +2 -0
- package/dist/lib/contracts-client/transport.d.ts.map +1 -0
- package/dist/lib/gatherer.d.ts +21 -0
- package/dist/lib/gatherer.d.ts.map +1 -0
- package/dist/lib/model-config.d.ts +8 -0
- package/dist/lib/model-config.d.ts.map +1 -0
- package/dist/lib/open-projects.d.ts +27 -0
- package/dist/lib/open-projects.d.ts.map +1 -0
- package/dist/lib/package-metadata.d.ts +8 -0
- package/dist/lib/package-metadata.d.ts.map +1 -0
- package/dist/lib/paths.d.ts +20 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/periods.d.ts +6 -0
- package/dist/lib/periods.d.ts.map +1 -0
- package/dist/lib/pricing.d.ts +13 -0
- package/dist/lib/pricing.d.ts.map +1 -0
- package/dist/lib/savings.d.ts +17 -0
- package/dist/lib/savings.d.ts.map +1 -0
- package/dist/lib/serve-auth.d.ts +4 -0
- package/dist/lib/serve-auth.d.ts.map +1 -0
- package/dist/lib/spikes.d.ts +18 -0
- package/dist/lib/spikes.d.ts.map +1 -0
- package/dist/lib/store/index.d.ts +303 -0
- package/dist/lib/store/index.d.ts.map +1 -0
- package/dist/lib/sync-all.d.ts +28 -0
- package/dist/lib/sync-all.d.ts.map +1 -0
- package/dist/lib/sync-maintenance.d.ts +15 -0
- package/dist/lib/sync-maintenance.d.ts.map +1 -0
- package/dist/lib/watch-paths.d.ts +3 -0
- package/dist/lib/watch-paths.d.ts.map +1 -0
- package/dist/lib/webhooks.d.ts +3 -0
- package/dist/lib/webhooks.d.ts.map +1 -0
- package/dist/mcp/http.d.ts +14 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5997 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/openapi.d.ts +3 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/otel/index.d.ts +3 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +1464 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +8360 -0
- package/dist/server/pg-sync-worker.js +31 -0
- package/dist/server/serve.d.ts +42 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/types/index.d.ts +240 -0
- package/dist/types/index.d.ts.map +1 -0
- package/docs/cli.md +3 -3
- package/docs/mcp.md +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/db/pg-sync-worker.ts
|
|
3
|
+
import { parentPort, workerData } from "worker_threads";
|
|
4
|
+
import pg from "pg";
|
|
5
|
+
pg.types.setTypeParser(20, (v) => v === null ? null : Number(v));
|
|
6
|
+
pg.types.setTypeParser(1700, (v) => v === null ? null : Number(v));
|
|
7
|
+
var dsn = workerData?.dsn;
|
|
8
|
+
var ssl = dsn && (dsn.includes("sslmode=require") || dsn.includes("ssl=true")) ? { rejectUnauthorized: false } : undefined;
|
|
9
|
+
var pool = new pg.Pool({
|
|
10
|
+
connectionString: dsn,
|
|
11
|
+
ssl,
|
|
12
|
+
max: Number(process.env["ECONOMY_PG_POOL_MAX"] ?? "5"),
|
|
13
|
+
connectionTimeoutMillis: 1e4
|
|
14
|
+
});
|
|
15
|
+
pool.on("error", (err) => {
|
|
16
|
+
console.error(JSON.stringify({ evt: "pg_worker_pool_error", message: err.message }));
|
|
17
|
+
});
|
|
18
|
+
var replyPort = null;
|
|
19
|
+
parentPort?.on("message", (msg) => {
|
|
20
|
+
if (msg.type === "init") {
|
|
21
|
+
replyPort = msg.port;
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const { id, sql, params, signal } = msg;
|
|
25
|
+
const sig = new Int32Array(signal);
|
|
26
|
+
pool.query(sql, params).then((res) => ({ id, ok: true, rows: res.rows, rowCount: res.rowCount ?? 0 })).catch((err) => ({ id, ok: false, error: err instanceof Error ? err.message : String(err) })).then((response) => {
|
|
27
|
+
replyPort?.postMessage(response);
|
|
28
|
+
Atomics.store(sig, 0, 1);
|
|
29
|
+
Atomics.notify(sig, 0);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SqliteAdapter as Database } from '../db/sqlite-adapter.js';
|
|
2
|
+
/** The serve OpenAPI document (source of the generated SDK), version-synced. */
|
|
3
|
+
export declare function openApiDocument(): Record<string, unknown>;
|
|
4
|
+
/**
|
|
5
|
+
* Framework-agnostic API-key verifier shape (matches `@hasna/contracts/auth`
|
|
6
|
+
* `ApiKeyVerifier`). Kept structural so serve.ts has no hard dependency on the
|
|
7
|
+
* auth package; the entry point injects the real verifier.
|
|
8
|
+
*/
|
|
9
|
+
export interface ApiAuthenticator {
|
|
10
|
+
authenticate(headers: Headers, context?: {
|
|
11
|
+
method?: string | null;
|
|
12
|
+
path?: string | null;
|
|
13
|
+
requiredScopes?: readonly string[];
|
|
14
|
+
}): Promise<{
|
|
15
|
+
ok: boolean;
|
|
16
|
+
status: number;
|
|
17
|
+
reason?: string;
|
|
18
|
+
message?: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
interface StartServerOptions {
|
|
22
|
+
db?: Database;
|
|
23
|
+
dashboardDir?: string;
|
|
24
|
+
hostname?: string;
|
|
25
|
+
log?: (message: string) => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function createServerFetch(apiHandler: (req: Request) => Promise<Response>, dashboardDir?: string): (req: Request) => Promise<Response>;
|
|
28
|
+
export interface HandlerOptions {
|
|
29
|
+
/** API-key verifier (from `@hasna/contracts/auth`). When present, every
|
|
30
|
+
* request outside the open foundation probes must present a valid
|
|
31
|
+
* `economy:*` scoped key. This is the internet-facing auth path. */
|
|
32
|
+
authenticator?: ApiAuthenticator;
|
|
33
|
+
/** Readiness probe proving storage is reachable + migrated. */
|
|
34
|
+
readyCheck?: () => Promise<{
|
|
35
|
+
ready: boolean;
|
|
36
|
+
detail?: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
export declare function createHandler(db: Database, options?: HandlerOptions): (req: Request) => Promise<Response>;
|
|
40
|
+
export declare function startServer(port?: number, options?: StartServerOptions): ReturnType<typeof Bun.serve>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAgDxE,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzD;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAC7F,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/E;AAuBD,UAAU,kBAAkB;IAC1B,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AA6ED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,SAAwB,IACzF,KAAK,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAwB7D;AAQD,MAAM,WAAW,cAAc;IAC7B;;wEAEoE;IACpE,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAE,cAAmB,IACxC,KAAK,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAmhB/D;AAMD,wBAAgB,WAAW,CAAC,IAAI,SAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAkDvG"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
export type { Agent, CostBasis } from '../lib/agents.js';
|
|
2
|
+
export { AGENTS, COST_BASIS, isAgent } from '../lib/agents.js';
|
|
3
|
+
export type Period = 'today' | 'yesterday' | 'week' | 'month' | 'year' | 'all';
|
|
4
|
+
export type EconomyAgent = import('../lib/agents.js').Agent | 'app' | 'service' | 'repo' | 'loop';
|
|
5
|
+
export type CostCenterKind = 'loop' | 'app' | 'repo' | 'service' | 'team';
|
|
6
|
+
export interface CostCenter {
|
|
7
|
+
id: string;
|
|
8
|
+
kind: CostCenterKind;
|
|
9
|
+
name: string;
|
|
10
|
+
repo_path?: string | null;
|
|
11
|
+
labels_json: string;
|
|
12
|
+
created_at: string;
|
|
13
|
+
updated_at?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface EconomyRequest {
|
|
16
|
+
id: string;
|
|
17
|
+
agent: EconomyAgent;
|
|
18
|
+
session_id: string;
|
|
19
|
+
model: string;
|
|
20
|
+
input_tokens: number;
|
|
21
|
+
output_tokens: number;
|
|
22
|
+
cache_read_tokens: number;
|
|
23
|
+
cache_create_tokens: number;
|
|
24
|
+
cache_create_5m_tokens?: number;
|
|
25
|
+
cache_create_1h_tokens?: number;
|
|
26
|
+
cost_usd: number;
|
|
27
|
+
cost_basis?: import('../lib/agents.js').CostBasis;
|
|
28
|
+
duration_ms: number;
|
|
29
|
+
timestamp: string;
|
|
30
|
+
source_request_id: string;
|
|
31
|
+
machine_id?: string;
|
|
32
|
+
cost_center_id?: string | null;
|
|
33
|
+
attribution_tag?: string;
|
|
34
|
+
account_key?: string;
|
|
35
|
+
account_tool?: string;
|
|
36
|
+
account_name?: string;
|
|
37
|
+
account_email?: string;
|
|
38
|
+
account_source?: string;
|
|
39
|
+
updated_at?: string;
|
|
40
|
+
synced_at?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface EconomySession {
|
|
43
|
+
id: string;
|
|
44
|
+
agent: EconomyAgent;
|
|
45
|
+
project_path: string;
|
|
46
|
+
project_name: string;
|
|
47
|
+
started_at: string;
|
|
48
|
+
ended_at: string | null;
|
|
49
|
+
total_cost_usd: number;
|
|
50
|
+
total_tokens: number;
|
|
51
|
+
request_count: number;
|
|
52
|
+
machine_id?: string;
|
|
53
|
+
cost_center_id?: string | null;
|
|
54
|
+
attribution_tag?: string;
|
|
55
|
+
account_key?: string;
|
|
56
|
+
account_tool?: string;
|
|
57
|
+
account_name?: string;
|
|
58
|
+
account_email?: string;
|
|
59
|
+
account_source?: string;
|
|
60
|
+
updated_at?: string;
|
|
61
|
+
synced_at?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface EconomyProject {
|
|
64
|
+
id: string;
|
|
65
|
+
path: string;
|
|
66
|
+
name: string;
|
|
67
|
+
description: string | null;
|
|
68
|
+
tags: string[];
|
|
69
|
+
created_at: string;
|
|
70
|
+
}
|
|
71
|
+
export interface Budget {
|
|
72
|
+
id: string;
|
|
73
|
+
project_path: string | null;
|
|
74
|
+
agent: import('../lib/agents.js').Agent | null;
|
|
75
|
+
cost_center_id?: string | null;
|
|
76
|
+
period: 'daily' | 'weekly' | 'monthly';
|
|
77
|
+
limit_usd: number;
|
|
78
|
+
alert_at_percent: number;
|
|
79
|
+
created_at: string;
|
|
80
|
+
updated_at: string;
|
|
81
|
+
}
|
|
82
|
+
export interface BudgetStatus extends Budget {
|
|
83
|
+
current_spend_usd: number;
|
|
84
|
+
percent_used: number;
|
|
85
|
+
is_over_limit: boolean;
|
|
86
|
+
is_over_alert: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface IngestState {
|
|
89
|
+
source: string;
|
|
90
|
+
key: string;
|
|
91
|
+
value: string;
|
|
92
|
+
}
|
|
93
|
+
export interface CostSummary {
|
|
94
|
+
total_usd: number;
|
|
95
|
+
sessions: number;
|
|
96
|
+
requests: number;
|
|
97
|
+
tokens: number;
|
|
98
|
+
period: Period;
|
|
99
|
+
}
|
|
100
|
+
export interface ZeroCostModelBreakdown {
|
|
101
|
+
agent: import('../lib/agents.js').Agent;
|
|
102
|
+
model: string;
|
|
103
|
+
requests: number;
|
|
104
|
+
total_tokens: number;
|
|
105
|
+
last_seen: string;
|
|
106
|
+
}
|
|
107
|
+
export interface ModelBreakdown {
|
|
108
|
+
model: string;
|
|
109
|
+
agent: EconomyAgent;
|
|
110
|
+
requests: number;
|
|
111
|
+
input_tokens: number;
|
|
112
|
+
output_tokens: number;
|
|
113
|
+
total_tokens: number;
|
|
114
|
+
cost_usd: number;
|
|
115
|
+
}
|
|
116
|
+
export interface ProjectBreakdown {
|
|
117
|
+
project_path: string;
|
|
118
|
+
project_name: string;
|
|
119
|
+
sessions: number;
|
|
120
|
+
requests: number;
|
|
121
|
+
total_tokens: number;
|
|
122
|
+
cost_usd: number;
|
|
123
|
+
last_active: string;
|
|
124
|
+
}
|
|
125
|
+
export interface AgentBreakdown {
|
|
126
|
+
agent: EconomyAgent;
|
|
127
|
+
sessions: number;
|
|
128
|
+
requests: number;
|
|
129
|
+
total_tokens: number;
|
|
130
|
+
api_equivalent_usd: number;
|
|
131
|
+
billable_usd: number;
|
|
132
|
+
metered_api_usd: number;
|
|
133
|
+
subscription_included_usd: number;
|
|
134
|
+
estimated_usd: number;
|
|
135
|
+
unknown_usd: number;
|
|
136
|
+
cost_usd: number;
|
|
137
|
+
last_active: string;
|
|
138
|
+
}
|
|
139
|
+
export interface AccountBreakdown {
|
|
140
|
+
account_key: string;
|
|
141
|
+
account_tool: string;
|
|
142
|
+
account_name: string;
|
|
143
|
+
account_email: string | null;
|
|
144
|
+
account_source: string;
|
|
145
|
+
sessions: number;
|
|
146
|
+
requests: number;
|
|
147
|
+
total_tokens: number;
|
|
148
|
+
api_equivalent_usd: number;
|
|
149
|
+
billable_usd: number;
|
|
150
|
+
metered_api_usd: number;
|
|
151
|
+
subscription_included_usd: number;
|
|
152
|
+
estimated_usd: number;
|
|
153
|
+
unknown_usd: number;
|
|
154
|
+
cost_usd: number;
|
|
155
|
+
last_active: string;
|
|
156
|
+
}
|
|
157
|
+
export interface CostCenterBreakdown {
|
|
158
|
+
cost_center_id: string;
|
|
159
|
+
kind: CostCenterKind;
|
|
160
|
+
name: string;
|
|
161
|
+
repo_path: string | null;
|
|
162
|
+
labels_json: string;
|
|
163
|
+
sessions: number;
|
|
164
|
+
requests: number;
|
|
165
|
+
total_tokens: number;
|
|
166
|
+
api_equivalent_usd: number;
|
|
167
|
+
billable_usd: number;
|
|
168
|
+
metered_api_usd: number;
|
|
169
|
+
subscription_included_usd: number;
|
|
170
|
+
estimated_usd: number;
|
|
171
|
+
unknown_usd: number;
|
|
172
|
+
cost_usd: number;
|
|
173
|
+
last_active: string;
|
|
174
|
+
}
|
|
175
|
+
export interface ModelPricing {
|
|
176
|
+
inputPer1M: number;
|
|
177
|
+
outputPer1M: number;
|
|
178
|
+
cacheReadPer1M: number;
|
|
179
|
+
cacheWritePer1M: number;
|
|
180
|
+
cacheWrite1hPer1M?: number;
|
|
181
|
+
cacheStoragePer1MHour?: number;
|
|
182
|
+
}
|
|
183
|
+
export interface SyncOptions {
|
|
184
|
+
claude?: boolean;
|
|
185
|
+
takumi?: boolean;
|
|
186
|
+
codex?: boolean;
|
|
187
|
+
gemini?: boolean;
|
|
188
|
+
opencode?: boolean;
|
|
189
|
+
cursor?: boolean;
|
|
190
|
+
pi?: boolean;
|
|
191
|
+
hermes?: boolean;
|
|
192
|
+
loops?: boolean;
|
|
193
|
+
verbose?: boolean;
|
|
194
|
+
dedupe?: boolean;
|
|
195
|
+
/** Claude/Takumi JSONL root override (tests). */
|
|
196
|
+
projectsDir?: string;
|
|
197
|
+
}
|
|
198
|
+
export interface SessionFilter {
|
|
199
|
+
agent?: import('../lib/agents.js').Agent;
|
|
200
|
+
project?: string;
|
|
201
|
+
account?: string;
|
|
202
|
+
limit?: number;
|
|
203
|
+
offset?: number;
|
|
204
|
+
since?: string;
|
|
205
|
+
search?: string;
|
|
206
|
+
machine?: string;
|
|
207
|
+
}
|
|
208
|
+
export interface Subscription {
|
|
209
|
+
id: string;
|
|
210
|
+
agent: import('../lib/agents.js').Agent | null;
|
|
211
|
+
provider: string;
|
|
212
|
+
plan: string;
|
|
213
|
+
monthly_fee_usd: number;
|
|
214
|
+
included_usage_usd: number;
|
|
215
|
+
billing_cycle_start: string | null;
|
|
216
|
+
reset_policy: string;
|
|
217
|
+
active: number;
|
|
218
|
+
created_at: string;
|
|
219
|
+
updated_at: string;
|
|
220
|
+
}
|
|
221
|
+
export interface UsageSnapshot {
|
|
222
|
+
id: string;
|
|
223
|
+
agent: import('../lib/agents.js').Agent;
|
|
224
|
+
date: string;
|
|
225
|
+
metric: string;
|
|
226
|
+
value: number;
|
|
227
|
+
unit: string;
|
|
228
|
+
machine_id: string;
|
|
229
|
+
updated_at: string;
|
|
230
|
+
}
|
|
231
|
+
export interface MachineRegistry {
|
|
232
|
+
machine_id: string;
|
|
233
|
+
hostname: string;
|
|
234
|
+
last_seen_at: string | null;
|
|
235
|
+
last_push_at: string | null;
|
|
236
|
+
last_pull_at: string | null;
|
|
237
|
+
economy_version: string | null;
|
|
238
|
+
updated_at: string;
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/docs/cli.md
CHANGED
|
@@ -17,8 +17,8 @@ The supported coding-agent values are `claude`, `takumi`, `codex`, `gemini`, `op
|
|
|
17
17
|
|
|
18
18
|
| Command | Current behavior and principal options |
|
|
19
19
|
| --- | --- |
|
|
20
|
-
| `economy sync` | Ingest every local source, or select sources with `--claude`, `--takumi`, `--codex`, `--gemini`, `--opencode`, `--cursor`, `--pi`, `--hermes`, or `--loops`. Maintenance flags are `--force`, `--backfill-machine`, and `--recalculate`; `--verbose` prints source details. |
|
|
21
|
-
| `economy today`, `week`, `month` | Auto-sync
|
|
20
|
+
| `economy sync` | Ingest every local source, or select sources with `--claude`, `--takumi`, `--codex`, `--gemini`, `--opencode`, `--cursor`, `--pi`, `--hermes`, or `--loops`. Maintenance flags are `--force`, `--backfill-machine`, and `--recalculate`; `--verbose` prints source details. In cloud-client mode the on-box provider files are read on this machine and pushed to the shared API. |
|
|
21
|
+
| `economy today`, `week`, `month` | Auto-sync (local SQLite, or cloud-client push of this machine's on-box provider files) and print the corresponding summary. |
|
|
22
22
|
| `economy sessions` | List sessions. Filters: `--agent`, `--project`, `--account`, `--machine`, `--since`, and `--search`; `--limit` defaults to 20; `--format` is `table`, `compact`, `csv`, or `json`. |
|
|
23
23
|
| `economy session <id>` | Show one session and its requests. IDs may be prefixes. `--limit` defaults to 20 and `--verbose` shows up to 50 requests. |
|
|
24
24
|
| `economy top` | Rank expensive sessions with `-n`, `--agent`, and `--since`. |
|
|
@@ -58,7 +58,7 @@ Human output for high-cardinality commands is intentionally capped. Use the comm
|
|
|
58
58
|
| `economy project` | `add <path> [--name]`, `list`, `show <nameOrPath>`, `rename <path> <name>`, `remove <path>`. |
|
|
59
59
|
| `economy pricing` | `list`, `set <model>`, `remove <model>`. Set accepts `--input`, `--output`, `--cache-read`, `--cache-write`, `--cache-write-1h`, and `--cache-storage`. |
|
|
60
60
|
| `economy subscriptions` | `set` (requires `--provider` and `--plan`; optional `--agent`, `--fee`, `--included`), `list`, `remove <id>`. |
|
|
61
|
-
| `economy billing` | `sync` (`--days`, provider selectors), `show --period`, and `diff --period`. Provider
|
|
61
|
+
| `economy billing` | `sync` (`--days`, provider selectors), `show --period`, and `diff --period`. Provider billing is fetched from the provider APIs on this machine; in cloud-client mode the rows are pushed to the shared API. |
|
|
62
62
|
| `economy config` | Show config, `get <key>`, `set <key> <value>`, or `webhook-test`. See [configuration](configuration.md). |
|
|
63
63
|
| `economy remove <type> <id>` | Top-level alias for removing a `budget`, `project`, `goal`, or `pricing` row. Alias: `rm`. |
|
|
64
64
|
|
package/docs/mcp.md
CHANGED
|
@@ -62,4 +62,4 @@ Shared agent-registry tools:
|
|
|
62
62
|
|
|
63
63
|
High-cardinality tools return compact text by default. Where the schema offers them, use `limit`, `verbose=true`, or `json=true`. Limits are clamped to 100 for MCP calls.
|
|
64
64
|
|
|
65
|
-
The `sync` tool accepts `all`, any supported coding agent, or `loops`. It ingests on-box files
|
|
65
|
+
The `sync` tool accepts `all`, any supported coding agent, or `loops`. It ingests on-box files (in local mode into the local SQLite; in cloud-client mode it reads the on-box files on this machine and pushes the rows to the shared API).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/economy",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"description": "AI coding cost tracker — CLI + MCP server + REST API + web dashboard for Claude Code, Codex, OpenCode, Cursor, Pi, and Hermes, with legacy Gemini CLI session and Gemini API billing ingestion",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,12 +37,14 @@
|
|
|
37
37
|
"CODE_OF_CONDUCT.md"
|
|
38
38
|
],
|
|
39
39
|
"scripts": {
|
|
40
|
-
"build": "cd dashboard && bun run build && cd .. && bun build src/cli/index.ts --outdir dist/cli --target bun --packages external && bun build src/mcp/index.ts --outdir dist/mcp --target bun --packages external && bun build src/server/index.ts --outdir dist/server --target bun --packages external && bun build src/db/pg-sync-worker.ts --outdir dist/server --target bun --packages external && bun build src/otel/index.ts --outdir dist/otel --target bun --packages external && bun build src/index.ts --outdir dist --target bun --packages external && tsc --emitDeclarationOnly --outDir dist",
|
|
40
|
+
"build": "cd dashboard && bun install --frozen-lockfile && bun run build && cd .. && bun build src/cli/index.ts --outdir dist/cli --target bun --packages external && bun build src/mcp/index.ts --outdir dist/mcp --target bun --packages external && bun build src/server/index.ts --outdir dist/server --target bun --packages external && bun build src/db/pg-sync-worker.ts --outdir dist/server --target bun --packages external && bun build src/otel/index.ts --outdir dist/otel --target bun --packages external && bun build src/index.ts --outdir dist --target bun --packages external && tsc --emitDeclarationOnly --outDir dist",
|
|
41
41
|
"build:cli": "bun build src/cli/index.ts --outdir dist/cli --target bun --packages external",
|
|
42
42
|
"build:mcp": "bun build src/mcp/index.ts --outdir dist/mcp --target bun --packages external",
|
|
43
43
|
"build:server": "bun build src/server/index.ts --outdir dist/server --target bun --packages external",
|
|
44
44
|
"build:lib": "bun build src/index.ts --outdir dist --target bun --packages external",
|
|
45
45
|
"build:dashboard": "cd dashboard && bun run build",
|
|
46
|
+
"artifact-scan": "bun scripts/contracts-cli.mjs artifact-scan dist",
|
|
47
|
+
"prepack": "bun run build && bun run artifact-scan",
|
|
46
48
|
"typecheck": "tsc --noEmit",
|
|
47
49
|
"test": "bun test",
|
|
48
50
|
"dev:cli": "bun run src/cli/index.ts",
|
|
@@ -72,10 +74,10 @@
|
|
|
72
74
|
"dependencies": {
|
|
73
75
|
"@hasna/accounts": "0.2.23",
|
|
74
76
|
"@hasna/agent-registry": "^0.1.0",
|
|
75
|
-
"@hasna/contracts": "^0.
|
|
76
|
-
"@hasna/events": "^0.1.
|
|
77
|
+
"@hasna/contracts": "^0.13.0",
|
|
78
|
+
"@hasna/events": "^0.1.16",
|
|
77
79
|
"@hasna/mcp-harness": "^0.1.0",
|
|
78
|
-
"@hasna/projects": "0.1.
|
|
80
|
+
"@hasna/projects": "0.1.134",
|
|
79
81
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
80
82
|
"chalk": "^5.4.1",
|
|
81
83
|
"commander": "^13.1.0",
|