@parall/parall 1.18.0 → 1.20.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parall/parall",
3
- "version": "1.18.0",
3
+ "version": "1.20.0",
4
4
  "description": "OpenClaw channel plugin for Parall IM",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -15,8 +15,8 @@
15
15
  "openclaw.plugin.json"
16
16
  ],
17
17
  "dependencies": {
18
- "@parall/sdk": "1.18.0",
19
- "@parall/agent-core": "1.18.0"
18
+ "@parall/agent-core": "1.20.0",
19
+ "@parall/sdk": "1.20.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "^22.0.0",
@@ -82,6 +82,42 @@ npx @parall/cli@latest wiki changeset create <slug> --update <changesetId>
82
82
 
83
83
  The title is inherited from the original changeset — no need to repeat it.
84
84
 
85
+ ## Handling sync conflicts
86
+
87
+ `wiki sync` runs a three-way merge. When both you and the server changed the
88
+ same file, sync **does not overwrite your work**. It leaves your file intact
89
+ and drops the upstream version under `.parall-wiki/conflicts/`:
90
+
91
+ | Marker | Meaning |
92
+ |--------|---------|
93
+ | `.parall-wiki/conflicts/<path>.remote` | Server has different content (concurrent edit, new file collision, or server changed a file you deleted) |
94
+ | `.parall-wiki/conflicts/<path>.remote-deleted` | Server deleted the file; you still have edits |
95
+
96
+ stderr prints one line per conflict. Recovery:
97
+
98
+ **Accept upstream** (drop your edit):
99
+ ```bash
100
+ cp .parall-wiki/conflicts/<path>.remote <path>
101
+ npx @parall/cli@latest wiki sync
102
+ ```
103
+
104
+ **Keep yours** (or hand-merge, then propose):
105
+ ```bash
106
+ # edit <path> to final content
107
+ npx @parall/cli@latest wiki diff <slug>
108
+ npx @parall/cli@latest wiki changeset create <slug> --title "Reconcile <path>"
109
+ npx @parall/cli@latest wiki sync # fast-forwards after server merges
110
+ ```
111
+
112
+ **Accept server delete** (`.remote-deleted` only):
113
+ ```bash
114
+ rm <path>
115
+ npx @parall/cli@latest wiki sync
116
+ ```
117
+
118
+ Sync failures (`download`, `shape-conflict`) set exit code 1 and retry on
119
+ next sync. Conflicts exit 0 — they need your decision, not a retry.
120
+
85
121
  ## Discarding local changes
86
122
 
87
123
  ```bash
package/src/gateway.ts CHANGED
@@ -5,6 +5,7 @@ import type { ChannelPlugin } from "openclaw/plugin-sdk/core";
5
5
  type ChannelGatewayAdapter<T = unknown> = NonNullable<ChannelPlugin<T>["gateway"]>;
6
6
  import {
7
7
  ParallAgentGateway,
8
+ parseShutdownDeadlineMs,
8
9
  type DispatchAdapter,
9
10
  type ParallEvent,
10
11
  type RuntimeEvent,
@@ -304,6 +305,7 @@ export const parallGateway: ChannelGatewayAdapter<ResolvedParallAccount> = {
304
305
  runtimeRef: { hostname: os.hostname(), pid: process.pid },
305
306
  dispatchAdapter,
306
307
  log,
308
+ shutdownDeadlineMs: parseShutdownDeadlineMs(process.env.PRLL_SHUTDOWN_DEADLINE_MS),
307
309
  onConfigUpdate: async () => {
308
310
  await fetchAndApplyPlatformConfig(configManagerOpts);
309
311
  },