@askexenow/exe-os 0.9.193 → 0.9.195

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.
@@ -618,37 +618,37 @@
618
618
  "0.9.11": {
619
619
  "version": "0.9.11",
620
620
  "releasedAt": "2026-06-02T00:00:00Z",
621
- "notes": "HYGO deployment: encrypted R2 backups (daily + pre-update), ambassador pipeline, asana webhook, VPS guardrails (WA guard, disk monitor, env versioning, health gate), daemon perf (async pane capture, reconnect jitter), graceful idle shutdown, retrieval architecture procedure, conversation import tool.",
621
+ "notes": "HYGO deployment: encrypted R2 backups (daily + pre-update), ambassador pipeline, asana webhook, VPS guardrails (WA guard, disk monitor, env versioning, health gate), daemon perf (async pane capture, reconnect jitter), graceful idle shutdown, retrieval architecture procedure, conversation import tool. Registry consolidated to update.askexe.com.",
622
622
  "npmVersion": "0.9.158",
623
623
  "breakingChanges": [],
624
624
  "services": {
625
625
  "crm": {
626
- "image": "ghcr.io/askexe/exe-crm:v0.9.4",
626
+ "image": "update.askexe.com/askexe/exe-crm:v0.9.4",
627
627
  "env": "CRM_IMAGE_TAG",
628
628
  "composeService": "exe-crm"
629
629
  },
630
630
  "wiki": {
631
- "image": "ghcr.io/askexe/exe-wiki:v0.9.5",
631
+ "image": "update.askexe.com/askexe/exe-wiki:v0.9.5",
632
632
  "env": "WIKI_IMAGE_TAG",
633
633
  "composeService": "exe-wiki"
634
634
  },
635
635
  "exe-os": {
636
- "image": "ghcr.io/askexe/exe-os:v0.9.185",
636
+ "image": "update.askexe.com/askexe/exe-os:v0.9.185",
637
637
  "env": "EXE_OS_IMAGE_TAG",
638
638
  "composeService": "exe-os"
639
639
  },
640
640
  "gateway": {
641
- "image": "ghcr.io/askexe/exe-gateway:v0.9.7",
641
+ "image": "update.askexe.com/askexe/exe-gateway:v0.9.7",
642
642
  "env": "GATEWAY_IMAGE_TAG",
643
643
  "composeService": "exe-gateway"
644
644
  },
645
645
  "monitorAgent": {
646
- "image": "ghcr.io/askexe/exe-monitor-agent:v0.9.4",
646
+ "image": "update.askexe.com/askexe/exe-monitor-agent:v0.9.4",
647
647
  "env": "MONITOR_AGENT_IMAGE_TAG",
648
648
  "composeService": "exe-monitor-agent"
649
649
  },
650
650
  "monitorHub": {
651
- "image": "ghcr.io/askexe/exe-monitor-hub:v0.9.5",
651
+ "image": "update.askexe.com/askexe/exe-monitor-hub:v0.9.5",
652
652
  "env": "MONITOR_HUB_IMAGE_TAG",
653
653
  "composeService": "exe-monitor-hub"
654
654
  }
@@ -11,7 +11,7 @@ import {
11
11
  patchEnv,
12
12
  readCurrentStackVersion,
13
13
  runStackUpdate
14
- } from "../chunk-A6Z2S653.js";
14
+ } from "../chunk-MJYXPMPW.js";
15
15
  import "../chunk-MVMMULOJ.js";
16
16
  import "../chunk-4GXRETYL.js";
17
17
  import "../chunk-LYH5HE24.js";
@@ -207,7 +207,7 @@ async function main(args) {
207
207
  console.log("[health-gate] Starting rollback...");
208
208
  restorePreDeployBackup();
209
209
  try {
210
- const { rollbackStackUpdate, defaultStackPaths } = await import("../stack-update-L4JGJZ7E.js");
210
+ const { rollbackStackUpdate, defaultStackPaths } = await import("../stack-update-ODIHZZCZ.js");
211
211
  const paths = defaultStackPaths();
212
212
  await rollbackStackUpdate({
213
213
  manifestRef: paths.manifestRef,
@@ -627,8 +627,20 @@ async function runStackUpdate(options) {
627
627
  const [username, ...rest] = manual.split(":");
628
628
  const password = rest.join(":");
629
629
  if (username && password) {
630
- creds = { registry: "ghcr.io", username, password };
631
- console.log("[stack-update] Using manual registry credentials (--registry-credentials).");
630
+ const sampleImage = Object.values(plan.release.services)[0]?.image ?? "";
631
+ const registry = sampleImage.startsWith("update.askexe.com") ? "update.askexe.com" : sampleImage.startsWith("registry.askexe.com") ? "registry.askexe.com" : "ghcr.io";
632
+ creds = { registry, username, password };
633
+ console.log(`[stack-update] Using manual registry credentials for ${registry}.`);
634
+ }
635
+ }
636
+ }
637
+ if (!creds) {
638
+ const sampleImage = Object.values(plan.release.services)[0]?.image ?? "";
639
+ if (sampleImage.startsWith("update.askexe.com")) {
640
+ const licenseKey = options.manifestAuthToken || options.licenseKey || process.env.EXE_LICENSE_KEY;
641
+ if (licenseKey) {
642
+ creds = { registry: "update.askexe.com", username: "license", password: licenseKey };
643
+ console.log("[stack-update] Using license key for update.askexe.com registry auth.");
632
644
  }
633
645
  }
634
646
  }
@@ -20,7 +20,7 @@ import {
20
20
  runStackUpdate,
21
21
  verifyReleaseHealth,
22
22
  verifyStackManifestSignature
23
- } from "./chunk-A6Z2S653.js";
23
+ } from "./chunk-MJYXPMPW.js";
24
24
  import "./chunk-MVMMULOJ.js";
25
25
  import "./chunk-4GXRETYL.js";
26
26
  import "./chunk-LYH5HE24.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.193",
3
+ "version": "0.9.195",
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,4 +1,5 @@
1
1
  ---
2
+ name: exe-intercom
2
3
  description: Receive dispatched task via tmux send-keys and begin working
3
4
  allowed-tools: Bash
4
5
  ---
@@ -33,11 +34,46 @@ if [ "$AGENT" = "UNKNOWN" ] || [ "$AGENT" = "default" ]; then
33
34
  exit 0
34
35
  fi
35
36
 
36
- # FAST PATH: Check task signal file first (no Node.js, no DB, <10ms).
37
- # If a .pending signal exists, output it immediately no need for the
38
- # slow intercom-check.js which hits the daemon socket (can hang 75s).
39
- SIGNAL_FILE="$HOME/.exe-os/task-signals/${AGENT}.pending"
40
- if [ -f "$SIGNAL_FILE" ]; then
37
+ # FAST PATH: Check task signal files (no Node.js, no DB, <10ms).
38
+ # Signal files are written by create_task in two possible locations:
39
+ # 1. Session-scoped: task-signals/{session}/{agent}.{task-id}.pending
40
+ # 2. Legacy flat: task-signals/{agent}.pending
41
+ # Check BOTH paths. Session-scoped first (authoritative), then legacy.
42
+
43
+ # Derive session scope from tmux session name
44
+ if [[ "$SESSION_NAME" == *-* ]]; then
45
+ SESSION_SCOPE="${SESSION_NAME##*-}"
46
+ else
47
+ SESSION_SCOPE="$SESSION_NAME"
48
+ fi
49
+
50
+ # Check session-scoped signals: task-signals/{scope}/{agent}.*.pending
51
+ # Prioritize TASK signals over REVIEW signals. Pick newest file.
52
+ SCOPED_DIR="$HOME/.exe-os/task-signals/${SESSION_SCOPE}"
53
+ SIGNAL_FILE=""
54
+ if [ -d "$SCOPED_DIR" ]; then
55
+ # Task signals first (not review-*), newest first
56
+ SIGNAL_FILE=$(find "$SCOPED_DIR" -name "${AGENT}.*.pending" ! -name "${AGENT}.review-*" -type f 2>/dev/null | xargs ls -t 2>/dev/null | head -1)
57
+ # Fall back to review signals if no task signals
58
+ if [ -z "$SIGNAL_FILE" ]; then
59
+ SIGNAL_FILE=$(find "$SCOPED_DIR" -name "${AGENT}.*.pending" -type f 2>/dev/null | xargs ls -t 2>/dev/null | head -1)
60
+ fi
61
+ fi
62
+
63
+ # Fallback: check root task-signals/{agent}.*.pending (cross-session or old format)
64
+ if [ -z "$SIGNAL_FILE" ]; then
65
+ SIGNAL_FILE=$(find "$HOME/.exe-os/task-signals" -maxdepth 1 -name "${AGENT}.*.pending" ! -name "${AGENT}.review-*" -type f 2>/dev/null | xargs ls -t 2>/dev/null | head -1)
66
+ fi
67
+
68
+ # Legacy fallback: {agent}.pending (no task ID suffix)
69
+ if [ -z "$SIGNAL_FILE" ]; then
70
+ LEGACY_FILE="$HOME/.exe-os/task-signals/${AGENT}.pending"
71
+ if [ -f "$LEGACY_FILE" ]; then
72
+ SIGNAL_FILE="$LEGACY_FILE"
73
+ fi
74
+ fi
75
+
76
+ if [ -n "$SIGNAL_FILE" ] && [ -f "$SIGNAL_FILE" ]; then
41
77
  SIGNAL=$(cat "$SIGNAL_FILE" 2>/dev/null)
42
78
  TITLE=$(echo "$SIGNAL" | node -e "try{const d=JSON.parse(require('fs').readFileSync(0,'utf8'));console.log(d.title)}catch{}" 2>/dev/null)
43
79
  PRIORITY=$(echo "$SIGNAL" | node -e "try{const d=JSON.parse(require('fs').readFileSync(0,'utf8'));console.log(d.priority)}catch{}" 2>/dev/null)