@firela/billclaw-core 0.1.3

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 (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/billclaw.d.ts +76 -0
  4. package/dist/billclaw.d.ts.map +1 -0
  5. package/dist/billclaw.js +205 -0
  6. package/dist/billclaw.js.map +1 -0
  7. package/dist/credentials/index.d.ts +8 -0
  8. package/dist/credentials/index.d.ts.map +1 -0
  9. package/dist/credentials/index.js +8 -0
  10. package/dist/credentials/index.js.map +1 -0
  11. package/dist/credentials/keychain.d.ts +92 -0
  12. package/dist/credentials/keychain.d.ts.map +1 -0
  13. package/dist/credentials/keychain.js +172 -0
  14. package/dist/credentials/keychain.js.map +1 -0
  15. package/dist/credentials/store.d.ts +76 -0
  16. package/dist/credentials/store.d.ts.map +1 -0
  17. package/dist/credentials/store.js +144 -0
  18. package/dist/credentials/store.js.map +1 -0
  19. package/dist/errors/errors.d.ts +92 -0
  20. package/dist/errors/errors.d.ts.map +1 -0
  21. package/dist/errors/errors.js +315 -0
  22. package/dist/errors/errors.js.map +1 -0
  23. package/dist/errors/index.d.ts +7 -0
  24. package/dist/errors/index.d.ts.map +1 -0
  25. package/dist/errors/index.js +7 -0
  26. package/dist/errors/index.js.map +1 -0
  27. package/dist/exporters/beancount.d.ts +42 -0
  28. package/dist/exporters/beancount.d.ts.map +1 -0
  29. package/dist/exporters/beancount.js +141 -0
  30. package/dist/exporters/beancount.js.map +1 -0
  31. package/dist/exporters/index.d.ts +8 -0
  32. package/dist/exporters/index.d.ts.map +1 -0
  33. package/dist/exporters/index.js +8 -0
  34. package/dist/exporters/index.js.map +1 -0
  35. package/dist/exporters/ledger.d.ts +42 -0
  36. package/dist/exporters/ledger.d.ts.map +1 -0
  37. package/dist/exporters/ledger.js +139 -0
  38. package/dist/exporters/ledger.js.map +1 -0
  39. package/dist/index.d.ts +23 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +34 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/models/config.d.ts +552 -0
  44. package/dist/models/config.d.ts.map +1 -0
  45. package/dist/models/config.js +168 -0
  46. package/dist/models/config.js.map +1 -0
  47. package/dist/models/index.d.ts +7 -0
  48. package/dist/models/index.d.ts.map +1 -0
  49. package/dist/models/index.js +8 -0
  50. package/dist/models/index.js.map +1 -0
  51. package/dist/runtime/index.d.ts +7 -0
  52. package/dist/runtime/index.d.ts.map +1 -0
  53. package/dist/runtime/index.js +7 -0
  54. package/dist/runtime/index.js.map +1 -0
  55. package/dist/runtime/types.d.ts +110 -0
  56. package/dist/runtime/types.d.ts.map +1 -0
  57. package/dist/runtime/types.js +85 -0
  58. package/dist/runtime/types.js.map +1 -0
  59. package/dist/security/audit.d.ts +148 -0
  60. package/dist/security/audit.d.ts.map +1 -0
  61. package/dist/security/audit.js +286 -0
  62. package/dist/security/audit.js.map +1 -0
  63. package/dist/security/index.d.ts +7 -0
  64. package/dist/security/index.d.ts.map +1 -0
  65. package/dist/security/index.js +7 -0
  66. package/dist/security/index.js.map +1 -0
  67. package/dist/services/event-emitter.d.ts +171 -0
  68. package/dist/services/event-emitter.d.ts.map +1 -0
  69. package/dist/services/event-emitter.js +287 -0
  70. package/dist/services/event-emitter.js.map +1 -0
  71. package/dist/services/index.d.ts +8 -0
  72. package/dist/services/index.d.ts.map +1 -0
  73. package/dist/services/index.js +8 -0
  74. package/dist/services/index.js.map +1 -0
  75. package/dist/sources/gmail/bill-recognizer.d.ts +71 -0
  76. package/dist/sources/gmail/bill-recognizer.d.ts.map +1 -0
  77. package/dist/sources/gmail/bill-recognizer.js +341 -0
  78. package/dist/sources/gmail/bill-recognizer.js.map +1 -0
  79. package/dist/sources/gmail/email-parser.d.ts +68 -0
  80. package/dist/sources/gmail/email-parser.d.ts.map +1 -0
  81. package/dist/sources/gmail/email-parser.js +238 -0
  82. package/dist/sources/gmail/email-parser.js.map +1 -0
  83. package/dist/sources/gmail/gmail-fetch.d.ts +54 -0
  84. package/dist/sources/gmail/gmail-fetch.d.ts.map +1 -0
  85. package/dist/sources/gmail/gmail-fetch.js +300 -0
  86. package/dist/sources/gmail/gmail-fetch.js.map +1 -0
  87. package/dist/sources/gmail/index.d.ts +7 -0
  88. package/dist/sources/gmail/index.d.ts.map +1 -0
  89. package/dist/sources/gmail/index.js +7 -0
  90. package/dist/sources/gmail/index.js.map +1 -0
  91. package/dist/sources/index.d.ts +8 -0
  92. package/dist/sources/index.d.ts.map +1 -0
  93. package/dist/sources/index.js +8 -0
  94. package/dist/sources/index.js.map +1 -0
  95. package/dist/sources/plaid/index.d.ts +7 -0
  96. package/dist/sources/plaid/index.d.ts.map +1 -0
  97. package/dist/sources/plaid/index.js +7 -0
  98. package/dist/sources/plaid/index.js.map +1 -0
  99. package/dist/sources/plaid/plaid-sync.d.ts +42 -0
  100. package/dist/sources/plaid/plaid-sync.d.ts.map +1 -0
  101. package/dist/sources/plaid/plaid-sync.js +182 -0
  102. package/dist/sources/plaid/plaid-sync.js.map +1 -0
  103. package/dist/storage/cache.d.ts +134 -0
  104. package/dist/storage/cache.d.ts.map +1 -0
  105. package/dist/storage/cache.js +239 -0
  106. package/dist/storage/cache.js.map +1 -0
  107. package/dist/storage/index.d.ts +11 -0
  108. package/dist/storage/index.d.ts.map +1 -0
  109. package/dist/storage/index.js +11 -0
  110. package/dist/storage/index.js.map +1 -0
  111. package/dist/storage/indexes.d.ts +136 -0
  112. package/dist/storage/indexes.d.ts.map +1 -0
  113. package/dist/storage/indexes.js +294 -0
  114. package/dist/storage/indexes.js.map +1 -0
  115. package/dist/storage/locking.d.ts +103 -0
  116. package/dist/storage/locking.d.ts.map +1 -0
  117. package/dist/storage/locking.js +158 -0
  118. package/dist/storage/locking.js.map +1 -0
  119. package/dist/storage/streaming.d.ts +102 -0
  120. package/dist/storage/streaming.d.ts.map +1 -0
  121. package/dist/storage/streaming.js +245 -0
  122. package/dist/storage/streaming.js.map +1 -0
  123. package/dist/storage/transaction-storage.d.ts +101 -0
  124. package/dist/storage/transaction-storage.d.ts.map +1 -0
  125. package/dist/storage/transaction-storage.js +193 -0
  126. package/dist/storage/transaction-storage.js.map +1 -0
  127. package/dist/sync/index.d.ts +7 -0
  128. package/dist/sync/index.d.ts.map +1 -0
  129. package/dist/sync/index.js +7 -0
  130. package/dist/sync/index.js.map +1 -0
  131. package/dist/sync/sync-service.d.ts +42 -0
  132. package/dist/sync/sync-service.d.ts.map +1 -0
  133. package/dist/sync/sync-service.js +112 -0
  134. package/dist/sync/sync-service.js.map +1 -0
  135. package/dist/test-fixtures.d.ts +38 -0
  136. package/dist/test-fixtures.d.ts.map +1 -0
  137. package/dist/test-fixtures.js +137 -0
  138. package/dist/test-fixtures.js.map +1 -0
  139. package/package.json +68 -0
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Zod schemas for BillClaw configuration
3
+ *
4
+ * This file contains Zod schemas for type-safe configuration validation.
5
+ * These schemas are framework-agnostic and work across all adapters.
6
+ */
7
+ import { z } from "zod";
8
+ /**
9
+ * Account types supported by BillClaw
10
+ */
11
+ export const AccountTypeSchema = z.enum(["plaid", "gocardless", "gmail"]);
12
+ /**
13
+ * Sync frequency options
14
+ */
15
+ export const SyncFrequencySchema = z.enum([
16
+ "realtime",
17
+ "hourly",
18
+ "daily",
19
+ "weekly",
20
+ "manual",
21
+ ]);
22
+ /**
23
+ * Plaid environment options
24
+ */
25
+ export const PlaidEnvironmentSchema = z.enum([
26
+ "sandbox",
27
+ "development",
28
+ "production",
29
+ ]);
30
+ /**
31
+ * Webhook event types
32
+ */
33
+ export const WebhookEventTypeSchema = z.enum([
34
+ "transaction.new",
35
+ "transaction.updated",
36
+ "transaction.deleted",
37
+ "sync.started",
38
+ "sync.completed",
39
+ "sync.failed",
40
+ "account.connected",
41
+ "account.disconnected",
42
+ "account.error",
43
+ "webhook.test",
44
+ ]);
45
+ /**
46
+ * Per-account configuration
47
+ */
48
+ export const AccountConfigSchema = z.object({
49
+ id: z.string().min(1),
50
+ type: AccountTypeSchema,
51
+ name: z.string().min(1),
52
+ enabled: z.boolean().default(false),
53
+ syncFrequency: SyncFrequencySchema.default("daily"),
54
+ lastSync: z.string().optional(),
55
+ lastStatus: z.enum(["success", "error", "pending"]).optional(),
56
+ // Plaid-specific
57
+ plaidItemId: z.string().optional(),
58
+ plaidAccessToken: z.string().optional(),
59
+ // GoCardless-specific
60
+ gocardlessRequisitionId: z.string().optional(),
61
+ gocardlessAccessToken: z.string().optional(),
62
+ // Gmail-specific
63
+ gmailEmailAddress: z.string().email().optional(),
64
+ gmailFilters: z.array(z.string()).optional(),
65
+ });
66
+ /**
67
+ * Webhook configuration
68
+ */
69
+ export const WebhookConfigSchema = z.object({
70
+ enabled: z.boolean().default(false),
71
+ url: z.string().url().optional(),
72
+ secret: z.string().optional(),
73
+ retryPolicy: z
74
+ .object({
75
+ maxRetries: z.number().int().min(0).default(3),
76
+ initialDelay: z.number().int().min(0).default(1000),
77
+ maxDelay: z.number().int().min(0).default(30000),
78
+ })
79
+ .default({
80
+ maxRetries: 3,
81
+ initialDelay: 1000,
82
+ maxDelay: 30000,
83
+ }),
84
+ events: z
85
+ .array(WebhookEventTypeSchema)
86
+ .default(["transaction.new", "sync.failed", "account.error"]),
87
+ });
88
+ /**
89
+ * Storage configuration
90
+ */
91
+ export const StorageConfigSchema = z.object({
92
+ path: z.string().default("~/.billclaw"),
93
+ format: z.enum(["json", "csv", "both"]).default("json"),
94
+ encryption: z
95
+ .object({
96
+ enabled: z.boolean().default(false),
97
+ keyPath: z.string().optional(),
98
+ })
99
+ .default({
100
+ enabled: false,
101
+ }),
102
+ });
103
+ /**
104
+ * Plaid configuration
105
+ */
106
+ export const PlaidConfigSchema = z.object({
107
+ clientId: z.string().optional(),
108
+ secret: z.string().optional(),
109
+ environment: PlaidEnvironmentSchema.default("sandbox"),
110
+ webhookUrl: z.string().url().optional(),
111
+ });
112
+ /**
113
+ * GoCardless configuration
114
+ */
115
+ export const GoCardlessConfigSchema = z.object({
116
+ accessToken: z.string().optional(),
117
+ environment: z.enum(["sandbox", "live"]).default("sandbox"),
118
+ });
119
+ /**
120
+ * Gmail configuration
121
+ */
122
+ export const GmailConfigSchema = z.object({
123
+ clientId: z.string().optional(),
124
+ clientSecret: z.string().optional(),
125
+ historyId: z.string().optional(),
126
+ pubsubTopic: z.string().optional(),
127
+ senderWhitelist: z.array(z.string()).default([]),
128
+ keywords: z
129
+ .array(z.string())
130
+ .default(["invoice", "statement", "bill due", "receipt", "payment due"]),
131
+ // Recognition rules
132
+ confidenceThreshold: z.number().min(0).max(1).default(0.5),
133
+ requireAmount: z.boolean().default(false),
134
+ requireDate: z.boolean().default(false),
135
+ // Custom bill type patterns
136
+ billTypePatterns: z.record(z.array(z.string())).optional(),
137
+ });
138
+ /**
139
+ * Sync configuration
140
+ */
141
+ export const SyncConfigSchema = z.object({
142
+ defaultFrequency: SyncFrequencySchema.default("daily"),
143
+ retryOnFailure: z.boolean().default(true),
144
+ maxRetries: z.number().int().min(0).default(3),
145
+ });
146
+ /**
147
+ * Main BillClaw configuration schema
148
+ */
149
+ export const BillclawConfigSchema = z.object({
150
+ accounts: z.array(AccountConfigSchema).default([]),
151
+ webhooks: z.array(WebhookConfigSchema).default([]),
152
+ storage: StorageConfigSchema.default({
153
+ path: "~/.billclaw",
154
+ format: "json",
155
+ encryption: { enabled: false },
156
+ }),
157
+ sync: SyncConfigSchema.default({
158
+ defaultFrequency: "daily",
159
+ retryOnFailure: true,
160
+ maxRetries: 3,
161
+ }),
162
+ plaid: PlaidConfigSchema.default({
163
+ environment: "sandbox",
164
+ }),
165
+ gocardless: GoCardlessConfigSchema.optional(),
166
+ gmail: GmailConfigSchema.optional(),
167
+ });
168
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/models/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Data models and schemas for BillClaw
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export * from "./config.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,aAAa,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Data models and schemas for BillClaw
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ // Configuration schemas
7
+ export * from "./config.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,cAAc,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime abstractions for BillClaw
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export * from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime abstractions for BillClaw
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export * from "./types.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Runtime abstractions for BillClaw
3
+ *
4
+ * These interfaces define the contracts that adapters (OpenClaw, CLI, etc.)
5
+ * must implement to provide framework-specific functionality to the core.
6
+ */
7
+ import type { Logger } from "../errors/errors.js";
8
+ import type { BillclawConfig, StorageConfig } from "../models/config.js";
9
+ /**
10
+ * Configuration provider - loads and provides configuration
11
+ */
12
+ export interface ConfigProvider {
13
+ /**
14
+ * Get the full BillClaw configuration
15
+ */
16
+ getConfig(): Promise<BillclawConfig>;
17
+ /**
18
+ * Get the storage configuration
19
+ */
20
+ getStorageConfig(): Promise<StorageConfig>;
21
+ /**
22
+ * Update a specific account configuration
23
+ */
24
+ updateAccount(accountId: string, updates: Partial<any>): Promise<void>;
25
+ /**
26
+ * Get account configuration by ID
27
+ */
28
+ getAccount(accountId: string): Promise<any | null>;
29
+ }
30
+ /**
31
+ * Event emitter - emits events for synchronization and monitoring
32
+ */
33
+ export interface EventEmitter {
34
+ /**
35
+ * Emit an event
36
+ */
37
+ emit(event: string, data?: unknown): void;
38
+ /**
39
+ * Register an event listener
40
+ */
41
+ on(event: string, handler: (data?: unknown) => void): void;
42
+ /**
43
+ * Remove an event listener
44
+ */
45
+ off(event: string, handler: (data?: unknown) => void): void;
46
+ }
47
+ /**
48
+ * Runtime context - provides all framework-specific functionality
49
+ */
50
+ export interface RuntimeContext {
51
+ /**
52
+ * Logger for output
53
+ */
54
+ logger: Logger;
55
+ /**
56
+ * Configuration provider
57
+ */
58
+ config: ConfigProvider;
59
+ /**
60
+ * Event emitter
61
+ */
62
+ events?: EventEmitter;
63
+ /**
64
+ * Platform-specific utilities
65
+ */
66
+ platform?: {
67
+ /**
68
+ * Get the home directory
69
+ */
70
+ getHomeDir(): string;
71
+ /**
72
+ * Get the data directory
73
+ */
74
+ getDataDir(): string;
75
+ /**
76
+ * Open a URL in the browser
77
+ */
78
+ openUrl(url: string): Promise<void>;
79
+ };
80
+ }
81
+ /**
82
+ * Default console logger implementation
83
+ */
84
+ export declare class ConsoleLogger implements Logger {
85
+ info(...args: unknown[]): void;
86
+ error(...args: unknown[]): void;
87
+ warn(...args: unknown[]): void;
88
+ debug(...args: unknown[]): void;
89
+ }
90
+ /**
91
+ * In-memory event emitter implementation
92
+ */
93
+ export declare class MemoryEventEmitter implements EventEmitter {
94
+ private listeners;
95
+ emit(event: string, data?: unknown): void;
96
+ on(event: string, handler: (data?: unknown) => void): void;
97
+ off(event: string, handler: (data?: unknown) => void): void;
98
+ }
99
+ /**
100
+ * Simple in-memory config provider
101
+ */
102
+ export declare class MemoryConfigProvider implements ConfigProvider {
103
+ private config;
104
+ constructor(config: BillclawConfig);
105
+ getConfig(): Promise<BillclawConfig>;
106
+ getStorageConfig(): Promise<StorageConfig>;
107
+ updateAccount(accountId: string, updates: Partial<any>): Promise<void>;
108
+ getAccount(accountId: string): Promise<any | null>;
109
+ }
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Runtime abstractions for BillClaw
3
+ *
4
+ * These interfaces define the contracts that adapters (OpenClaw, CLI, etc.)
5
+ * must implement to provide framework-specific functionality to the core.
6
+ */
7
+ /**
8
+ * Default console logger implementation
9
+ */
10
+ export class ConsoleLogger {
11
+ info(...args) {
12
+ console.log("[INFO]", ...args);
13
+ }
14
+ error(...args) {
15
+ console.error("[ERROR]", ...args);
16
+ }
17
+ warn(...args) {
18
+ console.warn("[WARN]", ...args);
19
+ }
20
+ debug(...args) {
21
+ if (process.env.DEBUG) {
22
+ console.debug("[DEBUG]", ...args);
23
+ }
24
+ }
25
+ }
26
+ /**
27
+ * In-memory event emitter implementation
28
+ */
29
+ export class MemoryEventEmitter {
30
+ listeners = new Map();
31
+ emit(event, data) {
32
+ const handlers = this.listeners.get(event);
33
+ if (handlers) {
34
+ for (const handler of handlers) {
35
+ try {
36
+ handler(data);
37
+ }
38
+ catch (error) {
39
+ console.error(`Error in event handler for ${event}:`, error);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ on(event, handler) {
45
+ if (!this.listeners.has(event)) {
46
+ this.listeners.set(event, new Set());
47
+ }
48
+ this.listeners.get(event).add(handler);
49
+ }
50
+ off(event, handler) {
51
+ const handlers = this.listeners.get(event);
52
+ if (handlers) {
53
+ handlers.delete(handler);
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Simple in-memory config provider
59
+ */
60
+ export class MemoryConfigProvider {
61
+ config;
62
+ constructor(config) {
63
+ this.config = config;
64
+ }
65
+ async getConfig() {
66
+ return this.config;
67
+ }
68
+ async getStorageConfig() {
69
+ return (this.config.storage || {
70
+ path: "~/.billclaw",
71
+ format: "json",
72
+ encryption: { enabled: false },
73
+ });
74
+ }
75
+ async updateAccount(accountId, updates) {
76
+ const account = this.config.accounts.find((a) => a.id === accountId);
77
+ if (account) {
78
+ Object.assign(account, updates);
79
+ }
80
+ }
81
+ async getAccount(accountId) {
82
+ return this.config.accounts.find((a) => a.id === accountId) || null;
83
+ }
84
+ }
85
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Security audit logging for BillClaw
3
+ *
4
+ * Provides audit logging for all credential operations:
5
+ * - Credential access (read/write/delete)
6
+ * - Account linking/unlinking
7
+ * - Sync operations
8
+ * - Configuration changes
9
+ *
10
+ * Audit logs are stored locally and can be exported for compliance.
11
+ */
12
+ import type { Logger } from "../errors/errors.js";
13
+ /**
14
+ * Audit event types
15
+ */
16
+ export declare enum AuditEventType {
17
+ CREDENTIAL_CREATED = "credential.created",
18
+ CREDENTIAL_READ = "credential.read",
19
+ CREDENTIAL_WRITE = "credential.write",
20
+ CREDENTIAL_UPDATED = "credential.updated",
21
+ CREDENTIAL_DELETED = "credential.deleted",
22
+ CREDENTIAL_DELETE = "credential.delete",// Alias for backward compatibility
23
+ CREDENTIAL_EXPORTED = "credential.exported",
24
+ ACCOUNT_LINKED = "account.linked",
25
+ ACCOUNT_UNLINKED = "account.unlinked",
26
+ ACCOUNT_SYNCED = "account.synced",
27
+ ACCOUNT_SYNC_FAILED = "account.sync_failed",
28
+ CONFIG_UPDATED = "config.updated",
29
+ CONFIG_READ = "config.read",
30
+ AUTH_SUCCESS = "auth.success",
31
+ AUTH_FAILED = "auth.failed",
32
+ AUTH_REFRESHED = "auth.refreshed",
33
+ DATA_EXPORTED = "data.exported",
34
+ DATA_IMPORTED = "data.imported",
35
+ DATA_DELETED = "data.deleted",
36
+ ACCOUNT_ACCESS = "account.access",
37
+ SYNC_STARTED = "sync.started",
38
+ SYNC_COMPLETED = "sync.completed",
39
+ SYNC_FAILED = "sync.failed",
40
+ CONFIG_CHANGE = "config.change"
41
+ }
42
+ /**
43
+ * Audit event severity
44
+ */
45
+ export declare enum AuditSeverity {
46
+ INFO = "info",
47
+ LOW = "low",
48
+ MEDIUM = "medium",
49
+ HIGH = "high",
50
+ WARNING = "warning",
51
+ ERROR = "error",
52
+ CRITICAL = "critical"
53
+ }
54
+ /**
55
+ * Audit event entry
56
+ */
57
+ export interface AuditEvent {
58
+ id: string;
59
+ timestamp: string;
60
+ type: AuditEventType;
61
+ severity: AuditSeverity;
62
+ message: string;
63
+ details?: Record<string, unknown>;
64
+ userId?: string;
65
+ ipAddress?: string;
66
+ userAgent?: string;
67
+ }
68
+ /**
69
+ * Audit log configuration
70
+ */
71
+ export interface AuditConfig {
72
+ dataDir?: string;
73
+ maxEntries?: number;
74
+ retentionDays?: number;
75
+ }
76
+ /**
77
+ * Audit logger class
78
+ */
79
+ export declare class AuditLogger {
80
+ private config;
81
+ private baseDir;
82
+ private logFilePath;
83
+ private logger?;
84
+ constructor(configOrPath?: AuditConfig | string, logger?: Logger);
85
+ /**
86
+ * Get the audit log file path
87
+ */
88
+ private getAuditFilePath;
89
+ /**
90
+ * Ensure audit directory exists
91
+ */
92
+ private ensureAuditDir;
93
+ /**
94
+ * Rotate audit logs if they exceed max entries
95
+ */
96
+ private rotateIfNeeded;
97
+ /**
98
+ * Log an audit event
99
+ */
100
+ log(type: AuditEventType, message: string, details?: Record<string, unknown>, severity?: AuditSeverity): Promise<void>;
101
+ /**
102
+ * Generate a unique event ID
103
+ */
104
+ private generateEventId;
105
+ /**
106
+ * Read all audit events
107
+ */
108
+ readEvents(limit?: number): Promise<AuditEvent[]>;
109
+ /**
110
+ * Query audit events by type
111
+ */
112
+ queryByType(type: AuditEventType, limit?: number): Promise<AuditEvent[]>;
113
+ /**
114
+ * Query audit events by severity
115
+ */
116
+ queryBySeverity(severity: AuditSeverity, limit?: number): Promise<AuditEvent[]>;
117
+ /**
118
+ * Clear all audit events
119
+ */
120
+ clear(): Promise<void>;
121
+ /**
122
+ * Get audit log statistics
123
+ */
124
+ getStats(): Promise<{
125
+ totalEvents: number;
126
+ byType: Record<string, number>;
127
+ bySeverity: Record<string, number>;
128
+ }>;
129
+ }
130
+ /**
131
+ * Create an audit logger with the given configuration
132
+ */
133
+ export declare function createAuditLogger(config?: AuditConfig, logger?: Logger): AuditLogger;
134
+ /**
135
+ * Convenience functions for common audit events
136
+ */
137
+ export declare class AuditHelpers {
138
+ private audit;
139
+ constructor(audit: AuditLogger);
140
+ logCredentialCreated(credentialType: string, accountId: string): Promise<void>;
141
+ logCredentialRead(credentialType: string, accountId: string): Promise<void>;
142
+ logCredentialDeleted(credentialType: string, accountId: string): Promise<void>;
143
+ logAccountLinked(accountType: string, accountId: string): Promise<void>;
144
+ logAccountUnlinked(accountType: string, accountId: string): Promise<void>;
145
+ logAuthFailed(accountType: string, reason: string): Promise<void>;
146
+ logDataExported(dataType: string, count: number): Promise<void>;
147
+ }
148
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/security/audit.ts"],"names":[],"mappings":"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"}