@hasna/economy 0.4.0 → 0.5.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.
Files changed (205) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +12 -9
  3. package/dist/chunks/agent-registry-store-tpnhx3wj.js +39 -0
  4. package/dist/chunks/billing-bkpxy4kv.js +13 -0
  5. package/dist/chunks/config-j9mv3ehk.js +15 -0
  6. package/dist/chunks/index-2hwzmfgv.js +3407 -0
  7. package/dist/chunks/index-49f12css.js +124 -0
  8. package/dist/chunks/index-d480p2wh.js +1322 -0
  9. package/dist/chunks/index-ez9thsr7.js +3440 -0
  10. package/dist/chunks/index-hesxq90g.js +62 -0
  11. package/dist/chunks/index-k540hfww.js +258 -0
  12. package/dist/chunks/index-p35cyhc4.js +4 -0
  13. package/dist/chunks/index-r1jv3kpy.js +451 -0
  14. package/dist/chunks/index-w3bvv0ns.js +26 -0
  15. package/dist/chunks/index-xsah93s2.js +2085 -0
  16. package/dist/chunks/index-zpvea08j.js +3372 -0
  17. package/dist/chunks/menubar-6xtkt17h.js +296 -0
  18. package/dist/chunks/open-projects-6z4pq6mx.js +39 -0
  19. package/dist/chunks/pricing-f80p81gr.js +29 -0
  20. package/dist/chunks/pricing-vf2pycmh.js +30 -0
  21. package/dist/chunks/pricing-y21mcjsa.js +30 -0
  22. package/dist/chunks/serve-2knem98x.js +4655 -0
  23. package/dist/chunks/sqlite-store-501f32ts.js +258 -0
  24. package/dist/chunks/sqlite-store-fq4natnf.js +256 -0
  25. package/dist/chunks/sqlite-store-st99garx.js +258 -0
  26. package/dist/chunks/third-party-sqlite-5e85fxa2.js +11 -0
  27. package/dist/chunks/tui-khmnkat2.js +22 -0
  28. package/dist/chunks/watch-4y064yys.js +196 -0
  29. package/dist/chunks/webhooks-k4fh2t9c.js +109 -0
  30. package/dist/cli/commands/brief.d.ts.map +1 -1
  31. package/dist/cli/commands/extras.d.ts.map +1 -1
  32. package/dist/cli/commands/journal.d.ts +3 -0
  33. package/dist/cli/commands/journal.d.ts.map +1 -0
  34. package/dist/cli/commands/menubar.d.ts +97 -4
  35. package/dist/cli/commands/menubar.d.ts.map +1 -1
  36. package/dist/cli/commands/tui.d.ts +1 -1
  37. package/dist/cli/commands/tui.d.ts.map +1 -1
  38. package/dist/cli/commands/watch.d.ts.map +1 -1
  39. package/dist/cli/index.js +1358 -10114
  40. package/dist/db/cloud.d.ts +7 -9
  41. package/dist/db/cloud.d.ts.map +1 -1
  42. package/dist/db/database.d.ts +14 -12
  43. package/dist/db/database.d.ts.map +1 -1
  44. package/dist/db/ingest-concurrency-worker.d.ts +2 -0
  45. package/dist/db/ingest-concurrency-worker.d.ts.map +1 -0
  46. package/dist/db/ingest-errors.d.ts +9 -0
  47. package/dist/db/ingest-errors.d.ts.map +1 -0
  48. package/dist/db/ingest-schema.d.ts +3 -0
  49. package/dist/db/ingest-schema.d.ts.map +1 -0
  50. package/dist/db/ingest-specs.d.ts +8 -0
  51. package/dist/db/ingest-specs.d.ts.map +1 -0
  52. package/dist/db/ingest-test-contract.d.ts +3 -0
  53. package/dist/db/ingest-test-contract.d.ts.map +1 -0
  54. package/dist/db/ingest-validation.d.ts +12 -0
  55. package/dist/db/ingest-validation.d.ts.map +1 -0
  56. package/dist/db/ingest.d.ts +27 -0
  57. package/dist/db/ingest.d.ts.map +1 -0
  58. package/dist/db/legacy-schema.d.ts +7 -0
  59. package/dist/db/legacy-schema.d.ts.map +1 -0
  60. package/dist/db/observation-contract.d.ts +3 -0
  61. package/dist/db/observation-contract.d.ts.map +1 -0
  62. package/dist/db/observation-provenance.d.ts +23 -0
  63. package/dist/db/observation-provenance.d.ts.map +1 -0
  64. package/dist/db/observation-schema.d.ts +24 -0
  65. package/dist/db/observation-schema.d.ts.map +1 -0
  66. package/dist/db/pg-connection.d.ts +10 -0
  67. package/dist/db/pg-connection.d.ts.map +1 -0
  68. package/dist/db/pg-legacy-schema.d.ts +12 -0
  69. package/dist/db/pg-legacy-schema.d.ts.map +1 -0
  70. package/dist/db/pg-migrate.d.ts +4 -9
  71. package/dist/db/pg-migrate.d.ts.map +1 -1
  72. package/dist/db/pg-migrations.d.ts.map +1 -1
  73. package/dist/db/pg-protocol.d.ts +28 -0
  74. package/dist/db/pg-protocol.d.ts.map +1 -0
  75. package/dist/db/sqlite-store.d.ts +4 -0
  76. package/dist/db/sqlite-store.d.ts.map +1 -0
  77. package/dist/db/sync-pg.d.ts +17 -21
  78. package/dist/db/sync-pg.d.ts.map +1 -1
  79. package/dist/db/third-party-sqlite.d.ts +10 -0
  80. package/dist/db/third-party-sqlite.d.ts.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +1171 -2465
  84. package/dist/ingest/claude-quota.d.ts.map +1 -1
  85. package/dist/ingest/claude.d.ts.map +1 -1
  86. package/dist/ingest/codex-quota.d.ts.map +1 -1
  87. package/dist/ingest/codex.d.ts +25 -0
  88. package/dist/ingest/codex.d.ts.map +1 -1
  89. package/dist/ingest/collection-outcome.d.ts +17 -0
  90. package/dist/ingest/collection-outcome.d.ts.map +1 -0
  91. package/dist/ingest/cursor.d.ts.map +1 -1
  92. package/dist/ingest/gemini.d.ts.map +1 -1
  93. package/dist/ingest/hermes.d.ts +1 -1
  94. package/dist/ingest/hermes.d.ts.map +1 -1
  95. package/dist/ingest/loops.d.ts.map +1 -1
  96. package/dist/ingest/opencode.d.ts +1 -1
  97. package/dist/ingest/opencode.d.ts.map +1 -1
  98. package/dist/ingest/pi.d.ts +1 -1
  99. package/dist/ingest/pi.d.ts.map +1 -1
  100. package/dist/ingest/quota-observation.d.ts +16 -0
  101. package/dist/ingest/quota-observation.d.ts.map +1 -0
  102. package/dist/ingest/source-time.d.ts +4 -0
  103. package/dist/ingest/source-time.d.ts.map +1 -0
  104. package/dist/lib/accounts-store.d.ts +39 -13
  105. package/dist/lib/accounts-store.d.ts.map +1 -1
  106. package/dist/lib/analytics.d.ts.map +1 -1
  107. package/dist/lib/api-display-url.d.ts +1 -1
  108. package/dist/lib/autosync-gate.d.ts +12 -5
  109. package/dist/lib/autosync-gate.d.ts.map +1 -1
  110. package/dist/lib/billing-diff.d.ts +18 -40
  111. package/dist/lib/billing-diff.d.ts.map +1 -1
  112. package/dist/lib/brief.d.ts +2 -0
  113. package/dist/lib/brief.d.ts.map +1 -1
  114. package/dist/lib/budget-decimal.d.ts +14 -0
  115. package/dist/lib/budget-decimal.d.ts.map +1 -0
  116. package/dist/lib/cloud-ingest.d.ts +15 -0
  117. package/dist/lib/cloud-ingest.d.ts.map +1 -1
  118. package/dist/lib/cloud-storage.d.ts.map +1 -1
  119. package/dist/lib/ingest-batches.d.ts +21 -0
  120. package/dist/lib/ingest-batches.d.ts.map +1 -0
  121. package/dist/lib/ingest-journal-client.d.ts +37 -0
  122. package/dist/lib/ingest-journal-client.d.ts.map +1 -0
  123. package/dist/lib/ingest-journal-lock.d.ts +5 -0
  124. package/dist/lib/ingest-journal-lock.d.ts.map +1 -0
  125. package/dist/lib/ingest-journal-maintenance.d.ts +92 -0
  126. package/dist/lib/ingest-journal-maintenance.d.ts.map +1 -0
  127. package/dist/lib/ingest-journal-operation.d.ts +55 -0
  128. package/dist/lib/ingest-journal-operation.d.ts.map +1 -0
  129. package/dist/lib/ingest-journal.d.ts +73 -0
  130. package/dist/lib/ingest-journal.d.ts.map +1 -0
  131. package/dist/lib/money-display.d.ts +13 -0
  132. package/dist/lib/money-display.d.ts.map +1 -0
  133. package/dist/lib/periods.d.ts +12 -0
  134. package/dist/lib/periods.d.ts.map +1 -1
  135. package/dist/lib/pricing.d.ts +14 -0
  136. package/dist/lib/pricing.d.ts.map +1 -1
  137. package/dist/lib/savings.d.ts +64 -7
  138. package/dist/lib/savings.d.ts.map +1 -1
  139. package/dist/lib/store/index.d.ts +25 -21
  140. package/dist/lib/store/index.d.ts.map +1 -1
  141. package/dist/lib/summary-contract.d.ts +32 -0
  142. package/dist/lib/summary-contract.d.ts.map +1 -0
  143. package/dist/lib/summary-test-contract.d.ts +3 -0
  144. package/dist/lib/summary-test-contract.d.ts.map +1 -0
  145. package/dist/lib/sync-all.d.ts +4 -0
  146. package/dist/lib/sync-all.d.ts.map +1 -1
  147. package/dist/lib/sync-maintenance.d.ts.map +1 -1
  148. package/dist/lib/sync-report.d.ts +4 -0
  149. package/dist/lib/sync-report.d.ts.map +1 -0
  150. package/dist/lib/test-keychain-fixture.d.ts +9 -0
  151. package/dist/lib/test-keychain-fixture.d.ts.map +1 -0
  152. package/dist/mcp/agent-registry-store.d.ts +30 -0
  153. package/dist/mcp/agent-registry-store.d.ts.map +1 -0
  154. package/dist/mcp/agent-registry.d.ts +9 -16
  155. package/dist/mcp/agent-registry.d.ts.map +1 -1
  156. package/dist/mcp/index.js +2291 -3458
  157. package/dist/mcp/ingest-journal-tool.d.ts +2 -0
  158. package/dist/mcp/ingest-journal-tool.d.ts.map +1 -0
  159. package/dist/mcp/server.d.ts.map +1 -1
  160. package/dist/openapi.d.ts.map +1 -1
  161. package/dist/otel/index.js +1960 -289
  162. package/dist/server/human-auth.d.ts +20 -0
  163. package/dist/server/human-auth.d.ts.map +1 -0
  164. package/dist/server/index.js +10639 -6720
  165. package/dist/server/legacy-inventory.d.ts +52 -0
  166. package/dist/server/legacy-inventory.d.ts.map +1 -0
  167. package/dist/server/legacy-operations.d.ts +64 -0
  168. package/dist/server/legacy-operations.d.ts.map +1 -0
  169. package/dist/server/legacy-plan.d.ts +55 -0
  170. package/dist/server/legacy-plan.d.ts.map +1 -0
  171. package/dist/server/legacy-preservation.d.ts +58 -0
  172. package/dist/server/legacy-preservation.d.ts.map +1 -0
  173. package/dist/server/pg-sync-worker.js +195 -21
  174. package/dist/server/serve.d.ts +20 -16
  175. package/dist/server/serve.d.ts.map +1 -1
  176. package/dist/server/service-admission.d.ts +10 -0
  177. package/dist/server/service-admission.d.ts.map +1 -0
  178. package/dist/server/service-dispatcher.d.ts +45 -0
  179. package/dist/server/service-dispatcher.d.ts.map +1 -0
  180. package/dist/server/service-operations.d.ts +5 -0
  181. package/dist/server/service-operations.d.ts.map +1 -0
  182. package/dist/server/service-protocol.d.ts +50 -0
  183. package/dist/server/service-protocol.d.ts.map +1 -0
  184. package/dist/server/service-worker.d.ts +2 -0
  185. package/dist/server/service-worker.d.ts.map +1 -0
  186. package/dist/server/service-worker.js +8038 -0
  187. package/dist/types/index.d.ts +66 -0
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/docs/README.md +1 -1
  190. package/docs/cli.md +1 -1
  191. package/docs/configuration.md +5 -5
  192. package/docs/cost-reporting.md +49 -0
  193. package/docs/historical-data-reconciliation.md +203 -0
  194. package/docs/ingest-journal.md +108 -0
  195. package/docs/ingestion.md +60 -4
  196. package/docs/mcp.md +2 -2
  197. package/docs/native-budget-save.md +84 -0
  198. package/docs/native-human-auth.md +102 -0
  199. package/docs/postgresql-legacy-schema-repair.md +30 -0
  200. package/docs/rest-api.md +2 -2
  201. package/package.json +25 -13
  202. package/dist/lib/test-hermetic-accounts.d.ts +0 -7
  203. package/dist/lib/test-hermetic-accounts.d.ts.map +0 -1
  204. package/dist/lib/test-hermetic-fleet-env.d.ts +0 -4
  205. package/dist/lib/test-hermetic-fleet-env.d.ts.map +0 -1
