@tomflow/proflow-execution-browser-extension 0.1.26 → 0.1.27

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.
@@ -47,7 +47,7 @@ export declare const behaviorAdapter: {
47
47
  ok: true;
48
48
  status: "SUCCEEDED";
49
49
  moduleRef: "execution-browser-extension";
50
- moduleVersion: "0.1.26";
50
+ moduleVersion: "0.1.27";
51
51
  data: {
52
52
  loadDir: string;
53
53
  };
@@ -60,7 +60,7 @@ export declare const behaviorAdapter: {
60
60
  readonly ok: true;
61
61
  readonly status: "SUCCEEDED";
62
62
  readonly moduleRef: "execution-browser-extension";
63
- readonly moduleVersion: "0.1.26";
63
+ readonly moduleVersion: "0.1.27";
64
64
  };
65
65
  observedEffects: never[];
66
66
  }>;
@@ -70,7 +70,7 @@ export declare const behaviorAdapter: {
70
70
  ok: true;
71
71
  status: "SUCCEEDED";
72
72
  moduleRef: "execution-browser-extension";
73
- moduleVersion: "0.1.26";
73
+ moduleVersion: "0.1.27";
74
74
  data: {
75
75
  setupStatus: "ACTION_REQUIRED" | "READY";
76
76
  runtimeStatus: "NOT_APPLICABLE";
@@ -95,7 +95,7 @@ export declare const behaviorAdapter: {
95
95
  result: {
96
96
  contract: "deployment.result.v1";
97
97
  moduleRef: "execution-browser-extension";
98
- moduleVersion: "0.1.26";
98
+ moduleVersion: "0.1.27";
99
99
  ok: false;
100
100
  status: "ACTION_REQUIRED";
101
101
  data: {
@@ -127,14 +127,14 @@ export declare const behaviorAdapter: {
127
127
  readonly ok: true;
128
128
  readonly status: "SUCCEEDED";
129
129
  readonly moduleRef: "execution-browser-extension";
130
- readonly moduleVersion: "0.1.26";
130
+ readonly moduleVersion: "0.1.27";
131
131
  };
132
132
  observedEffects: string[];
133
133
  } | {
134
134
  result: {
135
135
  contract: "deployment.result.v1";
136
136
  moduleRef: "execution-browser-extension";
137
- moduleVersion: "0.1.26";
137
+ moduleVersion: "0.1.27";
138
138
  ok: false;
139
139
  status: "FAILED";
140
140
  error: {
@@ -167,7 +167,7 @@ export declare const behaviorAdapter: {
167
167
  ok: true;
168
168
  status: "SUCCEEDED";
169
169
  moduleRef: "execution-browser-extension";
170
- moduleVersion: "0.1.26";
170
+ moduleVersion: "0.1.27";
171
171
  data: {
172
172
  docs: string;
173
173
  };
@@ -180,11 +180,11 @@ export declare const behaviorAdapter: {
180
180
  readonly ok: true;
181
181
  readonly status: "SUCCEEDED";
182
182
  readonly moduleRef: "execution-browser-extension";
183
- readonly moduleVersion: "0.1.26";
183
+ readonly moduleVersion: "0.1.27";
184
184
  } | {
185
185
  contract: "deployment.result.v1";
186
186
  moduleRef: "execution-browser-extension";
187
- moduleVersion: "0.1.26";
187
+ moduleVersion: "0.1.27";
188
188
  ok: false;
189
189
  status: "FAILED";
190
190
  error: {
@@ -201,7 +201,7 @@ export declare const behaviorAdapter: {
201
201
  readonly ok: true;
202
202
  readonly status: "SUCCEEDED";
203
203
  readonly moduleRef: "execution-browser-extension";
204
- readonly moduleVersion: "0.1.26";
204
+ readonly moduleVersion: "0.1.27";
205
205
  };
206
206
  observedEffects: never[];
207
207
  }>;
@@ -3,7 +3,7 @@ export declare const descriptor: {
3
3
  readonly contractVersion: "1.0.0";
4
4
  readonly moduleRef: "execution-browser-extension";
5
5
  readonly packageName: "@tomflow/proflow-execution-browser-extension";
6
- readonly moduleVersion: "0.1.26";
6
+ readonly moduleVersion: "0.1.27";
7
7
  readonly kind: "browser-extension";
8
8
  readonly templateVersion: "1.0.0";
9
9
  readonly platformCompatibility: ">=1.0.0 <2.0.0";
@@ -3,7 +3,7 @@ export const descriptor = {
3
3
  contractVersion: "1.0.0",
4
4
  moduleRef: "execution-browser-extension",
5
5
  packageName: "@tomflow/proflow-execution-browser-extension",
6
- moduleVersion: "0.1.26",
6
+ moduleVersion: "0.1.27",
7
7
  kind: "browser-extension",
8
8
  templateVersion: "1.0.0",
9
9
  platformCompatibility: ">=1.0.0 <2.0.0",
@@ -13866,6 +13866,13 @@ function createTaskObserver(options) {
13866
13866
  return Object.freeze({ advance, drive });
13867
13867
  }
13868
13868
 
13869
+ // packages/execution-browser-extension/src/recovery-trigger.ts
13870
+ function shouldTriggerObserverRecovery(previous, current) {
13871
+ if (current.pageState !== "IDLE") return false;
13872
+ if (!previous) return true;
13873
+ return previous.pageState !== "IDLE" || previous.url !== current.url || previous.contentInstanceId !== current.contentInstanceId || previous.activityKind !== current.activityKind;
13874
+ }
13875
+
13869
13876
  // packages/execution-browser-extension/extension/background.ts
13870
13877
  var extensionInstanceId = `extension:${crypto.randomUUID()}`;
13871
13878
  var sessions = /* @__PURE__ */ new Map();
@@ -14693,6 +14700,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
14693
14700
  return true;
14694
14701
  }
14695
14702
  if (message.type === "PROFLOW_CONTENT_OBSERVATION" && message.observation && sender.tab?.id !== void 0 && sender.tab.windowId !== void 0) {
14703
+ const previous = sessions.get(sender.tab.id);
14696
14704
  const observed = {
14697
14705
  ...message.observation,
14698
14706
  tabId: sender.tab.id,
@@ -14700,7 +14708,8 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
14700
14708
  };
14701
14709
  sessions.set(sender.tab.id, observed);
14702
14710
  void persistSnapshot();
14703
- if (observed.pageState === "IDLE") void runObserverRecovery();
14711
+ if (shouldTriggerObserverRecovery(previous, observed))
14712
+ void runObserverRecovery();
14704
14713
  sendResponse({ accepted: true, extensionInstanceId });
14705
14714
  return;
14706
14715
  }
@@ -0,0 +1,8 @@
1
+ type RecoveryObservation = {
2
+ url: string;
3
+ contentInstanceId: string;
4
+ pageState: "IDLE" | "BUSY" | "BLOCKED" | "UNKNOWN";
5
+ activityKind: string | null;
6
+ };
7
+ export declare function shouldTriggerObserverRecovery(previous: RecoveryObservation | undefined, current: RecoveryObservation): boolean;
8
+ export {};
@@ -0,0 +1,10 @@
1
+ export function shouldTriggerObserverRecovery(previous, current) {
2
+ if (current.pageState !== "IDLE")
3
+ return false;
4
+ if (!previous)
5
+ return true;
6
+ return (previous.pageState !== "IDLE" ||
7
+ previous.url !== current.url ||
8
+ previous.contentInstanceId !== current.contentInstanceId ||
9
+ previous.activityKind !== current.activityKind);
10
+ }
@@ -12,6 +12,7 @@ import {
12
12
  type TaskObserverDiagnosticAssessment,
13
13
  type TaskObserverDiagnosticFailure,
14
14
  } from "../src/task-observer.js";
15
+ import { shouldTriggerObserverRecovery } from "../src/recovery-trigger.js";
15
16
 
16
17
  type PageState = "IDLE" | "BUSY" | "BLOCKED" | "UNKNOWN";
17
18
  type ActivityKind =
@@ -1218,6 +1219,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
1218
1219
  sender.tab?.id !== undefined &&
1219
1220
  sender.tab.windowId !== undefined
1220
1221
  ) {
1222
+ const previous = sessions.get(sender.tab.id);
1221
1223
  const observed: ContentObservation = {
1222
1224
  ...message.observation,
1223
1225
  tabId: sender.tab.id,
@@ -1225,7 +1227,8 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
1225
1227
  };
1226
1228
  sessions.set(sender.tab.id, observed);
1227
1229
  void persistSnapshot();
1228
- if (observed.pageState === "IDLE") void runObserverRecovery();
1230
+ if (shouldTriggerObserverRecovery(previous, observed))
1231
+ void runObserverRecovery();
1229
1232
  sendResponse({ accepted: true, extensionInstanceId });
1230
1233
  return;
1231
1234
  }
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "ProFlow Execution Browser",
4
- "version": "0.1.26",
4
+ "version": "0.1.27",
5
5
  "permissions": [
6
6
  "tabs",
7
7
  "storage",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tomflow/proflow-execution-browser-extension",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "description": "Execution-owned MV3 Browser executor, evidence provider and browser application surface.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -27,8 +27,8 @@
27
27
  "SETUP.md"
28
28
  ],
29
29
  "dependencies": {
30
- "@tomflow/proflow-execution-contracts": "^0.1.10",
31
- "@tomflow/proflow-module-contract": "^0.1.13"
30
+ "@tomflow/proflow-module-contract": "^0.1.13",
31
+ "@tomflow/proflow-execution-contracts": "^0.1.10"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@tomflow/proflow-execution-runtime": "^0.1.15",
@@ -3,7 +3,7 @@
3
3
  "contractVersion": "1.0.0",
4
4
  "moduleRef": "execution-browser-extension",
5
5
  "packageName": "@tomflow/proflow-execution-browser-extension",
6
- "moduleVersion": "0.1.26",
6
+ "moduleVersion": "0.1.27",
7
7
  "kind": "browser-extension",
8
8
  "templateVersion": "1.0.0",
9
9
  "platformCompatibility": ">=1.0.0 <2.0.0",
package/CHANGELOG.md DELETED
@@ -1,31 +0,0 @@
1
- # @tomflow/proflow-execution-browser-extension
2
-
3
- ## 0.1.26
4
-
5
- ### Patch Changes
6
-
7
- - Close the Real-3 source candidate and real-workspace loop: fail-closed Browser submit verification, worker-bound Task mutation and WAKE confirmation, detached platform start ownership with shell return, discoverable docs, and targeted single-package Workspace update.
8
-
9
- ## 0.1.25
10
-
11
- ### Patch Changes
12
-
13
- - Preserve irreversible Custom GPT role authority and revalidate existing roles without duplicate creation
14
-
15
- ## 0.1.24
16
-
17
- ### Patch Changes
18
-
19
- - Cover Chrome's observed delayed Secure Preferences flush while waiting for unpacked-extension registration to become enabled after pairing.
20
-
21
- ## 0.1.23
22
-
23
- ### Patch Changes
24
-
25
- - Wait for Chrome unpacked-extension registration to become observably enabled after heartbeat pairing before Browser setup reports success.
26
-
27
- ## 0.1.22
28
-
29
- ### Patch Changes
30
-
31
- - Make Browser Extension static materialization version-idempotent, freeze real-user install/remove acceptance paths, and remove unsupported Reload/Disable-Enable test scenarios.