@askexenow/exe-os 0.9.411 → 0.9.412

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.
@@ -46,13 +46,6 @@
46
46
  "state": "active",
47
47
  "purpose": "release"
48
48
  },
49
- {
50
- "path": ".github/workflows/release-dashboard-image.yml",
51
- "workflowId": 338670900,
52
- "name": "Release dashboard image",
53
- "state": "active",
54
- "purpose": "release"
55
- },
56
49
  {
57
50
  "path": ".github/workflows/release-service.yml",
58
51
  "workflowId": 338790318,
@@ -61,7 +54,7 @@
61
54
  "purpose": "reusable-lane"
62
55
  }
63
56
  ],
64
- "note": "Publishes FOUR distinct release artifacts through THREE different workflows. The legacy lists record one workflow for the whole repository, which is why the npm tarball and the dashboard image have no traceable producer in any of them."
57
+ "note": "Publishes the npm package, core image and worker image. Dashboard publication has moved to AskExe/exe-dashboard; the historical local dashboard callers are retired."
65
58
  },
66
59
  {
67
60
  "id": 1218739164,
@@ -249,15 +242,26 @@
249
242
  "id": 1340595948,
250
243
  "name": "AskExe/exe-dashboard",
251
244
  "defaultBranch": "main",
252
- "releaseAdapter": "internal",
245
+ "releaseAdapter": "container",
253
246
  "ownerRole": "cto",
254
- "compatibilityGroup": "none",
255
- "deployable": false,
256
- "nonDeployableReason": "Extraction from exe-os dashboard-page/ is INCOMPLETE: this repository has ZERO Actions workflows (verified via the GitHub API), so it publishes nothing and cannot. The single active source of the dashboard image is AskExe/exe-os via .github/workflows/release-dashboard-image.yml. Registered explicitly, per plan sequence 8 and 11, so that 'both repos might publish the same package' is answered on the record rather than by silence. Flip this entry to a container adapter in the same PR that moves the caller workflow — never before, and never leaving both wired.",
247
+ "compatibilityGroup": "stack-0.9",
248
+ "deployable": true,
257
249
  "requiredSuites": [
258
- "ci"
250
+ "ci",
251
+ "image-identity",
252
+ "health-probe",
253
+ "scan"
254
+ ],
255
+ "workflows": [
256
+ {
257
+ "path": ".github/workflows/release-dashboard-image.yml",
258
+ "workflowId": 358278599,
259
+ "name": "Release dashboard image",
260
+ "state": "active",
261
+ "purpose": "release"
262
+ }
259
263
  ],
260
- "workflows": []
264
+ "note": "Standalone publisher. Verified v0.9.400 source 0e389f1acf35b34c648a846abdc4bcca4d2cd816 is the dashboard selected by customer stack 0.9.77."
261
265
  },
262
266
  {
263
267
  "id": 1259904143,
@@ -443,11 +447,11 @@
443
447
  },
444
448
  {
445
449
  "componentId": "exe-dashboard-image",
446
- "repository": "AskExe/exe-os",
450
+ "repository": "AskExe/exe-dashboard",
447
451
  "type": "oci-image",
448
452
  "origin": "first-party",
449
453
  "publishRepository": "ghcr.io/askexe/exe-dashboard",
450
- "pullRepository": "ghcr.io/askexe/exe-dashboard",
454
+ "pullRepository": "update.askexe.com/askexe/exe-dashboard",
451
455
  "releaseWorkflow": ".github/workflows/release-dashboard-image.yml",
452
456
  "platforms": [
453
457
  "linux/amd64"
@@ -472,16 +476,17 @@
472
476
  "scan"
473
477
  ],
474
478
  "healthProbe": {
475
- "type": "none",
476
- "gap": "No real JSON health route exists yet; an SPA fallback must not be allowed to pass health (plan sequence 8)."
479
+ "type": "http",
480
+ "url": "http://127.0.0.1:3301/health",
481
+ "verified": true
477
482
  },
478
483
  "legacy": {
479
484
  "stackServiceKey": "dashboard",
480
- "stackReleaseServiceKey": null,
485
+ "stackReleaseServiceKey": "dashboard",
481
486
  "contractServiceId": "dashboard",
482
487
  "manifestService": "dashboard"
483
488
  },
484
- "note": "THE INCIDENT THIS CATALOG EXISTS FOR: built from exe-os dashboard-page/, absent from stack-release-repos.mjs entirely, and production ran a four-builds-stale image traceable only by luck. Source repository is AskExe/exe-os — NOT AskExe/exe-dashboard, which has no workflows at all."
489
+ "note": "Built by the standalone repository. Customer stack 0.9.77 and stack.release.json select the same verified immutable v0.9.400 image; previous signed stack entries retain their original pins."
485
490
  },
486
491
  {
487
492
  "componentId": "exe-gateway-image",
@@ -625,7 +630,7 @@
625
630
  "healthProbe": {
626
631
  "type": "http",
627
632
  "url": "http://127.0.0.1:8069/api/method/ping",
628
- "host": "erp.askexe.com",
633
+ "host": "${ERP_SITE_NAME:-erp.localhost}",
629
634
  "statusField": "message",
630
635
  "verified": true
631
636
  },
@@ -1180,13 +1185,6 @@
1180
1185
  }
1181
1186
  ],
