offrouter-adapter-gemini 0.5.1 → 0.7.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/dist/rollback.d.ts.map +1 -1
- package/dist/rollback.js +38 -5
- package/dist/rollback.js.map +1 -1
- package/package.json +2 -2
package/dist/rollback.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"AAqBA,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,kBAAkB,GAAG,uBAAuB,GAAG,gBAAgB,CAAC;CAC7E;AAmJD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAgI/B"}
|
package/dist/rollback.js
CHANGED
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
* Rollback for profile-scoped Gemini install state.
|
|
3
3
|
* Restores the profile's settings.json to its previous content (or removes the
|
|
4
4
|
* OffRouter-created file) and drops the install-state metadata.
|
|
5
|
+
*
|
|
6
|
+
* Never overwrites or deletes user-edited content: when install metadata
|
|
7
|
+
* includes a content hash and the on-disk config no longer matches, rollback
|
|
8
|
+
* refuses and leaves install state in place.
|
|
5
9
|
*/
|
|
6
10
|
import { access, mkdir, readFile, rmdir, unlink, writeFile, } from "node:fs/promises";
|
|
7
11
|
import { constants } from "node:fs";
|
|
12
|
+
import { createHash } from "node:crypto";
|
|
8
13
|
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
9
14
|
import { homedir as osHomedir } from "node:os";
|
|
10
15
|
import { GEMINI_CONFIG_REL, GEMINI_INSTALL_STATE_REL, GeminiInstallStateSchema, } from "./install.js";
|
|
@@ -18,6 +23,18 @@ async function pathExists(path) {
|
|
|
18
23
|
return false;
|
|
19
24
|
}
|
|
20
25
|
}
|
|
26
|
+
function sha256(content) {
|
|
27
|
+
return createHash("sha256").update(content).digest("hex");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Whether `content` still matches the hash recorded at install time.
|
|
31
|
+
* `null` means no hash was recorded (legacy state) — caller may proceed.
|
|
32
|
+
*/
|
|
33
|
+
function matchesInstallHash(content, hash) {
|
|
34
|
+
if (hash === undefined)
|
|
35
|
+
return null;
|
|
36
|
+
return sha256(content) === hash;
|
|
37
|
+
}
|
|
21
38
|
function changeSummary(kind, relativePath) {
|
|
22
39
|
switch (kind) {
|
|
23
40
|
case "create":
|
|
@@ -146,9 +163,29 @@ export async function rollbackGeminiProfile(options) {
|
|
|
146
163
|
const configPath = validated.configPath;
|
|
147
164
|
const fileState = state.files[GEMINI_CONFIG_REL];
|
|
148
165
|
const previous = fileState?.previous ?? null;
|
|
166
|
+
const installHash = fileState?.hash;
|
|
167
|
+
let current = null;
|
|
168
|
+
if (await pathExists(configPath)) {
|
|
169
|
+
current = await readFile(configPath, "utf8");
|
|
170
|
+
}
|
|
171
|
+
// Refuse to clobber hand-edited config when we know what install wrote.
|
|
172
|
+
if (current !== null && current !== previous) {
|
|
173
|
+
const match = matchesInstallHash(current, installHash);
|
|
174
|
+
if (match === false) {
|
|
175
|
+
return {
|
|
176
|
+
ok: false,
|
|
177
|
+
dryRun,
|
|
178
|
+
profile,
|
|
179
|
+
profileDir,
|
|
180
|
+
changes: [],
|
|
181
|
+
message: `Refusing to roll back ${GEMINI_CONFIG_REL}: file was modified after install. Restore or remove your edits, then re-run rollback. Install state left in place.`,
|
|
182
|
+
errorCode: "rollback_error",
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
149
186
|
if (previous === null) {
|
|
150
187
|
// File was created by install; remove it on rollback.
|
|
151
|
-
const existed =
|
|
188
|
+
const existed = current !== null;
|
|
152
189
|
const kind = existed ? "remove" : "unchanged";
|
|
153
190
|
changes.push({
|
|
154
191
|
path: configPath,
|
|
@@ -161,10 +198,6 @@ export async function rollbackGeminiProfile(options) {
|
|
|
161
198
|
}
|
|
162
199
|
}
|
|
163
200
|
else {
|
|
164
|
-
let current = null;
|
|
165
|
-
if (await pathExists(configPath)) {
|
|
166
|
-
current = await readFile(configPath, "utf8");
|
|
167
|
-
}
|
|
168
201
|
let kind;
|
|
169
202
|
if (current === previous) {
|
|
170
203
|
kind = "unchanged";
|
package/dist/rollback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "offrouter-adapter-gemini",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"test": "vitest run --root ../.. packages/adapter-gemini/src"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"offrouter-core": "0.
|
|
12
|
+
"offrouter-core": "0.7.0",
|
|
13
13
|
"zod": "^3.23.0"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|