@elizaos/plugin-finances 2.0.3-beta.6 → 2.0.3-beta.7

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 (103) hide show
  1. package/dist/actions/finances.d.ts +38 -0
  2. package/dist/actions/finances.d.ts.map +1 -0
  3. package/dist/actions/finances.js +368 -0
  4. package/dist/actions/finances.js.map +1 -0
  5. package/dist/components/finances/FinancesSpatialView.d.ts +80 -0
  6. package/dist/components/finances/FinancesSpatialView.d.ts.map +1 -0
  7. package/dist/components/finances/FinancesSpatialView.js +157 -0
  8. package/dist/components/finances/FinancesSpatialView.js.map +1 -0
  9. package/dist/components/finances/FinancesView.d.ts +97 -0
  10. package/dist/components/finances/FinancesView.d.ts.map +1 -0
  11. package/dist/components/finances/FinancesView.js +231 -0
  12. package/dist/components/finances/FinancesView.js.map +1 -0
  13. package/dist/components/finances/finances-view-bundle.d.ts +10 -0
  14. package/dist/components/finances/finances-view-bundle.d.ts.map +1 -0
  15. package/dist/components/finances/finances-view-bundle.js +5 -0
  16. package/dist/components/finances/finances-view-bundle.js.map +1 -0
  17. package/dist/db/finances-repository.d.ts +51 -0
  18. package/dist/db/finances-repository.d.ts.map +1 -0
  19. package/dist/db/finances-repository.js +521 -0
  20. package/dist/db/finances-repository.js.map +1 -0
  21. package/dist/db/index.d.ts +3 -0
  22. package/dist/db/index.d.ts.map +1 -0
  23. package/dist/db/index.js +6 -0
  24. package/dist/db/index.js.map +1 -0
  25. package/dist/db/schema.d.ts +2615 -0
  26. package/dist/db/schema.d.ts.map +1 -0
  27. package/dist/db/schema.js +133 -0
  28. package/dist/db/schema.js.map +1 -0
  29. package/dist/db/sql.d.ts +65 -0
  30. package/dist/db/sql.d.ts.map +1 -0
  31. package/dist/db/sql.js +182 -0
  32. package/dist/db/sql.js.map +1 -0
  33. package/dist/finance-normalize.d.ts +24 -0
  34. package/dist/finance-normalize.d.ts.map +1 -0
  35. package/dist/finance-normalize.js +66 -0
  36. package/dist/finance-normalize.js.map +1 -0
  37. package/dist/finances-service.d.ts +179 -0
  38. package/dist/finances-service.d.ts.map +1 -0
  39. package/dist/finances-service.js +1122 -0
  40. package/dist/finances-service.js.map +1 -0
  41. package/dist/index.d.ts +32 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +109 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/payment-csv-import.d.ts +23 -0
  46. package/dist/payment-csv-import.d.ts.map +1 -0
  47. package/dist/payment-csv-import.js +271 -0
  48. package/dist/payment-csv-import.js.map +1 -0
  49. package/dist/payment-recurrence.d.ts +14 -0
  50. package/dist/payment-recurrence.d.ts.map +1 -0
  51. package/dist/payment-recurrence.js +190 -0
  52. package/dist/payment-recurrence.js.map +1 -0
  53. package/dist/payment-types.d.ts +158 -0
  54. package/dist/payment-types.d.ts.map +1 -0
  55. package/dist/payment-types.js +1 -0
  56. package/dist/payment-types.js.map +1 -0
  57. package/dist/plugin.d.ts +15 -0
  58. package/dist/plugin.d.ts.map +1 -0
  59. package/dist/plugin.js +31 -0
  60. package/dist/plugin.js.map +1 -0
  61. package/dist/register-terminal-view.d.ts +15 -0
  62. package/dist/register-terminal-view.d.ts.map +1 -0
  63. package/dist/register-terminal-view.js +21 -0
  64. package/dist/register-terminal-view.js.map +1 -0
  65. package/dist/register.d.ts +9 -0
  66. package/dist/register.d.ts.map +1 -0
  67. package/dist/register.js +5 -0
  68. package/dist/register.js.map +1 -0
  69. package/dist/services/browser-bridge-seam.d.ts +40 -0
  70. package/dist/services/browser-bridge-seam.d.ts.map +1 -0
  71. package/dist/services/browser-bridge-seam.js +39 -0
  72. package/dist/services/browser-bridge-seam.js.map +1 -0
  73. package/dist/services/gmail-seam.d.ts +40 -0
  74. package/dist/services/gmail-seam.d.ts.map +1 -0
  75. package/dist/services/gmail-seam.js +208 -0
  76. package/dist/services/gmail-seam.js.map +1 -0
  77. package/dist/services/migration.d.ts +65 -0
  78. package/dist/services/migration.d.ts.map +1 -0
  79. package/dist/services/migration.js +116 -0
  80. package/dist/services/migration.js.map +1 -0
  81. package/dist/services/subscriptions-service.d.ts +76 -0
  82. package/dist/services/subscriptions-service.d.ts.map +1 -0
  83. package/dist/services/subscriptions-service.js +1002 -0
  84. package/dist/services/subscriptions-service.js.map +1 -0
  85. package/dist/subscriptions-playbooks.d.ts +79 -0
  86. package/dist/subscriptions-playbooks.d.ts.map +1 -0
  87. package/dist/subscriptions-playbooks.js +871 -0
  88. package/dist/subscriptions-playbooks.js.map +1 -0
  89. package/dist/subscriptions-types.d.ts +80 -0
  90. package/dist/subscriptions-types.d.ts.map +1 -0
  91. package/dist/subscriptions-types.js +1 -0
  92. package/dist/subscriptions-types.js.map +1 -0
  93. package/dist/token-encryption.d.ts +42 -0
  94. package/dist/token-encryption.d.ts.map +1 -0
  95. package/dist/token-encryption.js +96 -0
  96. package/dist/token-encryption.js.map +1 -0
  97. package/dist/types.d.ts +55 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/types.js +18 -0
  100. package/dist/types.js.map +1 -0
  101. package/dist/views/bundle.js +411 -0
  102. package/dist/views/bundle.js.map +1 -0
  103. package/package.json +11 -11