1182
1187
  "legacyDivergences": [
1183
- {
1184
- "list": "STACK_SERVICE_SPECS",
1185
- "subject": "auth",
1186
- "field": "healthUrl",
1187
- "reason": "STACK_SERVICE_SPECS still probes /api/health. exe-auth 404s that path DELIBERATELY — nginx.conf adds an exact location so GoTrue version strings are not exposed — and probing it triggered the all-or-nothing production rollback of 2026-09-08 that reverted ERP, CRM, wiki and exe-os along with auth. CONTRACT_SERVICES was corrected to / ; STACK_SERVICE_SPECS was not. The catalog carries the verified value (/ -> 200).",
1188
- "retiredBy": "ARC-1 Track: retire STACK_SERVICE_SPECS in favour of deriveStackServiceSpecs(). Until then this list is stale and the catalog is authoritative."
1189
- },
1190
1188
  {
1191
1189
  "list": "STACK_SERVICE_SPECS",
1192
1190
  "subject": "erp",
@@ -1239,16 +1237,9 @@
1239
1237
  {
1240
1238
  "list": "CONTRACT_SERVICES",
1241
1239
  "subject": "dashboard",
1242
- "field": "ghRepo",
1243
- "reason": "CONTRACT_SERVICES points dashboard at AskExe/exe-dashboard on the assumption the extraction completed. It has not: that repository has ZERO Actions workflows (verified via the GitHub API), so it publishes nothing. The single active source is AskExe/exe-os via release-dashboard-image.yml. Plan sequence 8 requires exactly one active source and forbids two publishers for one package; the catalog states which one it is.",
1244
- "retiredBy": "Plan sequence 8: flip the catalog repository entry and this field together in the PR that moves the caller workflow to AskExe/exe-dashboard — never separately."
1245
- },
1246
- {
1247
- "list": "CONTRACT_SERVICES",
1248
- "subject": "dashboard",
1249
- "field": "healthPath",
1250
- "reason": "CONTRACT_SERVICES declares /health, but no real JSON health route exists yet — plan sequence 8 lists baking one as outstanding work, and warns an SPA fallback must not be allowed to pass health. A declared path with nothing behind it is what lets a stale dashboard look healthy, so the catalog records the gap instead.",
1251
- "retiredBy": "Plan sequence 8: set healthProbe when the JSON health route ships."
1240
+ "field": "releaseWorkflow",
1241
+ "reason": "This legacy offline conformance list still reads the retired local shared-lane caller. The actual producer is the standalone workflow registered in the catalog; deriveContractServices omits paths outside exe-os by convention. The local caller cannot publish.",
1242
+ "retiredBy": "Retire CONTRACT_SERVICES in favor of the catalog and repository-aware workflow conformance."
1252
1243
  }
1253
1244
  ]
1254
1245
  }
@@ -69,7 +69,7 @@ SMTP_PASS=
69
69
  # --- Auth gateway (exe-auth — shared SSO sign-in UI at auth.<domain>) ---
70
70
  # Bug 58840873: pin the auth image so compose never falls back to its stale
71
71
  # hardcoded default tag. Keep in sync with the manifest AUTH_IMAGE_TAG.
72
- AUTH_IMAGE_TAG=update.askexe.com/askexe/exe-auth:v0.6.5@sha256:dc8c1476ef1247079a6e115450bd35681712fa06367461589998ecf943f88089
72
+ AUTH_IMAGE_TAG=update.askexe.com/askexe/exe-auth:v0.6.13@sha256:a21ed370706b7ffce200af782471511402ca5dc3e3fd0fcc51996f08dc79a981
73
73
  # Bug 379e5c13: server_name / CORS from the CONFIGURED apex domain, not by naive
74
74
  # last-2-label slicing (which breaks company.co.uk → co.uk).
75
75
  AUTH_SERVER_NAME=auth.CHANGEME_DOMAIN
@@ -124,7 +124,7 @@ EXE_ORG_ID=
124
124
  EXE_ORG_WORKSPACE_ID=
125
125
 
126
126
  # --- CRM ---
127
- CRM_IMAGE_TAG=update.askexe.com/askexe/exe-crm:v0.9.59@sha256:40619dce57540f86dc7c8b71f1da57f44600a288f75a28850a9a9b425d0b92a6
127
+ CRM_IMAGE_TAG=update.askexe.com/askexe/exe-crm:v0.9.75@sha256:9ac890b74e8e31cb91d7aee1bba5a604e8494372d7aa71590ced76b22424a6f6
128
128
  CRM_SERVER_URL=https://crm.CHANGEME_DOMAIN
129
129
  CRM_APP_SECRET=CHANGEME_CRM_APP_SECRET
130
130
  # Public DEMO is opt-in after a separate synthetic-data workspace is
@@ -143,7 +143,7 @@ EXE_CRM_ADMIN_EMAIL=CHANGEME_ADMIN_EMAIL
143
143
  CRM_HOST_PORT=3000
144
144
 
145
145
  # --- Wiki ---
146
- WIKI_IMAGE_TAG=update.askexe.com/askexe/exe-wiki:v0.9.33@sha256:1f9e04a557c6034e0eac85ecdf76d465eab88394614184387ecf06cd2281e7d8
146
+ WIKI_IMAGE_TAG=update.askexe.com/askexe/exe-wiki:v0.9.42@sha256:af7aaa0669788f5e593f04b3b89691f9c7a909067c9895f78e288f6bcd72d5dc
147
147
  # Bug 2a8d3003 — DO NOT change this without migrating the data first.
