@hasna/economy 0.3.6 → 0.3.8
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 +31 -0
- package/README.md +73 -60
- package/dashboard/README.md +17 -64
- package/dist/cli/commands/extras.d.ts.map +1 -1
- package/dist/cli/commands/todos.d.ts +3 -0
- package/dist/cli/commands/todos.d.ts.map +1 -1
- package/dist/cli/index.js +914 -199
- package/dist/db/cloud.d.ts +3 -4
- package/dist/db/cloud.d.ts.map +1 -1
- package/dist/db/database.d.ts +10 -3
- package/dist/db/database.d.ts.map +1 -1
- 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.map +1 -1
- 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 +1 -1
- package/dist/db/sync-pg.d.ts.map +1 -1
- package/dist/index.js +309 -59
- 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/loops.d.ts +6 -0
- package/dist/ingest/loops.d.ts.map +1 -0
- package/dist/ingest/opencode.d.ts +1 -1
- package/dist/ingest/opencode.d.ts.map +1 -1
- package/dist/ingest/otel.d.ts +16 -3
- 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/accounts.d.ts.map +1 -1
- package/dist/lib/analytics.d.ts +1 -1
- package/dist/lib/analytics.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/brief.d.ts +1 -1
- package/dist/lib/brief.d.ts.map +1 -1
- package/dist/lib/open-projects.d.ts +10 -2
- package/dist/lib/open-projects.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/store/index.d.ts +9 -1
- package/dist/lib/store/index.d.ts.map +1 -1
- package/dist/lib/sync-all.d.ts +3 -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 +757 -166
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/otel/index.js +262 -27
- package/dist/server/index.js +683 -135
- package/dist/server/serve.d.ts +1 -1
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/types/index.d.ts +37 -4
- package/dist/types/index.d.ts.map +1 -1
- package/docs/README.md +12 -0
- package/docs/cli.md +88 -0
- package/docs/configuration.md +86 -0
- package/docs/ingestion.md +47 -0
- package/docs/mcp.md +65 -0
- package/docs/otel.md +53 -0
- package/docs/rest-api.md +89 -0
- package/package.json +4 -5
- package/dist/lib/cloud-sync.d.ts +0 -35
- package/dist/lib/cloud-sync.d.ts.map +0 -1
- package/dist/lib/fleet-sync.d.ts +0 -61
- package/dist/lib/fleet-sync.d.ts.map +0 -1
- package/dist/lib/peer-sync.d.ts +0 -21
- package/dist/lib/peer-sync.d.ts.map +0 -1
- package/dist/storage.js +0 -2746
package/dist/lib/cloud-sync.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export declare const CLOUD_TABLES: readonly ["requests", "sessions", "projects", "budgets", "goals", "model_pricing", "billing_daily", "subscriptions", "usage_snapshots", "savings_daily", "machines", "ingest_state"];
|
|
2
|
-
export declare function getCloudDatabaseUrl(): string | null;
|
|
3
|
-
export declare function isCloudAutoEnabled(): boolean;
|
|
4
|
-
export declare function getCloudPullIntervalMinutes(): number;
|
|
5
|
-
export declare function getCloudPg(): Promise<import("@hasna/cloud").PgAdapterAsync>;
|
|
6
|
-
export declare function runCloudMigrations(cloud: {
|
|
7
|
-
run: (sql: string) => Promise<unknown>;
|
|
8
|
-
}): Promise<void>;
|
|
9
|
-
export declare function isCloudIncrementalEnabled(): boolean;
|
|
10
|
-
export declare function cloudPush(opts?: {
|
|
11
|
-
tables?: string[];
|
|
12
|
-
}): Promise<{
|
|
13
|
-
rows: number;
|
|
14
|
-
machine: string;
|
|
15
|
-
}>;
|
|
16
|
-
export declare function cloudPull(opts?: {
|
|
17
|
-
tables?: string[];
|
|
18
|
-
}): Promise<{
|
|
19
|
-
rows: number;
|
|
20
|
-
machine: string;
|
|
21
|
-
}>;
|
|
22
|
-
export declare function cloudSyncFull(): Promise<{
|
|
23
|
-
push: number;
|
|
24
|
-
pull: number;
|
|
25
|
-
machine: string;
|
|
26
|
-
}>;
|
|
27
|
-
export declare function setLastCloudPull(at?: string): void;
|
|
28
|
-
export declare function getLastCloudPull(): string | null;
|
|
29
|
-
export declare function shouldPullFromCloud(): boolean;
|
|
30
|
-
export declare function maybePullFromCloud(): Promise<boolean>;
|
|
31
|
-
export declare function maybePushAfterIngest(): Promise<boolean>;
|
|
32
|
-
export declare function registerCloudSchedule(intervalMinutes: number): Promise<void>;
|
|
33
|
-
export declare function removeCloudSchedule(): Promise<void>;
|
|
34
|
-
export declare function getCloudScheduleStatus(): Promise<import("@hasna/cloud").SyncScheduleStatus>;
|
|
35
|
-
//# sourceMappingURL=cloud-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-sync.d.ts","sourceRoot":"","sources":["../../src/lib/cloud-sync.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,sLAaf,CAAA;AAEV,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD;AAED,wBAAsB,UAAU,mDAO/B;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzG;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED,wBAAsB,SAAS,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAYxG;AAED,wBAAsB,SAAS,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAaxG;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAI9F;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAA2B,GAAG,IAAI,CAGpE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ3D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ7D;AA4BD,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlF;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzD;AAED,wBAAsB,sBAAsB,uDAG3C"}
|
package/dist/lib/fleet-sync.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { type PeerMergeResult } from './peer-sync.js';
|
|
2
|
-
export interface CommandResult {
|
|
3
|
-
code: number | null;
|
|
4
|
-
stdout: string;
|
|
5
|
-
stderr: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
}
|
|
8
|
-
export type FleetCommandRunner = (command: string, args: string[], options: {
|
|
9
|
-
timeoutMs: number;
|
|
10
|
-
}) => CommandResult;
|
|
11
|
-
export interface EconomyFleetSyncOptions {
|
|
12
|
-
machines?: string[];
|
|
13
|
-
localSync?: boolean;
|
|
14
|
-
remoteSync?: boolean;
|
|
15
|
-
cacheDir?: string;
|
|
16
|
-
reportDir?: string;
|
|
17
|
-
remoteSnapshotDir?: string;
|
|
18
|
-
timeoutMs?: number;
|
|
19
|
-
dryRun?: boolean;
|
|
20
|
-
runner?: FleetCommandRunner;
|
|
21
|
-
now?: Date;
|
|
22
|
-
}
|
|
23
|
-
export interface EconomyFleetSyncMachineResult {
|
|
24
|
-
machine: string;
|
|
25
|
-
status: 'merged' | 'failed' | 'dry_run';
|
|
26
|
-
remote_sync?: CommandResult;
|
|
27
|
-
remote_snapshot?: CommandResult;
|
|
28
|
-
remote_snapshot_path?: string;
|
|
29
|
-
pull?: CommandResult;
|
|
30
|
-
local_integrity?: {
|
|
31
|
-
ok: boolean;
|
|
32
|
-
detail: string;
|
|
33
|
-
};
|
|
34
|
-
merge?: PeerMergeResult;
|
|
35
|
-
error?: string;
|
|
36
|
-
}
|
|
37
|
-
export interface EconomyFleetSyncResult {
|
|
38
|
-
schema: 'open-economy.fleet-sync.v1';
|
|
39
|
-
generated_at: string;
|
|
40
|
-
dry_run: boolean;
|
|
41
|
-
local: {
|
|
42
|
-
status: 'synced' | 'failed' | 'skipped' | 'dry_run';
|
|
43
|
-
sync?: CommandResult;
|
|
44
|
-
db_path: string;
|
|
45
|
-
};
|
|
46
|
-
remote: EconomyFleetSyncMachineResult[];
|
|
47
|
-
summary: {
|
|
48
|
-
machines: number;
|
|
49
|
-
merged: number;
|
|
50
|
-
failed: number;
|
|
51
|
-
dry_run: number;
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
export declare function runEconomyFleetSync(options?: EconomyFleetSyncOptions): EconomyFleetSyncResult;
|
|
55
|
-
export declare function isSafeRemoteSnapshotPath(path: string, remoteSnapshotDir?: string): boolean;
|
|
56
|
-
export declare function verifySqliteIntegrity(path: string): {
|
|
57
|
-
ok: boolean;
|
|
58
|
-
detail: string;
|
|
59
|
-
};
|
|
60
|
-
export declare function writeFleetSyncReport(reportDir: string, result: EconomyFleetSyncResult): string;
|
|
61
|
-
//# sourceMappingURL=fleet-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-sync.d.ts","sourceRoot":"","sources":["../../src/lib/fleet-sync.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAExE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAC3B,aAAa,CAAA;AAElB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,GAAG,CAAC,EAAE,IAAI,CAAA;CACX;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACvC,WAAW,CAAC,EAAE,aAAa,CAAA;IAC3B,eAAe,CAAC,EAAE,aAAa,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,OAAO,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,4BAA4B,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE;QACL,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;QACnD,IAAI,CAAC,EAAE,aAAa,CAAA;QACpB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,MAAM,EAAE,6BAA6B,EAAE,CAAA;IACvC,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B,GAAG,sBAAsB,CAgDjG;AAiGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,SAA8C,GAAG,OAAO,CAQ/H;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAanF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAK9F"}
|
package/dist/lib/peer-sync.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { SqliteAdapter as Database } from '@hasna/cloud';
|
|
2
|
-
export interface PeerTableMergeStats {
|
|
3
|
-
table: string;
|
|
4
|
-
inserted: number;
|
|
5
|
-
updated: number;
|
|
6
|
-
skipped: number;
|
|
7
|
-
collisions: number;
|
|
8
|
-
}
|
|
9
|
-
export interface PeerMergeResult {
|
|
10
|
-
source_path: string;
|
|
11
|
-
source_machine: string;
|
|
12
|
-
rows_written: number;
|
|
13
|
-
collisions: number;
|
|
14
|
-
deduped: number;
|
|
15
|
-
tables: PeerTableMergeStats[];
|
|
16
|
-
}
|
|
17
|
-
export declare function mergePeerDatabase(target: Database, sourcePath: string, opts?: {
|
|
18
|
-
sourceMachine?: string;
|
|
19
|
-
now?: string;
|
|
20
|
-
}): PeerMergeResult;
|
|
21
|
-
//# sourceMappingURL=peer-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"peer-sync.d.ts","sourceRoot":"","sources":["../../src/lib/peer-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AAc7D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAwQD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,eAAe,CA0CjB"}
|