@askexenow/exe-os 0.9.376 → 0.9.377

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.
@@ -113,6 +113,12 @@ server {
113
113
  location = /health { auth_request off; proxy_pass http://sso_crm/healthz; }
114
114
  location = /healthz { auth_request off; proxy_pass http://sso_crm/healthz; }
115
115
 
116
+ # Logout endpoint must be exempt from SSO gate (bug 96f8b2b2). Without this,
117
+ # /auth/logout triggers 401 -> redirect to auth with logout URL as redirect param
118
+ # -> infinite loop. Let the app handle logout (clear its own cookies), then it
119
+ # redirects to auth.askexe.com/logout for the central SSO cookie clear.
120
+ location = /auth/logout { auth_request off; proxy_pass http://sso_crm/auth/logout; }
121
+
116
122
  location / { proxy_pass http://sso_crm; }
117
123
  }
118
124
 
@@ -151,6 +157,9 @@ server {
151
157
  location = /health { auth_request off; proxy_pass http://sso_wiki/api/ping; }
152
158
  location = /healthz { auth_request off; proxy_pass http://sso_wiki/api/ping; }
153
159
 
160
+ # Logout endpoint must be exempt from SSO gate (bug 96f8b2b2).
161
+ location = /auth/logout { auth_request off; proxy_pass http://sso_wiki/auth/logout; }
162
+
154
163
  location / { proxy_pass http://sso_wiki; }
155
164
  }
156
165
 
@@ -178,7 +187,27 @@ server {
178
187
  set $sso_session_cookie $cookie_sid; # Frappe/ERPNext session cookie
179
188
  include /etc/nginx/snippets/sso-redirect.conf;
180
189
 
181
- location / { proxy_pass http://sso_erp; }
190
+ # ERP is the one upstream that runs a realtime socket.io service with
191
+ # origin authentication: frappe's realtime middleware compares the Host
192
+ # header against the Origin header and rejects mismatches ("Invalid
193
+ # origin"), and the websocket upgrade needs explicit HTTP/1.1 + Upgrade
194
+ # headers. A bare proxy_pass sends Host: exe-erp-nginx and no upgrade
195
+ # headers, so every desk socket.io connection is rejected and the desk
196
+ # shows "Error connecting to socket.io: Invalid origin" (found in the
197
+ # 2026-09-02 four-domain demo verification).
198
+ location / {
199
+ proxy_pass http://sso_erp;
200
+ proxy_set_header Host $host;
201
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
202
+ # Literal https, matching the template-level convention at the top of
203
+ # this file: this edge is reached via cloudflared over plain HTTP, so
204
+ # $scheme would report "http" for public HTTPS requests.
205
+ proxy_set_header X-Forwarded-Proto https;
206
+ proxy_http_version 1.1;
207
+ proxy_set_header Upgrade $http_upgrade;
208
+ proxy_set_header Connection "upgrade";
209
+ proxy_read_timeout 75s;
210
+ }
182
211
  }
183
212
 
184
213
  # ── Dashboard ────────────────────────────────────────────────────────────────
@@ -202,6 +231,9 @@ server {
202
231
  location = /health { auth_request off; proxy_pass http://sso_dashboard/health; }
203
232
  location = /healthz { auth_request off; proxy_pass http://sso_dashboard/health; }
204
233
 
234
+ # Logout endpoint must be exempt from SSO gate (bug 96f8b2b2).
235
+ location = /auth/logout { auth_request off; proxy_pass http://sso_dashboard/auth/logout; }
236
+
205
237
  location / { proxy_pass http://sso_dashboard; }
206
238
  }
207
239
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "verified_at": "2026-09-02T09:40:41.834Z",
4
- "manifest_sha256": "924d73f2e3e72e239a43abb555ac8a9f7f9ae48f93dc26a8d786f82af3bd0c29",
5
- "package_version": "0.9.376"
3
+ "verified_at": "2026-09-02T16:27:58.480Z",
4
+ "manifest_sha256": "ece576114533d5eefd5825e465bb966df86e4e85d74e520fe6c9796f7f3d763f",
5
+ "package_version": "0.9.377"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "generated_at": "2026-09-02T09:40:41.714Z",
3
+ "generated_at": "2026-09-02T16:27:58.225Z",
4
4
  "files": [
5
5
  {
6
6
  "path": "active-agent-BOBBUJ74.js",
@@ -2464,7 +2464,7 @@
2464
2464
  },
2465
2465
  {
2466
2466
  "path": "hooks/manifest.json",
2467
- "sha256": "4ac8f0fc2ee9602262f21bf0e31caac32403b48cd52940f501f178a8b18b23e3",
2467
+ "sha256": "aafff5a963888bc061f2b3ce1bdbedc27cc8097b090b0876624bdeb67e0bc28d",
2468
2468
  "bytes": 1841
2469
2469
  },
2470
2470
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-09-02T09:40:41.435Z",
3
+ "generatedAt": "2026-09-02T16:27:58.137Z",
4
4
  "hashes": {
5
5
  "bug-report-worker.js": "8191d9e9ad67127e44969bb4671d21f3ac603dcc8dd978960f1e50b215eac475",
6
6
  "codex-stop-task-finalizer.js": "1c7ebddd870afd357eeab64172a88163ea02957eff527a5e13c5dd24e2f1a678",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.376",
3
+ "version": "0.9.377",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -1,14 +1,21 @@
1
1
  {
2
- "current": "0.9.376",
2
+ "current": "0.9.377",
3
3
  "notes": {
4
- "0.9.376": {
5
- "version": "0.9.376",
4
+ "0.9.377": {
5
+ "version": "0.9.377",
6
6
  "date": "2026-09-02",
7
7
  "features": [],
8
- "fixes": [],
8
+ "fixes": [
9
+ "fetch full history+tags in publish checkouts for the ref-provenance guard (#1029)",
10
+ "exempt /auth/logout from the SSO gate in crm/wiki/dashboard vhosts (bug 96f8b2b2) (#1027)",
11
+ "sso-edge erp vhost preserves Host + websocket upgrade headers (#1024)",
12
+ "refuse to push a tag stamped with a non-AskExe identity (#1021)"
13
+ ],
9
14
  "security": [],
10
15
  "other": [
11
- "bump to v0.9.376 (#1022)"
16
+ "bump to v0.9.377 (#1031)",
17
+ "cross-arch builds use the docker driver (Rosetta), not bundled qemu (#1030)",
18
+ "migrate release/x64 lanes off build-my onto the local ci-linux VM (#1026)"
12
19
  ],
13
20
  "migration_notes": []
14
21
  },
@@ -4,8 +4,8 @@
4
4
  "repo": "AskExe/exe-os",
5
5
  "service": "exe-os",
6
6
  "packageName": "@askexenow/exe-os",
7
- "version": "0.9.376",
8
- "image": "ghcr.io/askexe/exe-os:v0.9.376",
7
+ "version": "0.9.377",
8
+ "image": "ghcr.io/askexe/exe-os:v0.9.377",
9
9
  "imageEnv": "EXE_OS_IMAGE_TAG",
10
10
  "imageDigestTodo": "TODO(bug 32d6e02f), NARROWED by bug 81ca8903. The top-level `image` is tag-only BY CONSTRUCTION and that is correct: it names the tag the release run is about to build, whose digest does not exist until the push (see the 'Cross-check built digest against the manifest pin' step in .github/workflows/release-stack-image.yml). Demanding a digest here is unsatisfiable, which is why this TODO kept surviving. The one genuinely resolvable case it also covered — components.erp, built in a DIFFERENT repo and therefore already sitting in the registry — is now resolved and digest-pinned below. What remains open is ONLY components.dashboard, and not for the reason this TODO claimed: ghcr.io/askexe/exe-dashboard:v0.9.372 DOES NOT EXIST. .github/workflows/release-dashboard-image.yml has produced exactly one run in its lifetime (id 32405074431, 2026-08-20, tag v0.9.374) and that run FAILED, so the dashboard release lane has never emitted a single v* tag — the only refs in ghcr.io/askexe/exe-dashboard are the floating :main and :sha-<sha> dev refs from dashboard-image.yml. The dashboard pin is therefore a PHANTOM, not an unresolved digest, and it is deliberately left tag-only here rather than silently repointed at a :main digest, because choosing which dashboard bytes constitute a release is a release decision, not a lint fix. FAIL-CLOSED still holds and is enforced where it bites: scripts/publish-stack-release.mjs verifyServicePin() refuses to publish any tag-only app image into the customer manifest.",
11
11
  "components": {
@@ -16,7 +16,7 @@
16
16
  "note": "Bug 81ca8903: was `ghcr.io/askexe/exe-erp:v0.9.312` — a tag that has never existed. ERP is versioned on its own 0.x line; v0.9.312 is an EXE-OS version number that bumpVersions() stamped onto this component because rebaseImageTag() rebased every tag-only component image to the exe-os release version regardless of which repo built it. That rebase is now scoped (same commit) so it can no longer forge tags for independently-versioned components. Repinned to the real, current ERP release v0.3.4, digest resolved live from ghcr.io/askexe/exe-erp on 2026-09-01. Digest-pinning is also what makes this entry self-defending: rebaseImageTag() returns any `@sha256:`-bearing ref untouched. Prior intent for the record (bug 790794e8) was v0.2.0-final8, the first ERP image shipping the realtime/socketio entrypoint (exe-erp PR #15); final3/final7 crash-looped exe-erp-websocket on a missing socketio.js. v0.3.4 supersedes it."
17
17
  },
18
18
  "dashboard": {
19
- "image": "ghcr.io/askexe/exe-dashboard:v0.9.376",
19
+ "image": "ghcr.io/askexe/exe-dashboard:v0.9.377",
20
20
  "env": "DASHBOARD_IMAGE_TAG",
21
21
  "composeService": "exe-dashboard",
22
22
  "versionLockstep": true,
@@ -110,5 +110,5 @@
110
110
  },
111
111
  "deploymentScope": "customer",
112
112
  "highGhostStack": "0.9.9",
113
- "sourceVersion": "0.9.376"
113
+ "sourceVersion": "0.9.377"
114
114
  }