@@ -0,0 +1,32 @@
1
+ import type { CostSummary, BillingSummary, Period } from '../types/index.js';
2
+ import type { DbModelPricing } from '../db/database.js';
3
+ import type { CalendarPeriodBounds } from './periods.js';
4
+ export interface SummaryRequestGroup {
5
+ cost_basis: string | null;
6
+ model: string;
7
+ cost_usd: number;
8
+ requests: number;
9
+ input_tokens: number;
10
+ output_tokens: number;
11
+ cache_read_tokens: number;
12
+ cache_create_tokens: number;
13
+ cache_create_1h_tokens: number;
14
+ zero_cost: number;
15
+ }
16
+ export interface SummarySessionTotals {
17
+ sessions: number;
18
+ requests: number;
19
+ tokens: number;
20
+ cost_usd: number;
21
+ }
22
+ export type SummaryPriceEvidence = Pick<SummaryRequestGroup, 'cost_basis' | 'cost_usd'> & Partial<Pick<SummaryRequestGroup, 'model' | 'input_tokens' | 'output_tokens' | 'cache_read_tokens' | 'cache_create_tokens' | 'cache_create_1h_tokens' | 'zero_cost'>>;
23
+ /** Shared before aggregation by summaries and subscription comparisons. */
24
+ export declare function hasKnownUsagePrice(row: SummaryPriceEvidence, prices: DbModelPricing[]): boolean;
25
+ export declare function buildCostSummary(period: Period, period_bounds: CalendarPeriodBounds, groups: SummaryRequestGroup[], sessionOnly: SummarySessionTotals, requestSessions: number, prices: DbModelPricing[]): CostSummary;
26
+ /** Hosted readers must not silently treat a previous server's bare total as current coverage. */
27
+ export declare function requireCurrentCostSummary(value: unknown): CostSummary;
28
+ export declare function formatSummaryValue(value: CostSummary): string;
29
+ export declare function formatSummaryCoverage(s: CostSummary): string;
30
+ export declare function requireCurrentBillingSummary(value: unknown): BillingSummary;
31
+ export declare function formatBillingValue(value: unknown): string;
32
+ //# sourceMappingURL=summary-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-contract.d.ts","sourceRoot":"","sources":["../../src/lib/summary-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIxD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;IAC5E,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;IACnG,sBAAsB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAClD;AACD,MAAM,WAAW,oBAAoB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAe9G,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,EAAC,YAAY,GAAC,UAAU,CAAC,GAClF,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAC,OAAO,GAAC,cAAc,GAAC,eAAe,GAAC,mBAAmB,GAAC,qBAAqB,GAAC,wBAAwB,GAAC,WAAW,CAAC,CAAC,CAAA;AAC1J,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAC,oBAAoB,EAAC,MAAM,EAAC,cAAc,EAAE,GAAE,OAAO,CAI3F;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAClF,MAAM,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,EACzF,MAAM,EAAE,cAAc,EAAE,GAAG,WAAW,CA4BvC;AAED,iGAAiG;AACjG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAsBrE;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI7D;AACD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAO5D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAS3E;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGzD"}
@@ -0,0 +1,3 @@
1
+ import type { SqliteAdapter } from '../db/sqlite-adapter.js';
2
+ export declare function verifySummaryContract(db: SqliteAdapter, prefix: string): Promise<void>;
3
+ //# sourceMappingURL=summary-test-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-test-contract.d.ts","sourceRoot":"","sources":["../../src/lib/summary-test-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAM5D,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAC,MAAM,iBAiD3E"}
@@ -9,6 +9,7 @@ import { ingestHermes } from '../ingest/hermes.js';
9
9
  import { ingestLoops } from '../ingest/loops.js';