148
148
  # The wiki's users / workspaces / workspace_documents live in `public`. Point it at a
149
149
  # different schema and Prisma will NOT error: it finds no tables, assumes a fresh
@@ -181,7 +181,7 @@ WIKI_HOST_PORT=3001
181
181
  EXE_SSO_COOKIE_NAME=exe_access_token
182
182
 
183
183
  # --- exe-os ---
184
- EXE_OS_IMAGE_TAG=update.askexe.com/askexe/exe-os:v0.9.382@sha256:266a59a482865eab9f79497999acb33c1fe1868ec54ea5cd1ce971c492f11bd6
184
+ EXE_OS_IMAGE_TAG=update.askexe.com/askexe/exe-os:v0.9.396@sha256:faca74fa9207d79b6156d64d737247b58b3ba6083c669ff23e20763059815554
185
185
  EXED_MCP_TOKEN=CHANGEME_EXED_MCP_TOKEN
186
186
  EXED_DEVICE_ID=CHANGEME_DEVICE_ID
187
187
  EXE_MCP_HOST_BIND=127.0.0.1
@@ -191,7 +191,7 @@ EXE_MCP_HOST_PORT=48739
191
191
  EXE_CLOUD_SYNC_TO_POSTGRES=true
192
192
 
193
193
  # --- ERP (Frappe/ERPNext fork) ---
194
- ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.3.11@sha256:5888b3e9d4ff309f37052dbdcac1fda66e235dbecb186a9ccf69380576e7b363
194
+ ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.3.24@sha256:b0f38298da1818931caf08aec52ba87f75687c4760c08863bb7892b1ca6b70a9
195
195
  # Administrator password for the ERPNext site (created on first boot).
196
196
  # bug 43854b31: this only applies at FIRST boot. To rotate it later you must also
197
197
  # run `bench --site $ERP_SITE_NAME set-admin-password <new>` inside exe-erp —
@@ -13,10 +13,10 @@ EXE_LICENSE_KEY=CHANGEME_EXE_LICENSE_KEY
13
13
  # ------------------------------------------------------------------
14
14
  # Image tags (per-client pinning — never use :latest in production)
15
15
  # ------------------------------------------------------------------
16
- CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.51
17
- WIKI_IMAGE_TAG=ghcr.io/askexe/exe-wiki:v0.9.26
18
- EXE_OS_IMAGE_TAG=ghcr.io/askexe/exe-os:v0.9.311
19
- GATEWAY_IMAGE_TAG=ghcr.io/askexe/exe-gateway:v0.9.24
16
+ CRM_IMAGE_TAG=update.askexe.com/askexe/exe-crm:v0.9.75@sha256:9ac890b74e8e31cb91d7aee1bba5a604e8494372d7aa71590ced76b22424a6f6
17
+ WIKI_IMAGE_TAG=update.askexe.com/askexe/exe-wiki:v0.9.42@sha256:af7aaa0669788f5e593f04b3b89691f9c7a909067c9895f78e288f6bcd72d5dc
18
+ EXE_OS_IMAGE_TAG=update.askexe.com/askexe/exe-os:v0.9.396@sha256:faca74fa9207d79b6156d64d737247b58b3ba6083c669ff23e20763059815554
19
+ GATEWAY_IMAGE_TAG=update.askexe.com/askexe/exe-gateway:v2026.08.07-c15f093-stamped@sha256:1bc11a2a0ad1f3929d59d2685696f22a72042b9fca9c75e15c02dc7d3c640105
20
20
 
21
21
  # ------------------------------------------------------------------
22
22
  # Postgres (shared by CRM + wiki)
@@ -98,7 +98,7 @@ SMTP_PASS=
98
98
  # Bug 58840873: pin the auth image so compose never falls back to its stale
99
99
  # hardcoded default tag. Keep in sync with the manifest AUTH_IMAGE_TAG. exe-auth
100
100
  # ships only from the private update.askexe.com registry (no GHCR mirror).
101
- AUTH_IMAGE_TAG=update.askexe.com/askexe/exe-auth:v0.6.5@sha256:dc8c1476ef1247079a6e115450bd35681712fa06367461589998ecf943f88089
101
+ AUTH_IMAGE_TAG=update.askexe.com/askexe/exe-auth:v0.6.13@sha256:a21ed370706b7ffce200af782471511402ca5dc3e3fd0fcc51996f08dc79a981
102
102
  # Bug 379e5c13: server_name / CORS derived from the CONFIGURED apex domain,
103
103
  # not by naive last-2-label slicing (which breaks company.co.uk → co.uk).
104
104
  AUTH_SERVER_NAME=auth.CHANGEME_DOMAIN
@@ -158,7 +158,7 @@ EXE_ORG_ID=
158
158
  EXE_ORG_WORKSPACE_ID=
159
159
 
160
160
  # --- CRM ---
161
- CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.59@sha256:40619dce57540f86dc7c8b71f1da57f44600a288f75a28850a9a9b425d0b92a6
161
+ CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.75@sha256:9ac890b74e8e31cb91d7aee1bba5a604e8494372d7aa71590ced76b22424a6f6
162
162
  CRM_SERVER_URL=https://crm.CHANGEME_DOMAIN