@@ -0,0 +1,179 @@
1
+ /**
2
+ * FinancesService — the finance back-end (payment sources, transactions,
3
+ * spending summaries, recurring-charge detection, email bills, and the
4
+ * Plaid / PayPal managed bridges).
5
+ *
6
+ * This is the standalone successor to the `withPayments` LifeOps service
7
+ * mixin. It holds its own runtime + {@link FinancesRepository} and the small
8
+ * identity / logging helpers the methods need, so it has no dependency on
9
+ * `@elizaos/plugin-personal-assistant`. Behavior and the data it returns are
10
+ * preserved verbatim from the original mixin.
11
+ *
12
+ * Subscription audit / cancellation lives in the sibling
13
+ * `./services/subscriptions-service.ts` (`SubscriptionsService`), which reaches
14
+ * Gmail + the browser bridge through runtime-service seams.
15
+ */
16
+ import { type IAgentRuntime } from "@elizaos/core";
17
+ import { PaypalManagedClient, type PaypalTransactionDto, PlaidManagedClient, type PlaidTransactionDto } from "@elizaos/plugin-elizacloud/cloud/managed-payment-clients";
18
+ import { FinancesRepository } from "./db/finances-repository.js";
19
+ import type { AddPaymentSourceRequest, ImportTransactionsCsvRequest, ImportTransactionsCsvResult, LifeOpsPaymentSource, LifeOpsPaymentsDashboard, LifeOpsPaymentTransaction, LifeOpsRecurringCharge, LifeOpsSpendingSummary, LifeOpsUpcomingBill, ListTransactionsRequest, SpendingSummaryRequest } from "./payment-types.js";
20
+ import { type EncryptedTokenEnvelope } from "./token-encryption.js";
21
+ /** Optional construction options (mirrors the LifeOps service shape). */
22
+ export type FinancesServiceOptions = {
23
+ ownerEntityId?: string | null;
24
+ };
25
+ export declare function encryptPaymentMetadataToken(token: string, env?: NodeJS.ProcessEnv): EncryptedTokenEnvelope;
26
+ export declare function readPaymentMetadataToken(value: unknown, field: string, env?: NodeJS.ProcessEnv): string | null;
27
+ export declare function sanitizePaymentSourceForClient(source: LifeOpsPaymentSource): LifeOpsPaymentSource;
28
+ export declare class FinancesService {
29
+ readonly runtime: IAgentRuntime;
30
+ readonly repository: FinancesRepository;
31
+ readonly ownerEntityId: string | null;
32
+ plaidManagedClientCache: PlaidManagedClient | null;
33
+ paypalManagedClientCache: PaypalManagedClient | null;
34
+ constructor(runtime: IAgentRuntime, options?: FinancesServiceOptions);
35
+ agentId(): string;
36
+ private logFinancesWarn;
37
+ listPaymentSources(): Promise<LifeOpsPaymentSource[]>;
38
+ addPaymentSource(request: AddPaymentSourceRequest): Promise<LifeOpsPaymentSource>;
39
+ deletePaymentSource(sourceId: string): Promise<{
40
+ ok: true;
41
+ }>;
42
+ importTransactionsCsv(request: ImportTransactionsCsvRequest): Promise<ImportTransactionsCsvResult>;
43
+ listTransactions(request?: ListTransactionsRequest): Promise<LifeOpsPaymentTransaction[]>;
44
+ getRecurringCharges(args?: {
45
+ sourceId?: string | null;
46
+ sinceDays?: number | null;
47
+ }): Promise<LifeOpsRecurringCharge[]>;
48
+ getSpendingSummary(request?: SpendingSummaryRequest): Promise<LifeOpsSpendingSummary>;
49
+ getPaymentsDashboard(args?: {
50
+ windowDays?: number | null;
51
+ }): Promise<LifeOpsPaymentsDashboard>;
52
+ /**
53
+ * Look up the singleton "Email bills" payment source for this agent,
54
+ * creating it on first use. Bills detected from email are persisted
55
+ * against this source so the existing transactions table can carry them
56
+ * without a parallel schema.
57
+ */
58
+ getOrCreateEmailPaymentSource(): Promise<LifeOpsPaymentSource>;
59
+ /**
60
+ * Idempotent insert of a bill extracted from an email. The transaction
61
+ * id is derived from `(agent, sourceId, sourceMessageId)` so re-ingesting
62
+ * the same Gmail message never creates a duplicate row.
63
+ */
64
+ upsertBillFromEmail(args: {
65
+ sourceMessageId: string;
66
+ merchant: string;
67
+ amountUsd: number;
68
+ currency: string;
69
+ dueDate: string | null;
70
+ postedAt?: string | null;
71
+ confidence: number;
72
+ }): Promise<{
73
+ inserted: boolean;
74
+ transactionId: string;
75
+ }>;
76
+ /**
77
+ * Mark a previously-extracted bill as paid. Idempotent — repeated calls
78
+ * just re-stamp the metadata. The row itself is not deleted so the
79
+ * transaction history stays intact.
80
+ */
81
+ markBillPaid(args: {
82
+ billId: string;
83
+ paidAt?: string | null;
84
+ }): Promise<{
85
+ ok: true;
86
+ }>;
87
+ /**
88
+ * Push a bill's due date out by N days. Used for "Snooze 1w" UI.
89
+ */
90
+ snoozeBill(args: {
91
+ billId: string;
92
+ days: number;
93
+ }): Promise<{
94
+ ok: true;
95
+ dueDate: string;
96
+ }>;
97
+ /**
98
+ * Read bills extracted from email. This includes overdue and no-date bills
99
+ * so extraction misses do not disappear from the user's review queue.
100
+ */
101
+ getUpcomingBills(args?: {
102
+ now?: Date;
103
+ }): Promise<LifeOpsUpcomingBill[]>;
104
+ summarizePaymentsDashboard(dashboard: LifeOpsPaymentsDashboard): string;
105
+ getPlaidManagedClient(): PlaidManagedClient;
106
+ /** Returns a Plaid Link token for the frontend to drive the Plaid Link UI. */
107
+ createPlaidLinkToken(): Promise<{
108
+ linkToken: string;
109
+ expiration: string;
110
+ environment: string;
111
+ }>;
112
+ /**
113
+ * Completes a Plaid Link flow by exchanging the public_token for an
114
+ * access_token and creating (or updating) a payment_source row whose
115
+ * metadata holds the access_token + cursor for sync.
116
+ */
117
+ completePlaidLink(args: {
118
+ publicToken: string;
119
+ label?: string | null;
120
+ }): Promise<LifeOpsPaymentSource>;
121
+ /**
122
+ * Pulls the latest transaction delta for a Plaid-backed source and
123
+ * inserts the new rows into life_payment_transactions.
124
+ */
125
+ syncPlaidTransactions(args: {
126
+ sourceId: string;
127
+ }): Promise<{
128
+ inserted: number;
129
+ skipped: number;
130
+ nextCursor: string;
131
+ }>;
132
+ getPaypalManagedClient(): PaypalManagedClient;
133
+ /** Returns a PayPal Login URL the frontend should open in a popup. */
134
+ createPaypalAuthorizeUrl(args: {
135
+ state: string;
136
+ }): Promise<{
137
+ url: string;
138
+ scope: string;
139
+ environment: "live" | "sandbox";
140
+ }>;
141
+ /**
142
+ * Completes the PayPal OAuth flow by exchanging the authorization code
143
+ * for tokens, then creating a payment_source row keyed to the PayPal
144
+ * payer. The access_token + refresh_token are stored in source.metadata
145
+ * so the runtime can refresh on demand without re-prompting the user.
146
+ */
147
+ completePaypalLink(args: {
148
+ code: string;
149
+ label?: string | null;
150
+ }): Promise<{
151
+ source: LifeOpsPaymentSource;
152
+ capability: {
153
+ hasReporting: boolean;
154
+ hasIdentity: boolean;
155
+ };
156
+ }>;
157
+ /**
158
+ * Pulls PayPal transactions for a date window via the Reporting API.
159
+ * Returns the imported count and an explicit `fallback: "csv_export"`
160
+ * flag when the account is personal-tier.
161
+ */
162
+ syncPaypalTransactions(args: {
163
+ sourceId: string;
164
+ windowDays?: number | null;
165
+ }): Promise<{
166
+ inserted: number;
167
+ skipped: number;
168
+ fallback: "csv_export" | null;
169
+ }>;
170
+ upsertPaypalTransaction(args: {
171
+ sourceId: string;
172
+ transaction: PaypalTransactionDto;
173
+ }): Promise<boolean>;
174
+ upsertPlaidTransaction(args: {
175
+ sourceId: string;
176
+ transaction: PlaidTransactionDto;
177
+ }): Promise<boolean>;
178
+ }
179
+ //# sourceMappingURL=finances-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finances-service.d.ts","sourceRoot":"","sources":["../src/finances-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,eAAe,CAAC;AAC3D,OAAO,EAKL,mBAAmB,EAEnB,KAAK,oBAAoB,EAEzB,kBAAkB,EAGlB,KAAK,mBAAmB,EAEzB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAejE,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EAEpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EAEtB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,sBAAsB,EAI5B,MAAM,uBAAuB,CAAC;AAe/B,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AA8FF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,sBAAsB,CAIxB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAkBf;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CAQtB;AA2ID,qBAAa,eAAe;aAOR,OAAO,EAAE,aAAa;IANxC,SAAgB,UAAU,EAAE,kBAAkB,CAAC;IAC/C,SAAgB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uBAAuB,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC1D,wBAAwB,EAAE,mBAAmB,GAAG,IAAI,CAAQ;gBAGjD,OAAO,EAAE,aAAa,EACtC,OAAO,GAAE,sBAA2B;IAMtC,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,eAAe;IAgBjB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAKrD,gBAAgB,CACpB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IA6B1B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAM5D,qBAAqB,CACzB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC;IAoEjC,gBAAgB,CACpB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAejC,mBAAmB,CACvB,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GACjE,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmB9B,kBAAkB,CACtB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC;IA2B5B,oBAAoB,CACxB,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GACxC,OAAO,CAAC,wBAAwB,CAAC;IA+CpC;;;;;OAKG;IACG,6BAA6B,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAuBpE;;;;OAIG;IACG,mBAAmB,CAAC,IAAI,EAAE;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAmDzD;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAyBzB;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC1C;;;OAGG;IACG,gBAAgB,CACpB,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,IAAI,CAAA;KAAO,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA8DjC,0BAA0B,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM;IAoCvE,qBAAqB,IAAI,kBAAkB;IAS3C,8EAA8E;IACxE,oBAAoB,IAAI,OAAO,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAWF;;;;OAIG;IACG,iBAAiB,CAAC,IAAI,EAAE;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+CjC;;;OAGG;IACG,qBAAqB,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAoGtE,sBAAsB,IAAI,mBAAmB;IAS7C,sEAAsE;IAChE,wBAAwB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC/D,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,CAAC;IAYF;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,oBAAoB,CAAC;QAC7B,UAAU,EAAE;YAAE,YAAY,EAAE,OAAO,CAAC;YAAC,WAAW,EAAE,OAAO,CAAA;SAAE,CAAC;KAC7D,CAAC;IAmDF;;;;OAIG;IACG,sBAAsB,CAAC,IAAI,EAAE;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;KAC/B,CAAC;IAsKI,uBAAuB,CAAC,IAAI,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IA8Cd,sBAAsB,CAAC,IAAI,EAAE;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,mBAAmB,CAAC;KAClC,GAAG,OAAO,CAAC,OAAO,CAAC;CAqCrB"}