10
10
  import { ingestClaudeQuota } from '../ingest/claude-quota.js';
11
11
  import { ingestCodexQuota } from '../ingest/codex-quota.js';
12
+ import { type CollectionOutcome } from '../ingest/collection-outcome.js';
12
13
  import type { SyncOptions } from '../types/index.js';
13
14
  export interface SyncAllResult {
14
15
  claude?: Awaited<ReturnType<typeof ingestClaude>>;
@@ -22,7 +23,10 @@ export interface SyncAllResult {
22
23
  loops?: Awaited<ReturnType<typeof ingestLoops>>;
23
24
  claudeQuota?: Awaited<ReturnType<typeof ingestClaudeQuota>>;
24
25
  codexQuota?: Awaited<ReturnType<typeof ingestCodexQuota>>;
26
+ collections?: CollectionOutcome[];
25
27
  deduped: number;
26
28
  }
29
+ /** Test seam: forget that the cross-app refusal line was printed. */
30
+ export declare function __resetLoopsRefusalNotice(): void;
27
31
  export declare function syncAll(db: Database, opts?: SyncOptions): Promise<SyncAllResult>;
28
32
  //# sourceMappingURL=sync-all.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-all.d.ts","sourceRoot":"","sources":["../../src/lib/sync-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAA;IACzD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4B1F"}
1
+ {"version":3,"file":"sync-all.d.ts","sourceRoot":"","sources":["../../src/lib/sync-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAG3D,OAAO,EAAyC,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAA;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAA;IACzD,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;CAChB;AAgBD,qEAAqE;AACrE,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,wBAAsB,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-maintenance.d.ts","sourceRoot":"","sources":["../../src/lib/sync-maintenance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKtF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAClC;AAED,qFAAqF;AACrF,wBAAsB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsC1F"}
1
+ {"version":3,"file":"sync-maintenance.d.ts","sourceRoot":"","sources":["../../src/lib/sync-maintenance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAMtF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAClC;AAED,qFAAqF;AACrF,wBAAsB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwC1F"}
@@ -0,0 +1,4 @@
1
+ import type { SyncAllResult } from './sync-all.js';
2
+ export declare function syncHasFailures(result: SyncAllResult): boolean;
3
+ export declare function syncOutcomeLines(result: SyncAllResult): string[];
4
+ //# sourceMappingURL=sync-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-report.d.ts","sourceRoot":"","sources":["../../src/lib/sync-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,wBAAgB,eAAe,CAAC,MAAM,EAAC,aAAa,GAAE,OAAO,CAE5D;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAC,aAAa,GAAE,MAAM,EAAE,CAE9D"}
@@ -0,0 +1,9 @@
1
+ import type { CredentialChainOptions } from '@hasna/contracts/client';
2
+ export declare const FIXTURE_STATION = "economy-hermetic-fixture";
3
+ export declare function fixtureKeychainArgs(app: 'economy' | 'accounts', kind: 'api-key' | 'api-url'): string[];
4
+ export declare function absentFixtureKeychain(app: 'economy' | 'accounts'): {
5
+ credentials: CredentialChainOptions;
6
+ };
7
+ /** Explicit --preload is confined to the test child; installed clients are unchanged. */
8
+ export declare function fixtureBunArgs(home: string): string[];
9
+ //# sourceMappingURL=test-keychain-fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-keychain-fixture.d.ts","sourceRoot":"","sources":["../../src/lib/test-keychain-fixture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAErE,eAAO,MAAM,eAAe,6BAA6B,CAAA;AAEzD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,CAEtG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG;IAAE,WAAW,EAAE,sBAAsB,CAAA;CAAE,CAO1G;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAerD"}
@@ -0,0 +1,30 @@
1
+ /** bun:sqlite's in-memory database: no file, process-local. */
2
+ export declare const MEMORY_REGISTRY_PATH = ":memory:";
3
+ /** The get/all/run/exec surface the registry logic is written against. */
4
+ export interface SqlLike {
5
+ get(sql: string, ...params: unknown[]): Record<string, unknown> | null;
6
+ all(sql: string, ...params: unknown[]): Array<Record<string, unknown>>;
7
+ run(sql: string, ...params: unknown[]): {
8
+ changes: number;
9
+ };
10
+ exec(sql: string): void;
11
+ }
12
+ /**
13
+ * Minimal bun:sqlite wrapper exposing the get/all/run/exec surface the
14
+ * registry uses. `Database` itself only has run/exec/query/prepare on bun
15
+ * 1.3.x — the deleted @hasna/agent-registry package got get/all from the
16
+ * storage kit's own sqlite wrapper; this keeps the same call shape without
17
+ * the kit.
18
+ */
19
+ export declare class RegistryDb implements SqlLike {
20
+ private db;
21
+ constructor(path: string);
22
+ get(sql: string, ...params: unknown[]): Record<string, unknown> | null;
23
+ all(sql: string, ...params: unknown[]): Array<Record<string, unknown>>;
24
+ run(sql: string, ...params: unknown[]): {
25
+ changes: number;
26
+ };
27
+ exec(sql: string): void;
28
+ close(): void;
29
+ }
30
+ //# sourceMappingURL=agent-registry-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry-store.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-registry-store.ts"],"names":[],"mappings":"AAqBA,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,aAAa,CAAA;AAE9C,0EAA0E;AAC1E,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,OAAO;IACxC,OAAO,CAAC,EAAE,CAAW;gBAET,IAAI,EAAE,MAAM;IASxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAItE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAI3D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,IAAI,IAAI;CAGd"}
@@ -1,3 +1,4 @@
1
+ import type { SqlLike } from './agent-registry-store.js';
1
2
  /**
2
3
  * Structural subset of @hasna/events' EventsClient that the registry emits
3
4
  * lifecycle events through. Kept identical to the deleted package's
@@ -27,24 +28,16 @@ export interface Agent {
27
28
  last_seen_at: string;
28
29
  created_at: string;
29
30
  }
30
- interface SqlLike {
31
- get(sql: string, ...params: unknown[]): Record<string, unknown> | null;
32
- all(sql: string, ...params: unknown[]): Array<Record<string, unknown>>;
33
- run(sql: string, ...params: unknown[]): {
34
- changes: number;
35
- };
36
- exec(sql: string): void;
37
- }
38
- /** bun:sqlite's in-memory database: no file, process-local. */
31
+ /** The in-memory database: no file on disk, process-local. */
39
32
  export declare const MEMORY_REGISTRY_PATH = ":memory:";
40
33
  /**
41
- * Where the registry lives. An explicit `HASNA_AGENT_REGISTRY_DB_PATH` always
42
- * wins. Otherwise the storage seam decides: a hosted client (a credential
43
- * resolved through the @hasna/contracts chain) gets the in-memory registry —
44
- * the app home stays free of SQLite files in hosted mode — and only the
45
- * explicit local opt-in persists `agent-registry.db` beside economy's store.
46
- * With neither, the seam throws its fail-closed error (the same one the
47
- * server's own store raised at startup).
34
+ * Where the registry lives. The storage seam decides first: a hosted client
35
+ * (a credential resolved through the @hasna/contracts chain) always gets the
36
+ * in-memory registry, even when `HASNA_AGENT_REGISTRY_DB_PATH` is present.
37
+ * Only the explicit local opt-in may honor that path override or persist the
38
+ * default `agent-registry.db` beside economy's store. With neither, the seam
39
+ * throws its fail-closed error (the same one the server's own store raised at
40
+ * startup).
48
41
  */
49
42
  export declare function resolveRegistryDbPath(): string;
50
43
  export declare function resetDefaultStoreForTests(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-registry.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEpE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;QACzE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAC/B;AAKD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAsBD,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,aAAa,CAAA;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAuBD,wBAAgB,yBAAyB,IAAI,IAAI,CAOhD;AAmID,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,IAAI,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB;AAsID,wBAAsB,cAAc,CAClC,MAAM,EAAE,iBAAiB,GAAG,SAAS,EACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,GAAG,SAAS,EACrC,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkBf;AAeD,UAAU,UAAU;IAClB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;CACjE;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE;IACN,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;CAClC,EACD,IAAI,GAAE,yBAA8B,GACnC,IAAI,CAoKN"}