openclaw-workspace-sync 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -49
- package/docs/architecture.png +0 -0
- package/docs/diagrams/mode-0.svg +1 -0
- package/docs/diagrams/mode-1.svg +1 -0
- package/docs/diagrams/mode-2.svg +1 -0
- package/docs/how-it-works.png +0 -0
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -41,25 +41,9 @@ The agent workspace is the source of truth. Each sync cycle:
|
|
|
41
41
|
1. **Push**: `rclone sync` pushes the workspace to the cloud (excluding `_inbox/` and `_outbox/`)
|
|
42
42
|
2. **Drain**: `rclone move` pulls files from the cloud `_outbox/` into the workspace `_inbox/`, deleting them from the cloud after transfer
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
```
|
|
44
|
+
<p align="center">
|
|
45
|
+
<img src="./docs/diagrams/mode-0.svg" alt="sync mode diagram" width="700" />
|
|
46
|
+
</p>
|
|
63
47
|
|
|
64
48
|
This creates a clean separation:
|
|
65
49
|
|
|
@@ -86,20 +70,9 @@ Because the push explicitly excludes `_inbox/**` and `_outbox/**`, there is no r
|
|
|
86
70
|
|
|
87
71
|
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
72
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
```
|
|
73
|
+
<p align="center">
|
|
74
|
+
<img src="./docs/diagrams/mode-1.svg" alt="sync mode diagram" width="700" />
|
|
75
|
+
</p>
|
|
103
76
|
|
|
104
77
|
This is safe: even if something goes wrong, only your local copy is affected — the workspace stays untouched.
|
|
105
78
|
|
|
@@ -123,22 +96,9 @@ When enabled, a local `inbox/` folder syncs its contents to `<remotePath>/inbox/
|
|
|
123
96
|
|
|
124
97
|
Full bidirectional sync using rclone bisync. Changes on either side propagate to the other.
|
|
125
98
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
```
|
|
99
|
+
<p align="center">
|
|
100
|
+
<img src="./docs/diagrams/mode-2.svg" alt="sync mode diagram" width="700" />
|
|
101
|
+
</p>
|
|
142
102
|
|
|
143
103
|
Use this only if you understand the trade-offs:
|
|
144
104
|
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1088.31px; background-color: transparent;" viewBox="0 0 1088.3125 532" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape rect,#my-svg .image-shape rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="LOCAL" data-look="classic"><rect style="" x="8" y="8" width="1072.3125" height="124"/><g class="cluster-label" transform="translate(497.1015625, 8)"><foreignObject width="94.109375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Your Machine</p></span></div></foreignObject></g></g><g class="cluster" id="CLOUD" data-look="classic"><rect style="" x="479.921875" y="152" width="220.453125" height="228"/><g class="cluster-label" transform="translate(537.8515625, 152)"><foreignObject width="104.59375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Cloud Provider</p></span></div></foreignObject></g></g><g class="cluster" id="GW" data-look="classic"><rect style="" x="8" y="400" width="1072.3125" height="124"/><g class="cluster-label" transform="translate(451.015625, 400)"><foreignObject width="186.28125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Gateway (source of truth)</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M228.625,462L253.9,462C279.174,462,329.724,462,371.607,462C413.49,462,446.706,462,479.414,425.776C512.122,389.552,544.323,317.103,560.423,280.879L576.523,244.655" id="L_WS_CF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WS_CF_0" data-points="W3sieCI6MjI4LjYyNSwieSI6NDYyfSx7IngiOjM4MC4yNzM0Mzc1LCJ5Ijo0NjJ9LHsieCI6NDc5LjkyMTg3NSwieSI6NDYyfSx7IngiOjU3OC4xNDc5NjQ5Njk3NTgsInkiOjI0MX1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M675.375,214L679.542,214C683.708,214,692.042,214,713.764,190C735.487,166,770.599,118,805.044,94C839.49,70,873.268,70,890.158,70L907.047,70" id="L_CF_LM_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_LM_0" data-points="W3sieCI6Njc1LjM3NSwieSI6MjE0fSx7IngiOjcwMC4zNzUsInkiOjIxNH0seyJ4Ijo4MDUuNzEwOTM3NSwieSI6NzB9LHsieCI6OTExLjA0Njg3NSwieSI6NzB9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M280.625,70L297.233,70C313.841,70,347.057,70,380.273,70C413.49,70,446.706,70,479.414,106.224C512.122,142.448,544.323,214.897,560.423,251.121L576.523,287.345" id="L_OUTBOX_L_OUTBOX_C_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_OUTBOX_L_OUTBOX_C_0" data-points="W3sieCI6MjgwLjYyNSwieSI6NzB9LHsieCI6MzgwLjI3MzQzNzUsInkiOjcwfSx7IngiOjQ3OS45MjE4NzUsInkiOjcwfSx7IngiOjU3OC4xNDc5NjQ5Njk3NTgsInkiOjI5MX1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M653.133,318L661.007,318C668.88,318,684.628,318,710.057,342C735.487,366,770.599,414,807.432,438C844.266,462,882.82,462,902.098,462L921.375,462" id="L_OUTBOX_C_INBOX_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_OUTBOX_C_INBOX_0" data-points="W3sieCI6NjUzLjEzMjgxMjUsInkiOjMxOH0seyJ4Ijo3MDAuMzc1LCJ5IjozMTh9LHsieCI6ODA1LjcxMDkzNzUsInkiOjQ2Mn0seyJ4Ijo5MjUuMzc1LCJ5Ijo0NjJ9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(380.2734375, 462)"><g class="label" data-id="L_WS_CF_0" transform="translate(-74.6484375, -12)"><foreignObject width="149.296875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel">1. rclone sync (push)</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(805.7109375, 70)"><g class="label" data-id="L_CF_LM_0" transform="translate(-67.8671875, -12)"><foreignObject width="135.734375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>desktop app (auto)</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(380.2734375, 70)"><g class="label" data-id="L_OUTBOX_L_OUTBOX_C_0" transform="translate(-67.8671875, -12)"><foreignObject width="135.734375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>desktop app (auto)</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(805.7109375, 462)"><g class="label" data-id="L_OUTBOX_C_INBOX_0" transform="translate(-80.3359375, -12)"><foreignObject width="160.671875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel">2. rclone move (drain)</span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-WS-0" transform="translate(156.8125, 462)"><rect class="basic label-container" style="" x="-71.8125" y="-27" width="143.625" height="54"/><g class="label" style="" transform="translate(-41.8125, -12)"><rect/><foreignObject width="83.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>/workspace</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-INBOX-1" transform="translate(983.1796875, 462)"><rect class="basic label-container" style="" x="-57.8046875" y="-27" width="115.609375" height="54"/><g class="label" style="" transform="translate(-27.8046875, -12)"><rect/><foreignObject width="55.609375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>_inbox/</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-CF-2" transform="translate(590.1484375, 214)"><rect class="basic label-container" style="" x="-85.2265625" y="-27" width="170.453125" height="54"/><g class="label" style="" transform="translate(-55.2265625, -12)"><rect/><foreignObject width="110.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>workspace files</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-OUTBOX_C-3" transform="translate(590.1484375, 318)"><rect class="basic label-container" style="" x="-62.984375" y="-27" width="125.96875" height="54"/><g class="label" style="" transform="translate(-32.984375, -12)"><rect/><foreignObject width="65.96875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>_outbox/</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-LM-4" transform="translate(983.1796875, 70)"><rect class="basic label-container" style="" x="-72.1328125" y="-27" width="144.265625" height="54"/><g class="label" style="" transform="translate(-42.1328125, -12)"><rect/><foreignObject width="84.265625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>local mirror</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-OUTBOX_L-5" transform="translate(156.8125, 70)"><rect class="basic label-container" style="" x="-123.8125" y="-27" width="247.625" height="54"/><g class="label" style="" transform="translate(-93.8125, -12)"><rect/><foreignObject width="187.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>_outbox/ (drop files here)</p></span></div></foreignObject></g></g></g></g></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 751.07px; background-color: transparent;" viewBox="0 0 751.0703125 478.20001220703125" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape rect,#my-svg .image-shape rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="LOCAL" data-look="classic"><rect style="" x="475.9296875" y="8" width="267.140625" height="124"/><g class="cluster-label" transform="translate(562.4453125, 8)"><foreignObject width="94.109375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Your Machine</p></span></div></foreignObject></g></g><g class="cluster" id="CLOUD" data-look="classic"><rect style="" x="8" y="8" width="293.4921875" height="124"/><g class="cluster-label" transform="translate(102.44921875, 8)"><foreignObject width="104.59375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Cloud Provider</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M239.973,70L250.226,70C260.479,70,280.986,70,305.775,70C330.565,70,359.638,70,388.711,70C417.784,70,446.857,70,464.893,70C482.93,70,489.93,70,493.43,70L496.93,70" id="L_CF_LM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_LM_0" data-points="W3sieCI6MjM5Ljk3MjY1NjI1LCJ5Ijo3MH0seyJ4IjozMDEuNDkyMTg3NSwieSI6NzB9LHsieCI6Mzg4LjcxMDkzNzUsInkiOjcwfSx7IngiOjQ3NS45Mjk2ODc1LCJ5Ijo3MH0seyJ4Ijo1MDAuOTI5Njg3NSwieSI6NzB9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(388.7109375, 70)"><g class="label" data-id="L_CF_LM_0" transform="translate(-62.21875, -12)"><foreignObject width="124.4375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>rclone sync (pull)</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="root" transform="translate(25, 159)"><g class="clusters"><g class="cluster" id="GW" data-look="classic"><rect style="" x="8" y="8" width="243.4921875" height="303.20000000298023"/><g class="cluster-label" transform="translate(36.60546875, 8)"><foreignObject width="186.28125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Gateway (source of truth)</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M127.25,99.5L123.216,105.75C119.181,112,111.112,124.5,107.078,137C103.043,149.5,103.043,162,103.043,168.25L103.043,174.5" id="WS-cyclic-special-1" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="WS-cyclic-special-1" data-points="W3sieCI6MTI3LjI1MDM2MzM3MjA5MzAyLCJ5Ijo5OS41fSx7IngiOjEwMy4wNDI5Njg3NSwieSI6MTM3fSx7IngiOjEwMy4wNDI5Njg3NSwieSI6MTc0LjV9XQ=="/><path d="M103.043,174.6L103.043,182.85C103.043,191.1,103.043,207.6,109.975,224.1C116.908,240.6,130.773,257.1,137.705,265.35L144.638,273.6" id="WS-cyclic-special-mid" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="WS-cyclic-special-mid" data-points="W3sieCI6MTAzLjA0Mjk2ODc1LCJ5IjoxNzQuNjAwMDAwMDAxNDkwMTJ9LHsieCI6MTAzLjA0Mjk2ODc1LCJ5IjoyMjQuMTAwMDAwMDAxNDkwMTJ9LHsieCI6MTQ0LjYzNzY3MjY0Njk1Mjc4LCJ5IjoyNzMuNjAwMDAwMDAxNDkwMX1d"/><path d="M144.723,273.6L151.951,265.35C159.178,257.1,173.632,240.6,180.859,224.092C188.086,207.583,188.086,191.067,188.086,176.55C188.086,162.033,188.086,149.517,184.252,137.561C180.418,125.606,172.751,114.212,168.917,108.515L165.083,102.819" id="WS-cyclic-special-2" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="WS-cyclic-special-2" data-points="W3sieCI6MTQ0LjcyMzQ4Nzk1NDczODgsInkiOjI3My42MDAwMDAwMDE0OTAxfSx7IngiOjE4OC4wODU5Mzc1LCJ5IjoyMjQuMTAwMDAwMDAxNDkwMTJ9LHsieCI6MTg4LjA4NTkzNzUsInkiOjE3NC41NTAwMDAwMDA3NDUwNn0seyJ4IjoxODguMDg1OTM3NSwieSI6MTM3fSx7IngiOjE2Mi44NDk3NDU2Mzk1MzQ5LCJ5Ijo5OS41fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="WS-cyclic-special-1" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(103.04296875, 224.10000000149012)"><g class="label" data-id="WS-cyclic-special-mid" transform="translate(-63.2734375, -12)"><foreignObject width="126.546875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>agent writes here</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="WS-cyclic-special-2" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-WS-0" transform="translate(144.6796875, 72.5)"><rect class="basic label-container" style="" x="-71.8125" y="-27" width="143.625" height="54"/><g class="label" style="" transform="translate(-41.8125, -12)"><rect/><foreignObject width="83.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>/workspace</p></span></div></foreignObject></g></g><g class="label edgeLabel" id="WS---WS---1" transform="translate(103.04296875, 174.55000000074506)"><rect width="0.1" height="0.1"/><g class="label" style="" transform="translate(0, 0)"><rect/><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 10px; text-align: center;"><span class="nodeLabel"></span></div></foreignObject></g></g><g class="label edgeLabel" id="WS---WS---2" transform="translate(144.6796875, 273.6500000022352)"><rect width="0.1" height="0.1"/><g class="label" style="" transform="translate(0, 0)"><rect/><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 10px; text-align: center;"><span class="nodeLabel"></span></div></foreignObject></g></g></g></g><g class="node default" id="flowchart-CF-1" transform="translate(154.74609375, 70)"><rect class="basic label-container" style="" x="-85.2265625" y="-27" width="170.453125" height="54"/><g class="label" style="" transform="translate(-55.2265625, -12)"><rect/><foreignObject width="110.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>workspace files</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-LM-2" transform="translate(609.5, 70)"><rect class="basic label-container" style="" x="-108.5703125" y="-27" width="217.140625" height="54"/><g class="label" style="" transform="translate(-78.5703125, -12)"><rect/><foreignObject width="157.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>local copy (read-only)</p></span></div></foreignObject></g></g></g></g></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 893.906px; background-color: transparent;" viewBox="0 0 893.90625 152" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape rect,#my-svg .image-shape rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="LOCAL" data-look="classic"><rect style="" x="703.421875" y="8" width="182.484375" height="136"/><g class="cluster-label" transform="translate(747.609375, 8)"><foreignObject width="94.109375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Your Machine</p></span></div></foreignObject></g></g><g class="cluster" id="CLOUD" data-look="classic"><rect style="" x="345.875" y="8" width="220.453125" height="136"/><g class="cluster-label" transform="translate(403.8046875, 8)"><foreignObject width="104.59375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Cloud Provider</p></span></div></foreignObject></g></g><g class="cluster" id="GW" data-look="classic"><rect style="" x="8" y="8" width="193.625" height="136"/><g class="cluster-label" transform="translate(73.5625, 8)"><foreignObject width="62.5" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Gateway</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M176.625,64.681L180.792,63.734C184.958,62.787,193.292,60.894,209.479,59.947C225.667,59,249.708,59,273.75,59C297.792,59,321.833,59,337.367,59.701C352.901,60.402,359.927,61.805,363.439,62.506L366.952,63.207" id="L_WS_CF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WS_CF_0" data-points="W3sieCI6MTc2LjYyNSwieSI6NjQuNjgxMDg0NTcwNjkwNzd9LHsieCI6MjAxLjYyNSwieSI6NTl9LHsieCI6MjczLjc1LCJ5Ijo1OX0seyJ4IjozNDUuODc1LCJ5Ijo1OX0seyJ4IjozNzAuODc1LCJ5Ijo2My45ODk3MjI4NzE5MjU3Mn1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M370.875,98.01L366.708,98.842C362.542,99.674,354.208,101.337,338.021,102.168C321.833,103,297.792,103,273.75,103C249.708,103,225.667,103,210.129,102.201C194.592,101.402,187.559,99.804,184.042,99.004L180.526,98.205" id="L_CF_WS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_WS_0" data-points="W3sieCI6MzcwLjg3NSwieSI6OTguMDEwMjc3MTI4MDc0Mjh9LHsieCI6MzQ1Ljg3NSwieSI6MTAzfSx7IngiOjI3My43NSwieSI6MTAzfSx7IngiOjIwMS42MjUsInkiOjEwM30seyJ4IjoxNzYuNjI1LCJ5Ijo5Ny4zMTg5MTU0MjkzMDkyM31d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M541.328,63.99L545.495,63.158C549.661,62.326,557.995,60.663,573.586,59.832C589.177,59,612.026,59,634.875,59C657.724,59,680.573,59,695.516,59.848C710.459,60.697,717.496,62.394,721.015,63.242L724.533,64.09" id="L_CF_LM_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_LM_0" data-points="W3sieCI6NTQxLjMyODEyNSwieSI6NjMuOTg5NzIyODcxOTI1NzJ9LHsieCI6NTY2LjMyODEyNSwieSI6NTl9LHsieCI6NjM0Ljg3NSwieSI6NTl9LHsieCI6NzAzLjQyMTg3NSwieSI6NTl9LHsieCI6NzI4LjQyMTg3NSwieSI6NjUuMDI3OTEzMzQ4NzQ1NjF9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M728.422,96.972L724.255,97.977C720.089,98.981,711.755,100.991,696.164,101.995C680.573,103,657.724,103,634.875,103C612.026,103,589.177,103,574.24,102.299C559.302,101.598,552.277,100.195,548.764,99.494L545.251,98.793" id="L_LM_CF_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_LM_CF_0" data-points="W3sieCI6NzI4LjQyMTg3NSwieSI6OTYuOTcyMDg2NjUxMjU0Mzl9LHsieCI6NzAzLjQyMTg3NSwieSI6MTAzfSx7IngiOjYzNC44NzUsInkiOjEwM30seyJ4Ijo1NjYuMzI4MTI1LCJ5IjoxMDN9LHsieCI6NTQxLjMyODEyNSwieSI6OTguMDEwMjc3MTI4MDc0Mjh9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(273.75, 59)"><g class="label" data-id="L_WS_CF_0" transform="translate(-47.125, -12)"><foreignObject width="94.25" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>rclone bisync</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(273.75, 103)"><g class="label" data-id="L_CF_WS_0" transform="translate(-47.125, -12)"><foreignObject width="94.25" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>rclone bisync</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(634.875, 59)"><g class="label" data-id="L_CF_LM_0" transform="translate(-43.546875, -12)"><foreignObject width="87.09375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>desktop app</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(634.875, 103)"><g class="label" data-id="L_LM_CF_0" transform="translate(-43.546875, -12)"><foreignObject width="87.09375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>desktop app</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-WS-0" transform="translate(104.8125, 81)"><rect class="basic label-container" style="" x="-71.8125" y="-27" width="143.625" height="54"/><g class="label" style="" transform="translate(-41.8125, -12)"><rect/><foreignObject width="83.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>/workspace</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-CF-1" transform="translate(456.1015625, 81)"><rect class="basic label-container" style="" x="-85.2265625" y="-27" width="170.453125" height="54"/><g class="label" style="" transform="translate(-55.2265625, -12)"><rect/><foreignObject width="110.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>workspace files</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-LM-2" transform="translate(794.6640625, 81)"><rect class="basic label-container" style="" x="-66.2421875" y="-27" width="132.484375" height="54"/><g class="label" style="" transform="translate(-36.2421875, -12)"><rect/><foreignObject width="72.484375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>local copy</p></span></div></foreignObject></g></g></g></g></g></svg>
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-workspace-sync",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
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",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
],
|
|
26
26
|
"files": [
|
|
27
27
|
"dist",
|
|
28
|
+
"docs",
|
|
28
29
|
"skills",
|
|
29
30
|
"openclaw.plugin.json",
|
|
30
31
|
"README.md",
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"@clack/prompts": "^1.0.1"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
38
|
+
"@mermaid-js/mermaid-cli": "^11.12.0",
|
|
37
39
|
"@types/node": "^22.19.11",
|
|
38
40
|
"typescript": "5.7",
|
|
39
41
|
"vitest": "^3.2.4"
|
|
@@ -45,8 +47,9 @@
|
|
|
45
47
|
},
|
|
46
48
|
"scripts": {
|
|
47
49
|
"build": "tsc",
|
|
48
|
-
"prepublishOnly": "npm run build",
|
|
50
|
+
"prepublishOnly": "node scripts/render-mermaid.js && npm run build",
|
|
51
|
+
"postpublish": "git checkout README.md",
|
|
49
52
|
"test": "vitest run",
|
|
50
53
|
"test:watch": "vitest"
|
|
51
54
|
}
|
|
52
|
-
}
|
|
55
|
+
}
|