@askexenow/exe-os 0.9.411 → 0.9.413

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.
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-WC44PNZU.js";
5
- import "./chunk-WHUQ44F2.js";
4
+ } from "./chunk-5DLZJ3MY.js";
5
+ import "./chunk-RIKFXHLE.js";
6
6
  import "./chunk-EC5H53YD.js";
7
7
  import {
8
8
  assertPreflightGate,
@@ -282,6 +282,16 @@ var STACK_RELEASE_REPO_CONFIGS = Object.freeze([
282
282
  releaseWorkflow: "release-stack-image.yml",
283
283
  simpleTag: true,
284
284
  defaultBranch: "main"
285
+ },
286
+ {
287
+ serviceKey: "dashboard",
288
+ manifestServiceKey: "dashboard",
289
+ ghRepo: "AskExe/exe-dashboard",
290
+ localDir: "exe-dashboard",
291
+ imageName: "update.askexe.com/askexe/exe-dashboard",
292
+ releaseWorkflow: "release-dashboard-image.yml",
293
+ simpleTag: true,
294
+ defaultBranch: "main"
285
295
  }
286
296
  ]);
287
297
  var STACK_RECONCILE_APP_IMAGE_REPOS = Object.freeze([
@@ -291,37 +301,10 @@ var STACK_RECONCILE_APP_IMAGE_REPOS = Object.freeze([
291
301
  imageName: "update.askexe.com/askexe/exe-auth",
292
302
  ghRepo: "AskExe/exe-auth"
293
303
  },
294
- // exe-dashboard: same gap — it was absent from both maps in this file, so
295
- // G6's reconcile classified an unstamped dashboard image as "no expected
296
- // source repo mapped here" (third-party, informational), exactly the false
297
- // pass the "unstamped-third-party" distinction exists to avoid for images
298
- // this repo family DOES build.
299
- //
300
- // 🔴 THE REPO HERE IS THE REPO THE IMAGE IS BUILT IN, NOT THE ONE THAT WILL
301
- // EVENTUALLY OWN IT. G6 compares this value against the image's org.exe.repo
302
- // label, which the shared release lane stamps with the repository the build
303
- // actually ran in. exe-dashboard is still built from `dashboard-page/` INSIDE
304
- // AskExe/exe-os (.github/workflows/release-dashboard-image.yml passes
305
- // `context: dashboard-page`); AskExe/exe-dashboard exists but its history
306
- // extraction is unfinished and nothing is built there yet. The real published
307
- // ghcr.io/askexe/exe-dashboard:v0.9.382 carries org.exe.repo=AskExe/exe-os
308
- // (recorded verbatim in release-service.yml's G2 arming note), so naming the
309
- // destination repo here turns every correctly-stamped dashboard release into
310
- // a "wrong-repo image (bug 218b10e4 class)" failure — and simultaneously
311
- // makes that signal useless for the one service it would be reporting on.
312
- //
313
- // release-contract-services.mjs's `ghRepo: "AskExe/exe-dashboard"` is a
314
- // different field with a different meaning: it names the repo that OWNS the
315
- // service in the migration table. Copying it into this provenance map is how
316
- // the wrong value got here.
317
- //
318
- // When the extraction completes, the lane's `context` flips to `.` and moves
319
- // to AskExe/exe-dashboard; flip this with it. A test in
320
- // tests/scripts/image-provenance.test.ts reads that `context` and fails if
321
- // the two disagree, so this cannot drift silently a second time.
304
+ // Current dashboard pins are published by the standalone repository.
322
305
  {
323
306
  imageName: "update.askexe.com/askexe/exe-dashboard",
324
- ghRepo: "AskExe/exe-os"
307
+ ghRepo: "AskExe/exe-dashboard"
325
308
  }
326
309
  ]);
327
310
 
@@ -2028,7 +2011,7 @@ async function warmProxyCache(imageRef) {
2028
2011
  async function resolveImageGitShaLabel(ref, dryRun) {
2029
2012
  if (!ref || dryRun) return void 0;
2030
2013
  try {
2031
- const { readProvenanceLabels } = await import("./stack-generate-manifest-SU6OFFY7.js");
2014
+ const { readProvenanceLabels } = await import("./stack-generate-manifest-MVJDTU4F.js");
2032
2015
  const labels = await readProvenanceLabels(ref);
2033
2016
  return labels["org.exe.git_sha"] ?? labels["org.opencontainers.image.revision"];
2034
2017
  } catch (err) {
@@ -97,6 +97,7 @@ import {
97
97
  printVolumeCleanupResult,
98
98
  readCurrentStackVersion,
99
99
  readRetainedComposeFiles,
100
+ readStagedComposeTemplate,
100
101
  reconcileSsoEdgeConfigDelivery,
101
102
  reconcileStackLockFromContainers,
102
103
  removeDanglingVolumes,
@@ -138,7 +139,7 @@ import {
138
139
  waitForHttpOk,
139
140
  warnUnmanagedManifestServices,
140
141
  withStackUpdateOperationLock
141
- } from "./chunk-WHUQ44F2.js";
142
+ } from "./chunk-RIKFXHLE.js";
142
143
  import "./chunk-EC5H53YD.js";
143
144
  import "./chunk-YYRI2AGK.js";
144
145
  import "./chunk-L25OAFOU.js";
@@ -250,6 +251,7 @@ export {
250
251
  printVolumeCleanupResult,
251
252
  readCurrentStackVersion,
252
253
  readRetainedComposeFiles,
254
+ readStagedComposeTemplate,
253
255
  reconcileSsoEdgeConfigDelivery,
254
256
  reconcileStackLockFromContainers,
255
257
  removeDanglingVolumes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.411",
3
+ "version": "0.9.413",
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",
@@ -91,8 +91,12 @@
91
91
  "ip-address": "^10.3.1",
92
92
  "nanoid": "^5.1.16",
93
93
  "picomatch": "^4.0.4",
94
- "sharp": "^0.35.4",
95
- "undici": "^6.27.0",
94
+ "sharp": "^0.35.5",
95
+ "undici": "^6.28.1",
96
+ "@grpc/grpc-js": "^1.14.5",
97
+ "simple-git": "^4.0.2",
98
+ "proxy-addr": "^2.0.8",
99
+ "brace-expansion": "^5.0.11",
96
100
  "esbuild": ">=0.28.1",
97
101
  "hono": ">=4.12.25",
98
102
  "@opentelemetry/core": ">=2.8.0",
@@ -201,7 +205,7 @@
201
205
  "@aws-sdk/client-s3": "^3.1052.0",
202
206
  "@aws-sdk/s3-request-presigner": "^3.1052.0",
203
207
  "@libsql/client": "^0.14.0",
204
- "@modelcontextprotocol/sdk": "^1.29.0",
208
+ "@modelcontextprotocol/sdk": "^1.31.0",
205
209
  "@opentelemetry/api": "^1.9.1",
206
210
  "@opentelemetry/sdk-node": "^0.219.0",
207
211
  "@opentelemetry/sdk-trace-base": "^2.8.0",
@@ -242,6 +246,7 @@
242
246
  },
243
247
  "optionalDependencies": {
244
248
  "keytar": "^7.9.0",
249
+ "sharp": "^0.35.5",
245
250
  "@whiskeysockets/baileys": "^7.0.0-rc12"
246
251
  }
247
252
  }
@@ -1,35 +1,33 @@
1
1
  {
2
- "current": "0.9.411",
2
+ "current": "0.9.413",
3
3
  "notes": {
4
- "0.9.411": {
5
- "version": "0.9.411",
6
- "date": "2026-10-12",
7
- "features": [
8
- "server-set offline_grace_s caps client offline trust (closed-loop revocation, part 1) (#3964)",
9
- "add platform procedure for subagent context economy (#3954)"
4
+ "0.9.413": {
5
+ "version": "0.9.413",
6
+ "date": "2026-10-14",
7
+ "features": [],
8
+ "fixes": [
9
+ "use public HTTPS registry URLs in package-lock"
10
10
  ],
11
+ "security": [
12
+ "update package-lock and Docker runtime security packages"
13
+ ],
14
+ "other": [],
15
+ "migration_notes": []
16
+ },
17
+ "0.9.412": {
18
+ "version": "0.9.412",
19
+ "date": "2026-10-14",
20
+ "features": [],
11
21
  "fixes": [
12
- "last-known-good company-procedures snapshot; launch warning names the real error (#3966)",
13
- "/api/register-org only lets the org's owner rotate its relay token (9c8781e9) (#3963)",
14
- "never sweep stable per-agent caches; keep stale cache on DB read failure (6255bdd6) (#3962)",
15
- "form-agnostic exe-os http_headers + fail-closed TOML guard (#3961)",
16
- "ledger guard parses wrapper options, skips redirections, fails closed on find -L (#3960)",
17
- "ledger rule refuses whole-tree delete/move of an audit-dir ancestor (#3958)",
18
- "ledger-tamper and data-store guard false positives (single-quoted literals, cd-relative rm targets) (#3956)",
19
- "run backup verification off the daemon event loop (#3959)",
20
- "retention no longer depends on a backup run completing; torn manifests are not verified (#3955)",
21
- "destructive find over an ancestor of the audit dir bypassed ledger-tamper (#3957)",
22
- "retire code-context sync + stream blob pulls to stop CPU-limit kills (#3947)",
23
- "stop syncing code-context indexes to Exe Cloud (#3948)",
24
- "purge two-level dispatch residue — managers decompose, coordinator dispatches (bug 23fba96c) (#3044)",
25
- "walker credits destructuring/spread getter reads (bug 542082b2) (#3946)",
26
- "treat down serving probe as degraded in mcp_ping status (bug 5c7c2e7b residual) (#3943)"
22
+ "Stack update previews leave existing configuration, service selection and monitor pairing untouched, including rejected signatures and deployment checks.",
23
+ "Existing embeddings-off installations migrate the shipped v0.9.311 worker fallback to the current empty image slot after confirming the worker is neither enabled nor present. Digest and signed-manifest gates remain mandatory; already migrated installations are unchanged.",
24
+ "legacy stack upgrades derive the required telemetry image setting from the signed manifest; multi-platform registry checks allow up to two minutes per attempt and validate Docker 29 descriptor platforms",
25
+ "The accepted monitoring-agent image uses its verified native health probe, allowing legacy upgrades to complete without disabling monitoring checks.",
26
+ "ERP admission verification completes the state-protected Auth browser handoff and validates the resulting native session identity; foreign redirects, insecure callbacks and redirect loops remain fatal.",
27
+ "Rollback to the legacy monitoring hub restores its verified data-volume owner before restart, preserving its users and monitored systems."
27
28
  ],
28
29
  "security": [],
29
- "other": [
30
- "release: v0.9.411 (#3967)",
31
- "version-control local CI npm registry plumbing + DOWN-tick alerting (bug 67c9ac1d) (#3951)"
32
- ],
30
+ "other": [],
33
31
  "migration_notes": []
34
32
  },
35
33
  "0.9.371": {
@@ -72,33 +70,6 @@
72
70
  "security": [],
73
71
  "other": [],
74
72
  "migration_notes": []
75
- },
76
- "0.9.368": {
77
- "version": "0.9.368",
78
- "date": "2026-08-14",
79
- "features": [
80
- "approve/deny on a privileged action now actually decides whether it runs — previously the prompt was cosmetic: no server handler existed, the safety classifier had no caller, and the wait flag was ignored (exe-build #165)",
81
- "dashboard gains a Drive tab — an admin lens over Exe Drive (#709)",
82
- "delivery truth: the system now tracks the gap between merged and actually delivered, with liveness checked on a clock rather than assumed (#707)",
83
- "the watchdog now counts the self-heals it declines to make, so a restart it chose NOT to perform is visible instead of silent (#708)"
84
- ],
85
- "fixes": [
86
- "cloud sync no longer starves every stage after the memory push: a deferred slice used to return early with no signal, so the daemon idled a full interval and the fifteen later stages — including DB backup — never ran, while every run reported success (#715)",
87
- "closing a bug now genuinely requires a verification artifact — the gate existed and was correct, but was never reachable from the client everyone uses, so nothing was ever refused (#710)",
88
- "behavior-injection truncation is loud instead of silent: agents were storing corrections that were dropped at spawn with no warning, so lessons appeared saved and were never applied (#701)",
89
- "the installer refuses to run from a linked git worktree, detected structurally, so a temp checkout can no longer re-point global hooks at a directory that will not outlive it (#706)",
90
- "create_task no longer reports success for a dispatch nobody received (#705)",
91
- "Codex sessions launch again — we stopped pinning a flag OpenAI's CLI removed, and now feature-detect its flag surface instead (#704)",
92
- "PreToolUse worktree isolation was inert inside .claude/worktrees (#712)",
93
- "stopped shipping the crashlooping exe-monitor v0.9.5 build (#711)",
94
- "admin bug updates: evidence-only updates no longer 400, corrections reach upstream, and oversize text is refused rather than silently truncated (#713, #714)",
95
- "the dashboard image can serve askexe.com — the one domain it never could (#703)",
96
- "release gate asserts required contexts off the x64 lane, so a release can no longer deadlock waiting on a runner it is occupying (#700)",
97
- "device-token chat persists instead of losing every message: device identities carried no org, so writes were refused; the connection now resolves a real tenant or is refused outright (exe-build #164, #166)"
98
- ],
99
- "security": [],
100
- "other": [],
101
- "migration_notes": []
102
73
  }
103
74
  }
104
75
  }
@@ -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.411",
8
- "image": "ghcr.io/askexe/exe-os:v0.9.411",
7
+ "version": "0.9.413",
8
+ "image": "ghcr.io/askexe/exe-os:v0.9.413",
9
9
  "imageEnv": "EXE_OS_IMAGE_TAG",
10
10
  "imageDigestTodo": "The top-level image names the forthcoming exe-os build and receives its digest after publication. Independently released components, including dashboard, retain verified digest pins; stack publication validates every service pin.",
11
11
  "components": {
@@ -16,11 +16,11 @@
16
16
  "note": "Bug 81ca8903: was `ghcr.io/askexe/exe-erp:v0.9.312` \u2014 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.382@sha256:43c4eb52d89d977021d29df73bcfa6f9d769ab4debf90e81240b59a4c165bab0",
19
+ "image": "ghcr.io/askexe/exe-dashboard:v0.9.400@sha256:d6963463d623f2e07b8b1b6cdaa5662b8a7219aa237cd315cfbabcad84f06ee1",
20
20
  "env": "DASHBOARD_IMAGE_TAG",
21
21
  "composeService": "exe-dashboard",
22
22
  "versionLockstep": false,
23
- "note": "Dashboard is independently versioned after the standalone repository handoff. Preserve the verified image already pinned by the customer stack until the first AskExe/exe-dashboard release passes provenance checks. Update this digest and current-image source mappings together at cutover; exe-os version bumps must not rewrite this tag."
23
+ "note": "Independently published by AskExe/exe-dashboard from 0e389f1acf35b34c648a846abdc4bcca4d2cd816. Matches the verified v0.9.400 customer manifest pin; source mappings move atomically with this digest."
24
24
  },
25
25
  "exe-db": {
26
26
  "image": "pgvector/pgvector:0.8.0-pg16@sha256:a132765ec351c65111b5b675928a3a0515a466a40f97277329db8b8209ad8bc9",
@@ -110,5 +110,5 @@
110
110
  },
111
111
  "deploymentScope": "customer",
112
112
  "highGhostStack": "0.9.9",
113
- "sourceVersion": "0.9.411"
113
+ "sourceVersion": "0.9.413"
114
114
  }