openclaw-workspace-sync 1.4.6 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -25
- package/dist/rclone.d.ts +45 -1
- package/dist/rclone.d.ts.map +1 -1
- package/dist/rclone.js +107 -0
- package/dist/rclone.js.map +1 -1
- package/dist/sync-manager.d.ts.map +1 -1
- package/dist/sync-manager.js +175 -23
- package/dist/sync-manager.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/skills/workspace-sync/SKILL.md +62 -22
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenClaw Workspace Cloud Sync Plugin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Sync your OpenClaw agent workspace with cloud storage via [rclone](https://rclone.org/).
|
|
4
4
|
|
|
5
5
|
Supports **Dropbox, Google Drive, OneDrive, S3/R2/Minio**, and [70+ cloud providers](https://rclone.org/overview/).
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ Supports **Dropbox, Google Drive, OneDrive, S3/R2/Minio**, and [70+ cloud provid
|
|
|
10
10
|
<img src="https://raw.githubusercontent.com/ashbrener/openclaw-workspace-sync/main/docs/how-it-works.png" alt="How it works — Local Machine syncs to Cloud Provider syncs to Remote Gateway" width="600" />
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
The remote gateway workspace is the **source of truth**. Changes made by the agent flow down to your local machine through cloud storage. You can send files to the agent through an optional inbox.
|
|
14
14
|
|
|
15
15
|
**Zero LLM cost.** All sync operations are pure rclone file operations — they never wake the bot or trigger LLM calls.
|
|
16
16
|
|
|
@@ -20,6 +20,151 @@ Drop a file locally — it appears on the remote Gateway (and vice versa).
|
|
|
20
20
|
<img src="https://raw.githubusercontent.com/ashbrener/openclaw-workspace-sync/main/docs/architecture.png" alt="Plugin architecture — CLI, Hooks, and Sync Manager feed into rclone wrapper" width="600" />
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
|
+
## Sync modes (breaking change in v2.0)
|
|
24
|
+
|
|
25
|
+
**`mode` is now required.** Previous versions used bidirectional bisync implicitly. Starting with v2.0, you must explicitly set `"mode"` in your config. The plugin will refuse to start and log an error until `mode` is set. This prevents accidental data loss from an unexpected sync direction.
|
|
26
|
+
|
|
27
|
+
The plugin supports three sync modes. Choose the one that fits your workflow:
|
|
28
|
+
|
|
29
|
+
| Mode | Direction | Description |
|
|
30
|
+
|------|-----------|-------------|
|
|
31
|
+
| `mailbox` | Push + inbox/outbox | Workspace pushes to cloud; users drop files in `_outbox` to send them to the agent. **Safest.** |
|
|
32
|
+
| `mirror` | Remote → Local | One-way sync: workspace mirrors down to local. Safe — local can never overwrite remote. |
|
|
33
|
+
| `bisync` | Bidirectional | Full two-way sync. Powerful but requires careful setup. |
|
|
34
|
+
|
|
35
|
+
**Upgrading from a previous version?** If you were using bisync before, add `"mode": "bisync"` to your config to preserve the existing behavior. For the safest option, use `"mode": "mailbox"`.
|
|
36
|
+
|
|
37
|
+
### `mailbox` mode (recommended)
|
|
38
|
+
|
|
39
|
+
The agent workspace is the source of truth. Each sync cycle:
|
|
40
|
+
|
|
41
|
+
1. **Push**: `rclone sync` pushes the workspace to the cloud (excluding `_inbox/` and `_outbox/`)
|
|
42
|
+
2. **Drain**: `rclone move` pulls files from the cloud `_outbox/` into the workspace `_inbox/`, deleting them from the cloud after transfer
|
|
43
|
+
|
|
44
|
+
```mermaid
|
|
45
|
+
flowchart LR
|
|
46
|
+
subgraph GW["Gateway (source of truth)"]
|
|
47
|
+
WS["/workspace"]
|
|
48
|
+
INBOX["_inbox/"]
|
|
49
|
+
end
|
|
50
|
+
subgraph CLOUD["Cloud Provider"]
|
|
51
|
+
CF["workspace files"]
|
|
52
|
+
OUTBOX_C["_outbox/"]
|
|
53
|
+
end
|
|
54
|
+
subgraph LOCAL["Your Machine"]
|
|
55
|
+
LM["local mirror"]
|
|
56
|
+
OUTBOX_L["_outbox/ (drop files here)"]
|
|
57
|
+
end
|
|
58
|
+
WS -- "1. rclone sync (push)" --> CF
|
|
59
|
+
CF -. "desktop app (auto)" .-> LM
|
|
60
|
+
OUTBOX_L -. "desktop app (auto)" .-> OUTBOX_C
|
|
61
|
+
OUTBOX_C -- "2. rclone move (drain)" --> INBOX
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
This creates a clean separation:
|
|
65
|
+
|
|
66
|
+
- **Your local machine** gets a live mirror of the workspace via your cloud provider's desktop app (e.g., Dropbox). You also see an `_outbox/` folder — drop files there to send them to the agent.
|
|
67
|
+
- **The agent workspace** has an `_inbox/` folder where incoming files land. The agent (or a skill) can process them from there.
|
|
68
|
+
|
|
69
|
+
On startup, the plugin bootstraps both directories:
|
|
70
|
+
- `rclone mkdir cloud:_outbox` — ensures the cloud `_outbox` exists so your desktop app creates the local folder
|
|
71
|
+
- `mkdir -p <workspace>/_inbox` — ensures the agent's landing zone exists
|
|
72
|
+
|
|
73
|
+
Because the push explicitly excludes `_inbox/**` and `_outbox/**`, there is no risk of sync loops or accidental overwrites. Files only flow in one direction through each channel.
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"mode": "mailbox",
|
|
78
|
+
"provider": "dropbox",
|
|
79
|
+
"remotePath": "",
|
|
80
|
+
"localPath": "/",
|
|
81
|
+
"interval": 60
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### `mirror` mode
|
|
86
|
+
|
|
87
|
+
The agent workspace is the source of truth. Every sync cycle copies the latest workspace state down to your local folder. Local files outside the workspace are never sent up.
|
|
88
|
+
|
|
89
|
+
```mermaid
|
|
90
|
+
flowchart LR
|
|
91
|
+
subgraph GW["Gateway (source of truth)"]
|
|
92
|
+
WS["/workspace"]
|
|
93
|
+
end
|
|
94
|
+
subgraph CLOUD["Cloud Provider"]
|
|
95
|
+
CF["workspace files"]
|
|
96
|
+
end
|
|
97
|
+
subgraph LOCAL["Your Machine"]
|
|
98
|
+
LM["local copy (read-only)"]
|
|
99
|
+
end
|
|
100
|
+
CF -- "rclone sync (pull)" --> LM
|
|
101
|
+
WS -. "agent writes here" .-> WS
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
This is safe: even if something goes wrong, only your local copy is affected — the workspace stays untouched.
|
|
105
|
+
|
|
106
|
+
### `ingest` option (mirror mode only)
|
|
107
|
+
|
|
108
|
+
Want to send files to the agent while using mirror mode? Enable the `ingest` option. This creates a local `inbox/` folder (sibling to the sync folder) that syncs one-way **up** to the workspace. Drop a file in the inbox — it appears on the remote workspace. The inbox is separate from the mirror, so there is no risk of overwriting workspace files.
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"mode": "mirror",
|
|
113
|
+
"ingest": true,
|
|
114
|
+
"ingestPath": "inbox"
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
When enabled, a local `inbox/` folder syncs its contents to `<remotePath>/inbox/` on the workspace. This is additive only — files are copied up, never deleted from the remote side.
|
|
119
|
+
|
|
120
|
+
> For a more robust file-exchange pattern, consider `mailbox` mode instead. Mailbox uses `rclone move` to drain files (deleting from the source after transfer), which prevents duplicates and is easier to reason about.
|
|
121
|
+
|
|
122
|
+
### `bisync` mode (advanced)
|
|
123
|
+
|
|
124
|
+
Full bidirectional sync using rclone bisync. Changes on either side propagate to the other.
|
|
125
|
+
|
|
126
|
+
```mermaid
|
|
127
|
+
flowchart LR
|
|
128
|
+
subgraph GW["Gateway"]
|
|
129
|
+
WS["/workspace"]
|
|
130
|
+
end
|
|
131
|
+
subgraph CLOUD["Cloud Provider"]
|
|
132
|
+
CF["workspace files"]
|
|
133
|
+
end
|
|
134
|
+
subgraph LOCAL["Your Machine"]
|
|
135
|
+
LM["local copy"]
|
|
136
|
+
end
|
|
137
|
+
WS -- "rclone bisync" --> CF
|
|
138
|
+
CF -- "rclone bisync" --> WS
|
|
139
|
+
CF -. "desktop app" .-> LM
|
|
140
|
+
LM -. "desktop app" .-> CF
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Use this only if you understand the trade-offs:
|
|
144
|
+
|
|
145
|
+
- Both sides must be in a known-good state before starting
|
|
146
|
+
- A `--resync` is required once to establish the baseline — and it copies **everything**
|
|
147
|
+
- If bisync state is lost (e.g., after a deploy that wipes ephemeral storage), you must `--resync` again
|
|
148
|
+
- Deleted files can reappear if the other side still has them during a resync
|
|
149
|
+
- On container platforms (Fly.io, Railway), bisync state lives in ephemeral storage and is lost on every deploy
|
|
150
|
+
|
|
151
|
+
If you are running on a container platform, `mailbox` mode is strongly recommended.
|
|
152
|
+
|
|
153
|
+
## Setup sequence
|
|
154
|
+
|
|
155
|
+
Getting sync right depends on doing things in the right order. Follow these steps:
|
|
156
|
+
|
|
157
|
+
1. **Configure the plugin** in `openclaw.json` with your provider credentials and `mode`
|
|
158
|
+
2. **Verify the remote** is accessible: `openclaw workspace-sync status`
|
|
159
|
+
3. **Run a dry-run first** to see what would happen: `openclaw workspace-sync sync --dry-run`
|
|
160
|
+
4. **Run the first sync**: `openclaw workspace-sync sync`
|
|
161
|
+
- In `mailbox` mode, this pushes the workspace and drains the `_outbox`
|
|
162
|
+
- In `mirror` mode, this pulls the current workspace down
|
|
163
|
+
- In `bisync` mode, this requires `--resync` to establish the baseline
|
|
164
|
+
5. **Enable periodic sync** by setting `interval` in your config
|
|
165
|
+
|
|
166
|
+
Take care when changing config (switching `remotePath`, `localPath`, or `mode`) — always disable periodic sync first, verify the new paths, then re-enable.
|
|
167
|
+
|
|
23
168
|
## Install
|
|
24
169
|
|
|
25
170
|
```bash
|
|
@@ -44,10 +189,11 @@ openclaw workspace-sync setup
|
|
|
44
189
|
The setup wizard guides you through:
|
|
45
190
|
1. Checking/installing rclone
|
|
46
191
|
2. Selecting cloud provider
|
|
47
|
-
3.
|
|
48
|
-
4.
|
|
49
|
-
5.
|
|
50
|
-
6.
|
|
192
|
+
3. Choosing sync mode
|
|
193
|
+
4. Dropbox app folder option (for scoped access)
|
|
194
|
+
5. Background sync interval
|
|
195
|
+
6. OAuth authorization
|
|
196
|
+
7. First sync
|
|
51
197
|
|
|
52
198
|
Or configure manually — see [Configuration](#configuration) below.
|
|
53
199
|
|
|
@@ -63,13 +209,13 @@ Add to your `openclaw.json`:
|
|
|
63
209
|
"enabled": true,
|
|
64
210
|
"config": {
|
|
65
211
|
"provider": "dropbox",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
212
|
+
"mode": "mailbox",
|
|
213
|
+
"remotePath": "",
|
|
214
|
+
"localPath": "/",
|
|
215
|
+
"interval": 60,
|
|
69
216
|
"timeout": 1800,
|
|
70
217
|
"onSessionStart": true,
|
|
71
218
|
"onSessionEnd": false,
|
|
72
|
-
"conflictResolve": "newer",
|
|
73
219
|
"exclude": [".git/**", "node_modules/**", "*.log"]
|
|
74
220
|
}
|
|
75
221
|
}
|
|
@@ -83,6 +229,9 @@ Add to your `openclaw.json`:
|
|
|
83
229
|
| Key | Type | Default | Description |
|
|
84
230
|
|-----|------|---------|-------------|
|
|
85
231
|
| `provider` | string | `"off"` | `dropbox` \| `gdrive` \| `onedrive` \| `s3` \| `custom` \| `off` |
|
|
232
|
+
| `mode` | string | **required** | `mailbox` \| `mirror` \| `bisync` — see [Sync modes](#sync-modes-breaking-change-in-v20) |
|
|
233
|
+
| `ingest` | boolean | `false` | Enable local inbox for sending files to the agent (mirror mode only) |
|
|
234
|
+
| `ingestPath` | string | `"inbox"` | Local subfolder name for ingestion (relative to `localPath`) |
|
|
86
235
|
| `remotePath` | string | `"openclaw-share"` | Folder name in cloud storage |
|
|
87
236
|
| `localPath` | string | `"shared"` | Subfolder within workspace to sync |
|
|
88
237
|
| `interval` | number | `0` | Background sync interval in seconds (0 = manual only, min 60) |
|
|
@@ -91,11 +240,11 @@ Add to your `openclaw.json`:
|
|
|
91
240
|
| `onSessionEnd` | boolean | `false` | Sync when an agent session ends |
|
|
92
241
|
| `remoteName` | string | `"cloud"` | rclone remote name |
|
|
93
242
|
| `configPath` | string | auto | Path to rclone.conf |
|
|
94
|
-
| `conflictResolve` | string | `"newer"` | `newer` \| `local` \| `remote` |
|
|
243
|
+
| `conflictResolve` | string | `"newer"` | `newer` \| `local` \| `remote` (bisync only) |
|
|
95
244
|
| `exclude` | string[] | see below | Glob patterns to exclude |
|
|
96
245
|
| `copySymlinks` | boolean | `false` | Follow symlinks during sync |
|
|
97
246
|
|
|
98
|
-
Default excludes:
|
|
247
|
+
Default excludes: `**/.DS_Store`
|
|
99
248
|
|
|
100
249
|
### Provider-specific options
|
|
101
250
|
|
|
@@ -114,6 +263,8 @@ Default excludes: `.git/**`, `node_modules/**`, `.venv/**`, `__pycache__/**`, `*
|
|
|
114
263
|
}
|
|
115
264
|
```
|
|
116
265
|
|
|
266
|
+
With `appFolder: true`, set `remotePath` to `""`. The app folder root is your sync root — do not repeat the app folder name in `remotePath` or rclone will fail with "directory not found."
|
|
267
|
+
|
|
117
268
|
**Google Drive:**
|
|
118
269
|
|
|
119
270
|
```json
|
|
@@ -190,19 +341,19 @@ openclaw workspace-sync setup
|
|
|
190
341
|
# Check sync status
|
|
191
342
|
openclaw workspace-sync status
|
|
192
343
|
|
|
193
|
-
# Sync
|
|
344
|
+
# Sync (behavior depends on mode)
|
|
194
345
|
openclaw workspace-sync sync
|
|
195
346
|
|
|
196
|
-
# First sync (required once to establish baseline)
|
|
197
|
-
openclaw workspace-sync sync --resync
|
|
198
|
-
|
|
199
347
|
# Preview changes without syncing
|
|
200
348
|
openclaw workspace-sync sync --dry-run
|
|
201
349
|
|
|
202
|
-
# One-way sync
|
|
350
|
+
# One-way sync (explicit, overrides mode for this run)
|
|
203
351
|
openclaw workspace-sync sync --direction pull # remote -> local
|
|
204
352
|
openclaw workspace-sync sync --direction push # local -> remote
|
|
205
353
|
|
|
354
|
+
# Force re-establish bisync baseline (bisync mode only)
|
|
355
|
+
openclaw workspace-sync sync --resync
|
|
356
|
+
|
|
206
357
|
# Authorize with cloud provider
|
|
207
358
|
openclaw workspace-sync authorize
|
|
208
359
|
openclaw workspace-sync authorize --provider gdrive
|
|
@@ -235,7 +386,9 @@ Set `interval` to enable automatic background sync (in seconds):
|
|
|
235
386
|
}
|
|
236
387
|
```
|
|
237
388
|
|
|
238
|
-
The gateway runs
|
|
389
|
+
The gateway runs sync in the background at this interval. Minimum interval is 60 seconds. The `timeout` controls how long each sync operation is allowed to run (default: 1800s / 30 min). Increase this for large workspaces or slow connections.
|
|
390
|
+
|
|
391
|
+
In `mailbox` mode, periodic sync pushes the workspace to the cloud and drains the `_outbox`. In `mirror` mode, periodic sync pulls the latest workspace state down to local. In `bisync` mode, it runs a full bidirectional sync.
|
|
239
392
|
|
|
240
393
|
### External cron (alternative)
|
|
241
394
|
|
|
@@ -264,8 +417,11 @@ If you prefer to skip the interactive wizard, configure the plugin in `openclaw.
|
|
|
264
417
|
# 1. Authorize with your cloud provider
|
|
265
418
|
openclaw workspace-sync authorize --provider dropbox
|
|
266
419
|
|
|
267
|
-
# 2. Run
|
|
268
|
-
openclaw workspace-sync sync --
|
|
420
|
+
# 2. Run a dry-run to preview what will sync
|
|
421
|
+
openclaw workspace-sync sync --dry-run
|
|
422
|
+
|
|
423
|
+
# 3. Run the first sync
|
|
424
|
+
openclaw workspace-sync sync
|
|
269
425
|
```
|
|
270
426
|
|
|
271
427
|
The plugin handles rclone installation, config generation, and token storage automatically based on your `openclaw.json` settings.
|
|
@@ -277,17 +433,39 @@ For better security, create a scoped Dropbox app that only accesses a single fol
|
|
|
277
433
|
1. Go to [Dropbox App Console](https://www.dropbox.com/developers/apps)
|
|
278
434
|
2. Click **Create app** > **Scoped access** > **App folder**
|
|
279
435
|
3. Name it (e.g., `openclaw-sync`)
|
|
280
|
-
4. In **
|
|
436
|
+
4. In **Settings** tab, add a **Redirect URI**: `http://localhost:53682/`
|
|
437
|
+
- This is required for rclone's OAuth flow to work. Without it, Dropbox returns "Invalid redirect_uri" during authorization.
|
|
438
|
+
5. In **Permissions** tab, enable:
|
|
281
439
|
- `files.metadata.read` / `files.metadata.write`
|
|
282
440
|
- `files.content.read` / `files.content.write`
|
|
283
|
-
|
|
441
|
+
6. Copy **App key** and **App secret** from Settings
|
|
442
|
+
|
|
443
|
+
> **Important:** When using an app folder scoped app, set `"remotePath": ""` (empty string) in your config. The app folder **is** the root — rclone sees it as `/`. If you set `remotePath` to your app folder name (e.g., `"openclaw-sync"`), rclone will look for a subfolder *inside* the app folder with that name and fail with "directory not found."
|
|
284
444
|
|
|
285
445
|
Benefits:
|
|
286
446
|
- Token only accesses one folder, not your entire Dropbox
|
|
287
447
|
- If token is compromised, blast radius is limited
|
|
288
|
-
- Clean separation — sync folder lives under `Apps
|
|
448
|
+
- Clean separation — sync folder lives under `Apps/<your-app-name>/`
|
|
449
|
+
|
|
450
|
+
## Understanding sync safety
|
|
451
|
+
|
|
452
|
+
Cloud sync involves two copies of your data. When things go wrong, one side can overwrite the other. Here is what to keep in mind:
|
|
453
|
+
|
|
454
|
+
**Mailbox mode is the safest.** The workspace pushes to the cloud; users send files via `_outbox`. The two streams never overlap. Even if your local folder is wiped, the next push re-creates everything. Even if the `_outbox` has stale files, they just land in `_inbox` for the agent to handle.
|
|
455
|
+
|
|
456
|
+
**Mirror mode is safe by design.** The remote workspace is the authority. Local is a read-only copy. Even if your local folder is empty, stale, or corrupted, the next sync just re-downloads the workspace. The agent's work is never affected by local state.
|
|
457
|
+
|
|
458
|
+
**Bisync requires both sides to agree.** Bisync tracks what changed since the last sync. If that tracking state is lost (deploy, disk wipe, moving to a new machine), rclone does not know what changed and requires a `--resync`. A resync copies everything from both sides — if one side has stale or unwanted files, they propagate to the other.
|
|
289
459
|
|
|
290
|
-
|
|
460
|
+
**Common pitfalls to avoid:**
|
|
461
|
+
- Changing `remotePath` or `localPath` while periodic sync is enabled
|
|
462
|
+
- Running `--resync` without checking both sides first
|
|
463
|
+
- Using `bisync` on container platforms where state is ephemeral
|
|
464
|
+
- Syncing very large directories (use `exclude` patterns liberally)
|
|
465
|
+
|
|
466
|
+
**If in doubt, use `mailbox` mode.** It gives you a live local mirror of the workspace and a clean way to send files to the agent, with no risk of data loss.
|
|
467
|
+
|
|
468
|
+
## Important: `--resync` is destructive (bisync only)
|
|
291
469
|
|
|
292
470
|
**Never use `--resync` unless you know exactly what it does.** The `--resync` flag tells rclone to throw away its knowledge of what has changed and do a full reconciliation — it copies every file that exists on either side to the other side. This means:
|
|
293
471
|
|
|
@@ -310,7 +488,7 @@ openclaw workspace-sync sync --resync
|
|
|
310
488
|
openclaw workspace-sync authorize
|
|
311
489
|
```
|
|
312
490
|
|
|
313
|
-
### Conflicts
|
|
491
|
+
### Conflicts (bisync only)
|
|
314
492
|
|
|
315
493
|
Files modified on both sides get a `.conflict` suffix. The winner is determined by `conflictResolve` (default: `newer`). To find conflict files:
|
|
316
494
|
|
|
@@ -344,6 +522,16 @@ Increase the `timeout` config (in seconds). The default is 1800 (30 min). For la
|
|
|
344
522
|
chmod -R 755 <workspace>/shared
|
|
345
523
|
```
|
|
346
524
|
|
|
525
|
+
## Deployment recommendations
|
|
526
|
+
|
|
527
|
+
If you are running OpenClaw on a cloud container (Fly.io, Railway, Render) or a VPS:
|
|
528
|
+
|
|
529
|
+
- **Use a separate persistent volume for the workspace.** Container root filesystems are ephemeral — a redeploy wipes everything. Mount a dedicated volume (e.g., Fly.io volumes, EBS, DigitalOcean block storage) at your workspace path so data survives deploys and restarts.
|
|
530
|
+
- **Enable daily volume snapshots.** Most cloud providers offer automated snapshots (Fly.io does this by default with 5-day retention). If something goes wrong — a bad sync, accidental deletion, or a failed reorganization — a recent snapshot lets you restore in minutes instead of rebuilding from scratch.
|
|
531
|
+
- **Test your restore process.** A backup you have never restored is a backup you do not have. Create a volume from a snapshot at least once to confirm the process works and you know the steps.
|
|
532
|
+
|
|
533
|
+
These recommendations apply regardless of whether you use this plugin. Cloud sync adds convenience but is not a substitute for proper backups.
|
|
534
|
+
|
|
347
535
|
## Security notes
|
|
348
536
|
|
|
349
537
|
- **Token storage**: rclone tokens are stored in `rclone.conf` with `0600` permissions
|
package/dist/rclone.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Self-contained — no imports from openclaw core.
|
|
5
5
|
* Uses child_process.execFile directly instead of the core runExec wrapper.
|
|
6
6
|
*/
|
|
7
|
-
import type { WorkspaceSyncConfig, WorkspaceSyncProvider } from "./types.js";
|
|
7
|
+
import type { WorkspaceSyncConfig, WorkspaceSyncMode, WorkspaceSyncProvider } from "./types.js";
|
|
8
8
|
type Logger = {
|
|
9
9
|
debug?: (msg: string) => void;
|
|
10
10
|
info: (msg: string) => void;
|
|
@@ -25,6 +25,9 @@ export declare function ensureRcloneInstalled(prompt: (message: string, defaultV
|
|
|
25
25
|
export declare function getDefaultRcloneConfigPath(stateDir?: string): string;
|
|
26
26
|
export declare function resolveSyncConfig(config: WorkspaceSyncConfig | undefined, workspace: string, stateDir?: string): {
|
|
27
27
|
provider: WorkspaceSyncProvider;
|
|
28
|
+
mode: WorkspaceSyncMode;
|
|
29
|
+
ingest: boolean;
|
|
30
|
+
ingestPath: string;
|
|
28
31
|
remoteName: string;
|
|
29
32
|
remotePath: string;
|
|
30
33
|
localPath: string;
|
|
@@ -86,6 +89,22 @@ export declare function runBisync(params: {
|
|
|
86
89
|
verbose?: boolean;
|
|
87
90
|
timeoutMs?: number;
|
|
88
91
|
}): Promise<RcloneSyncResult>;
|
|
92
|
+
/**
|
|
93
|
+
* One-way copy (additive only — never deletes on destination).
|
|
94
|
+
* Used for inbox ingestion so files dropped locally get copied up
|
|
95
|
+
* to the remote without removing anything that was already there.
|
|
96
|
+
*/
|
|
97
|
+
export declare function runCopy(params: {
|
|
98
|
+
configPath: string;
|
|
99
|
+
remoteName: string;
|
|
100
|
+
remotePath: string;
|
|
101
|
+
localPath: string;
|
|
102
|
+
direction: "pull" | "push";
|
|
103
|
+
exclude: string[];
|
|
104
|
+
dryRun?: boolean;
|
|
105
|
+
verbose?: boolean;
|
|
106
|
+
timeoutMs?: number;
|
|
107
|
+
}): Promise<RcloneSyncResult>;
|
|
89
108
|
export declare function runSync(params: {
|
|
90
109
|
configPath: string;
|
|
91
110
|
remoteName: string;
|
|
@@ -97,6 +116,31 @@ export declare function runSync(params: {
|
|
|
97
116
|
verbose?: boolean;
|
|
98
117
|
timeoutMs?: number;
|
|
99
118
|
}): Promise<RcloneSyncResult>;
|
|
119
|
+
/**
|
|
120
|
+
* Move files from source to destination, deleting from source after transfer.
|
|
121
|
+
* Used in mailbox mode to drain the cloud _outbox into the local _inbox.
|
|
122
|
+
*/
|
|
123
|
+
export declare function runMove(params: {
|
|
124
|
+
configPath: string;
|
|
125
|
+
remoteName: string;
|
|
126
|
+
remotePath: string;
|
|
127
|
+
localPath: string;
|
|
128
|
+
direction: "pull" | "push";
|
|
129
|
+
exclude?: string[];
|
|
130
|
+
dryRun?: boolean;
|
|
131
|
+
verbose?: boolean;
|
|
132
|
+
timeoutMs?: number;
|
|
133
|
+
}): Promise<RcloneSyncResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Ensure a directory exists on a remote (rclone mkdir).
|
|
136
|
+
* Used in mailbox mode to bootstrap _outbox on the cloud.
|
|
137
|
+
*/
|
|
138
|
+
export declare function runMkdir(params: {
|
|
139
|
+
configPath: string;
|
|
140
|
+
remoteName: string;
|
|
141
|
+
remotePath: string;
|
|
142
|
+
timeoutMs?: number;
|
|
143
|
+
}): Promise<RcloneSyncResult>;
|
|
100
144
|
export declare function listRemote(params: {
|
|
101
145
|
configPath: string;
|
|
102
146
|
remoteName: string;
|
package/dist/rclone.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rclone.d.ts","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"rclone.d.ts","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhG,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAIF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAoHD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAMF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6B/D;AAID,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAIvD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1D;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACnE,OAAO,CAAC,OAAO,CAAC,CA0DlB;AAMD,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB;IACD,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB,CAmBA;AAqBD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,EAAE,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACzE,GACA,MAAM,CAmCR;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM3E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQlF;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CA4DT;AAMD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BrE;AAMD,wBAAgB,gBAAgB,IAAI,IAAI,CAgBvC;AAMD,wBAAsB,SAAS,CAAC,MAAM,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkF5B;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoC5B;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoC5B;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsC5B;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgB5B;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBxE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAevD"}
|
package/dist/rclone.js
CHANGED
|
@@ -212,6 +212,9 @@ export function resolveSyncConfig(config, workspace, stateDir) {
|
|
|
212
212
|
const DEFAULT_TIMEOUT_S = 1800;
|
|
213
213
|
return {
|
|
214
214
|
provider: config?.provider ?? "off",
|
|
215
|
+
mode: config?.mode ?? "mirror",
|
|
216
|
+
ingest: config?.ingest ?? false,
|
|
217
|
+
ingestPath: config?.ingestPath ?? "inbox",
|
|
215
218
|
remoteName: config?.remoteName ?? DEFAULT_REMOTE_NAME,
|
|
216
219
|
remotePath: config?.remotePath ?? DEFAULT_REMOTE_PATH,
|
|
217
220
|
localPath: join(workspace, config?.localPath ?? DEFAULT_LOCAL_PATH),
|
|
@@ -496,6 +499,48 @@ export async function runBisync(params) {
|
|
|
496
499
|
}
|
|
497
500
|
return result;
|
|
498
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* One-way copy (additive only — never deletes on destination).
|
|
504
|
+
* Used for inbox ingestion so files dropped locally get copied up
|
|
505
|
+
* to the remote without removing anything that was already there.
|
|
506
|
+
*/
|
|
507
|
+
export async function runCopy(params) {
|
|
508
|
+
const rcloneBin = await getRcloneBinary();
|
|
509
|
+
if (!existsSync(params.localPath)) {
|
|
510
|
+
mkdirSync(params.localPath, { recursive: true });
|
|
511
|
+
}
|
|
512
|
+
const remote = `${params.remoteName}:${params.remotePath}`;
|
|
513
|
+
const [source, dest] = params.direction === "pull" ? [remote, params.localPath] : [params.localPath, remote];
|
|
514
|
+
const args = ["copy", source, dest, "--config", params.configPath];
|
|
515
|
+
for (const pattern of params.exclude)
|
|
516
|
+
args.push("--exclude", pattern);
|
|
517
|
+
if (params.dryRun)
|
|
518
|
+
args.push("--dry-run");
|
|
519
|
+
if (params.verbose)
|
|
520
|
+
args.push("--verbose");
|
|
521
|
+
else
|
|
522
|
+
args.push("--log-level", "WARNING");
|
|
523
|
+
logInfo(`[workspace-sync] Running: ${rcloneBin} ${args.join(" ")}`);
|
|
524
|
+
try {
|
|
525
|
+
await runExecStreaming(rcloneBin, args, {
|
|
526
|
+
timeoutMs: params.timeoutMs ?? 1_800_000,
|
|
527
|
+
onLine: (line) => {
|
|
528
|
+
if (/ERROR|NOTICE|WARNING|Transferred:|Elapsed time:/i.test(line)) {
|
|
529
|
+
logInfo(`[rclone] ${line}`);
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
logDebug(`[rclone] ${line}`);
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
});
|
|
536
|
+
return { ok: true };
|
|
537
|
+
}
|
|
538
|
+
catch (err) {
|
|
539
|
+
const errObj = err;
|
|
540
|
+
const message = errObj.stderr?.trim() || errObj.message || "Unknown copy error";
|
|
541
|
+
return { ok: false, error: message };
|
|
542
|
+
}
|
|
543
|
+
}
|
|
499
544
|
export async function runSync(params) {
|
|
500
545
|
const rcloneBin = await getRcloneBinary();
|
|
501
546
|
if (!existsSync(params.localPath)) {
|
|
@@ -533,6 +578,68 @@ export async function runSync(params) {
|
|
|
533
578
|
return { ok: false, error: message };
|
|
534
579
|
}
|
|
535
580
|
}
|
|
581
|
+
/**
|
|
582
|
+
* Move files from source to destination, deleting from source after transfer.
|
|
583
|
+
* Used in mailbox mode to drain the cloud _outbox into the local _inbox.
|
|
584
|
+
*/
|
|
585
|
+
export async function runMove(params) {
|
|
586
|
+
const rcloneBin = await getRcloneBinary();
|
|
587
|
+
if (!existsSync(params.localPath)) {
|
|
588
|
+
mkdirSync(params.localPath, { recursive: true });
|
|
589
|
+
}
|
|
590
|
+
const remote = `${params.remoteName}:${params.remotePath}`;
|
|
591
|
+
const [source, dest] = params.direction === "pull" ? [remote, params.localPath] : [params.localPath, remote];
|
|
592
|
+
const args = ["move", source, dest, "--config", params.configPath];
|
|
593
|
+
if (params.exclude) {
|
|
594
|
+
for (const pattern of params.exclude)
|
|
595
|
+
args.push("--exclude", pattern);
|
|
596
|
+
}
|
|
597
|
+
if (params.dryRun)
|
|
598
|
+
args.push("--dry-run");
|
|
599
|
+
if (params.verbose)
|
|
600
|
+
args.push("--verbose");
|
|
601
|
+
else
|
|
602
|
+
args.push("--log-level", "WARNING");
|
|
603
|
+
logInfo(`[workspace-sync] Running: ${rcloneBin} ${args.join(" ")}`);
|
|
604
|
+
try {
|
|
605
|
+
await runExecStreaming(rcloneBin, args, {
|
|
606
|
+
timeoutMs: params.timeoutMs ?? 1_800_000,
|
|
607
|
+
onLine: (line) => {
|
|
608
|
+
if (/ERROR|NOTICE|WARNING|Transferred:|Elapsed time:/i.test(line)) {
|
|
609
|
+
logInfo(`[rclone] ${line}`);
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
logDebug(`[rclone] ${line}`);
|
|
613
|
+
}
|
|
614
|
+
},
|
|
615
|
+
});
|
|
616
|
+
return { ok: true };
|
|
617
|
+
}
|
|
618
|
+
catch (err) {
|
|
619
|
+
const errObj = err;
|
|
620
|
+
const message = errObj.stderr?.trim() || errObj.message || "Unknown move error";
|
|
621
|
+
return { ok: false, error: message };
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Ensure a directory exists on a remote (rclone mkdir).
|
|
626
|
+
* Used in mailbox mode to bootstrap _outbox on the cloud.
|
|
627
|
+
*/
|
|
628
|
+
export async function runMkdir(params) {
|
|
629
|
+
const rcloneBin = await getRcloneBinary();
|
|
630
|
+
const remote = `${params.remoteName}:${params.remotePath}`;
|
|
631
|
+
const args = ["mkdir", remote, "--config", params.configPath];
|
|
632
|
+
logInfo(`[workspace-sync] Running: ${rcloneBin} ${args.join(" ")}`);
|
|
633
|
+
try {
|
|
634
|
+
await runExec(rcloneBin, args, { timeoutMs: params.timeoutMs ?? 30_000 });
|
|
635
|
+
return { ok: true };
|
|
636
|
+
}
|
|
637
|
+
catch (err) {
|
|
638
|
+
const errObj = err;
|
|
639
|
+
const message = errObj.stderr?.trim() || errObj.message || "Unknown mkdir error";
|
|
640
|
+
return { ok: false, error: message };
|
|
641
|
+
}
|
|
642
|
+
}
|
|
536
643
|
export async function listRemote(params) {
|
|
537
644
|
const rcloneBin = await getRcloneBinary();
|
|
538
645
|
try {
|
package/dist/rclone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rclone.js","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAU5C,IAAI,YAAgC,CAAC;AAErC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,SAAS,OAAO,CACd,OAAe,EACf,IAAc,EACd,OAAmD,EAAE;IAErD,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACjF,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,QAAQ,GAAG,GAAmD,CAAC;gBACrE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;gBACzB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;gBACzB,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,IAAc,EACd,OAAgE,EAAE;IAElE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE1E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC;YACzB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,GAAG,IAAI,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,EAAE,SAAS,CAAC;YACf,CAAC,CAAC,SAAS,CAAC;QAEd,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC;YACf,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO;wBAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC;YACf,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO;wBAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,2BAA2B,SAAS,IAAI,CAAiD,CAAC;gBAChH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAiD,CAAC;gBAC/G,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,gBAAgB,GAAG;IACvB,cAAc;CACf,CAAC;AASF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE;QAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,QAAQ,IAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;IAC7F,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,kBAAkB,GAAkB,IAAI,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAClD,kBAAkB,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC9C,OAAO,kBAAkB,IAAI,QAAQ,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAoE;IAEpE,MAAM,SAAS,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC5C,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,QAAQ,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC;IAEvC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACnD,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,MAAM,CAC1B,+DAA+D,EAC/D,IAAI,CACL,CAAC;YACF,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC3B,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrE,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,YAAY,EAAE,KAAK,CACjB,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,MAAM,CAC1B,qFAAqF,EACrF,IAAI,CACL,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,+BAA+B,CAAC,EAAE;gBAChF,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACtE,kBAAkB,GAAG,IAAI,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,EAAE,KAAK,CACjB,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;YACF,YAAY,EAAE,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,YAAY,EAAE,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC9F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,UAAU,0BAA0B,CAAC,QAAiB;IAC1D,MAAM,IAAI,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAuC,EACvC,SAAiB,EACjB,QAAiB;IAejB,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC/B,OAAO;QACL,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,KAAK;QACnC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,mBAAmB;QACrD,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,mBAAmB;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,kBAAkB,CAAC;QACnE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,0BAA0B,CAAC,QAAQ,CAAC;QACtE,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,wBAAwB;QACpE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,gBAAgB;QAC5C,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,KAAK;QAC3C,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC;QAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,IAAI,iBAAiB,CAAC,GAAG,IAAI;QACxD,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,KAAK;QAC/C,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,KAAK;KAC5C,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,SAAS,aAAa,CAAC,QAA+B;IACpD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA+B,EAC/B,UAAkB,EAClB,KAAa,EACb,OAYC;IAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7C,IAAI,MAAM,GAAG,IAAI,UAAU,aAAa,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;QACtE,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,IAAI,UAAU,aAAa,IAAI,IAAI,CAAC;IAEjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC;QAC/B,IAAI,OAAO,EAAE,OAAO,EAAE,MAAM;YAAE,MAAM,IAAI,eAAe,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QAClF,IAAI,OAAO,EAAE,OAAO,EAAE,SAAS;YAAE,MAAM,IAAI,mBAAmB,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;IAC9F,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC;QAC/B,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS;YAAE,MAAM,IAAI,gBAAgB,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;QACvF,IAAI,OAAO,EAAE,MAAM,EAAE,YAAY;YAAE,MAAM,IAAI,oBAAoB,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;IACnG,CAAC;SAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC;QAC/B,IAAI,OAAO,EAAE,QAAQ,EAAE,OAAO;YAAE,MAAM,IAAI,cAAc,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC;QACrF,IAAI,OAAO,EAAE,QAAQ,EAAE,SAAS;YAAE,MAAM,IAAI,gBAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;IAC7F,CAAC;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,EAAE,EAAE,QAAQ;YAAE,MAAM,IAAI,cAAc,OAAO,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC;QAC3E,IAAI,OAAO,EAAE,EAAE,EAAE,MAAM;YAAE,MAAM,IAAI,YAAY,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC;QACrE,IAAI,OAAO,EAAE,EAAE,EAAE,WAAW;YAAE,MAAM,IAAI,mBAAmB,OAAO,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC;QACtF,IAAI,OAAO,EAAE,EAAE,EAAE,eAAe;YAC9B,MAAM,IAAI,uBAAuB,OAAO,CAAC,EAAE,CAAC,eAAe,IAAI,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,OAAe;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,UAAkB;IACvE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,UAA2C,EAC3C,UAAkB,EAClB,UAAkB;IAElB,IAAI,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,QAAQ,CAAC,uCAAuC,UAAU,qBAAqB,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;YACjF,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE;SAC1F,CAAC,CAAC;QACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,QAAQ,CAAC,uCAAuC,UAAU,qBAAqB,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;YACjF,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE;SACnG,CAAC,CAAC;QACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,QAAQ,CAAC,uCAAuC,UAAU,qBAAqB,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;YACjF,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE;SAC/F,CAAC,CAAC;QACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;QACvF,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACnD,QAAQ,CAAC,uCAAuC,UAAU,qBAAqB,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC9E,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;SAC/D,CAAC,CAAC;QACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,UAAU;YAAE,OAAO,KAAK,CAAC;QACzC,QAAQ,CAAC,uCAAuC,UAAU,4BAA4B,CAAC,CAAC;QACxF,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC9E,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;SACrF,CAAC,CAAC;QACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA+B,EAC/B,MAAe,EACf,SAAkB;IAElB,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE;YACxD,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClE,IAAI,UAAU;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAC9B,yEAAyE,CAC1E,CAAC;QACF,IAAI,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,OAAO,EAAE,EAAE,CAAC;IAClE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAY/B;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE;QAC3C,MAAM,CAAC,SAAS;QAChB,UAAU;QACV,MAAM,CAAC,UAAU;QACjB,oBAAoB;QACpB,MAAM,CAAC,eAAe;QACtB,mBAAmB;QACnB,WAAW;QACX,YAAY,EAAE,KAAK;QACnB,WAAW;QACX,aAAa;KACd,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;QACtC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEzC,OAAO,CAAC,6BAA6B,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,KAAK,EACnB,WAAqB,EACM,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;gBACxE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;gBACxC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;YACjC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAE7E,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACnF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAA6D,CAAC;YAC7E,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,oBAAoB,CAAC;YAE3F,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBACjD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yDAAyD,EAAE,CAAC;YACzF,CAAC;YAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,wCAAwC;IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO,CAAC,kEAAkE,CAAC,CAAC;QAC5E,gBAAgB,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAC1E,6EAA6E;IAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAClJ,OAAO,CAAC,sHAAsH,CAAC,CAAC;IAClI,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAU7B;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3D,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAClB,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAExF,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACnE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;QACtC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEzC,OAAO,CAAC,6BAA6B,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;YACxC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAA4C,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,oBAAoB,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAIhC;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAC9B,SAAS,EACT,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,EACnF,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAC5C,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM;aACjB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAA4C,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAGjC;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,OAAO,CACX,SAAS,EACT,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC3E,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAC1C,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAA4C,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC;QAC/E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"rclone.js","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgBtD,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AA0RF,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,IAAI,CAmDN;AAED,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AAED,wBAAgB,oBAAoB,IAAI;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAQA;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1D"}
|
package/dist/sync-manager.js
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Runs rclone bisync at configured intervals WITHOUT involving the agent/LLM.
|
|
5
5
|
* Pure file operation, zero token cost.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { isRcloneInstalled, isRcloneConfigured, ensureRcloneConfigFromConfig, resolveSyncConfig, runBisync, runSync, runCopy, runMove, runMkdir, clearBisyncLocks, } from "./rclone.js";
|
|
8
10
|
const state = {
|
|
9
11
|
timeoutId: null,
|
|
10
12
|
lastSyncAt: null,
|
|
@@ -40,6 +42,10 @@ async function doSync() {
|
|
|
40
42
|
const syncConfig = currentSyncConfig;
|
|
41
43
|
if (!syncConfig.provider || syncConfig.provider === "off")
|
|
42
44
|
return;
|
|
45
|
+
if (!syncConfig.mode) {
|
|
46
|
+
currentLogger.error('[workspace-sync] "mode" is required in config. Set "mode": "mailbox" (inbox/outbox, safest), "mode": "mirror" (remote→local), or "mode": "bisync" (bidirectional). Sync will not run until mode is set.');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
43
49
|
const logger = currentLogger;
|
|
44
50
|
state.syncing = true;
|
|
45
51
|
try {
|
|
@@ -54,29 +60,138 @@ async function doSync() {
|
|
|
54
60
|
logger.warn(`[workspace-sync] rclone not configured for "${resolved.remoteName}", skipping`);
|
|
55
61
|
return;
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
state.
|
|
74
|
-
|
|
63
|
+
const mode = resolved.mode;
|
|
64
|
+
if (mode === "bisync") {
|
|
65
|
+
logger.info(`[workspace-sync] Running periodic bisync: ${resolved.remoteName}:${resolved.remotePath}`);
|
|
66
|
+
const result = await runBisync({
|
|
67
|
+
configPath: resolved.configPath,
|
|
68
|
+
remoteName: resolved.remoteName,
|
|
69
|
+
remotePath: resolved.remotePath,
|
|
70
|
+
localPath: resolved.localPath,
|
|
71
|
+
conflictResolve: resolved.conflictResolve,
|
|
72
|
+
exclude: resolved.exclude,
|
|
73
|
+
copySymlinks: resolved.copySymlinks,
|
|
74
|
+
resync: false,
|
|
75
|
+
timeoutMs: resolved.timeoutMs,
|
|
76
|
+
verbose: !!logger.debug,
|
|
77
|
+
});
|
|
78
|
+
state.lastSyncAt = new Date();
|
|
79
|
+
state.syncCount++;
|
|
80
|
+
if (result.ok) {
|
|
81
|
+
state.lastSyncOk = true;
|
|
82
|
+
logger.info("[workspace-sync] Periodic bisync completed");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
state.lastSyncOk = false;
|
|
86
|
+
state.errorCount++;
|
|
87
|
+
logger.warn(`[workspace-sync] Periodic bisync failed: ${result.error}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (mode === "mailbox") {
|
|
91
|
+
// Mailbox mode: workspace pushes to cloud, then drain cloud _outbox → local _inbox
|
|
92
|
+
const outboxRemotePath = resolved.remotePath
|
|
93
|
+
? `${resolved.remotePath}/_outbox`
|
|
94
|
+
: "_outbox";
|
|
95
|
+
const inboxLocalPath = join(resolved.localPath, "_inbox");
|
|
96
|
+
if (!existsSync(inboxLocalPath)) {
|
|
97
|
+
mkdirSync(inboxLocalPath, { recursive: true });
|
|
98
|
+
}
|
|
99
|
+
// Step 1: push workspace → cloud (excluding _inbox and _outbox)
|
|
100
|
+
const mailboxExcludes = [...resolved.exclude, "_inbox/**", "_outbox/**"];
|
|
101
|
+
logger.info(`[workspace-sync] Mailbox: pushing workspace → ${resolved.remoteName}:${resolved.remotePath}`);
|
|
102
|
+
const pushResult = await runSync({
|
|
103
|
+
configPath: resolved.configPath,
|
|
104
|
+
remoteName: resolved.remoteName,
|
|
105
|
+
remotePath: resolved.remotePath,
|
|
106
|
+
localPath: resolved.localPath,
|
|
107
|
+
direction: "push",
|
|
108
|
+
exclude: mailboxExcludes,
|
|
109
|
+
timeoutMs: resolved.timeoutMs,
|
|
110
|
+
verbose: !!logger.debug,
|
|
111
|
+
});
|
|
112
|
+
state.lastSyncAt = new Date();
|
|
113
|
+
state.syncCount++;
|
|
114
|
+
if (pushResult.ok) {
|
|
115
|
+
state.lastSyncOk = true;
|
|
116
|
+
logger.info("[workspace-sync] Mailbox push completed");
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
state.lastSyncOk = false;
|
|
120
|
+
state.errorCount++;
|
|
121
|
+
logger.warn(`[workspace-sync] Mailbox push failed: ${pushResult.error}`);
|
|
122
|
+
}
|
|
123
|
+
// Step 2: drain cloud _outbox → local _inbox (move = deletes from cloud after transfer)
|
|
124
|
+
logger.info(`[workspace-sync] Mailbox: draining ${resolved.remoteName}:${outboxRemotePath} → ${inboxLocalPath}`);
|
|
125
|
+
const drainResult = await runMove({
|
|
126
|
+
configPath: resolved.configPath,
|
|
127
|
+
remoteName: resolved.remoteName,
|
|
128
|
+
remotePath: outboxRemotePath,
|
|
129
|
+
localPath: inboxLocalPath,
|
|
130
|
+
direction: "pull",
|
|
131
|
+
timeoutMs: resolved.timeoutMs,
|
|
132
|
+
verbose: !!logger.debug,
|
|
133
|
+
});
|
|
134
|
+
if (drainResult.ok) {
|
|
135
|
+
logger.info("[workspace-sync] Mailbox drain completed");
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
logger.warn(`[workspace-sync] Mailbox drain failed: ${drainResult.error}`);
|
|
139
|
+
}
|
|
75
140
|
}
|
|
76
141
|
else {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
142
|
+
// mirror mode: one-way remote → local
|
|
143
|
+
logger.info(`[workspace-sync] Running periodic mirror (remote→local): ${resolved.remoteName}:${resolved.remotePath}`);
|
|
144
|
+
const result = await runSync({
|
|
145
|
+
configPath: resolved.configPath,
|
|
146
|
+
remoteName: resolved.remoteName,
|
|
147
|
+
remotePath: resolved.remotePath,
|
|
148
|
+
localPath: resolved.localPath,
|
|
149
|
+
direction: "pull",
|
|
150
|
+
exclude: resolved.exclude,
|
|
151
|
+
timeoutMs: resolved.timeoutMs,
|
|
152
|
+
verbose: !!logger.debug,
|
|
153
|
+
});
|
|
154
|
+
state.lastSyncAt = new Date();
|
|
155
|
+
state.syncCount++;
|
|
156
|
+
if (result.ok) {
|
|
157
|
+
state.lastSyncOk = true;
|
|
158
|
+
logger.info("[workspace-sync] Periodic mirror completed");
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
state.lastSyncOk = false;
|
|
162
|
+
state.errorCount++;
|
|
163
|
+
logger.warn(`[workspace-sync] Periodic mirror failed: ${result.error}`);
|
|
164
|
+
}
|
|
165
|
+
// ingest: one-way local inbox → remote (additive)
|
|
166
|
+
if (resolved.ingest) {
|
|
167
|
+
// inbox lives as a sibling of localPath, not inside it,
|
|
168
|
+
// so the mirror pull doesn't overwrite or delete inbox contents
|
|
169
|
+
const { dirname } = await import("node:path");
|
|
170
|
+
const inboxLocal = join(dirname(resolved.localPath), resolved.ingestPath);
|
|
171
|
+
if (!existsSync(inboxLocal)) {
|
|
172
|
+
mkdirSync(inboxLocal, { recursive: true });
|
|
173
|
+
}
|
|
174
|
+
const inboxRemotePath = resolved.remotePath
|
|
175
|
+
? `${resolved.remotePath}/${resolved.ingestPath}`
|
|
176
|
+
: resolved.ingestPath;
|
|
177
|
+
logger.info(`[workspace-sync] Running ingest (local inbox→remote): ${inboxLocal} → ${resolved.remoteName}:${inboxRemotePath}`);
|
|
178
|
+
const ingestResult = await runCopy({
|
|
179
|
+
configPath: resolved.configPath,
|
|
180
|
+
remoteName: resolved.remoteName,
|
|
181
|
+
remotePath: inboxRemotePath,
|
|
182
|
+
localPath: inboxLocal,
|
|
183
|
+
direction: "push",
|
|
184
|
+
exclude: resolved.exclude,
|
|
185
|
+
timeoutMs: resolved.timeoutMs,
|
|
186
|
+
verbose: !!logger.debug,
|
|
187
|
+
});
|
|
188
|
+
if (ingestResult.ok) {
|
|
189
|
+
logger.info("[workspace-sync] Ingest sync completed");
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
logger.warn(`[workspace-sync] Ingest sync failed: ${ingestResult.error}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
80
195
|
}
|
|
81
196
|
}
|
|
82
197
|
catch (err) {
|
|
@@ -88,6 +203,34 @@ async function doSync() {
|
|
|
88
203
|
state.syncing = false;
|
|
89
204
|
}
|
|
90
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Bootstrap mailbox directories:
|
|
208
|
+
* - `rclone mkdir cloud:_outbox` so the local Dropbox client creates the folder
|
|
209
|
+
* - `mkdir -p <workspace>/_inbox` so the agent has a landing zone
|
|
210
|
+
*/
|
|
211
|
+
async function bootstrapMailbox(syncConfig, workspaceDir, stateDir, logger) {
|
|
212
|
+
const resolved = resolveSyncConfig(syncConfig, workspaceDir, stateDir);
|
|
213
|
+
ensureRcloneConfigFromConfig(syncConfig, resolved.configPath, resolved.remoteName);
|
|
214
|
+
const outboxRemotePath = resolved.remotePath
|
|
215
|
+
? `${resolved.remotePath}/_outbox`
|
|
216
|
+
: "_outbox";
|
|
217
|
+
const mkdirResult = await runMkdir({
|
|
218
|
+
configPath: resolved.configPath,
|
|
219
|
+
remoteName: resolved.remoteName,
|
|
220
|
+
remotePath: outboxRemotePath,
|
|
221
|
+
});
|
|
222
|
+
if (mkdirResult.ok) {
|
|
223
|
+
logger.info(`[workspace-sync] Mailbox: ensured cloud _outbox at ${resolved.remoteName}:${outboxRemotePath}`);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
logger.warn(`[workspace-sync] Mailbox: failed to create cloud _outbox: ${mkdirResult.error}`);
|
|
227
|
+
}
|
|
228
|
+
const inboxLocalPath = join(resolved.localPath, "_inbox");
|
|
229
|
+
if (!existsSync(inboxLocalPath)) {
|
|
230
|
+
mkdirSync(inboxLocalPath, { recursive: true });
|
|
231
|
+
logger.info(`[workspace-sync] Mailbox: created local _inbox at ${inboxLocalPath}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
91
234
|
export function startSyncManager(syncConfig, workspaceDir, stateDir, logger) {
|
|
92
235
|
stopSyncManager();
|
|
93
236
|
currentSyncConfig = syncConfig;
|
|
@@ -98,7 +241,15 @@ export function startSyncManager(syncConfig, workspaceDir, stateDir, logger) {
|
|
|
98
241
|
logger.info("[workspace-sync] Workspace sync not configured");
|
|
99
242
|
return;
|
|
100
243
|
}
|
|
244
|
+
if (!syncConfig.mode) {
|
|
245
|
+
logger.error('[workspace-sync] BREAKING: "mode" is now required. Set "mode": "mailbox" (inbox/outbox, safest), "mode": "mirror" (remote→local), or "mode": "bisync" (bidirectional) in your openclaw.json plugin config. Sync will not start until mode is explicitly set.');
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
101
248
|
clearBisyncLocks();
|
|
249
|
+
// Mailbox mode: bootstrap _outbox on cloud and _inbox locally
|
|
250
|
+
if (syncConfig.mode === "mailbox") {
|
|
251
|
+
void bootstrapMailbox(syncConfig, workspaceDir, stateDir, logger);
|
|
252
|
+
}
|
|
102
253
|
const intervalSeconds = syncConfig.interval ?? 0;
|
|
103
254
|
if (intervalSeconds <= 0) {
|
|
104
255
|
logger.info("[workspace-sync] Periodic sync disabled (interval=0)");
|
|
@@ -108,7 +259,8 @@ export function startSyncManager(syncConfig, workspaceDir, stateDir, logger) {
|
|
|
108
259
|
if (effectiveInterval !== intervalSeconds) {
|
|
109
260
|
logger.warn(`[workspace-sync] Interval increased from ${intervalSeconds}s to ${effectiveInterval}s (minimum)`);
|
|
110
261
|
}
|
|
111
|
-
|
|
262
|
+
const mode = syncConfig.mode ?? "mirror";
|
|
263
|
+
logger.info(`[workspace-sync] Starting periodic sync every ${effectiveInterval}s in ${mode} mode (pure file sync, zero LLM cost)`);
|
|
112
264
|
state.running = true;
|
|
113
265
|
state.intervalMs = effectiveInterval * 1000;
|
|
114
266
|
state.timeoutId = setTimeout(() => {
|
package/dist/sync-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAoBrB,MAAM,KAAK,GAAqB;IAC9B,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,IAAI,iBAAiB,GAA+B,IAAI,CAAC;AACzD,IAAI,mBAAmB,GAAkB,IAAI,CAAC;AAC9C,IAAI,eAAe,GAAkB,IAAI,CAAC;AAC1C,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,SAAS,gBAAgB;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC;QAAE,OAAO;IACpD,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,KAAK,WAAW,EAAE,CAAC;IACrB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,IAAI,CAAC,iBAAiB,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB;QAAE,OAAO;IACzE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO;IAElE,MAAM,MAAM,GAAG,aAAa,CAAC;IAC7B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAErB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;QAElG,4BAA4B,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEnF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,+CAA+C,QAAQ,CAAC,UAAU,aAAa,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CACT,
|
|
1
|
+
{"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,11 +8,24 @@
|
|
|
8
8
|
* - custom: custom rclone remote (user-configured)
|
|
9
9
|
*/
|
|
10
10
|
export type WorkspaceSyncProvider = "off" | "dropbox" | "gdrive" | "onedrive" | "s3" | "custom";
|
|
11
|
+
/**
|
|
12
|
+
* Workspace sync modes.
|
|
13
|
+
* - mirror: one-way remote→local (safe, simple)
|
|
14
|
+
* - mailbox: inbox/outbox pattern — workspace mirrors down, _outbox sends files up (safest)
|
|
15
|
+
* - bisync: bidirectional via rclone bisync (advanced, risky on ephemeral platforms)
|
|
16
|
+
*/
|
|
17
|
+
export type WorkspaceSyncMode = "mirror" | "mailbox" | "bisync";
|
|
11
18
|
/**
|
|
12
19
|
* Workspace sync configuration — matches the plugin configSchema.
|
|
13
20
|
*/
|
|
14
21
|
export type WorkspaceSyncConfig = {
|
|
15
22
|
provider?: WorkspaceSyncProvider;
|
|
23
|
+
/** Sync mode: "mailbox" (inbox/outbox, safest), "mirror" (remote→local), or "bisync" (bidirectional, advanced). */
|
|
24
|
+
mode?: WorkspaceSyncMode;
|
|
25
|
+
/** Enable a local inbox folder that syncs one-way up to the remote workspace (mirror mode only). */
|
|
26
|
+
ingest?: boolean;
|
|
27
|
+
/** Local subfolder name for ingestion, relative to localPath. Default: "inbox". Mirror mode only. */
|
|
28
|
+
ingestPath?: string;
|
|
16
29
|
remotePath?: string;
|
|
17
30
|
localPath?: string;
|
|
18
31
|
interval?: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEhG;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;KACpD,CAAC;IACF,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEhG;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,mHAAmH;IACnH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,oGAAoG;IACpG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;KACpD,CAAC;IACF,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC;CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-workspace-sync",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Workspace cloud sync via rclone — mailbox (inbox/outbox), mirror, or bisync (Dropbox, Google Drive, S3, OneDrive, 70+ providers)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -6,7 +6,7 @@ metadata: {"openclaw":{"emoji":"☁️","requires":{"bins":["rclone"]}}}
|
|
|
6
6
|
|
|
7
7
|
# workspace-sync
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Sync the agent workspace with cloud storage. `mode` is required — choose `mailbox` (inbox/outbox, safest), `mirror` (remote->local), or `bisync` (bidirectional, advanced).
|
|
10
10
|
|
|
11
11
|
## Trigger
|
|
12
12
|
|
|
@@ -15,6 +15,25 @@ Use this skill when the user asks to:
|
|
|
15
15
|
- Back up workspace files
|
|
16
16
|
- Check sync status
|
|
17
17
|
- Fix sync issues
|
|
18
|
+
- Send files to the agent workspace
|
|
19
|
+
|
|
20
|
+
## Sync modes
|
|
21
|
+
|
|
22
|
+
| Mode | Direction | Description |
|
|
23
|
+
|------|-----------|-------------|
|
|
24
|
+
| `mailbox` (recommended) | Push + inbox/outbox | Workspace pushes to cloud; `_outbox` sends files up to the agent's `_inbox`. Safest. |
|
|
25
|
+
| `mirror` | Remote → Local | One-way: workspace mirrors down. Safe — local can never overwrite remote. |
|
|
26
|
+
| `bisync` | Bidirectional | Two-way sync. Powerful but requires careful setup. |
|
|
27
|
+
|
|
28
|
+
### Mailbox mode
|
|
29
|
+
|
|
30
|
+
Each sync cycle: (1) pushes workspace to cloud excluding `_inbox/` and `_outbox/`, (2) drains cloud `_outbox/` into workspace `_inbox/` via `rclone move` (deletes from cloud after transfer). On startup, bootstraps `cloud:_outbox` and local `_inbox/`.
|
|
31
|
+
|
|
32
|
+
Users drop files in the local `_outbox/` folder (created by the cloud provider's desktop app). Files arrive in the agent's `_inbox/`. The agent or a skill processes them from there.
|
|
33
|
+
|
|
34
|
+
### Mirror mode with ingest
|
|
35
|
+
|
|
36
|
+
With `ingest: true`, a local `inbox/` folder syncs one-way **up** to the remote workspace (additive only). For a more robust pattern, use `mailbox` mode instead.
|
|
18
37
|
|
|
19
38
|
## Commands
|
|
20
39
|
|
|
@@ -23,21 +42,32 @@ Use this skill when the user asks to:
|
|
|
23
42
|
openclaw workspace-sync status
|
|
24
43
|
```
|
|
25
44
|
|
|
26
|
-
Shows: provider, last sync time, sync count, error count, running state.
|
|
45
|
+
Shows: provider, mode, last sync time, sync count, error count, running state.
|
|
27
46
|
|
|
28
47
|
### Trigger manual sync
|
|
29
48
|
```bash
|
|
30
49
|
openclaw workspace-sync sync
|
|
31
50
|
```
|
|
32
51
|
|
|
33
|
-
|
|
52
|
+
In `mailbox` mode: pushes workspace and drains `_outbox`. In `mirror` mode: pulls latest from remote. In `bisync` mode: runs bidirectional sync.
|
|
53
|
+
|
|
54
|
+
### Preview changes
|
|
55
|
+
```bash
|
|
56
|
+
openclaw workspace-sync sync --dry-run
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### One-way sync (explicit direction)
|
|
60
|
+
```bash
|
|
61
|
+
openclaw workspace-sync sync --direction pull # remote -> local
|
|
62
|
+
openclaw workspace-sync sync --direction push # local -> remote
|
|
63
|
+
```
|
|
34
64
|
|
|
35
|
-
### Force re-establish baseline (destructive)
|
|
65
|
+
### Force re-establish bisync baseline (destructive)
|
|
36
66
|
```bash
|
|
37
67
|
openclaw workspace-sync sync --resync
|
|
38
68
|
```
|
|
39
69
|
|
|
40
|
-
**WARNING: `--resync` is destructive.** It copies ALL files from both sides to make them identical — deleted files come back, and it transfers everything
|
|
70
|
+
**WARNING: `--resync` is destructive (bisync only).** It copies ALL files from both sides to make them identical — deleted files come back, and it transfers everything. Only use when you explicitly need to re-establish the bisync baseline. The plugin never auto-resyncs.
|
|
41
71
|
|
|
42
72
|
### View remote files
|
|
43
73
|
```bash
|
|
@@ -58,13 +88,13 @@ Workspace sync is configured via the plugin entry in `openclaw.json`:
|
|
|
58
88
|
"enabled": true,
|
|
59
89
|
"config": {
|
|
60
90
|
"provider": "dropbox",
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
91
|
+
"mode": "mailbox",
|
|
92
|
+
"remotePath": "",
|
|
93
|
+
"localPath": "/",
|
|
94
|
+
"interval": 60,
|
|
64
95
|
"timeout": 1800,
|
|
65
96
|
"onSessionStart": true,
|
|
66
97
|
"onSessionEnd": true,
|
|
67
|
-
"conflictResolve": "newer",
|
|
68
98
|
"exclude": [".git/**", "node_modules/**", "*.log"]
|
|
69
99
|
}
|
|
70
100
|
}
|
|
@@ -78,30 +108,38 @@ Workspace sync is configured via the plugin entry in `openclaw.json`:
|
|
|
78
108
|
| Key | Default | Description |
|
|
79
109
|
|-----|---------|-------------|
|
|
80
110
|
| `provider` | `"off"` | `dropbox`, `gdrive`, `onedrive`, `s3`, `custom`, or `off` |
|
|
111
|
+
| `mode` | **required** | `mailbox` (inbox/outbox, safest), `mirror` (remote->local), or `bisync` (bidirectional) |
|
|
112
|
+
| `ingest` | `false` | Enable local inbox for sending files to the agent (mirror mode only) |
|
|
113
|
+
| `ingestPath` | `"inbox"` | Local subfolder name for ingestion |
|
|
81
114
|
| `remotePath` | `"openclaw-share"` | Folder name in cloud storage |
|
|
82
115
|
| `localPath` | `"shared"` | Subfolder within workspace to sync |
|
|
83
116
|
| `interval` | `0` | Background sync interval in seconds (0 = manual only, min 60) |
|
|
84
117
|
| `timeout` | `1800` | Max seconds for a single sync operation (min 60) |
|
|
85
118
|
| `onSessionStart` | `false` | Sync when an agent session begins |
|
|
86
119
|
| `onSessionEnd` | `false` | Sync when an agent session ends |
|
|
87
|
-
| `conflictResolve` | `"newer"` | `newer`, `local`, or `remote` |
|
|
88
|
-
| `exclude` |
|
|
89
|
-
|
|
90
|
-
Default excludes: `**/.DS_Store` only. Add your own patterns for `.git`, `node_modules`, etc.
|
|
120
|
+
| `conflictResolve` | `"newer"` | `newer`, `local`, or `remote` (bisync only) |
|
|
121
|
+
| `exclude` | `**/.DS_Store` | Glob patterns to exclude from sync |
|
|
91
122
|
|
|
92
123
|
## Automatic sync
|
|
93
124
|
|
|
94
125
|
When configured, sync runs automatically:
|
|
95
|
-
- **On session start**:
|
|
96
|
-
- **On session end**:
|
|
126
|
+
- **On session start**: Pushes workspace and drains outbox (mailbox), pulls latest (mirror), or runs bisync
|
|
127
|
+
- **On session end**: Syncs changes after conversation ends
|
|
97
128
|
- **Periodic interval**: Background sync every N seconds (no LLM cost)
|
|
98
129
|
|
|
130
|
+
## Safety notes
|
|
131
|
+
|
|
132
|
+
- **Mailbox mode is the safest.** Workspace pushes to cloud; users send files via `_outbox`. Streams never overlap.
|
|
133
|
+
- **Mirror mode is safe by design.** Remote workspace is the authority. Local is a read-only copy.
|
|
134
|
+
- **Bisync requires careful setup.** Both sides must agree. If state is lost, `--resync` is needed and it copies everything.
|
|
135
|
+
- **On container platforms** (Fly.io, Railway), bisync state is ephemeral — use `mailbox` or `mirror` mode instead.
|
|
136
|
+
- **When changing config** (remotePath, localPath, mode), disable periodic sync first, verify, then re-enable.
|
|
137
|
+
|
|
99
138
|
## Auto-recovery
|
|
100
139
|
|
|
101
|
-
The plugin automatically handles common rclone failures:
|
|
102
140
|
- **Stale lock files**: Detected and cleared before retrying (lock files older than 15 min are expired automatically)
|
|
103
|
-
- **Interrupted syncs**: Uses `--recover` and `--resilient` flags to resume after interruptions
|
|
104
|
-
- **Resync never automatic**: If bisync state is lost, the plugin logs a message but does NOT auto-resync
|
|
141
|
+
- **Interrupted syncs**: Uses `--recover` and `--resilient` flags to resume after interruptions (bisync only)
|
|
142
|
+
- **Resync never automatic**: If bisync state is lost, the plugin logs a message but does NOT auto-resync
|
|
105
143
|
|
|
106
144
|
## Troubleshooting
|
|
107
145
|
|
|
@@ -111,8 +149,8 @@ Run the setup wizard:
|
|
|
111
149
|
openclaw workspace-sync setup
|
|
112
150
|
```
|
|
113
151
|
|
|
114
|
-
### "requires --resync"
|
|
115
|
-
Bisync state was lost. **Before running `--resync`, verify both sides are
|
|
152
|
+
### "requires --resync" (bisync only)
|
|
153
|
+
Bisync state was lost. **Before running `--resync`, verify both sides are correct**:
|
|
116
154
|
```bash
|
|
117
155
|
openclaw workspace-sync sync --resync
|
|
118
156
|
```
|
|
@@ -131,8 +169,10 @@ rclone ls cloud:openclaw-share
|
|
|
131
169
|
|
|
132
170
|
## Notes
|
|
133
171
|
|
|
134
|
-
-
|
|
135
|
-
-
|
|
172
|
+
- `mode` is **required** — set `mailbox` (inbox/outbox, safest), `mirror` (remote→local), or `bisync` (bidirectional)
|
|
173
|
+
- Mailbox mode bootstraps `_outbox` on cloud and `_inbox` on workspace at startup
|
|
174
|
+
- Bisync is available for power users who need bidirectional sync
|
|
175
|
+
- Ingest inbox (mirror mode only) is additive only — cannot delete remote files
|
|
136
176
|
- Only `**/.DS_Store` excluded by default — add your own excludes in config
|
|
137
177
|
- Sync operations run in background (no LLM tokens used)
|
|
138
178
|
- All rclone activity is logged at info level for visibility
|