@askexenow/exe-os 0.8.29 → 0.8.31

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/dist/bin/cli.js CHANGED
@@ -5002,7 +5002,7 @@ async function runSetupWizard(opts = {}) {
5002
5002
  if (res.ok) {
5003
5003
  const data = await res.json();
5004
5004
  if (data.apiKey) {
5005
- cloudConfig = { apiKey: data.apiKey, endpoint: "https://sync.askexe.com" };
5005
+ cloudConfig = { apiKey: data.apiKey, endpoint: "https://askexe.com/cloud" };
5006
5006
  const { saveLicense: saveLicense3, mirrorLicenseKey: mirrorLicenseKey3 } = await Promise.resolve().then(() => (init_license(), license_exports));
5007
5007
  saveLicense3(data.apiKey);
5008
5008
  mirrorLicenseKey3(data.apiKey);
package/dist/bin/setup.js CHANGED
@@ -2474,7 +2474,7 @@ async function runSetupWizard(opts = {}) {
2474
2474
  if (res.ok) {
2475
2475
  const data = await res.json();
2476
2476
  if (data.apiKey) {
2477
- cloudConfig = { apiKey: data.apiKey, endpoint: "https://sync.askexe.com" };
2477
+ cloudConfig = { apiKey: data.apiKey, endpoint: "https://askexe.com/cloud" };
2478
2478
  const { saveLicense: saveLicense3, mirrorLicenseKey: mirrorLicenseKey3 } = await Promise.resolve().then(() => (init_license(), license_exports));
2479
2479
  saveLicense3(data.apiKey);
2480
2480
  mirrorLicenseKey3(data.apiKey);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.8.29",
3
+ "version": "0.8.31",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "type": "module",
@@ -8,10 +8,10 @@ Assign a task to the best specialist or a named employee.
8
8
 
9
9
  Auto-route (finds best match):
10
10
  ```bash
11
- node "$(npm root -g)/exe-os/dist/bin/exe-assign.js" "debug the auth timeout"
11
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-assign.js" "debug the auth timeout"
12
12
  ```
13
13
 
14
14
  Direct assign:
15
15
  ```bash
16
- node "$(npm root -g)/exe-os/dist/bin/exe-assign.js" yoshi "debug the auth timeout"
16
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-assign.js" yoshi "debug the auth timeout"
17
17
  ```
@@ -181,8 +181,8 @@ For each subtask, call create_task with:
181
181
  **VERIFY:**
182
182
  ```bash
183
183
  SUBTASK_COUNT=$(node -e "
184
- const {getClient}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/turso.js'));
185
- const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/store.js'));
184
+ const {getClient}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/turso.js'));
185
+ const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/store.js'));
186
186
  (async()=>{await initStore();const c=getClient();const r=await c.execute({sql:\"SELECT COUNT(*) as cnt FROM tasks WHERE title LIKE 'build-adv/{slug}%' AND status != 'done'\",args:[]});console.log(Number(r.rows[0]?.cnt??0))})()
187
187
  " 2>/dev/null)
188
188
  [ "$SUBTASK_COUNT" -gt 0 ] 2>/dev/null && echo "CHECKPOINT_PASS:${SUBTASK_COUNT}_subtasks" || echo "CHECKPOINT_FAIL:no_subtasks_in_db"
@@ -319,8 +319,8 @@ node -e "const f='exe/output/{slug}/build-state.json'; const s=JSON.parse(requir
319
319
  **VERIFY:**
320
320
  ```bash
321
321
  OPEN_COUNT=$(node -e "
322
- const {getClient}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/turso.js'));
323
- const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/store.js'));
322
+ const {getClient}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/turso.js'));
323
+ const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/store.js'));
324
324
  (async()=>{await initStore();const c=getClient();const r=await c.execute({sql:\"SELECT COUNT(*) as cnt FROM tasks WHERE title LIKE 'build-adv/{slug}%' AND status NOT IN ('done','cancelled')\",args:[]});console.log(Number(r.rows[0]?.cnt??0))})()
325
325
  " 2>/dev/null)
326
326
  [ "$OPEN_COUNT" -eq 0 ] 2>/dev/null && echo "CHECKPOINT_PASS" || echo "CHECKPOINT_FAIL:${OPEN_COUNT}_subtasks_still_open"
@@ -67,7 +67,7 @@ Employee sessions are named `{name}-{exeSession}` (e.g., `yoshi-exe1`) or `{name
67
67
  ```bash
68
68
  NAME="$ARGUMENTS"
69
69
  EXE_SESSION=$(tmux display-message -p '#{session_name}' 2>/dev/null)
70
- RESULT=$(node -e "const {ensureEmployee}=require('$(npm root -g)/exe-os/dist/lib/tmux-routing.js'); const r=ensureEmployee('${NAME}','${EXE_SESSION}','$(pwd)'); console.log(JSON.stringify(r));")
70
+ RESULT=$(node -e "const {ensureEmployee}=require('$(npm root -g)/@askexenow/exe-os/dist/lib/tmux-routing.js'); const r=ensureEmployee('${NAME}','${EXE_SESSION}','$(pwd)'); console.log(JSON.stringify(r));")
71
71
  echo "$RESULT"
72
72
  ```
73
73
  Report the result and STOP HERE. Do not continue to step 1.
@@ -102,7 +102,7 @@ export AGENT_ROLE="${ROLE}"
102
102
  MY_SESSION=$(tmux display-message -p '#{session_name}' 2>/dev/null)
103
103
  DISPATCH_INFO="$HOME/.exe-os/session-cache/dispatch-info-${MY_SESSION}.json"
104
104
  DISPATCHED_BY=$(node -e "try{const d=JSON.parse(require('fs').readFileSync('$DISPATCH_INFO','utf8'));console.log(d.dispatchedBy||'')}catch{console.log('')}" 2>/dev/null)
105
- node -e "const {parseParentExe,registerParentExe}=require('$(npm root -g)/exe-os/dist/lib/tmux-routing.js'); const p=parseParentExe('$MY_SESSION','$NAME'); if(p) registerParentExe('$KEY',p,'$DISPATCHED_BY'||undefined);"
105
+ node -e "const {parseParentExe,registerParentExe}=require('$(npm root -g)/@askexenow/exe-os/dist/lib/tmux-routing.js'); const p=parseParentExe('$MY_SESSION','$NAME'); if(p) registerParentExe('$KEY',p,'$DISPATCHED_BY'||undefined);"
106
106
  ```
107
107
 
108
108
  2. Ensure exe folder structure exists and scan for open tasks:
@@ -114,7 +114,7 @@ if [ -f .gitignore ]; then
114
114
  else
115
115
  echo -e '# Employee task assignments (private)\n/exe/' > .gitignore
116
116
  fi
117
- node "$(npm root -g)/exe-os/dist/bin/scan-tasks.js" "exe/$ARGUMENTS" --format=mandatory 2>/dev/null
117
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/scan-tasks.js" "exe/$ARGUMENTS" --format=mandatory 2>/dev/null
118
118
  ```
119
119
 
120
120
  3. Check memories for context from exe:
@@ -11,7 +11,7 @@ One command to link a device and enable cloud sync.
11
11
  - `/exe-cloud status` — show current sync status and key fingerprint
12
12
 
13
13
  ```bash
14
- node "$(npm root -g)/exe-os/dist/bin/exe-cloud.js" $ARGUMENTS
14
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-cloud.js" $ARGUMENTS
15
15
  ```
16
16
 
17
17
  **Note:** `/exe-link` is deprecated. Use `/exe-cloud` instead.
@@ -6,5 +6,5 @@ allowed-tools: Bash
6
6
  Run a full memory health audit showing total memories, per-agent breakdown, date range, and any issues.
7
7
 
8
8
  ```bash
9
- node "$(npm root -g)/exe-os/dist/bin/exe-doctor.js" $ARGUMENTS
9
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-doctor.js" $ARGUMENTS
10
10
  ```
@@ -37,7 +37,7 @@ if [ -f "$ACTIVITY_FILE" ]; then
37
37
  fi
38
38
 
39
39
  # Use canonical scanner — single source of truth for task status detection
40
- node "$(npm root -g)/exe-os/dist/bin/scan-tasks.js" "exe/$AGENT" --format=mandatory 2>/dev/null
40
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/scan-tasks.js" "exe/$AGENT" --format=mandatory 2>/dev/null
41
41
  ```
42
42
 
43
43
  **If the script outputs task info:** read the task file and begin working immediately. Do not ask what to do.
@@ -11,5 +11,5 @@ Usage:
11
11
  - `/exe-forget --query "<search>"` — delete memories matching a search query
12
12
 
13
13
  ```bash
14
- node "$(npm root -g)/exe-os/dist/bin/exe-forget.js" "$ARGUMENTS"
14
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-forget.js" "$ARGUMENTS"
15
15
  ```
@@ -24,23 +24,23 @@ fi
24
24
 
25
25
  # Exe gets review notifications instead of task dispatch
26
26
  if [ "$AGENT" = "exe" ]; then
27
- node "$(npm root -g)/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
27
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
28
28
  # Exe also subscribes to notifications (subtasks_complete, task_complete, etc.)
29
29
  # so parent-of-parent rollups surface live instead of only at boot.
30
- node "$(npm root -g)/exe-os/dist/bin/exe-pending-notifications.js" "$AGENT" 2>/dev/null
30
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-pending-notifications.js" "$AGENT" 2>/dev/null
31
31
  exit 0
32
32
  fi
33
33
 
34
34
  # Use canonical scanner — single source of truth for task status detection
35
- node "$(npm root -g)/exe-os/dist/bin/scan-tasks.js" "exe/$AGENT" --format=mandatory 2>/dev/null
35
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/scan-tasks.js" "exe/$AGENT" --format=mandatory 2>/dev/null
36
36
 
37
37
  # Check for pending messages
38
- node "$(npm root -g)/exe-os/dist/bin/exe-pending-messages.js" "$AGENT" 2>/dev/null
38
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-pending-messages.js" "$AGENT" 2>/dev/null
39
39
 
40
40
  # Check for pending notifications (subtasks_complete, rollup signals, etc.)
41
41
  # Employees acting as parent-of-parents (e.g. yoshi holding multiple parent
42
42
  # tasks) need these too — not only exe. See the parent-cascade audit §6.
43
- node "$(npm root -g)/exe-os/dist/bin/exe-pending-notifications.js" "$AGENT" 2>/dev/null
43
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-pending-notifications.js" "$AGENT" 2>/dev/null
44
44
  ```
45
45
 
46
46
  ### For exe (AGENT=exe)
@@ -33,7 +33,7 @@ For each name in $ARGUMENTS, verify it exists in the roster. If any name is not
33
33
  ```bash
34
34
  NAME="<employee>"
35
35
  EXE_SESSION=$(tmux display-message -p '#{session_name}' 2>/dev/null)
36
- RESULT=$(node -e "const {ensureEmployee}=require('$(npm root -g)/exe-os/dist/lib/tmux-routing.js'); const r=ensureEmployee('${NAME}','${EXE_SESSION}','$(pwd)'); console.log(JSON.stringify(r));")
36
+ RESULT=$(node -e "const {ensureEmployee}=require('$(npm root -g)/@askexenow/exe-os/dist/lib/tmux-routing.js'); const r=ensureEmployee('${NAME}','${EXE_SESSION}','$(pwd)'); console.log(JSON.stringify(r));")
37
37
  echo "${NAME}: ${RESULT}"
38
38
  ```
39
39
 
@@ -13,5 +13,5 @@ argument-hint: [export|import]
13
13
  Legacy command still works:
14
14
 
15
15
  ```bash
16
- node "$(npm root -g)/exe-os/dist/bin/exe-link.js" $ARGUMENTS
16
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-link.js" $ARGUMENTS
17
17
  ```
@@ -8,5 +8,5 @@ Create a new named employee for the exe-os system.
8
8
 
9
9
  Run this command:
10
10
  ```bash
11
- node "$(npm root -g)/exe-os/dist/bin/exe-new-employee.js" $ARGUMENTS
11
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-new-employee.js" $ARGUMENTS
12
12
  ```
@@ -10,5 +10,5 @@ update organizational memory with the outcomes.
10
10
 
11
11
  Run this command:
12
12
  ```bash
13
- node "$(npm root -g)/exe-os/dist/bin/exe-review.js" $ARGUMENTS
13
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-review.js" $ARGUMENTS
14
14
  ```
@@ -21,8 +21,8 @@ Determine the action:
21
21
 
22
22
  ```bash
23
23
  node -e "
24
- const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/store.js'));
25
- const {listSchedules}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/schedules.js'));
24
+ const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/store.js'));
25
+ const {listSchedules}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/schedules.js'));
26
26
  (async()=>{
27
27
  await initStore();
28
28
  const schedules=await listSchedules();
@@ -45,8 +45,8 @@ Print the output as-is.
45
45
  ```bash
46
46
  ID="<extracted-id>"
47
47
  node -e "
48
- const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/store.js'));
49
- const {deleteSchedule}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/schedules.js'));
48
+ const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/store.js'));
49
+ const {deleteSchedule}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/schedules.js'));
50
50
  (async()=>{
51
51
  await initStore();
52
52
  const ok=await deleteSchedule('${ID}');
@@ -66,7 +66,7 @@ node -e "
66
66
  ```bash
67
67
  TIME_EXPR="<extracted-time>"
68
68
  node -e "
69
- const {parseHumanCron}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/schedules.js'));
69
+ const {parseHumanCron}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/schedules.js'));
70
70
  console.log(parseHumanCron('${TIME_EXPR}'))
71
71
  " 2>/dev/null
72
72
  ```
@@ -89,8 +89,8 @@ DESC="<description>"
89
89
  TYPE="<job-type>"
90
90
  CRONTAB="<0-or-1>"
91
91
  node -e "
92
- const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/store.js'));
93
- const {createSchedule}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'exe-os/dist/lib/schedules.js'));
92
+ const {initStore}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/store.js'));
93
+ const {createSchedule}=require(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'@askexenow/exe-os/dist/lib/schedules.js'));
94
94
  (async()=>{
95
95
  await initStore();
96
96
  const s=await createSchedule({cron:'${CRON}',description:'${DESC}',jobType:'${TYPE}',useCrontab:${CRONTAB}===1});
@@ -9,5 +9,5 @@ Usage: `/exe-search <query>`
9
9
 
10
10
  Run this command with the user's query:
11
11
  ```bash
12
- node "$(npm root -g)/exe-os/dist/bin/exe-search.js" "$ARGUMENTS"
12
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-search.js" "$ARGUMENTS"
13
13
  ```
@@ -9,5 +9,5 @@ Configure auto-ingestion, auto-retrieval, and search mode.
9
9
  Run this command to open the settings menu:
10
10
 
11
11
  ```bash
12
- node "$(npm root -g)/exe-os/dist/bin/exe-settings.js"
12
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-settings.js"
13
13
  ```
@@ -68,7 +68,7 @@ Use AskUserQuestion to ask for their Exe Cloud API key (exe_sk_...).
68
68
 
69
69
  Validate the key:
70
70
  ```bash
71
- curl -s "https://sync.askexe.com/auth/verify" \
71
+ curl -s "https://askexe.com/cloud/auth/verify" \
72
72
  -H "Authorization: Bearer USER_API_KEY" | cat
73
73
  ```
74
74
 
@@ -8,7 +8,7 @@ Show real-time employee status by capturing tmux pane output.
8
8
 
9
9
  Run:
10
10
  ```bash
11
- node "$(npm root -g)/exe-os/dist/bin/exe-status.js" $ARGUMENTS 2>/dev/null
11
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-status.js" $ARGUMENTS 2>/dev/null
12
12
  ```
13
13
 
14
14
  Print the output EXACTLY as-is — it is pre-formatted with box-drawing characters.
@@ -7,5 +7,5 @@ Show all registered employees, their roles, memory counts, and creation dates.
7
7
 
8
8
  Run this command:
9
9
  ```bash
10
- node "$(npm root -g)/exe-os/dist/bin/exe-team.js"
10
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-team.js"
11
11
  ```
@@ -7,5 +7,5 @@ Check if a newer version of exe-os is available on npm and optionally install it
7
7
 
8
8
  Run this command:
9
9
  ```bash
10
- node "$(npm root -g)/exe-os/dist/bin/update.js"
10
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/update.js"
11
11
  ```
@@ -133,7 +133,7 @@ When an employee sends `context-full: <name> hit capacity. Checkpoint saved. Res
133
133
  After completing a review (or batch of reviews), re-check for new reviews:
134
134
 
135
135
  ```bash
136
- node "$(npm root -g)/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
136
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
137
137
  ```
138
138
 
139
139
  If more reviews exist, start reviewing them immediately. Do NOT stop and wait for the founder. Keep chaining until the queue is empty. Only then resume normal conversation.
@@ -149,7 +149,7 @@ You manage 10-20+ projects. When the founder asks "what's going on," give the re
149
149
  Run the boot script:
150
150
 
151
151
  ```bash
152
- node "$(npm root -g)/exe-os/dist/bin/exe-boot.js"
152
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-boot.js"
153
153
  ```
154
154
 
155
155
  **The user already sees the bash output. Do NOT reproduce, summarize, reformat, or comment on it.**
@@ -160,7 +160,7 @@ Say nothing after the script runs. The user will speak first.
160
160
  When the founder asks about status, reviews, tasks, progress, or "what's going on" at ANY point AFTER the initial boot — re-run the status query. NEVER reference the boot snapshot for current state.
161
161
 
162
162
  ```bash
163
- node "$(npm root -g)/exe-os/dist/bin/exe-boot.js" --brief-only
163
+ node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-boot.js" --brief-only
164
164
  ```
165
165
 
166
166
  The boot snapshot is context for session start. For any subsequent status question, the DB is the source of truth. Query it. `--brief-only` is fast (read-only, no reconciliation, no side effects).