163
163
  CRM_APP_SECRET=CHANGEME_CRM_APP_SECRET
164
164
  # Public DEMO is opt-in after a separate synthetic-data workspace is
@@ -176,7 +176,7 @@ EXE_CRM_ADMIN_EMAIL=CHANGEME_ADMIN_EMAIL
176
176
  CRM_HOST_PORT=3000
177
177
 
178
178
  # --- Wiki ---
179
- WIKI_IMAGE_TAG=ghcr.io/askexe/exe-wiki:v0.9.33@sha256:1f9e04a557c6034e0eac85ecdf76d465eab88394614184387ecf06cd2281e7d8
179
+ WIKI_IMAGE_TAG=ghcr.io/askexe/exe-wiki:v0.9.42@sha256:af7aaa0669788f5e593f04b3b89691f9c7a909067c9895f78e288f6bcd72d5dc
180
180
  # Bug 2a8d3003 — DO NOT change this without migrating the data first.
181
181
  # The wiki's users / workspaces / workspace_documents live in `public`. Point it at a
182
182
  # different schema and Prisma will NOT error: it finds no tables, assumes a fresh
@@ -214,7 +214,7 @@ WIKI_HOST_PORT=3001
214
214
  EXE_SSO_COOKIE_NAME=exe_access_token
215
215
 
216
216
  # --- exe-os ---
217
- EXE_OS_IMAGE_TAG=ghcr.io/askexe/exe-os:v0.9.382@sha256:266a59a482865eab9f79497999acb33c1fe1868ec54ea5cd1ce971c492f11bd6
217
+ EXE_OS_IMAGE_TAG=ghcr.io/askexe/exe-os:v0.9.396@sha256:faca74fa9207d79b6156d64d737247b58b3ba6083c669ff23e20763059815554
218
218
 
219
219
  # Infra image pins — manifest-derived. Compose has no fallback default for
220
220
  # these: a missing pin ABORTS the deploy instead of substituting an old image.
@@ -269,7 +269,7 @@ ERROR_REPORTING_ENABLED=true
269
269
  MONITOR_ERROR_URL=http://exe-monitor-hub:8090/api/exe-monitor/errors
270
270
 
271
271
  # --- ERP (optional — Exe ERP, Frappe/ERPNext fork) ---
272
- ERP_IMAGE_TAG=ghcr.io/askexe/exe-erp:v0.3.11@sha256:5888b3e9d4ff309f37052dbdcac1fda66e235dbecb186a9ccf69380576e7b363
272
+ ERP_IMAGE_TAG=ghcr.io/askexe/exe-erp:v0.3.24@sha256:b0f38298da1818931caf08aec52ba87f75687c4760c08863bb7892b1ca6b70a9
273
273
  ERP_ADMIN_PASSWORD=CHANGEME_ERP_ADMIN_PASSWORD
274
274
  EXE_ERP_ADMIN_TOKEN=CHANGEME_EXE_ERP_ADMIN_TOKEN
275
275
  # Frappe site name — must match the erp.<domain> the customer serves (bug e61ad373).
@@ -768,7 +768,7 @@ services:
768
768
  # overridden back to exeOsMcp — see bug c604df37 above before doing that;
769
769
  # the spawn args below currently point at the wrong CLI entrypoint.
770
770
  EXE_OS_MCP_COMMAND: ${WIKI_EXE_OS_MCP_COMMAND:-npx}
771
- EXE_OS_MCP_ARGS: ${WIKI_EXE_OS_MCP_ARGS:--y @askexenow/exe-os@${WIKI_EXE_OS_NPM_VERSION:-0.9.382} mcp}
771
+ EXE_OS_MCP_ARGS: ${WIKI_EXE_OS_MCP_ARGS:--y @askexenow/exe-os@${WIKI_EXE_OS_NPM_VERSION:-0.9.412} mcp}
772
772
  BRANDING_CONFIG_PATH: /app/branding.json
773
773
  ports:
774
774
  - "127.0.0.1:${WIKI_HOST_PORT:-3001}:3001"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "latest": "0.9.38",
