@hasna/cloud 0.1.31 → 0.1.33

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 (46) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +17 -0
  3. package/dist/adapter.test.d.ts +2 -0
  4. package/dist/adapter.test.d.ts.map +1 -0
  5. package/dist/auto-sync.d.ts.map +1 -1
  6. package/dist/cli/cmd-doctor.d.ts +3 -0
  7. package/dist/cli/cmd-doctor.d.ts.map +1 -0
  8. package/dist/cli/cmd-feedback.d.ts +3 -0
  9. package/dist/cli/cmd-feedback.d.ts.map +1 -0
  10. package/dist/cli/cmd-migrate.d.ts +3 -0
  11. package/dist/cli/cmd-migrate.d.ts.map +1 -0
  12. package/dist/cli/cmd-setup.d.ts +3 -0
  13. package/dist/cli/cmd-setup.d.ts.map +1 -0
  14. package/dist/cli/cmd-sync.d.ts +4 -0
  15. package/dist/cli/cmd-sync.d.ts.map +1 -0
  16. package/dist/cli/index.js +2330 -1079
  17. package/dist/config.d.ts +138 -4
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/daemon-sync.d.ts +108 -0
  20. package/dist/daemon-sync.d.ts.map +1 -0
  21. package/dist/dialect.test.d.ts +2 -0
  22. package/dist/dialect.test.d.ts.map +1 -0
  23. package/dist/discover.test.d.ts +2 -0
  24. package/dist/discover.test.d.ts.map +1 -0
  25. package/dist/index.d.ts +3 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1143 -153
  28. package/dist/machines.d.ts +63 -0
  29. package/dist/machines.d.ts.map +1 -0
  30. package/dist/mcp/bin.js +2 -0
  31. package/dist/mcp/http.d.ts +27 -0
  32. package/dist/mcp/http.d.ts.map +1 -0
  33. package/dist/mcp/index.d.ts +2 -1
  34. package/dist/mcp/index.d.ts.map +1 -1
  35. package/dist/mcp/index.js +2125 -438
  36. package/dist/scheduled-sync.js +205 -44
  37. package/dist/sync-conflicts.test.d.ts +2 -0
  38. package/dist/sync-conflicts.test.d.ts.map +1 -0
  39. package/dist/sync-incremental.d.ts +5 -0
  40. package/dist/sync-incremental.d.ts.map +1 -1
  41. package/dist/sync-schedule.test.d.ts +2 -0
  42. package/dist/sync-schedule.test.d.ts.map +1 -0
  43. package/dist/sync.d.ts.map +1 -1
  44. package/dist/sync.test.d.ts +2 -0
  45. package/dist/sync.test.d.ts.map +1 -0
  46. package/package.json +3 -3
package/dist/config.d.ts CHANGED
@@ -1,4 +1,55 @@
1
1
  import { z } from "zod";
