@tomflow/proflow-platform-host 0.1.29 → 0.1.30

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @tomflow/proflow-platform-host
2
2
 
3
+ ## 0.1.30
4
+
5
+ ### Patch Changes
6
+
7
+ - Fail closed on ambiguous Task/Worker Permission identity and keep generic application-boundary observability from fabricating an authoritative side-effect state.
8
+
3
9
  ## 0.1.29
4
10
 
5
11
  ### Patch Changes
@@ -6,7 +6,7 @@ export declare const behaviorAdapter: {
6
6
  ok: true;
7
7
  status: "SUCCEEDED";
8
8
  moduleRef: "platform-host";
9
- moduleVersion: "0.1.29";
9
+ moduleVersion: "0.1.30";
10
10
  data: {
11
11
  endpoint: string;
12
12
  stateRoot: string;
@@ -24,7 +24,7 @@ export declare const behaviorAdapter: {
24
24
  readonly ok: true;
25
25
  readonly status: "SUCCEEDED";
26
26
  readonly moduleRef: "platform-host";
27
- readonly moduleVersion: "0.1.29";
27
+ readonly moduleVersion: "0.1.30";
28
28
  };
29
29
  observedEffects: string[];
30
30
  }>;
@@ -34,7 +34,7 @@ export declare const behaviorAdapter: {
34
34
  ok: true;
35
35
  status: "SUCCEEDED";
36
36
  moduleRef: "platform-host";
37
- moduleVersion: "0.1.29";
37
+ moduleVersion: "0.1.30";
38
38
  data: {
39
39
  setupStatus: "READY";
40
40
  runtimeStatus: "RUNNING" | "STOPPED";
@@ -48,7 +48,7 @@ export declare const behaviorAdapter: {
48
48
  ok: true;
49
49
  status: "SUCCEEDED";
50
50
  moduleRef: "platform-host";
51
- moduleVersion: "0.1.29";
51
+ moduleVersion: "0.1.30";
52
52
  data: {
53
53
  endpoint: string;
54
54
  stateRoot: string;
@@ -66,7 +66,7 @@ export declare const behaviorAdapter: {
66
66
  ok: true;
67
67
  status: "SUCCEEDED";
68
68
  moduleRef: "platform-host";
69
- moduleVersion: "0.1.29";
69
+ moduleVersion: "0.1.30";
70
70
  data: {
71
71
  docs: string;
72
72
  };
@@ -79,7 +79,7 @@ export declare const behaviorAdapter: {
79
79
  ok: true;
80
80
  status: "SUCCEEDED";
81
81
  moduleRef: "platform-host";
82
- moduleVersion: "0.1.29";
82
+ moduleVersion: "0.1.30";
83
83
  data: {
84
84
  host: string;
85
85
  port: number;
@@ -90,7 +90,7 @@ export declare const behaviorAdapter: {
90
90
  result: {
91
91
  contract: "deployment.result.v1";
92
92
  moduleRef: "platform-host";
93
- moduleVersion: "0.1.29";
93
+ moduleVersion: "0.1.30";
94
94
  ok: false;
95
95
  status: "FAILED";
96
96
  error: {
@@ -107,7 +107,7 @@ export declare const behaviorAdapter: {
107
107
  readonly ok: true;
108
108
  readonly status: "SUCCEEDED";
109
109
  readonly moduleRef: "platform-host";
110
- readonly moduleVersion: "0.1.29";
110
+ readonly moduleVersion: "0.1.30";
111
111
  };
112
112
  observedEffects: string[];
113
113
  } | {
@@ -116,11 +116,11 @@ export declare const behaviorAdapter: {
116
116
  readonly ok: true;
117
117
  readonly status: "SUCCEEDED";
118
118
  readonly moduleRef: "platform-host";
119
- readonly moduleVersion: "0.1.29";
119
+ readonly moduleVersion: "0.1.30";
120
120
  } | {
121
121
  contract: "deployment.result.v1";
122
122
  moduleRef: "platform-host";
123
- moduleVersion: "0.1.29";
123
+ moduleVersion: "0.1.30";
124
124
  ok: false;
125
125
  status: "FAILED";
126
126
  error: {
@@ -3,7 +3,7 @@ export declare const descriptor: {
3
3
  readonly contractVersion: "1.0.0";
4
4
  readonly moduleRef: "platform-host";
5
5
  readonly packageName: "@tomflow/proflow-platform-host";
6
- readonly moduleVersion: "0.1.29";
6
+ readonly moduleVersion: "0.1.30";
7
7
  readonly kind: "service";
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: "platform-host",
5
5
  packageName: "@tomflow/proflow-platform-host",
6
- moduleVersion: "0.1.29",
6
+ moduleVersion: "0.1.30",
7
7
  kind: "service",
8
8
  templateVersion: "1.0.0",
9
9
  platformCompatibility: ">=1.0.0 <2.0.0",
@@ -21,9 +21,12 @@ export function resolveBrowserPermissionTaskBinding(input) {
21
21
  binding.workerRef !== input.workerRef ||
22
22
  binding.conversationLocator !== input.conversationLocator)
23
23
  return null;
24
- // The same durable Worker/Conversation may be reused by multiple Tasks.
25
- // Exact duplicates strengthen the same identity; only disagreement is ambiguous.
26
- match ??= binding;
24
+ // Worker/Conversation identity is Task-scoped. A second Task match is
25
+ // ambiguous even when every field is byte-identical; fail closed rather
26
+ // than authorizing a permission against the wrong Task occurrence.
27
+ if (match !== null)
28
+ return null;
29
+ match = binding;
27
30
  }
28
31
  }
29
32
  return match;
@@ -172,6 +172,9 @@ export function createHostOperationObserver(emit) {
172
172
  const errorCode = errorValue && typeof errorValue === "object"
173
173
  ? code(Reflect.get(errorValue, "code")) ?? code(Reflect.get(errorValue, "message"))
174
174
  : undefined;
175
+ const sideEffectState = Reflect.get(result, "sideEffectState");
176
+ const hasAuthoritativeSideEffectState = typeof sideEffectState === "string" &&
177
+ ["NOT_STARTED", "STARTED", "APPLIED", "NOT_APPLIED", "UNKNOWN"].includes(sideEffectState);
175
178
  const entry = {
176
179
  contract: "proflow.operation-boundary.v1",
177
180
  eventId: `host-event:${randomUUID()}`,
@@ -194,7 +197,7 @@ export function createHostOperationObserver(emit) {
194
197
  ...axes,
195
198
  decision: code(Reflect.get(result, "decision")), reason: code(Reflect.get(result, "reason")),
196
199
  status: failed ? "FAILED" : Reflect.get(result, "decision") === "HUMAN_REQUIRED" ? "BLOCKED" : Reflect.get(result, "decision") === "DEFER" ? "DEFERRED" : "SUCCEEDED",
197
- sideEffectState: ["APPLIED", "NOT_APPLIED", "NOT_STARTED", "UNKNOWN"].includes(String(Reflect.get(result, "sideEffectState"))) ? String(Reflect.get(result, "sideEffectState")) : "UNKNOWN",
200
+ ...(hasAuthoritativeSideEffectState ? { sideEffectState } : {}),
198
201
  ...(failed
199
202
  ? { errorCode: errorCode ?? "HOST_APPLICATION_FAILED" }
200
203
  : {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tomflow/proflow-platform-host",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -24,19 +24,19 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "zod": "4.1.12",
27
- "@tomflow/proflow-agent-runtime": "^0.1.17",
28
- "@tomflow/proflow-execution-browser-extension": "^0.1.61",
29
- "@tomflow/proflow-execution-contracts": "^0.1.11",
30
- "@tomflow/proflow-module-contract": "^0.1.13",
27
+ "@tomflow/proflow-execution-browser-extension": "^0.1.62",
31
28
  "@tomflow/proflow-task-migration-runner": "^0.1.11",
29
+ "@tomflow/proflow-task-orchestration": "^0.1.11",
32
30
  "@tomflow/proflow-task-store-sqlite": "^0.1.12",
33
- "@tomflow/proflow-task-orchestration": "^0.1.11"
31
+ "@tomflow/proflow-agent-runtime": "^0.1.17",
32
+ "@tomflow/proflow-module-contract": "^0.1.13",
33
+ "@tomflow/proflow-execution-contracts": "^0.1.11"
34
34
  },
35
35
  "devDependencies": {
36
- "@tomflow/proflow-agent-gateway": "^0.1.18",
37
- "@tomflow/proflow-execution-runtime": "^0.1.19",
38
36
  "@tomflow/proflow-deployment-conformance": "^0.1.13",
39
- "@tomflow/proflow-model-runtime": "^0.1.25"
37
+ "@tomflow/proflow-execution-runtime": "^0.1.19",
38
+ "@tomflow/proflow-model-runtime": "^0.1.25",
39
+ "@tomflow/proflow-agent-gateway": "^0.1.18"
40
40
  },
41
41
  "description": "Provides the ProFlow local application composition root that binds Task, Agent, Execution and Model owner transports.",
42
42
  "keywords": [
@@ -3,7 +3,7 @@
3
3
  "contractVersion": "1.0.0",
4
4
  "moduleRef": "platform-host",
5
5
  "packageName": "@tomflow/proflow-platform-host",
6
- "moduleVersion": "0.1.29",
6
+ "moduleVersion": "0.1.30",
7
7
  "kind": "service",
8
8
  "templateVersion": "1.0.0",
9
9
  "platformCompatibility": ">=1.0.0 <2.0.0",