@amalgm/browser 0.1.2-main.37259950106 → 0.1.2-main.37273465332
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/PURPOSE.md +3 -2
- package/dist/src/chrome/cookie-adapter.d.ts +1 -1
- package/dist/src/chrome/cookie-adapter.js +2 -1
- package/dist/src/chrome/cookie-adapter.js.map +1 -1
- package/dist/src/chrome/cookie-changes.d.ts +2 -1
- package/dist/src/chrome/cookie-changes.js +4 -1
- package/dist/src/chrome/cookie-changes.js.map +1 -1
- package/dist/src/chrome/cookie-observer.d.ts +4 -0
- package/dist/src/chrome/cookie-observer.js +10 -2
- package/dist/src/chrome/cookie-observer.js.map +1 -1
- package/dist/src/chrome/host.js +6 -8
- package/dist/src/chrome/host.js.map +1 -1
- package/dist/src/cookies/coordinator.js +16 -6
- package/dist/src/cookies/coordinator.js.map +1 -1
- package/dist/src/electron.cjs +13 -6
- package/docs/AXIOMS.md +1 -1
- package/docs/CHROME.md +10 -2
- package/docs/COOKIES.md +2 -0
- package/docs/TESTING.md +2 -1
- package/docs/TROUBLESHOOTING.md +8 -0
- package/package.json +4 -4
package/PURPOSE.md
CHANGED
|
@@ -129,8 +129,9 @@ locked dependency graph on the supported Node toolchain.
|
|
|
129
129
|
and a terminal login cannot become active again.
|
|
130
130
|
14. Browser-owned secret records are encrypted, integrity-checked, atomic, and
|
|
131
131
|
permission-restricted; physical browser profiles follow platform storage policy.
|
|
132
|
-
A missing or corrupt cookie jar
|
|
133
|
-
browsing safely instead of exposing secrets or
|
|
132
|
+
A missing or corrupt cookie jar, or a Chrome that cannot report its cookie
|
|
133
|
+
changes, degrades ordinary browsing safely instead of exposing secrets or
|
|
134
|
+
disabling actions.
|
|
134
135
|
15. Recording proves capture before encoding, permits one active recording
|
|
135
136
|
per session, captures page imagery only, and stops an uncooperative
|
|
136
137
|
encoder within a deadline.
|
|
@@ -8,7 +8,7 @@ export declare class ChromeCookieAdapter implements BrowserCookieAdapter {
|
|
|
8
8
|
readonly supportsPartitionedCookies = true;
|
|
9
9
|
constructor(control: CdpClient, observation: {
|
|
10
10
|
root: string;
|
|
11
|
-
failed(): void;
|
|
11
|
+
failed(error: unknown): void;
|
|
12
12
|
});
|
|
13
13
|
read(): Promise<BrowserCookie[]>;
|
|
14
14
|
apply(input: {
|
|
@@ -11,8 +11,9 @@ export class ChromeCookieAdapter {
|
|
|
11
11
|
this.control = control;
|
|
12
12
|
this.observation = observation;
|
|
13
13
|
}
|
|
14
|
+
// A snapshot follows the start of observation, so no change falls between them.
|
|
14
15
|
async read() {
|
|
15
|
-
await this.observing;
|
|
16
|
+
await this.observing.catch(() => undefined);
|
|
16
17
|
const result = await this.control.call('Storage.getCookies');
|
|
17
18
|
return (result.cookies || []).map(fromChrome);
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-adapter.js","sourceRoot":"","sources":["../../../src/chrome/cookie-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAezD,uEAAuE;AACvE,4CAA4C;AAC5C,MAAM,OAAO,mBAAmB;IAKX;IACA;IALV,EAAE,GAAG,wBAAwB,CAAC;IAC9B,0BAA0B,GAAG,IAAI,CAAC;IAE3C,YACmB,OAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"cookie-adapter.js","sourceRoot":"","sources":["../../../src/chrome/cookie-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,6 @@ export declare function observeChromeCookies(input: {
|
|
|
8
8
|
control: CdpClient;
|
|
9
9
|
root: string;
|
|
10
10
|
changed(change: BrowserCookieChange | undefined): void;
|
|
11
|
-
|
|
11
|
+
/** Observation stopped after it started. Browsing is unaffected. */
|
|
12
|
+
failed(error: unknown): void;
|
|
12
13
|
}): Promise<() => void>;
|
|
@@ -15,7 +15,10 @@ export async function observeChromeCookies(input) {
|
|
|
15
15
|
let failed;
|
|
16
16
|
const initialized = new Promise((resolve, reject) => { ready = resolve; failed = reject; });
|
|
17
17
|
void initialized.catch(() => undefined); // Discovery may fail before the admission await is reached.
|
|
18
|
-
const fail = (error) => {
|
|
18
|
+
const fail = (error) => { if (started)
|
|
19
|
+
input.failed(error);
|
|
20
|
+
else
|
|
21
|
+
failed(error); };
|
|
19
22
|
// The worker announces each start. Every start after the first restarted a worker, so a
|
|
20
23
|
// snapshot covers anything it could not deliver while stopped.
|
|
21
24
|
const observed = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-changes.js","sourceRoot":"","sources":["../../../src/chrome/cookie-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAA0B,MAAM,sBAAsB,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"cookie-changes.js","sourceRoot":"","sources":["../../../src/chrome/cookie-changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,4 +17,8 @@ export interface ChromeCookieEvent {
|
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Chrome keeps running the script it saved under a worker's file name, even after the file
|
|
22
|
+
* changes, so each source gets its own name: a profile from an earlier release runs this one's worker.
|
|
23
|
+
*/
|
|
20
24
|
export declare function cookieObserverDirectory(root: string): string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
1
2
|
import fs from 'node:fs';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
/** This function is the extension worker's sole source; emitted JS belongs to the profile. */
|
|
@@ -30,15 +31,22 @@ function worker() {
|
|
|
30
31
|
};
|
|
31
32
|
scope.amalgmObserveCookies();
|
|
32
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Chrome keeps running the script it saved under a worker's file name, even after the file
|
|
36
|
+
* changes, so each source gets its own name: a profile from an earlier release runs this one's worker.
|
|
37
|
+
*/
|
|
33
38
|
export function cookieObserverDirectory(root) {
|
|
34
39
|
const directory = path.join(root, 'cookie-observer');
|
|
40
|
+
const source = `(${worker.toString()})();`;
|
|
41
|
+
const file = `worker-${createHash('sha256').update(source).digest('hex').slice(0, 16)}.js`;
|
|
42
|
+
fs.rmSync(directory, { recursive: true, force: true });
|
|
35
43
|
fs.mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
36
44
|
fs.writeFileSync(path.join(directory, 'manifest.json'), JSON.stringify({
|
|
37
45
|
manifest_version: 3, name: 'Amalgm account cookies', version: '1.0',
|
|
38
46
|
permissions: ['cookies'], host_permissions: ['<all_urls>'],
|
|
39
|
-
background: { service_worker:
|
|
47
|
+
background: { service_worker: file },
|
|
40
48
|
}), { mode: 0o600 });
|
|
41
|
-
fs.writeFileSync(path.join(directory,
|
|
49
|
+
fs.writeFileSync(path.join(directory, file), source, { mode: 0o600 });
|
|
42
50
|
return directory;
|
|
43
51
|
}
|
|
44
52
|
//# sourceMappingURL=cookie-observer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-observer.js","sourceRoot":"","sources":["../../../src/chrome/cookie-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,8FAA8F;AAC9F,SAAS,MAAM;IACb,MAAM,KAAK,GAAG,UAKb,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IACrD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;QACjD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QACzD,IAAI,SAAS;YAAE,KAAK,CAAC,iBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1D,CAAC;YACJ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,2FAA2F;IAC3F,8FAA8F;IAC9F,yBAAyB;IACzB,KAAK,CAAC,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAAE,OAAO;QACnF,SAAS,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,CAAC,oBAAoB,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACrE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK;QACnE,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAC1D,UAAU,EAAE,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"cookie-observer.js","sourceRoot":"","sources":["../../../src/chrome/cookie-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,8FAA8F;AAC9F,SAAS,MAAM;IACb,MAAM,KAAK,GAAG,UAKb,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IACrD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;QACjD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QACzD,IAAI,SAAS;YAAE,KAAK,CAAC,iBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1D,CAAC;YACJ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,2FAA2F;IAC3F,8FAA8F;IAC9F,yBAAyB;IACzB,KAAK,CAAC,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAAE,OAAO;QACnF,SAAS,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,CAAC,oBAAoB,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3C,MAAM,IAAI,GAAG,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;IAC3F,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACrE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK;QACnE,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAC1D,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;KACrC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/src/chrome/host.js
CHANGED
|
@@ -98,16 +98,14 @@ export class ChromeHost {
|
|
|
98
98
|
let control;
|
|
99
99
|
try {
|
|
100
100
|
control = await connectCdp(chrome.browserUrl);
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
void chrome.kill();
|
|
106
|
-
},
|
|
107
|
-
});
|
|
101
|
+
const unobserved = (error) => {
|
|
102
|
+
this.options.logger.warn('Chrome cookie changes are not reaching the account; browsing continues.', { error: error.message });
|
|
103
|
+
};
|
|
104
|
+
const cookies = new ChromeCookieAdapter(control, { root: this.options.root, failed: unobserved });
|
|
108
105
|
const running = { chrome, control, cookies };
|
|
109
106
|
this.options.cookies.register(cookies);
|
|
110
|
-
|
|
107
|
+
// Cookies follow browsing; they never decide whether Chrome may browse.
|
|
108
|
+
await cookies.ready().catch(unobserved);
|
|
111
109
|
await this.options.cookies.sync(cookies.id);
|
|
112
110
|
this.live = running;
|
|
113
111
|
void chrome.exited.then(() => this.exited(running));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/chrome/host.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/chrome/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,14 @@ export class BrowserCookieCoordinator {
|
|
|
30
30
|
connection.current.set(key, value);
|
|
31
31
|
else
|
|
32
32
|
connection.current.delete(key);
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// A browser reports applies in order, and a report can arrive after a newer apply.
|
|
34
|
+
const applied = connection.expected.get(key) || [];
|
|
35
|
+
const echoed = applied.findIndex(expected => sameCookie(value, expected));
|
|
36
|
+
if (echoed >= 0) {
|
|
37
|
+
if (echoed === applied.length - 1)
|
|
38
|
+
connection.expected.delete(key);
|
|
39
|
+
else
|
|
40
|
+
applied.splice(0, echoed + 1);
|
|
35
41
|
return;
|
|
36
42
|
}
|
|
37
43
|
connection.pending.set(key, { cookie, removed: change.removed });
|
|
@@ -134,9 +140,10 @@ export class BrowserCookieCoordinator {
|
|
|
134
140
|
const changes = connection.version === undefined
|
|
135
141
|
? { upserts: local.filter(cookie => !known.has(cookieKey(cookie))), deletes: [] }
|
|
136
142
|
: diffCookies([...previous.values()], local);
|
|
137
|
-
|
|
143
|
+
const applied = (key) => connection.expected.get(key)?.at(-1);
|
|
144
|
+
changes.upserts = changes.upserts.filter(cookie => !sameCookie(cookie, applied(cookieKey(cookie))));
|
|
138
145
|
changes.deletes = changes.deletes.filter(cookie => !connection.expected.has(cookieKey(cookie))
|
|
139
|
-
||
|
|
146
|
+
|| applied(cookieKey(cookie)) !== undefined);
|
|
140
147
|
connection.expected.clear(); // The snapshot settled every earlier apply, echoed or not.
|
|
141
148
|
if (changes.upserts.length || changes.deletes.length)
|
|
142
149
|
await this.store.merge({ sourceId: connection.adapter.id, ...changes });
|
|
@@ -154,10 +161,13 @@ export class BrowserCookieCoordinator {
|
|
|
154
161
|
&& connection.current.has(cookieKey(cookie)));
|
|
155
162
|
if ((!upserts.length && !deletes.length) || connection.closed)
|
|
156
163
|
return;
|
|
164
|
+
const expect = (key, value) => {
|
|
165
|
+
connection.expected.set(key, [...connection.expected.get(key) || [], value]);
|
|
166
|
+
};
|
|
157
167
|
for (const cookie of upserts)
|
|
158
|
-
|
|
168
|
+
expect(cookieKey(cookie), cookie);
|
|
159
169
|
for (const cookie of deletes)
|
|
160
|
-
|
|
170
|
+
expect(cookieKey(cookie), undefined);
|
|
161
171
|
await connection.adapter.apply({ upserts, deletes, versionToken: delta.versionToken });
|
|
162
172
|
for (const cookie of upserts)
|
|
163
173
|
if (!connection.pending.has(cookieKey(cookie)))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cookies/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cookies/coordinator.ts"],"names":[],"mappings":"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"}
|
package/dist/src/electron.cjs
CHANGED
|
@@ -12805,8 +12805,11 @@ var BrowserCookieCoordinator = class {
|
|
|
12805
12805
|
const value = change.removed ? void 0 : cookie;
|
|
12806
12806
|
if (value) connection.current.set(key, value);
|
|
12807
12807
|
else connection.current.delete(key);
|
|
12808
|
-
|
|
12809
|
-
|
|
12808
|
+
const applied = connection.expected.get(key) || [];
|
|
12809
|
+
const echoed = applied.findIndex((expected) => sameCookie(value, expected));
|
|
12810
|
+
if (echoed >= 0) {
|
|
12811
|
+
if (echoed === applied.length - 1) connection.expected.delete(key);
|
|
12812
|
+
else applied.splice(0, echoed + 1);
|
|
12810
12813
|
return;
|
|
12811
12814
|
}
|
|
12812
12815
|
connection.pending.set(key, { cookie, removed: change.removed });
|
|
@@ -12893,8 +12896,9 @@ var BrowserCookieCoordinator = class {
|
|
|
12893
12896
|
connection.current = new Map(local.map((cookie) => [cookieKey(cookie), cookie]));
|
|
12894
12897
|
const known = /* @__PURE__ */ new Set([...state.cookies.map(cookieKey), ...state.tombstones.map(({ key }) => key)]);
|
|
12895
12898
|
const changes = connection.version === void 0 ? { upserts: local.filter((cookie) => !known.has(cookieKey(cookie))), deletes: [] } : diffCookies([...previous.values()], local);
|
|
12896
|
-
|
|
12897
|
-
changes.
|
|
12899
|
+
const applied = (key) => connection.expected.get(key)?.at(-1);
|
|
12900
|
+
changes.upserts = changes.upserts.filter((cookie) => !sameCookie(cookie, applied(cookieKey(cookie))));
|
|
12901
|
+
changes.deletes = changes.deletes.filter((cookie) => !connection.expected.has(cookieKey(cookie)) || applied(cookieKey(cookie)) !== void 0);
|
|
12898
12902
|
connection.expected.clear();
|
|
12899
12903
|
if (changes.upserts.length || changes.deletes.length) await this.store.merge({ sourceId: connection.adapter.id, ...changes });
|
|
12900
12904
|
const changed = new Set([...changes.upserts, ...changes.deletes].map(cookieKey));
|
|
@@ -12907,8 +12911,11 @@ var BrowserCookieCoordinator = class {
|
|
|
12907
12911
|
const upserts = delta.upserts.flatMap((cookie) => this.portable(connection, cookie) || []).filter((cookie) => !sameCookie(cookie, connection.current.get(cookieKey(cookie))));
|
|
12908
12912
|
const deletes = delta.deletes.filter((cookie) => this.portable(connection, { ...cookie, value: "" }) && connection.current.has(cookieKey(cookie)));
|
|
12909
12913
|
if (!upserts.length && !deletes.length || connection.closed) return;
|
|
12910
|
-
|
|
12911
|
-
|
|
12914
|
+
const expect = (key, value) => {
|
|
12915
|
+
connection.expected.set(key, [...connection.expected.get(key) || [], value]);
|
|
12916
|
+
};
|
|
12917
|
+
for (const cookie of upserts) expect(cookieKey(cookie), cookie);
|
|
12918
|
+
for (const cookie of deletes) expect(cookieKey(cookie), void 0);
|
|
12912
12919
|
await connection.adapter.apply({ upserts, deletes, versionToken: delta.versionToken });
|
|
12913
12920
|
for (const cookie of upserts) if (!connection.pending.has(cookieKey(cookie))) connection.current.set(cookieKey(cookie), cookie);
|
|
12914
12921
|
for (const cookie of deletes) if (!connection.pending.has(cookieKey(cookie))) connection.current.delete(cookieKey(cookie));
|
package/docs/AXIOMS.md
CHANGED
|
@@ -9,7 +9,7 @@ numbered product axioms. This map ties them to the tests that show them.
|
|
|
9
9
|
| 4 | One owned Chrome, restarted on next use | `real-browser.test.ts` crash recovery and competing-owner tests |
|
|
10
10
|
| 5–6 | Sessions see only their own tabs, reopen after restarts, and stream only themselves | real-browser side-by-side and live-view tests; real-lifecycle CDP and CLI isolation; `service.test.ts` restart reopen |
|
|
11
11
|
| 7–9 | Page identity, cancellation, and bounded output | real-browser duplicate-URL capture; real-lifecycle operation drain; `service`, `process` and `parity` tests |
|
|
12
|
-
| 10–14 | Cookies sync through the encrypted jar without idle scans; secrets stay out of output | `cookies`, `cookie-coordinator`, `cookie-notifications`, `auth`, `adapters` tests; real-browser idle and loopback tests |
|
|
12
|
+
| 10–14 | Cookies sync through the encrypted jar without idle scans; secrets stay out of output; cookie observation never blocks browsing | `cookies`, `cookie-coordinator`, `cookie-notifications`, `auth`, `adapters` tests; real-browser idle and loopback tests; real-cookie-events upgraded-profile and refused-observer tests |
|
|
13
13
|
| 15 | Recording proves capture and stays bounded | `recording.test.ts`; real-lifecycle records and decodes page imagery |
|
|
14
14
|
| 16 | Context enters through ports; events are sanitized | `events.test.ts`, `adapters.test.ts` |
|
|
15
15
|
| 17 | Existing state is imported safely | `persistence.test.ts` legacy upgrade |
|
package/docs/CHROME.md
CHANGED
|
@@ -39,7 +39,13 @@ arrive before or after that script. Both sides ask to start delivery, and
|
|
|
39
39
|
whichever comes second starts it; the worker then announces that it is
|
|
40
40
|
observing. Chrome stops an idle extension worker and restarts it for the next
|
|
41
41
|
cookie change; the new worker announces itself again, and that second
|
|
42
|
-
announcement brings one snapshot to cover the stop. Chrome keeps
|
|
42
|
+
announcement brings one snapshot to cover the stop. Chrome keeps running the
|
|
43
|
+
script it saved under a worker's file name even after that file changes, so the
|
|
44
|
+
worker's file is named after its source and a profile from an earlier release
|
|
45
|
+
runs this release's worker. Cookie observation never decides whether Chrome may
|
|
46
|
+
browse: if it cannot start within 10 seconds, or stops later, Browser logs a
|
|
47
|
+
warning and keeps browsing with the account's cookies; cookie changes made in
|
|
48
|
+
Chrome while it is unobserved do not reach the account. Chrome keeps its
|
|
43
49
|
normal platform credential storage; Browser does not request the basic password
|
|
44
50
|
store or mock keychain.
|
|
45
51
|
|
|
@@ -143,5 +149,7 @@ page examination starts with 1000 cookies and requires 60 edits to cause zero
|
|
|
143
149
|
full-store scans, one encrypted row write per commit (edits that arrive during a
|
|
144
150
|
commit coalesce, so at most 60), and under 120 KB of encoded state. Observer
|
|
145
151
|
reload, worker restart, HttpOnly and partitioned events are exercised in real
|
|
146
|
-
Chrome.
|
|
152
|
+
Chrome. Another browser's edits that arrive while Chrome is still writing the
|
|
153
|
+
previous one must leave Chrome and the account at the last edit, with none of
|
|
154
|
+
Chrome's reports of those writes taken for its own edits. Timing/CPU observations describe this local workload, not a universal
|
|
147
155
|
website latency guarantee.
|
package/docs/COOKIES.md
CHANGED
|
@@ -27,6 +27,8 @@ Each adapter serializes its events. Pending changes to the same identity
|
|
|
27
27
|
coalesce while existing work is in flight; there is no debounce delay. Applying
|
|
28
28
|
a jar change records its expected echo before writing the physical store.
|
|
29
29
|
That echo never becomes a new local edit, including after an interrupted apply.
|
|
30
|
+
A store reports writes in order but can report one after a newer write to the
|
|
31
|
+
same cookie, so each identity keeps every echo it still expects, oldest first.
|
|
30
32
|
On first contact, physical cookies contribute only identities the jar has never
|
|
31
33
|
known. Stale disk cookies cannot resurrect a deletion; an observed new edit can.
|
|
32
34
|
An unavailable store retains pending changes and waits for another cookie or
|
package/docs/TESTING.md
CHANGED
|
@@ -21,7 +21,8 @@ npm run verify # check, build, test, package/install
|
|
|
21
21
|
- all 22 actions reachable through SDK, CLI, MCP, REST, and Toolbox, from one
|
|
22
22
|
action manifest; an MCP call without a session uses its chat's session
|
|
23
23
|
- two-way cookie sync: sign-ins and sign-outs reach the account, failed
|
|
24
|
-
applies retry without echo,
|
|
24
|
+
applies retry without echo, echoes reported after a newer write,
|
|
25
|
+
partitioned cookies, protected hosts
|
|
25
26
|
- record-level merges, tombstones, corrupt-jar health, wrong-key redaction
|
|
26
27
|
- auth filtering, login token TTL and hashing, deprecated-input compatibility,
|
|
27
28
|
serialized live login transitions
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -67,6 +67,14 @@ matching `cookie-jar.sqlite` and `browser.key` backup while the runtime is stopp
|
|
|
67
67
|
using the SQLite-safe backup procedure in [Operations](./OPERATIONS.md).
|
|
68
68
|
Named auth bundles are separate.
|
|
69
69
|
|
|
70
|
+
## "Chrome cookie changes are not reaching the account; browsing continues."
|
|
71
|
+
|
|
72
|
+
Chrome refused or lost Browser's private cookie extension, for example under a
|
|
73
|
+
policy that forbids extensions. Agents keep browsing, signed in with the
|
|
74
|
+
account's cookies, but sign-ins made in this Chrome do not reach the account or
|
|
75
|
+
the desktop app. Check `chrome://policy` for extension restrictions on the
|
|
76
|
+
machine; the next Chrome start tries the extension again.
|
|
77
|
+
|
|
70
78
|
## REST returns 401 or 403
|
|
71
79
|
|
|
72
80
|
Health is the only unauthenticated route. Send the exact runtime token.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amalgm/browser",
|
|
3
|
-
"version": "0.1.2-main.
|
|
3
|
+
"version": "0.1.2-main.37273465332",
|
|
4
4
|
"description": "The amalgm runtime's browser: one Chrome, a session per chat, and the account's cookies in every view.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -151,11 +151,11 @@
|
|
|
151
151
|
"@amalgm/core"
|
|
152
152
|
]
|
|
153
153
|
},
|
|
154
|
-
"gitHead": "
|
|
154
|
+
"gitHead": "ed02be7db3c304f4cf413a9c7322ae45db20898d",
|
|
155
155
|
"amalgmSource": {
|
|
156
156
|
"repository": "amalgm-inc/amalgm-browser",
|
|
157
157
|
"branch": "main",
|
|
158
|
-
"commit": "
|
|
159
|
-
"occurrence": "
|
|
158
|
+
"commit": "ed02be7db3c304f4cf413a9c7322ae45db20898d",
|
|
159
|
+
"occurrence": "37273465332"
|
|
160
160
|
}
|
|
161
161
|
}
|