@amalgm/browser 0.1.2-preview.37158931600 → 0.1.2-preview.37254096068

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.
@@ -2,7 +2,7 @@ import { type CdpClient } from '../cdp/client.js';
2
2
  import type { BrowserCookieChange } from '../cookies/types.js';
3
3
  /**
4
4
  * One trusted extension worker on the existing control socket, independent of page count.
5
- * Chrome stops and restarts the worker on its own; each new worker context resumes delivery.
5
+ * Chrome stops and restarts the worker on its own; each restarted worker announces itself and resumes delivery.
6
6
  */
7
7
  export declare function observeChromeCookies(input: {
8
8
  control: CdpClient;
@@ -2,7 +2,7 @@ import { deadline } from '../cdp/client.js';
2
2
  import { cookieObserverDirectory } from './cookie-observer.js';
3
3
  /**
4
4
  * One trusted extension worker on the existing control socket, independent of page count.
5
- * Chrome stops and restarts the worker on its own; each new worker context resumes delivery.
5
+ * Chrome stops and restarts the worker on its own; each restarted worker announces itself and resumes delivery.
6
6
  */
7
7
  export async function observeChromeCookies(input) {
8
8
  let extensionId;
@@ -16,17 +16,22 @@ export async function observeChromeCookies(input) {
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
18
  const fail = (error) => { failed(error); input.failed(); };
19
- // A worker context exists. Every context after the first restarted a worker, so a
19
+ // The worker announces each start. Every start after the first restarted a worker, so a
20
20
  // snapshot covers anything it could not deliver while stopped.
21
- const resume = async (current) => {
21
+ const observed = () => {
22
22
  if (started)
23
23
  input.changed(undefined);
24
24
  started = true;
25
- const result = await current.call('Runtime.evaluate', { expression: 'amalgmObserveCookies()' });
26
- if (result.exceptionDetails)
27
- throw new Error('Chrome cookie observer did not initialize.');
28
25
  ready();
29
26
  };
27
+ // Chrome reports a worker context before its script runs. A script that already ran before
28
+ // the bindings existed starts here; one that runs later starts itself and announces it.
29
+ const start = async (current) => {
30
+ const result = await current.call('Runtime.evaluate', { expression: 'globalThis.amalgmObserveCookies?.()' });
31
+ const failure = result.exceptionDetails;
32
+ if (failure)
33
+ throw new Error(`Chrome cookie observer did not initialize: ${(failure.exception?.description ?? failure.text ?? '').split('\n')[0]}`);
34
+ };
30
35
  const attach = async (target) => {
31
36
  if (closed || target.type !== 'service_worker' || !extensionId
32
37
  || !target.url?.startsWith(`chrome-extension://${extensionId}/`) || !target.targetId || observing === target.targetId)
@@ -43,12 +48,15 @@ export async function observeChromeCookies(input) {
43
48
  session = current;
44
49
  sessionId = attached.sessionId;
45
50
  current.on('Runtime.bindingCalled', ({ name, payload }) => {
46
- if (name === 'amalgmCookieEvent' && typeof payload === 'string')
51
+ if (name === 'amalgmCookiesObserving')
52
+ observed();
53
+ else if (name === 'amalgmCookieEvent' && typeof payload === 'string')
47
54
  input.changed(fromChrome(JSON.parse(payload)));
48
55
  });
49
- current.on('Runtime.executionContextCreated', () => { void resume(current).catch(fail); });
50
- // The binding exists before Runtime.enable reports the worker's current context.
56
+ current.on('Runtime.executionContextCreated', () => { void start(current).catch(fail); });
57
+ // Both bindings exist before Runtime.enable reports the worker's current context.
51
58
  await current.call('Runtime.addBinding', { name: 'amalgmCookieEvent' });
59
+ await current.call('Runtime.addBinding', { name: 'amalgmCookiesObserving' });
52
60
  await current.call('Runtime.enable');
53
61
  };
54
62
  const created = input.control.on('Target.targetCreated', ({ targetInfo }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-changes.js","sourceRoot":"","sources":["../../../src/chrome/cookie-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookie-changes.js","sourceRoot":"","sources":["../../../src/chrome/cookie-changes.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,11 @@ import path from 'node:path';
4
4
  function worker() {
5
5
  const scope = globalThis;
6
6
  const pending = new Map();
7
- let ready = false;
7
+ let observing = false;
8
8
  scope.chrome.cookies.onChanged.addListener(event => {
9
9
  if (event.removed && event.cause === 'overwrite')
10
10
  return;
11
- if (ready)
11
+ if (observing)
12
12
  scope.amalgmCookieEvent(JSON.stringify(event));
13
13
  else {
14
14
  const cookie = event.cookie;
@@ -16,12 +16,19 @@ function worker() {
16
16
  pending.set(key, event);
17
17
  }
18
18
  });
19
+ // Chrome reports a worker context before it runs this script, so the controller's bindings
20
+ // may arrive before or after it. Both sides call this; whichever comes second starts delivery
21
+ // once and announces it.
19
22
  scope.amalgmObserveCookies = () => {
20
- ready = true;
23
+ if (observing || !scope.amalgmCookiesObserving || !scope.amalgmCookieEvent)
24
+ return;
25
+ observing = true;
26
+ scope.amalgmCookiesObserving('');
21
27
  for (const event of pending.values())
22
28
  scope.amalgmCookieEvent(JSON.stringify(event));
23
29
  pending.clear();
24
30
  };
31
+ scope.amalgmObserveCookies();
25
32
  }
26
33
  export function cookieObserverDirectory(root) {
27
34
  const directory = path.join(root, 'cookie-observer');
@@ -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,UAIb,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IACrD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,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,KAAK;YAAE,KAAK,CAAC,iBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACtD,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,KAAK,CAAC,oBAAoB,GAAG,GAAG,EAAE;QAChC,KAAK,GAAG,IAAI,CAAC;QACb,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,iBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;AACJ,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,WAAW,EAAE;KAC5C,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC;AACnB,CAAC"}
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,WAAW,EAAE;KAC5C,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -5,7 +5,10 @@ import { createSurfaceRecord } from './surface/create.js';
5
5
  import { configureSurfaceEvents } from './surface/events.js';
6
6
  import { SurfacePresentation } from './surface/presentation.js';
7
7
  import { normalizeBounds, stateFor, validSurfaceId, withDeadline } from './surface/state.js';
8
- const CAPTURE_TIMEOUT_MS = 300;
8
+ // capturePage can stall on a view that is not painting; this only bounds that stall. The first
9
+ // frame after a move or resize takes a few hundred milliseconds, and how long a person waits
10
+ // for it is the renderer's decision.
11
+ const CAPTURE_STALL_MS = 2_000;
9
12
  export function createBrowserSurfaceController(options) {
10
13
  const surfaces = new Map();
11
14
  const ownerSurfaceIds = new Map();
@@ -104,7 +107,7 @@ export function createBrowserSurfaceController(options) {
104
107
  if (!record || record.view.webContents.isDestroyed())
105
108
  return null;
106
109
  try {
107
- const image = await withDeadline(record.view.webContents.capturePage(), CAPTURE_TIMEOUT_MS);
110
+ const image = await withDeadline(record.view.webContents.capturePage(), CAPTURE_STALL_MS);
108
111
  if (image.isEmpty())
109
112
  return null;
110
113
  const size = image.getSize();
@@ -1 +1 @@
1
- {"version":3,"file":"surface-controller.js","sourceRoot":"","sources":["../../../src/electron/surface-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface-controller.js","sourceRoot":"","sources":["../../../src/electron/surface-controller.ts"],"names":[],"mappings":"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"}
@@ -12059,7 +12059,7 @@ var SurfacePresentation = class {
12059
12059
  };
12060
12060
 
12061
12061
  // src/electron/surface-controller.ts
12062
- var CAPTURE_TIMEOUT_MS = 300;
12062
+ var CAPTURE_STALL_MS = 2e3;
12063
12063
  function createBrowserSurfaceController(options) {
12064
12064
  const surfaces = /* @__PURE__ */ new Map();
12065
12065
  const ownerSurfaceIds = /* @__PURE__ */ new Map();
@@ -12151,7 +12151,7 @@ function createBrowserSurfaceController(options) {
12151
12151
  const record = ownedSurface(event.sender, surfaceId);
12152
12152
  if (!record || record.view.webContents.isDestroyed()) return null;
12153
12153
  try {
12154
- const image = await withDeadline(record.view.webContents.capturePage(), CAPTURE_TIMEOUT_MS);
12154
+ const image = await withDeadline(record.view.webContents.capturePage(), CAPTURE_STALL_MS);
12155
12155
  if (image.isEmpty()) return null;
12156
12156
  const size = image.getSize();
12157
12157
  const targetWidth = Math.min(size.width, Math.max(1, record.bounds.width || size.width));
package/docs/CHROME.md CHANGED
@@ -33,9 +33,13 @@ Chrome's native debugging-listening event admits the process, within a
33
33
  20-second deadline. Browser attaches its private cookie extension to the
34
34
  account's default profile and reconciles it with the encrypted jar
35
35
  (see [cookies](./COOKIES.md)). The extension uses one session on the existing
36
- control connection, independently of the number of pages. Chrome stops an
37
- idle extension worker and restarts it for the next cookie change; the new
38
- worker context resumes observation, with one snapshot to cover the stop. Chrome keeps its
36
+ control connection, independently of the number of pages. Chrome reports a
37
+ worker's context before it runs the worker script, so Browser's bindings can
38
+ arrive before or after that script. Both sides ask to start delivery, and
39
+ whichever comes second starts it; the worker then announces that it is
40
+ observing. Chrome stops an idle extension worker and restarts it for the next
41
+ cookie change; the new worker announces itself again, and that second
42
+ announcement brings one snapshot to cover the stop. Chrome keeps its
39
43
  normal platform credential storage; Browser does not request the basic password
40
44
  store or mock keychain.
41
45
 
@@ -48,7 +48,10 @@ the nearest whole window point, the only positions a native view can take.
48
48
  The view paints its own white page background, so the box under it paints
49
49
  nothing. A hidden tab's view stays in its window, invisible. Only the
50
50
  renderer that created a tab can update, command, capture, or destroy it, and
51
- its tabs close when that renderer navigates away or is destroyed. Commands are
51
+ its tabs close when that renderer navigates away or is destroyed. Capture
52
+ returns the tab's current frame as a JPEG, or `null` when the tab paints no
53
+ frame within two seconds. The first frame after a move or resize takes a few
54
+ hundred milliseconds; the renderer decides how long to wait for it. Commands are
52
55
  navigate, back, forward, reload, focus, find, stop-find, and zoom. The preload
53
56
  reports `capabilities.version` 2 for this contract.
54
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amalgm/browser",
3
- "version": "0.1.2-preview.37158931600",
3
+ "version": "0.1.2-preview.37254096068",
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",
@@ -150,11 +150,11 @@
150
150
  "@amalgm/core"
151
151
  ]
152
152
  },
153
- "gitHead": "0b6a0eecacc835a465093a3e83a8a6edabe4e70a",
153
+ "gitHead": "9a5d40729134e87c55fdbb7a52ad42711eef7163",
154
154
  "amalgmSource": {
155
155
  "repository": "amalgm-inc/amalgm-browser",
156
156
  "branch": "preview",
157
- "commit": "0b6a0eecacc835a465093a3e83a8a6edabe4e70a",
158
- "occurrence": "37158931600"
157
+ "commit": "9a5d40729134e87c55fdbb7a52ad42711eef7163",
158
+ "occurrence": "37254096068"
159
159
  }
160
160
  }