3
+ "latest": "0.9.78",
4
4
  "stacks": {
5
5
  "0.9.0": {
6
6
  "version": "0.9.0",
@@ -8117,11 +8117,272 @@
8117
8117
  "composeSha256": "220b251375f372107e8d8d54a9c3e4ceab1f57aae80f4babf2933c3887532263",
8118
8118
  "composeOverrideSha256": "af295ca2f75b85788416e4df51cab86d8b773bf4cafe6cf6df9c7c26b9a42d6d"
8119
8119
  }
8120
+ },
8121
+ "0.9.77": {
8122
+ "version": "0.9.77",
8123
+ "releasedAt": "2026-10-14T02:33:51.429Z",
8124
+ "notes": "Customer GA release with private HTML/CSS/JavaScript reports and dashboards in Wiki Files (self-contained HTML up to 5 MiB; workspace access required) and the verified standalone Dashboard v0.9.400. Other service images match the approved stack 0.9.76 bundle. Customer health probes use the configured ERP site. Existing installations upgrade explicitly with --target 0.9.77; new installs select this general release by default.",
8125
+ "npmVersion": "0.9.409",
8126
+ "breakingChanges": [],
8127
+ "services": {
8128
+ "exe-db": {
8129
+ "image": "update.askexe.com/askexe/pgvector:0.8.0-pg16@sha256:a132765ec351c65111b5b675928a3a0515a466a40f97277329db8b8209ad8bc9",
8130
+ "env": "EXE_DB_IMAGE",
8131
+ "composeService": "exe-db",
8132
+ "required": true,
8133
+ "category": "core",
8134
+ "description": "Postgres (pgvector) — digest-pinned (bug 32d6e02f; was tag-only in 0.9.25, regressed from 0.9.24)"
8135
+ },
8136
+ "exe-os": {
8137
+ "image": "update.askexe.com/askexe/exe-os:v0.9.396@sha256:faca74fa9207d79b6156d64d737247b58b3ba6083c669ff23e20763059815554",
8138
+ "env": "EXE_OS_IMAGE_TAG",
8139
+ "composeService": "exe-os",
8140
+ "healthUrl": "http://127.0.0.1:8765/health",
8141
+ "required": true,
8142
+ "category": "core",
8143
+ "description": "exe-os daemon + MCP server"
8144
+ },
8145
+ "crm": {
8146
+ "image": "update.askexe.com/askexe/exe-crm:v0.9.75@sha256:9ac890b74e8e31cb91d7aee1bba5a604e8494372d7aa71590ced76b22424a6f6",
8147
+ "env": "CRM_IMAGE_TAG",
8148
+ "composeService": "exe-crm",
8149
+ "healthUrl": "http://127.0.0.1:3000/healthz",
8150
+ "category": "app",
8151
+ "gitSha": "87b50b8ca7eb3a451251aeb133e98bff20e7f333",
8152
+ "description": "Central GoTrue authentication and same-host Exe/DEMO workspace switching for CRM web and worker."
8153
+ },
8154
+ "wiki": {
8155
+ "image": "update.askexe.com/askexe/exe-wiki:v0.9.42@sha256:af7aaa0669788f5e593f04b3b89691f9c7a909067c9895f78e288f6bcd72d5dc",
8156
+ "env": "WIKI_IMAGE_TAG",
8157
+ "composeService": "exe-wiki",
8158
+ "healthUrl": "http://127.0.0.1:3001/api/ping",
8159
+ "category": "app",
8160
+ "description": "Central hosted authentication and recovery with server-validated shared sessions, membership enforcement, and no product-local credential form.",
8161
+ "gitSha": "ff61711880ce2e52c9e9ee1eae6118e9761322cc"
8162
+ },
8163
+ "gateway": {
8164
+ "image": "update.askexe.com/askexe/exe-gateway:v2026.08.07-c15f093-stamped@sha256:1bc11a2a0ad1f3929d59d2685696f22a72042b9fca9c75e15c02dc7d3c640105",
8165
+ "env": "GATEWAY_IMAGE_TAG",
8166
+ "composeService": "exe-gateway",
8167
+ "healthUrl": "http://127.0.0.1:3100/health",
8168
+ "category": "app",
8169
+ "description": "WhatsApp/messaging gateway — provenance-stamped rebuild of main (outbound message persistence fix); pinned by digest, dated immutable tag.",
8170
+ "gitSha": "c15f093a0f59730bd5c2c73791ff77059dfa7cc1"
8171
+ },
8172
+ "monitorAgent": {
8173
+ "image": "update.askexe.com/askexe/exe-monitor-agent:v2026.08.09-10660eb4-stamped@sha256:29fbd445f79484df04f000603e4ff445e76f0380f86d687a0033e3a0ef7d1b7a",
8174
+ "env": "MONITOR_AGENT_IMAGE_TAG",
8175
+ "composeService": "exe-monitor-agent",
8176
+ "category": "monitoring",
8177
+ "gitSha": "10660eb4abdeffbcba2aad13549aa58e208ac7a3"
8178
+ },
8179
+ "monitorHub": {
8180
+ "image": "update.askexe.com/askexe/exe-monitor-hub:v2026.08.09-10660eb4-stamped@sha256:c9a9218c2713b8dffea7e1cf8c0702a614657d311a7a4e821c6a543bab29bb97",
8181
+ "env": "MONITOR_HUB_IMAGE_TAG",
8182
+ "composeService": "exe-monitor-hub",
8183
+ "healthUrl": "http://127.0.0.1:8090/api/health",
8184
+ "category": "monitoring",
8185
+ "gitSha": "10660eb4abdeffbcba2aad13549aa58e208ac7a3"
8186
+ },
8187
+ "auth": {
8188
+ "image": "update.askexe.com/askexe/exe-auth:v0.6.13@sha256:a21ed370706b7ffce200af782471511402ca5dc3e3fd0fcc51996f08dc79a981",
8189
+ "env": "AUTH_IMAGE_TAG",
8190
+ "composeService": "exe-auth",
8191
+ "healthUrl": "http://127.0.0.1:3300/",
8192
+ "category": "auth",
8193
+ "description": "GoTrue SSO and privileged license authority bridge; stateless auth proxy.",
8194
+ "gitSha": "133705a4ada5b900a754aab4cd5fca4c56d55fad"
8195
+ },
8196
+ "erp": {
8197
+ "image": "update.askexe.com/askexe/exe-erp:v0.3.24@sha256:b0f38298da1818931caf08aec52ba87f75687c4760c08863bb7892b1ca6b70a9",
8198
+ "env": "ERP_IMAGE_TAG",
8199
+ "composeService": "exe-erp",
8200
+ "healthUrl": "http://127.0.0.1:8069/api/method/ping",
8201
+ "healthHost": "${ERP_SITE_NAME:-erp.localhost}",
8202
+ "required": false,
8203
+ "category": "app",
8204
+ "description": "Enterprise Resource Planning with central hosted authentication and subject-bound organization admission.",
8205
+ "gitSha": "667fe09964bec1169f0b9945df4451c79a6e4c87"
8206
+ },
8207
+ "gotrue": {
8208
+ "image": "update.askexe.com/askexe/gotrue:v2.172.1@sha256:b0dd7aa28dd1f9a8bd31f136c8b912661f701d9b863171e5843cb08f18f49de4",
8209
+ "composeService": "gotrue",
8210
+ "healthUrl": "http://127.0.0.1:9999/health",
8211
+ "category": "infra"
8212
+ },
8213
+ "redis": {
8214
+ "image": "update.askexe.com/askexe/redis:7.4-alpine@sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99",
8215
+ "composeService": "redis",
8216
+ "category": "infra"
8217
+ },
8218
+ "clickhouse": {
8219
+ "image": "update.askexe.com/askexe/clickhouse-server:24.8.4.13-alpine@sha256:88a45f9e328549b2579256c46ee38e5c0e25ae58303d9eb6d9c7ed8d6d2bbf3c",
8220
+ "composeService": "clickhouse",
8221
+ "category": "infra"
8222
+ },
8223
+ "cloudflared": {
8224
+ "image": "update.askexe.com/askexe/cloudflared:2026-07@sha256:ba461b8aa9c042156dbd39c38657fe7431bafa063220eab8d5330a523863da9f",
8225
+ "composeService": "cloudflared",
8226
+ "category": "infra"
8227
+ },
8228
+ "exe-sso-edge": {
8229
+ "image": "update.askexe.com/askexe/nginx:alpine@sha256:20316569d8f81a160065d7d2a5eeffc7ca97d79022462ee255fd23fa103a6b5c",
8230
+ "composeService": "exe-sso-edge",
8231
+ "category": "infra"
8232
+ },
8233
+ "exe-otel-collector": {
8234
+ "image": "update.askexe.com/askexe/otel-collector-contrib:0.114.0@sha256:37fa87091cfaaec7234a27e4e395a40c31c2bfaea97a349a4afef6d9e9681197",
8235
+ "composeService": "exe-otel-collector",
8236
+ "category": "infra"
8237
+ },
8238
+ "dashboard": {
8239
+ "image": "update.askexe.com/askexe/exe-dashboard:v0.9.400@sha256:d6963463d623f2e07b8b1b6cdaa5662b8a7219aa237cd315cfbabcad84f06ee1",
8240
+ "env": "DASHBOARD_IMAGE_TAG",
8241
+ "composeService": "exe-dashboard",
8242
+ "healthUrl": "http://127.0.0.1:3301/health",
8243
+ "required": false,
8244
+ "category": "optional",
8245
+ "description": "Customer dashboard at dashboard.<apex> — credits, usage, API keys, billing",
8246
+ "gitSha": "0e389f1acf35b34c648a846abdc4bcca4d2cd816"
8247
+ }
8248
+ },
8249
+ "rolloutStage": "ga"
8250
+ },
8251
+ "0.9.78": {
8252
+ "version": "0.9.78",
8253
+ "releasedAt": "2026-10-14T13:00:58.884Z",
8254
+ "notes": "Customer upgrade repair for legacy stack 0.9.27 layouts. exe-os CLI 0.9.412 makes check/dry-run previews non-mutating, migrates the unused shipped embeddings-worker fallback only after verifying it is disabled and absent, and completes version-only upgrades when images already match. Strict digest/signature/delivery checks remain enabled. Application image pins match the accepted 0.9.77 bundle, including private self-contained HTML/CSS/JS reports in Wiki Files. Supplies the signed optional telemetry image setting required when old installations adopt the current Compose template.",
8255
+ "npmVersion": "0.9.412",
8256
+ "breakingChanges": [],
8257
+ "services": {
8258
+ "exe-db": {
8259
+ "image": "update.askexe.com/askexe/pgvector:0.8.0-pg16@sha256:a132765ec351c65111b5b675928a3a0515a466a40f97277329db8b8209ad8bc9",
8260
+ "env": "EXE_DB_IMAGE",
8261
+ "composeService": "exe-db",
8262
+ "required": true,
8263
+ "category": "core",
8264
+ "description": "Postgres (pgvector) — digest-pinned (bug 32d6e02f; was tag-only in 0.9.25, regressed from 0.9.24)"
8265
+ },
8266
+ "exe-os": {
8267
+ "image": "update.askexe.com/askexe/exe-os:v0.9.396@sha256:faca74fa9207d79b6156d64d737247b58b3ba6083c669ff23e20763059815554",
8268
+ "env": "EXE_OS_IMAGE_TAG",
8269
+ "composeService": "exe-os",
8270
+ "healthUrl": "http://127.0.0.1:8765/health",
8271
+ "required": true,
8272
+ "category": "core",
8273
+ "description": "exe-os daemon + MCP server"
8274
+ },
8275
+ "crm": {
8276
+ "image": "update.askexe.com/askexe/exe-crm:v0.9.75@sha256:9ac890b74e8e31cb91d7aee1bba5a604e8494372d7aa71590ced76b22424a6f6",
8277
+ "env": "CRM_IMAGE_TAG",
8278
+ "composeService": "exe-crm",
8279
+ "healthUrl": "http://127.0.0.1:3000/healthz",
8280
+ "category": "app",
8281
+ "gitSha": "87b50b8ca7eb3a451251aeb133e98bff20e7f333",
8282
+ "description": "Central GoTrue authentication and same-host Exe/DEMO workspace switching for CRM web and worker."
8283
+ },
8284
+ "wiki": {
8285
+ "image": "update.askexe.com/askexe/exe-wiki:v0.9.42@sha256:af7aaa0669788f5e593f04b3b89691f9c7a909067c9895f78e288f6bcd72d5dc",
8286
+ "env": "WIKI_IMAGE_TAG",
8287
+ "composeService": "exe-wiki",
8288
+ "healthUrl": "http://127.0.0.1:3001/api/ping",
8289
+ "category": "app",
8290
+ "description": "Central hosted authentication and recovery with server-validated shared sessions, membership enforcement, and no product-local credential form.",
8291
+ "gitSha": "ff61711880ce2e52c9e9ee1eae6118e9761322cc"
8292
+ },
8293
+ "gateway": {
8294
+ "image": "update.askexe.com/askexe/exe-gateway:v2026.08.07-c15f093-stamped@sha256:1bc11a2a0ad1f3929d59d2685696f22a72042b9fca9c75e15c02dc7d3c640105",
8295
+ "env": "GATEWAY_IMAGE_TAG",
8296
+ "composeService": "exe-gateway",
8297
+ "healthUrl": "http://127.0.0.1:3100/health",
8298
+ "category": "app",
8299
+ "description": "WhatsApp/messaging gateway — provenance-stamped rebuild of main (outbound message persistence fix); pinned by digest, dated immutable tag.",
8300
+ "gitSha": "c15f093a0f59730bd5c2c73791ff77059dfa7cc1"
8301
+ },
8302
+ "monitorAgent": {
8303
+ "image": "update.askexe.com/askexe/exe-monitor-agent:v2026.08.09-10660eb4-stamped@sha256:29fbd445f79484df04f000603e4ff445e76f0380f86d687a0033e3a0ef7d1b7a",
8304
+ "env": "MONITOR_AGENT_IMAGE_TAG",
8305
+ "composeService": "exe-monitor-agent",
8306
+ "category": "monitoring",
8307
+ "gitSha": "10660eb4abdeffbcba2aad13549aa58e208ac7a3"
8308
+ },
8309
+ "monitorHub": {
8310
+ "image": "update.askexe.com/askexe/exe-monitor-hub:v2026.08.09-10660eb4-stamped@sha256:c9a9218c2713b8dffea7e1cf8c0702a614657d311a7a4e821c6a543bab29bb97",
8311
+ "env": "MONITOR_HUB_IMAGE_TAG",
8312
+ "composeService": "exe-monitor-hub",
8313
+ "healthUrl": "http://127.0.0.1:8090/api/health",
8314
+ "category": "monitoring",
8315
+ "gitSha": "10660eb4abdeffbcba2aad13549aa58e208ac7a3"
8316
+ },
8317
+ "auth": {
8318
+ "image": "update.askexe.com/askexe/exe-auth:v0.6.13@sha256:a21ed370706b7ffce200af782471511402ca5dc3e3fd0fcc51996f08dc79a981",
8319
+ "env": "AUTH_IMAGE_TAG",
8320
+ "composeService": "exe-auth",
8321
+ "healthUrl": "http://127.0.0.1:3300/",
8322
+ "category": "auth",
8323
+ "description": "GoTrue SSO and privileged license authority bridge; stateless auth proxy.",
8324
+ "gitSha": "133705a4ada5b900a754aab4cd5fca4c56d55fad"
8325
+ },
8326
+ "erp": {
8327
+ "image": "update.askexe.com/askexe/exe-erp:v0.3.24@sha256:b0f38298da1818931caf08aec52ba87f75687c4760c08863bb7892b1ca6b70a9",
8328
+ "env": "ERP_IMAGE_TAG",
8329
+ "composeService": "exe-erp",
8330
+ "healthUrl": "http://127.0.0.1:8069/api/method/ping",
8331
+ "healthHost": "${ERP_SITE_NAME:-erp.localhost}",
8332
+ "required": false,
8333
+ "category": "app",
8334
+ "description": "Enterprise Resource Planning with central hosted authentication and subject-bound organization admission.",
8335
+ "gitSha": "667fe09964bec1169f0b9945df4451c79a6e4c87"
8336
+ },
8337
+ "gotrue": {
8338
+ "image": "update.askexe.com/askexe/gotrue:v2.172.1@sha256:b0dd7aa28dd1f9a8bd31f136c8b912661f701d9b863171e5843cb08f18f49de4",
8339
+ "composeService": "gotrue",
8340
+ "healthUrl": "http://127.0.0.1:9999/health",
8341
+ "category": "infra"
8342
+ },
8343
+ "redis": {
8344
+ "image": "update.askexe.com/askexe/redis:7.4-alpine@sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99",
8345
+ "composeService": "redis",
8346
+ "category": "infra"
8347
+ },
8348
+ "clickhouse": {
8349
+ "image": "update.askexe.com/askexe/clickhouse-server:24.8.4.13-alpine@sha256:88a45f9e328549b2579256c46ee38e5c0e25ae58303d9eb6d9c7ed8d6d2bbf3c",
8350
+ "composeService": "clickhouse",
8351
+ "category": "infra"
8352
+ },
8353
+ "cloudflared": {
8354
+ "image": "update.askexe.com/askexe/cloudflared:2026-07@sha256:ba461b8aa9c042156dbd39c38657fe7431bafa063220eab8d5330a523863da9f",
8355
+ "composeService": "cloudflared",
8356
+ "category": "infra"
8357
+ },
8358
+ "exe-sso-edge": {
8359
+ "image": "update.askexe.com/askexe/nginx:alpine@sha256:20316569d8f81a160065d7d2a5eeffc7ca97d79022462ee255fd23fa103a6b5c",
8360
+ "composeService": "exe-sso-edge",
8361
+ "category": "infra"
8362
+ },
8363
+ "exe-otel-collector": {
8364
+ "image": "update.askexe.com/askexe/otel-collector-contrib:0.114.0@sha256:37fa87091cfaaec7234a27e4e395a40c31c2bfaea97a349a4afef6d9e9681197",
8365
+ "composeService": "exe-otel-collector",
8366
+ "category": "infra",
8367
+ "env": "OTEL_COLLECTOR_IMAGE"
8368
+ },
8369
+ "dashboard": {
8370
+ "image": "update.askexe.com/askexe/exe-dashboard:v0.9.400@sha256:d6963463d623f2e07b8b1b6cdaa5662b8a7219aa237cd315cfbabcad84f06ee1",
8371
+ "env": "DASHBOARD_IMAGE_TAG",
8372
+ "composeService": "exe-dashboard",
8373
+ "healthUrl": "http://127.0.0.1:3301/health",
8374
+ "required": false,
8375
+ "category": "optional",
8376
+ "description": "Customer dashboard at dashboard.<apex> — credits, usage, API keys, billing",
8377
+ "gitSha": "0e389f1acf35b34c648a846abdc4bcca4d2cd816"
8378
+ }
8379
+ },
8380
+ "rolloutStage": "ga"
8120
8381
  }