2
+ declare const DaemonConfigSchema: z.ZodDefault<z.ZodObject<{
3
+ enabled: z.ZodDefault<z.ZodBoolean>;
4
+ paused: z.ZodDefault<z.ZodBoolean>;
5
+ watch_interval_seconds: z.ZodDefault<z.ZodNumber>;
6
+ pull_interval_seconds: z.ZodDefault<z.ZodNumber>;
7
+ push_debounce_seconds: z.ZodDefault<z.ZodNumber>;
8
+ conflict_strategy: z.ZodDefault<z.ZodEnum<["newest-wins", "local-wins", "remote-wins"]>>;
9
+ services: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
10
+ table_intervals: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>>;
11
+ file_rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
12
+ path: z.ZodString;
13
+ interval_seconds: z.ZodDefault<z.ZodNumber>;
14
+ enabled: z.ZodDefault<z.ZodBoolean>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ enabled: boolean;
17
+ path: string;
18
+ interval_seconds: number;
19
+ }, {
20
+ path: string;
21
+ enabled?: boolean | undefined;
22
+ interval_seconds?: number | undefined;
23
+ }>, "many">>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ enabled: boolean;
26
+ paused: boolean;
27
+ watch_interval_seconds: number;
28
+ pull_interval_seconds: number;
29
+ push_debounce_seconds: number;
30
+ conflict_strategy: "newest-wins" | "local-wins" | "remote-wins";
31
+ services: string[];
32
+ table_intervals: Record<string, Record<string, number>>;
33
+ file_rules: {
34
+ enabled: boolean;
35
+ path: string;
36
+ interval_seconds: number;
37
+ }[];
38
+ }, {
39
+ enabled?: boolean | undefined;
40
+ paused?: boolean | undefined;
41
+ watch_interval_seconds?: number | undefined;
42
+ pull_interval_seconds?: number | undefined;
43
+ push_debounce_seconds?: number | undefined;
44
+ conflict_strategy?: "newest-wins" | "local-wins" | "remote-wins" | undefined;
45
+ services?: string[] | undefined;
46
+ table_intervals?: Record<string, Record<string, number>> | undefined;
47
+ file_rules?: {
48
+ path: string;
49
+ enabled?: boolean | undefined;
50
+ interval_seconds?: number | undefined;
51
+ }[] | undefined;
52
+ }>>;
2
53
  export declare const CloudConfigSchema: z.ZodObject<{
3
54
  rds: z.ZodDefault<z.ZodObject<{
4
55
  host: z.ZodDefault<z.ZodString>;
@@ -29,6 +80,57 @@ export declare const CloudConfigSchema: z.ZodObject<{
29
80
  }, {
30
81
  schedule_minutes?: number | undefined;
31
82
  }>>;
83
+ daemon: z.ZodDefault<z.ZodObject<{
84
+ enabled: z.ZodDefault<z.ZodBoolean>;
85
+ paused: z.ZodDefault<z.ZodBoolean>;
86
+ watch_interval_seconds: z.ZodDefault<z.ZodNumber>;
87
+ pull_interval_seconds: z.ZodDefault<z.ZodNumber>;
88
+ push_debounce_seconds: z.ZodDefault<z.ZodNumber>;
89
+ conflict_strategy: z.ZodDefault<z.ZodEnum<["newest-wins", "local-wins", "remote-wins"]>>;
90
+ services: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
91
+ table_intervals: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>>;
92
+ file_rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
93
+ path: z.ZodString;
94
+ interval_seconds: z.ZodDefault<z.ZodNumber>;
95
+ enabled: z.ZodDefault<z.ZodBoolean>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ enabled: boolean;
98
+ path: string;
99
+ interval_seconds: number;
100
+ }, {
101
+ path: string;
102
+ enabled?: boolean | undefined;
103
+ interval_seconds?: number | undefined;
104
+ }>, "many">>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ enabled: boolean;
107
+ paused: boolean;
108
+ watch_interval_seconds: number;
109
+ pull_interval_seconds: number;
110
+ push_debounce_seconds: number;
111
+ conflict_strategy: "newest-wins" | "local-wins" | "remote-wins";
112
+ services: string[];
113
+ table_intervals: Record<string, Record<string, number>>;
114
+ file_rules: {
115
+ enabled: boolean;
116
+ path: string;
117
+ interval_seconds: number;
118
+ }[];
119
+ }, {
120
+ enabled?: boolean | undefined;
121
+ paused?: boolean | undefined;
122
+ watch_interval_seconds?: number | undefined;
123
+ pull_interval_seconds?: number | undefined;
124
+ push_debounce_seconds?: number | undefined;
125
+ conflict_strategy?: "newest-wins" | "local-wins" | "remote-wins" | undefined;
126
+ services?: string[] | undefined;
127
+ table_intervals?: Record<string, Record<string, number>> | undefined;
128
+ file_rules?: {
129
+ path: string;
130
+ enabled?: boolean | undefined;
131
+ interval_seconds?: number | undefined;
132
+ }[] | undefined;
133
+ }>>;
32
134
  }, "strip", z.ZodTypeAny, {
33
135
  rds: {
34
136
  ssl: boolean;
@@ -37,12 +139,27 @@ export declare const CloudConfigSchema: z.ZodObject<{
37
139
  username: string;
38
140
  password_env: string;
39
141
  };
40
- mode: "local" | "cloud" | "hybrid";
142
+ mode: "cloud" | "local" | "hybrid";
41
143
  auto_sync_interval_minutes: number;
42
144
  feedback_endpoint: string;
43
145
  sync: {
44
146
  schedule_minutes: number;
45
147
  };
148
+ daemon: {
149
+ enabled: boolean;
150
+ paused: boolean;
151
+ watch_interval_seconds: number;
152
+ pull_interval_seconds: number;
153
+ push_debounce_seconds: number;
154
+ conflict_strategy: "newest-wins" | "local-wins" | "remote-wins";
155
+ services: string[];
156
+ table_intervals: Record<string, Record<string, number>>;
157
+ file_rules: {
158
+ enabled: boolean;
159
+ path: string;
160
+ interval_seconds: number;
161
+ }[];
162
+ };
46
163
  }, {
47
164
  rds?: {
48
165
  ssl?: boolean | undefined;
@@ -51,20 +168,36 @@ export declare const CloudConfigSchema: z.ZodObject<{
51
168
  username?: string | undefined;
52
169
  password_env?: string | undefined;
53
170
  } | undefined;
54
- mode?: "local" | "cloud" | "hybrid" | undefined;
171
+ mode?: "cloud" | "local" | "hybrid" | undefined;
55
172
  auto_sync_interval_minutes?: number | undefined;
56
173
  feedback_endpoint?: string | undefined;
57
174
  sync?: {
58
175
  schedule_minutes?: number | undefined;
59
176
  } | undefined;
177
+ daemon?: {
178
+ enabled?: boolean | undefined;
179
+ paused?: boolean | undefined;
180
+ watch_interval_seconds?: number | undefined;
181
+ pull_interval_seconds?: number | undefined;
182
+ push_debounce_seconds?: number | undefined;
183
+ conflict_strategy?: "newest-wins" | "local-wins" | "remote-wins" | undefined;
184
+ services?: string[] | undefined;
185
+ table_intervals?: Record<string, Record<string, number>> | undefined;
186
+ file_rules?: {
187
+ path: string;
188
+ enabled?: boolean | undefined;
189
+ interval_seconds?: number | undefined;
190
+ }[] | undefined;
191
+ } | undefined;
60
192
  }>;
61
193
  export type CloudConfig = z.infer<typeof CloudConfigSchema>;
194
+ export type CloudDaemonConfig = z.infer<typeof DaemonConfigSchema>;
62
195
  export declare function getConfigDir(): string;
63
196
  export declare function getConfigPath(): string;
64
197
  export declare function getCloudConfig(): CloudConfig;
65
198
  export declare function saveCloudConfig(config: CloudConfig): void;
66
199
  export declare function getConnectionString(dbName: string): string;
67
- import { type DbAdapter } from "./adapter.js";
200
+ import { type MachineAwareDbAdapter } from "./machines.js";
68
201
  export interface CreateDatabaseOptions {
69
202
  /** Service name — used to locate the SQLite file and PG database. */
70
203
  service: string;
@@ -82,5 +215,6 @@ export interface CreateDatabaseOptions {
82
215
  * - `cloud` mode → PgAdapter
83
216
  * - `hybrid` mode → SqliteAdapter (PG is used only for sync)
84
217
  */
85
- export declare function createDatabase(options: CreateDatabaseOptions): DbAdapter;
218
+ export declare function createDatabase(options: CreateDatabaseOptions): MachineAwareDbAdapter;
219
+ export {};
86
220
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAS5D,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAMD,wBAAgB,cAAc,IAAI,WAAW,CAU5C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGzD;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAMD,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxE,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAaxE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwBV,CAAC;AAMf,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AASnE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAMD,wBAAgB,cAAc,IAAI,WAAW,CAU5C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGzD;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAQD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,qBAAqB,CAavB"}
@@ -0,0 +1,108 @@
1
+ import type { DbAdapter } from "./adapter.js";
2
+ import { type CloudConfig, type CloudDaemonConfig } from "./config.js";
3
+ import type { ConflictStrategy } from "./sync-conflicts.js";
4
+ export interface DaemonFileState {
5
+ path: string;
6
+ enabled: boolean;
7
+ interval_seconds: number;
8
+ exists: boolean;
9
+ last_mtime_ms: number;
10
+ }
11
+ export interface DaemonTableState {
12
+ last_push_at: string | null;
13
+ last_pull_at: string | null;
14
+ }
15
+ export interface DaemonServiceState {
16
+ last_local_db_mtime_ms: number;
17
+ last_push_at: string | null;
18
+ last_pull_at: string | null;
19
+ last_error: string | null;
20
+ tables: Record<string, DaemonTableState>;
21
+ }
22
+ export interface DaemonState {
23
+ pid: number | null;
24
+ status: "stopped" | "running" | "paused";
25
+ started_at: string | null;
26
+ updated_at: string | null;
27
+ last_push_at: string | null;
28
+ last_pull_at: string | null;
29
+ last_error: string | null;
30
+ services: Record<string, DaemonServiceState>;
31
+ files: Record<string, DaemonFileState>;
32
+ }
33
+ export interface DaemonRunSummary {
34
+ services: string[];
35
+ pushed_services: number;
36
+ pulled_services: number;
37
+ pushed_rows: number;
38
+ pulled_rows: number;
39
+ errors: string[];
40
+ }
41
+ export interface DaemonStatus {
42
+ running: boolean;
43
+ pid: number | null;
44
+ status: "stopped" | "running" | "paused";
45
+ config: CloudDaemonConfig;
46
+ state: DaemonState;
47
+ services: string[];
48
+ }
49
+ export interface TableIntervalRule {
50
+ service: string;
51
+ table: string;
52
+ interval_seconds: number;
53
+ }
54
+ export interface ParsedFileRule {
55
+ path: string;
56
+ interval_seconds: number;
57
+ enabled: boolean;
58
+ }
59
+ export interface DaemonAdapterFactory {
60
+ getLocalDbPath(service: string): string;
61
+ openLocal(service: string): DbAdapter;
62
+ openRemote(service: string): DbAdapter;
63
+ listRemoteTables(remote: DbAdapter): string[];
64
+ }
65
+ export declare const defaultDaemonAdapterFactory: DaemonAdapterFactory;
66
+ export declare function getDefaultDaemonConfig(): CloudDaemonConfig;
67
+ export declare function getDaemonConfig(config?: CloudConfig): CloudDaemonConfig;
68
+ export declare function saveDaemonConfig(config: CloudDaemonConfig): CloudDaemonConfig;
69
+ export declare function getDaemonStatePath(): string;
70
+ export declare function createDefaultDaemonState(): DaemonState;
71
+ export declare function readDaemonState(): DaemonState;
72
+ export declare function writeDaemonState(state: DaemonState): void;
73
+ export declare function resolveDaemonServices(config: CloudDaemonConfig): string[];
74
+ export declare function parseTableIntervalRule(raw: string): TableIntervalRule;
75
+ export declare function applyTableIntervalRules(existing: CloudDaemonConfig["table_intervals"], rules: string[]): CloudDaemonConfig["table_intervals"];
76
+ export declare function parseFileRule(raw: string): ParsedFileRule;
77
+ export declare function applyFileRules(existing: CloudDaemonConfig["file_rules"], rules: string[]): CloudDaemonConfig["file_rules"];
78
+ export declare function runDaemonPass(config: CloudDaemonConfig, state?: DaemonState, options?: {
79
+ adapterFactory?: DaemonAdapterFactory;
80
+ forcePush?: boolean;
81
+ forcePull?: boolean;
82
+ services?: string[];
83
+ }): {
84
+ state: DaemonState;
85
+ summary: DaemonRunSummary;
86
+ };
87
+ export declare function getDaemonStatus(): DaemonStatus;
88
+ export declare function startDaemon(overrides?: Partial<CloudDaemonConfig>): DaemonStatus;
89
+ export declare function stopDaemon(): DaemonStatus;
90
+ export declare function pauseDaemon(): DaemonStatus;
91
+ export declare function resumeDaemon(): DaemonStatus;
92
+ export declare function runDaemonOnce(options?: {
93
+ config?: CloudDaemonConfig;
94
+ state?: DaemonState;
95
+ adapterFactory?: DaemonAdapterFactory;
96
+ forcePush?: boolean;
97
+ forcePull?: boolean;
98
+ services?: string[];
99
+ }): {
100
+ state: DaemonState;
101
+ summary: DaemonRunSummary;
102
+ };
103
+ export declare function runDaemonLoop(options?: {
104
+ adapterFactory?: DaemonAdapterFactory;
105
+ max_passes?: number;
106
+ }): void;
107
+ export declare function normalizeConflictStrategy(strategy: string | undefined): ConflictStrategy;
108
+ //# sourceMappingURL=daemon-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-sync.d.ts","sourceRoot":"","sources":["../src/daemon-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dialect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.test.d.ts","sourceRoot":"","sources":["../src/dialect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=discover.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.test.d.ts","sourceRoot":"","sources":["../src/discover.test.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { SqliteAdapter, PgAdapter, PgAdapterAsync, type DbAdapter, type PreparedStatement, type RunResult, } from "./adapter.js";
2
2
  export { translateSql, translateDdl, translateParams, type Dialect, } from "./dialect.js";
3
- export { getCloudConfig, saveCloudConfig, getConnectionString, createDatabase, getConfigDir, getConfigPath, CloudConfigSchema, type CloudConfig, type CreateDatabaseOptions, } from "./config.js";
3
+ export { getCloudConfig, saveCloudConfig, getConnectionString, createDatabase, getConfigDir, getConfigPath, CloudConfigSchema, type CloudConfig, type CloudDaemonConfig, type CreateDatabaseOptions, } from "./config.js";
4
+ export { getCurrentMachineId, detectCurrentMachine, ensureMachinesTable, getMachineRecord, registerMachine, listMachines, pingMachine, getMachineStatus, ensureMachineIdColumn, createMachineRegistry, createMachineAwareAdapter, type MachineRecord, type RegisterMachineOptions, type MachinePingResult, type MachineRegistryApi, type MachineAwareDbAdapter, } from "./machines.js";
4
5
  export { syncPush, syncPull, listSqliteTables, listPgTables, type SyncOptions, type SyncResult, type SyncProgress, type SyncProgressCallback, } from "./sync.js";
5
6
  export { saveFeedback, sendFeedback, listFeedback, ensureFeedbackTable, type Feedback, } from "./feedback.js";
6
7
  export { migrateDotfile, getDataDir, getDbPath, hasLegacyDotfile, getHasnaDir, } from "./dotfile.js";
@@ -10,6 +11,7 @@ export { incrementalSyncPush, incrementalSyncPull, ensureSyncMetaTable, getSyncM
10
11
  export { setupAutoSync, enableAutoSync, getAutoSyncConfig, type AutoSyncConfig, type AutoSyncContext, type AutoSyncResult, } from "./auto-sync.js";
11
12
  export { runScheduledSync, discoverSyncableServices, type ScheduledSyncResult, } from "./scheduled-sync.js";
12
13
  export { registerSyncSchedule, removeSyncSchedule, getSyncScheduleStatus, parseInterval, minutesToCron, type SyncScheduleStatus, } from "./sync-schedule.js";
14
+ export { getDefaultDaemonConfig, getDaemonConfig, saveDaemonConfig, getDaemonStatePath, createDefaultDaemonState, readDaemonState, writeDaemonState, resolveDaemonServices, parseTableIntervalRule, applyTableIntervalRules, parseFileRule, applyFileRules, runDaemonPass, getDaemonStatus, startDaemon, stopDaemon, pauseDaemon, resumeDaemon, runDaemonOnce, runDaemonLoop, normalizeConflictStrategy, type DaemonState, type DaemonStatus, type DaemonRunSummary, type DaemonServiceState, type DaemonTableState, type DaemonFileState, type TableIntervalRule, type ParsedFileRule, type DaemonAdapterFactory, } from "./daemon-sync.js";
13
15
  export { applyPgMigrations, migrateService, migrateAllServices, ensurePgDatabase, ensureAllPgDatabases, type PgMigrationResult, } from "./pg-migrate.js";
14
16
  export { discoverServices, discoverSyncableServices as discoverSyncableServicesV2, getServiceDbPath, isSyncExcludedTable, KNOWN_PG_SERVICES, SYNC_EXCLUDED_TABLE_PATTERNS, } from "./discover.js";
15
17
  export { registerCloudTools } from "./mcp-helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,aAAa,EACb,SAAS,EACT,cAAc,EACd,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,KAAK,OAAO,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,IAAI,0BAA0B,EACtD,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,aAAa,EACb,SAAS,EACT,cAAc,EACd,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,KAAK,OAAO,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,IAAI,0BAA0B,EACtD,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}