@askexenow/exe-os 0.9.64 → 0.9.66
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/deploy/stack-manifests/v0.9.json +4 -4
- package/dist/bin/backfill-conversations.js +22 -0
- package/dist/bin/backfill-responses.js +22 -0
- package/dist/bin/backfill-vectors.js +22 -0
- package/dist/bin/cleanup-stale-review-tasks.js +22 -0
- package/dist/bin/cli.js +2280 -1199
- package/dist/bin/exe-agent-config.js +4 -0
- package/dist/bin/exe-agent.js +16 -0
- package/dist/bin/exe-assign.js +22 -0
- package/dist/bin/exe-boot.js +116 -7
- package/dist/bin/exe-call.js +16 -0
- package/dist/bin/exe-cloud.js +6671 -464
- package/dist/bin/exe-dispatch.js +24 -0
- package/dist/bin/exe-doctor.js +2845 -1223
- package/dist/bin/exe-export-behaviors.js +24 -0
- package/dist/bin/exe-forget.js +22 -0
- package/dist/bin/exe-gateway.js +24 -0
- package/dist/bin/exe-heartbeat.js +23 -0
- package/dist/bin/exe-kill.js +22 -0
- package/dist/bin/exe-launch-agent.js +24 -0
- package/dist/bin/exe-link.js +310 -178
- package/dist/bin/exe-new-employee.js +127 -1
- package/dist/bin/exe-pending-messages.js +22 -0
- package/dist/bin/exe-pending-notifications.js +22 -0
- package/dist/bin/exe-pending-reviews.js +22 -0
- package/dist/bin/exe-rename.js +22 -0
- package/dist/bin/exe-review.js +22 -0
- package/dist/bin/exe-search.js +24 -0
- package/dist/bin/exe-session-cleanup.js +24 -0
- package/dist/bin/exe-settings.js +10 -0
- package/dist/bin/exe-start-codex.js +135 -1
- package/dist/bin/exe-start-opencode.js +149 -1
- package/dist/bin/exe-status.js +22 -0
- package/dist/bin/exe-team.js +22 -0
- package/dist/bin/git-sweep.js +24 -0
- package/dist/bin/graph-backfill.js +22 -0
- package/dist/bin/graph-export.js +22 -0
- package/dist/bin/install.js +115 -1
- package/dist/bin/intercom-check.js +24 -0
- package/dist/bin/scan-tasks.js +24 -0
- package/dist/bin/setup.js +412 -157
- package/dist/bin/shard-migrate.js +22 -0
- package/dist/bin/update.js +4 -0
- package/dist/gateway/index.js +24 -0
- package/dist/hooks/bug-report-worker.js +135 -42
- package/dist/hooks/codex-stop-task-finalizer.js +24 -0
- package/dist/hooks/commit-complete.js +24 -0
- package/dist/hooks/error-recall.js +24 -0
- package/dist/hooks/exe-heartbeat-hook.js +4 -0
- package/dist/hooks/ingest-worker.js +4 -0
- package/dist/hooks/ingest.js +23 -0
- package/dist/hooks/instructions-loaded.js +22 -0
- package/dist/hooks/notification.js +22 -0
- package/dist/hooks/post-compact.js +22 -0
- package/dist/hooks/post-tool-combined.js +24 -0
- package/dist/hooks/pre-compact.js +260 -109
- package/dist/hooks/pre-tool-use.js +22 -0
- package/dist/hooks/prompt-submit.js +24 -0
- package/dist/hooks/session-end.js +161 -122
- package/dist/hooks/session-start.js +142 -0
- package/dist/hooks/stop.js +23 -0
- package/dist/hooks/subagent-stop.js +22 -0
- package/dist/hooks/summary-worker.js +195 -79
- package/dist/index.js +24 -0
- package/dist/lib/agent-config.js +4 -0
- package/dist/lib/cloud-sync.js +50 -6
- package/dist/lib/config.js +12 -0
- package/dist/lib/consolidation.js +4 -0
- package/dist/lib/database.js +4 -0
- package/dist/lib/db-daemon-client.js +4 -0
- package/dist/lib/db.js +4 -0
- package/dist/lib/device-registry.js +4 -0
- package/dist/lib/embedder.js +12 -0
- package/dist/lib/employee-templates.js +16 -0
- package/dist/lib/employees.js +4 -0
- package/dist/lib/exe-daemon-client.js +4 -0
- package/dist/lib/exe-daemon.js +1144 -480
- package/dist/lib/hybrid-search.js +24 -0
- package/dist/lib/identity.js +4 -0
- package/dist/lib/license.js +4 -0
- package/dist/lib/messaging.js +4 -0
- package/dist/lib/reminders.js +4 -0
- package/dist/lib/schedules.js +22 -0
- package/dist/lib/skill-learning.js +12 -0
- package/dist/lib/status-brief.js +39 -0
- package/dist/lib/store.js +22 -0
- package/dist/lib/task-router.js +4 -0
- package/dist/lib/tasks.js +12 -0
- package/dist/lib/tmux-routing.js +12 -0
- package/dist/lib/token-spend.js +4 -0
- package/dist/mcp/server.js +1045 -427
- package/dist/mcp/tools/complete-reminder.js +4 -0
- package/dist/mcp/tools/create-reminder.js +4 -0
- package/dist/mcp/tools/create-task.js +12 -0
- package/dist/mcp/tools/deactivate-behavior.js +4 -0
- package/dist/mcp/tools/list-reminders.js +4 -0
- package/dist/mcp/tools/list-tasks.js +4 -0
- package/dist/mcp/tools/send-message.js +4 -0
- package/dist/mcp/tools/update-task.js +12 -0
- package/dist/runtime/index.js +24 -0
- package/dist/tui/App.js +24 -0
- package/package.json +3 -2
- package/src/commands/exe/cloud.md +15 -8
- package/src/commands/exe/link.md +7 -6
- package/stack.release.json +2 -2
|
@@ -156,6 +156,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
156
156
|
const userAU = raw.autoUpdate ?? {};
|
|
157
157
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
158
158
|
}
|
|
159
|
+
function normalizeOrchestration(raw) {
|
|
160
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
161
|
+
const userOrg = raw.orchestration ?? {};
|
|
162
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
163
|
+
}
|
|
159
164
|
async function loadConfig() {
|
|
160
165
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
161
166
|
await ensurePrivateDir(dir);
|
|
@@ -180,6 +185,7 @@ async function loadConfig() {
|
|
|
180
185
|
normalizeScalingRoadmap(migratedCfg);
|
|
181
186
|
normalizeSessionLifecycle(migratedCfg);
|
|
182
187
|
normalizeAutoUpdate(migratedCfg);
|
|
188
|
+
normalizeOrchestration(migratedCfg);
|
|
183
189
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
184
190
|
if (config.dbPath.startsWith("~")) {
|
|
185
191
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -203,6 +209,7 @@ function loadConfigSync() {
|
|
|
203
209
|
normalizeScalingRoadmap(migratedCfg);
|
|
204
210
|
normalizeSessionLifecycle(migratedCfg);
|
|
205
211
|
normalizeAutoUpdate(migratedCfg);
|
|
212
|
+
normalizeOrchestration(migratedCfg);
|
|
206
213
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
207
214
|
} catch {
|
|
208
215
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -224,6 +231,7 @@ async function loadConfigFrom(configPath) {
|
|
|
224
231
|
normalizeScalingRoadmap(migratedCfg);
|
|
225
232
|
normalizeSessionLifecycle(migratedCfg);
|
|
226
233
|
normalizeAutoUpdate(migratedCfg);
|
|
234
|
+
normalizeOrchestration(migratedCfg);
|
|
227
235
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
228
236
|
} catch {
|
|
229
237
|
return { ...DEFAULT_CONFIG };
|
|
@@ -295,6 +303,10 @@ var init_config = __esm({
|
|
|
295
303
|
checkOnBoot: true,
|
|
296
304
|
autoInstall: false,
|
|
297
305
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
306
|
+
},
|
|
307
|
+
orchestration: {
|
|
308
|
+
phase: "phase_1_coo",
|
|
309
|
+
phaseSetBy: "default"
|
|
298
310
|
}
|
|
299
311
|
};
|
|
300
312
|
CONFIG_MIGRATIONS = [
|
|
@@ -156,6 +156,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
156
156
|
const userAU = raw.autoUpdate ?? {};
|
|
157
157
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
158
158
|
}
|
|
159
|
+
function normalizeOrchestration(raw) {
|
|
160
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
161
|
+
const userOrg = raw.orchestration ?? {};
|
|
162
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
163
|
+
}
|
|
159
164
|
async function loadConfig() {
|
|
160
165
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
161
166
|
await ensurePrivateDir(dir);
|
|
@@ -180,6 +185,7 @@ async function loadConfig() {
|
|
|
180
185
|
normalizeScalingRoadmap(migratedCfg);
|
|
181
186
|
normalizeSessionLifecycle(migratedCfg);
|
|
182
187
|
normalizeAutoUpdate(migratedCfg);
|
|
188
|
+
normalizeOrchestration(migratedCfg);
|
|
183
189
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
184
190
|
if (config.dbPath.startsWith("~")) {
|
|
185
191
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -203,6 +209,7 @@ function loadConfigSync() {
|
|
|
203
209
|
normalizeScalingRoadmap(migratedCfg);
|
|
204
210
|
normalizeSessionLifecycle(migratedCfg);
|
|
205
211
|
normalizeAutoUpdate(migratedCfg);
|
|
212
|
+
normalizeOrchestration(migratedCfg);
|
|
206
213
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
207
214
|
} catch {
|
|
208
215
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -224,6 +231,7 @@ async function loadConfigFrom(configPath) {
|
|
|
224
231
|
normalizeScalingRoadmap(migratedCfg);
|
|
225
232
|
normalizeSessionLifecycle(migratedCfg);
|
|
226
233
|
normalizeAutoUpdate(migratedCfg);
|
|
234
|
+
normalizeOrchestration(migratedCfg);
|
|
227
235
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
228
236
|
} catch {
|
|
229
237
|
return { ...DEFAULT_CONFIG };
|
|
@@ -295,6 +303,10 @@ var init_config = __esm({
|
|
|
295
303
|
checkOnBoot: true,
|
|
296
304
|
autoInstall: false,
|
|
297
305
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
306
|
+
},
|
|
307
|
+
orchestration: {
|
|
308
|
+
phase: "phase_1_coo",
|
|
309
|
+
phaseSetBy: "default"
|
|
298
310
|
}
|
|
299
311
|
};
|
|
300
312
|
CONFIG_MIGRATIONS = [
|
package/dist/runtime/index.js
CHANGED
|
@@ -149,6 +149,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
149
149
|
const userAU = raw.autoUpdate ?? {};
|
|
150
150
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
151
151
|
}
|
|
152
|
+
function normalizeOrchestration(raw) {
|
|
153
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
154
|
+
const userOrg = raw.orchestration ?? {};
|
|
155
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
156
|
+
}
|
|
152
157
|
async function loadConfig() {
|
|
153
158
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
154
159
|
await ensurePrivateDir(dir);
|
|
@@ -173,6 +178,7 @@ async function loadConfig() {
|
|
|
173
178
|
normalizeScalingRoadmap(migratedCfg);
|
|
174
179
|
normalizeSessionLifecycle(migratedCfg);
|
|
175
180
|
normalizeAutoUpdate(migratedCfg);
|
|
181
|
+
normalizeOrchestration(migratedCfg);
|
|
176
182
|
const config = { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
177
183
|
if (config.dbPath.startsWith("~")) {
|
|
178
184
|
config.dbPath = config.dbPath.replace(/^~/, os2.homedir());
|
|
@@ -196,6 +202,7 @@ function loadConfigSync() {
|
|
|
196
202
|
normalizeScalingRoadmap(migratedCfg);
|
|
197
203
|
normalizeSessionLifecycle(migratedCfg);
|
|
198
204
|
normalizeAutoUpdate(migratedCfg);
|
|
205
|
+
normalizeOrchestration(migratedCfg);
|
|
199
206
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
200
207
|
} catch {
|
|
201
208
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db") };
|
|
@@ -217,6 +224,7 @@ async function loadConfigFrom(configPath) {
|
|
|
217
224
|
normalizeScalingRoadmap(migratedCfg);
|
|
218
225
|
normalizeSessionLifecycle(migratedCfg);
|
|
219
226
|
normalizeAutoUpdate(migratedCfg);
|
|
227
|
+
normalizeOrchestration(migratedCfg);
|
|
220
228
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
221
229
|
} catch {
|
|
222
230
|
return { ...DEFAULT_CONFIG };
|
|
@@ -288,6 +296,10 @@ var init_config = __esm({
|
|
|
288
296
|
checkOnBoot: true,
|
|
289
297
|
autoInstall: false,
|
|
290
298
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
299
|
+
},
|
|
300
|
+
orchestration: {
|
|
301
|
+
phase: "phase_1_coo",
|
|
302
|
+
phaseSetBy: "default"
|
|
291
303
|
}
|
|
292
304
|
};
|
|
293
305
|
CONFIG_MIGRATIONS = [
|
|
@@ -7651,6 +7663,12 @@ var init_platform_procedures = __esm({
|
|
|
7651
7663
|
priority: "p0",
|
|
7652
7664
|
content: "Founder -> coordinator (the executive agent, internally routed as 'COO') -> CTO/CMO. CTO -> engineers. CMO -> content production. Never skip levels: the coordinator does not bypass managers for specialist work. Specialists report to their manager. If you need cross-team info, use ask_team_memory \u2014 don't read other agents' task folders. Each level owns dispatch downward and review upward."
|
|
7653
7665
|
},
|
|
7666
|
+
{
|
|
7667
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
7668
|
+
domain: "workflow",
|
|
7669
|
+
priority: "p1",
|
|
7670
|
+
content: "New customers start best in Phase 1: founder \u2194 coordinator/Chief of Staff, building company context. Suggest Phase 2 executives when domain work repeats; suggest Phase 3 parallel execution only when review/permission gates are ready. This is guidance, not a blocker: users may jump phases anytime. Never overwrite their phase, role titles, identities, or custom org design."
|
|
7671
|
+
},
|
|
7654
7672
|
{
|
|
7655
7673
|
title: "Single dispatch path \u2014 create_task only",
|
|
7656
7674
|
domain: "workflow",
|
|
@@ -7709,6 +7727,12 @@ var init_platform_procedures = __esm({
|
|
|
7709
7727
|
priority: "p0",
|
|
7710
7728
|
content: "exe-build-adv is MANDATORY for ALL work touching 3+ files. Run /exe-build-adv --auto BEFORE implementation. Pipeline: Spec \u2192 AC \u2192 Tests \u2192 Evaluate \u2192 Fix. No multi-file feature ships without pipeline artifacts. No exceptions \u2014 managers reject work without them."
|
|
7711
7729
|
},
|
|
7730
|
+
{
|
|
7731
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
7732
|
+
domain: "workflow",
|
|
7733
|
+
priority: "p1",
|
|
7734
|
+
content: "After any code-change batch passes typecheck/tests/build, run git status, summarize changed files, and commit with a clear message before ending the session. If work must remain uncommitted for review/dogfood, explicitly say so, list the files, and state the blocker. Never imply work is complete while verified changes are still floating locally."
|
|
7735
|
+
},
|
|
7712
7736
|
{
|
|
7713
7737
|
title: "Desktop and TUI are the same product",
|
|
7714
7738
|
domain: "architecture",
|
package/dist/tui/App.js
CHANGED
|
@@ -500,6 +500,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
500
500
|
const userAU = raw.autoUpdate ?? {};
|
|
501
501
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
502
502
|
}
|
|
503
|
+
function normalizeOrchestration(raw) {
|
|
504
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
505
|
+
const userOrg = raw.orchestration ?? {};
|
|
506
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
507
|
+
}
|
|
503
508
|
async function loadConfig() {
|
|
504
509
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
505
510
|
await ensurePrivateDir(dir);
|
|
@@ -524,6 +529,7 @@ async function loadConfig() {
|
|
|
524
529
|
normalizeScalingRoadmap(migratedCfg);
|
|
525
530
|
normalizeSessionLifecycle(migratedCfg);
|
|
526
531
|
normalizeAutoUpdate(migratedCfg);
|
|
532
|
+
normalizeOrchestration(migratedCfg);
|
|
527
533
|
const config = { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
528
534
|
if (config.dbPath.startsWith("~")) {
|
|
529
535
|
config.dbPath = config.dbPath.replace(/^~/, os2.homedir());
|
|
@@ -547,6 +553,7 @@ function loadConfigSync() {
|
|
|
547
553
|
normalizeScalingRoadmap(migratedCfg);
|
|
548
554
|
normalizeSessionLifecycle(migratedCfg);
|
|
549
555
|
normalizeAutoUpdate(migratedCfg);
|
|
556
|
+
normalizeOrchestration(migratedCfg);
|
|
550
557
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
551
558
|
} catch {
|
|
552
559
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db") };
|
|
@@ -568,6 +575,7 @@ async function loadConfigFrom(configPath) {
|
|
|
568
575
|
normalizeScalingRoadmap(migratedCfg);
|
|
569
576
|
normalizeSessionLifecycle(migratedCfg);
|
|
570
577
|
normalizeAutoUpdate(migratedCfg);
|
|
578
|
+
normalizeOrchestration(migratedCfg);
|
|
571
579
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
572
580
|
} catch {
|
|
573
581
|
return { ...DEFAULT_CONFIG };
|
|
@@ -639,6 +647,10 @@ var init_config = __esm({
|
|
|
639
647
|
checkOnBoot: true,
|
|
640
648
|
autoInstall: false,
|
|
641
649
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
650
|
+
},
|
|
651
|
+
orchestration: {
|
|
652
|
+
phase: "phase_1_coo",
|
|
653
|
+
phaseSetBy: "default"
|
|
642
654
|
}
|
|
643
655
|
};
|
|
644
656
|
CONFIG_MIGRATIONS = [
|
|
@@ -8707,6 +8719,12 @@ var init_platform_procedures = __esm({
|
|
|
8707
8719
|
priority: "p0",
|
|
8708
8720
|
content: "Founder -> coordinator (the executive agent, internally routed as 'COO') -> CTO/CMO. CTO -> engineers. CMO -> content production. Never skip levels: the coordinator does not bypass managers for specialist work. Specialists report to their manager. If you need cross-team info, use ask_team_memory \u2014 don't read other agents' task folders. Each level owns dispatch downward and review upward."
|
|
8709
8721
|
},
|
|
8722
|
+
{
|
|
8723
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
8724
|
+
domain: "workflow",
|
|
8725
|
+
priority: "p1",
|
|
8726
|
+
content: "New customers start best in Phase 1: founder \u2194 coordinator/Chief of Staff, building company context. Suggest Phase 2 executives when domain work repeats; suggest Phase 3 parallel execution only when review/permission gates are ready. This is guidance, not a blocker: users may jump phases anytime. Never overwrite their phase, role titles, identities, or custom org design."
|
|
8727
|
+
},
|
|
8710
8728
|
{
|
|
8711
8729
|
title: "Single dispatch path \u2014 create_task only",
|
|
8712
8730
|
domain: "workflow",
|
|
@@ -8765,6 +8783,12 @@ var init_platform_procedures = __esm({
|
|
|
8765
8783
|
priority: "p0",
|
|
8766
8784
|
content: "exe-build-adv is MANDATORY for ALL work touching 3+ files. Run /exe-build-adv --auto BEFORE implementation. Pipeline: Spec \u2192 AC \u2192 Tests \u2192 Evaluate \u2192 Fix. No multi-file feature ships without pipeline artifacts. No exceptions \u2014 managers reject work without them."
|
|
8767
8785
|
},
|
|
8786
|
+
{
|
|
8787
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
8788
|
+
domain: "workflow",
|
|
8789
|
+
priority: "p1",
|
|
8790
|
+
content: "After any code-change batch passes typecheck/tests/build, run git status, summarize changed files, and commit with a clear message before ending the session. If work must remain uncommitted for review/dogfood, explicitly say so, list the files, and state the blocker. Never imply work is complete while verified changes are still floating locally."
|
|
8791
|
+
},
|
|
8768
8792
|
{
|
|
8769
8793
|
title: "Desktop and TUI are the same product",
|
|
8770
8794
|
domain: "architecture",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.66",
|
|
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",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"customer-readiness": "./dist/bin/customer-readiness.js",
|
|
46
46
|
"exe-healthcheck": "./dist/bin/exe-healthcheck.js",
|
|
47
47
|
"exe-doctor": "./dist/bin/exe-doctor.js",
|
|
48
|
-
"exe-stack-update": "./dist/bin/stack-update.js"
|
|
48
|
+
"exe-stack-update": "./dist/bin/stack-update.js",
|
|
49
|
+
"exe-cloud": "./dist/bin/exe-cloud.js"
|
|
49
50
|
},
|
|
50
51
|
"files": [
|
|
51
52
|
"dist",
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Set up cloud sync
|
|
2
|
+
description: Set up cloud sync, link a device, or run Exe Cloud sync
|
|
3
3
|
allowed-tools: Bash
|
|
4
|
-
argument-hint: [sync|
|
|
4
|
+
argument-hint: [link|status|sync|relink]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
One command
|
|
7
|
+
One customer-facing command family for Exe Cloud.
|
|
8
8
|
|
|
9
|
-
- `/exe-cloud` — full interactive setup
|
|
10
|
-
- `/exe-cloud
|
|
11
|
-
- `/exe-cloud
|
|
9
|
+
- `/exe-cloud` — full interactive setup: import/create key if needed, configure cloud API, register device, and start syncing.
|
|
10
|
+
- `/exe-cloud status` — read-only check of key/cloud status and endpoint.
|
|
11
|
+
- `/exe-cloud link` — link another device: show recovery phrase + cloud info; linked devices should sync automatically after setup.
|
|
12
|
+
- `/exe-cloud sync` — manual “sync now”: pull + push memories, tasks, roster, behaviors, docs, and graph data.
|
|
13
|
+
- `/exe-cloud relink` — guided post-key-rotation cloud repair: confirm phrase backup and reupload local DB as source of truth.
|
|
14
|
+
- `/exe-cloud relink --dry-run` — show the relink checklist without changing anything.
|
|
12
15
|
|
|
13
16
|
```bash
|
|
14
|
-
|
|
17
|
+
if [ "$ARGUMENTS" = "sync" ]; then
|
|
18
|
+
exe-os cloud sync
|
|
19
|
+
else
|
|
20
|
+
node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-cloud.js" $ARGUMENTS
|
|
21
|
+
fi
|
|
15
22
|
```
|
|
16
23
|
|
|
17
|
-
**Note:** `/exe-link` is deprecated. Use `/exe-cloud`
|
|
24
|
+
**Note:** `/exe-link` is deprecated. Use `/exe-cloud link` for recovery phrase export/import flow.
|
package/src/commands/exe/link.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Deprecated legacy recovery-key command
|
|
3
3
|
allowed-tools: Bash
|
|
4
|
-
argument-hint: [export|import]
|
|
4
|
+
argument-hint: [status|export|import]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
**Deprecated:** Use `/exe-cloud` instead
|
|
7
|
+
**Deprecated:** Use `/exe-cloud` instead.
|
|
8
8
|
|
|
9
|
-
- `/exe-cloud` — full setup
|
|
10
|
-
- `/exe-cloud
|
|
11
|
-
- `/exe-cloud
|
|
9
|
+
- `/exe-cloud` — full setup: key + cloud + device registration.
|
|
10
|
+
- `/exe-cloud status` — read-only check of sync/key/cloud status.
|
|
11
|
+
- `/exe-cloud link` — link another device: recovery phrase + cloud config; linked devices sync automatically after setup.
|
|
12
|
+
- `/exe-cloud sync` — manual “sync now” for cloud data.
|
|
12
13
|
|
|
13
14
|
Legacy command still works:
|
|
14
15
|
|
package/stack.release.json
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"repo": "AskExe/exe-os",
|
|
5
5
|
"service": "exed",
|
|
6
6
|
"packageName": "@askexenow/exe-os",
|
|
7
|
-
"version": "0.9.
|
|
8
|
-
"image": "ghcr.io/askexe/exed:v0.9.
|
|
7
|
+
"version": "0.9.65",
|
|
8
|
+
"image": "ghcr.io/askexe/exed:v0.9.65",
|
|
9
9
|
"imageEnv": "EXED_IMAGE_TAG",
|
|
10
10
|
"stackParticipation": {
|
|
11
11
|
"required": true,
|