8121
8382
  },
8122
8383
  "signature": {
8123
8384
  "keyId": "exe-stack-1",
8124
8385
  "alg": "ed25519",
8125
- "signature": "lAdHfzdtUH7vuuTZKXHSvUYvu5X1OQGvaorzArgQ8F0kSns65Su91A81Ckv+qp6B6Nvf+asTnz/Hrfxo3zpmBw=="
8386
+ "signature": "gRov8680kM1tJ8fHILxtmpKgQrSNPTCp1xUONk5F1fCrdapSQzOH41PEZtlmZ1fozP9nG5q/sahTP4G3eGTFDw=="
8126
8387
  }
8127
8388
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "verified_at": "2026-10-12T18:45:24.474Z",
4
- "manifest_sha256": "80868da720af5de46832ff0166f30145226105cfbef88661d1b7e43ee80d68fa",
5
- "package_version": "0.9.411"
3
+ "verified_at": "2026-10-14T20:24:45.008Z",
4
+ "manifest_sha256": "d122346741db80b81598e2e493f830003ab58345842a20cff55bef76867a8375",
5
+ "package_version": "0.9.412"
6
6
  }
package/dist/bin/cli.js CHANGED
@@ -798,14 +798,14 @@ ${JSON.stringify(stormAlert, null, 2)}`);
798
798
  const { runStackUpdateCli } = await import("./stack-update.js");
799
799
  await runStackUpdateCli(args.slice(1));
800
800
  } else if (args[0] === "release") {
801
- const { parseReleaseArgs, runStackRelease } = await import("../stack-release-S37R57XC.js");
801
+ const { parseReleaseArgs, runStackRelease } = await import("../stack-release-64UJ6Y4W.js");
802
802
  const releaseFlags = parseReleaseArgs(args.slice(1));
803
803
  await runStackRelease(releaseFlags);
804
804
  } else if (args[0] === "stack-promote") {
805
- const { runStackPromoteCli } = await import("../stack-promote-MJF436JD.js");
805
+ const { runStackPromoteCli } = await import("../stack-promote-BMGEY6SQ.js");
806
806
  await runStackPromoteCli(args.slice(1));
807
807
  } else if (args[0] === "stack-generate-manifest") {
808
- const { runStackGenerateManifestCli } = await import("../stack-generate-manifest-SU6OFFY7.js");
808
+ const { runStackGenerateManifestCli } = await import("../stack-generate-manifest-MVJDTU4F.js");
809
809
  process.exit(await runStackGenerateManifestCli(args.slice(1)));
810
810
  } else if (args[0] === "repo-truth") {
811
811
  const { runRepoTruthCli } = await import("./exe-repo-truth.js");
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  registryProxyOptionsFromEnv,
4
4
  runRegistryProxy
5
- } from "../chunk-54STF27U.js";
5
+ } from "../chunk-W3ABSZ6G.js";
6
6
  import {
7
7
  isMainModule
8
8
  } from "../chunk-6Y4B3QF6.js";