@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
package/dist/bin/graph-export.js
CHANGED
|
@@ -188,6 +188,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
188
188
|
const userAU = raw.autoUpdate ?? {};
|
|
189
189
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
190
190
|
}
|
|
191
|
+
function normalizeOrchestration(raw) {
|
|
192
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
193
|
+
const userOrg = raw.orchestration ?? {};
|
|
194
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
195
|
+
}
|
|
191
196
|
async function loadConfig() {
|
|
192
197
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
193
198
|
await ensurePrivateDir(dir);
|
|
@@ -212,6 +217,7 @@ async function loadConfig() {
|
|
|
212
217
|
normalizeScalingRoadmap(migratedCfg);
|
|
213
218
|
normalizeSessionLifecycle(migratedCfg);
|
|
214
219
|
normalizeAutoUpdate(migratedCfg);
|
|
220
|
+
normalizeOrchestration(migratedCfg);
|
|
215
221
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
216
222
|
if (config.dbPath.startsWith("~")) {
|
|
217
223
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -287,6 +293,10 @@ var init_config = __esm({
|
|
|
287
293
|
checkOnBoot: true,
|
|
288
294
|
autoInstall: false,
|
|
289
295
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
296
|
+
},
|
|
297
|
+
orchestration: {
|
|
298
|
+
phase: "phase_1_coo",
|
|
299
|
+
phaseSetBy: "default"
|
|
290
300
|
}
|
|
291
301
|
};
|
|
292
302
|
CONFIG_MIGRATIONS = [
|
|
@@ -3838,6 +3848,12 @@ var init_platform_procedures = __esm({
|
|
|
3838
3848
|
priority: "p0",
|
|
3839
3849
|
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."
|
|
3840
3850
|
},
|
|
3851
|
+
{
|
|
3852
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3853
|
+
domain: "workflow",
|
|
3854
|
+
priority: "p1",
|
|
3855
|
+
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."
|
|
3856
|
+
},
|
|
3841
3857
|
{
|
|
3842
3858
|
title: "Single dispatch path \u2014 create_task only",
|
|
3843
3859
|
domain: "workflow",
|
|
@@ -3896,6 +3912,12 @@ var init_platform_procedures = __esm({
|
|
|
3896
3912
|
priority: "p0",
|
|
3897
3913
|
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."
|
|
3898
3914
|
},
|
|
3915
|
+
{
|
|
3916
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3917
|
+
domain: "workflow",
|
|
3918
|
+
priority: "p1",
|
|
3919
|
+
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."
|
|
3920
|
+
},
|
|
3899
3921
|
{
|
|
3900
3922
|
title: "Desktop and TUI are the same product",
|
|
3901
3923
|
domain: "architecture",
|
package/dist/bin/install.js
CHANGED
|
@@ -127,6 +127,10 @@ var init_config = __esm({
|
|
|
127
127
|
checkOnBoot: true,
|
|
128
128
|
autoInstall: false,
|
|
129
129
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
130
|
+
},
|
|
131
|
+
orchestration: {
|
|
132
|
+
phase: "phase_1_coo",
|
|
133
|
+
phaseSetBy: "default"
|
|
130
134
|
}
|
|
131
135
|
};
|
|
132
136
|
}
|
|
@@ -615,7 +619,7 @@ function commandHasAnyMarker(command, markers) {
|
|
|
615
619
|
function isLegacySplitPostToolCommand(command) {
|
|
616
620
|
return commandHasAnyMarker(command, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS);
|
|
617
621
|
}
|
|
618
|
-
var EXE_HOOKS, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS;
|
|
622
|
+
var EXE_HOOKS, EXE_HOOK_MANIFEST, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS;
|
|
619
623
|
var init_runtime_hook_manifest = __esm({
|
|
620
624
|
"src/adapters/runtime-hook-manifest.ts"() {
|
|
621
625
|
"use strict";
|
|
@@ -633,6 +637,116 @@ var init_runtime_hook_manifest = __esm({
|
|
|
633
637
|
notification: "dist/hooks/notification.js",
|
|
634
638
|
instructionsLoaded: "dist/hooks/instructions-loaded.js"
|
|
635
639
|
};
|
|
640
|
+
EXE_HOOK_MANIFEST = [
|
|
641
|
+
{
|
|
642
|
+
key: "postToolCombined",
|
|
643
|
+
event: "PostToolUse",
|
|
644
|
+
commandMarker: EXE_HOOKS.postToolCombined,
|
|
645
|
+
owner: "exe-os",
|
|
646
|
+
purpose: "Single PostToolUse entrypoint for ingestion, error recall, summaries, and bug detection.",
|
|
647
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
648
|
+
checkpointRole: "none"
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
key: "sessionStart",
|
|
652
|
+
event: "SessionStart",
|
|
653
|
+
commandMarker: EXE_HOOKS.sessionStart,
|
|
654
|
+
owner: "exe-os",
|
|
655
|
+
purpose: "Loads agent identity, procedures, and boot context.",
|
|
656
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
657
|
+
checkpointRole: "none"
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
key: "promptSubmit",
|
|
661
|
+
event: "UserPromptSubmit",
|
|
662
|
+
commandMarker: EXE_HOOKS.promptSubmit,
|
|
663
|
+
owner: "exe-os",
|
|
664
|
+
purpose: "Injects current tasks, pending reviews, and local context before each prompt.",
|
|
665
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
666
|
+
checkpointRole: "none"
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
key: "heartbeat",
|
|
670
|
+
event: "UserPromptSubmit",
|
|
671
|
+
commandMarker: EXE_HOOKS.heartbeat,
|
|
672
|
+
owner: "exe-os",
|
|
673
|
+
purpose: "Lightweight heartbeat/status sidecar for Claude Code sessions.",
|
|
674
|
+
runtimes: ["claude"],
|
|
675
|
+
checkpointRole: "none"
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
key: "stop",
|
|
679
|
+
event: "Stop",
|
|
680
|
+
commandMarker: EXE_HOOKS.stop,
|
|
681
|
+
owner: "exe-os",
|
|
682
|
+
purpose: "Finalizes task state, capacity signals, and emergency checkpointing.",
|
|
683
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
684
|
+
checkpointRole: "capacity_checkpoint"
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
key: "preToolUse",
|
|
688
|
+
event: "PreToolUse",
|
|
689
|
+
commandMarker: EXE_HOOKS.preToolUse,
|
|
690
|
+
owner: "exe-os",
|
|
691
|
+
purpose: "Preflight guardrails before shell/tool execution.",
|
|
692
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
693
|
+
checkpointRole: "none"
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
key: "subagentStop",
|
|
697
|
+
event: "SubagentStop",
|
|
698
|
+
commandMarker: EXE_HOOKS.subagentStop,
|
|
699
|
+
owner: "exe-os",
|
|
700
|
+
purpose: "Captures subagent completion context.",
|
|
701
|
+
runtimes: ["claude"],
|
|
702
|
+
checkpointRole: "none"
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
key: "preCompact",
|
|
706
|
+
event: "PreCompact",
|
|
707
|
+
commandMarker: EXE_HOOKS.preCompact,
|
|
708
|
+
owner: "exe-os",
|
|
709
|
+
purpose: "Writes active-task snapshot and compaction recovery context.",
|
|
710
|
+
runtimes: ["claude"],
|
|
711
|
+
checkpointRole: "recovery_context"
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
key: "postCompact",
|
|
715
|
+
event: "PostCompact",
|
|
716
|
+
commandMarker: EXE_HOOKS.postCompact,
|
|
717
|
+
owner: "exe-os",
|
|
718
|
+
purpose: "Rehydrates recovery context after compaction.",
|
|
719
|
+
runtimes: ["claude"],
|
|
720
|
+
checkpointRole: "recovery_context"
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
key: "sessionEnd",
|
|
724
|
+
event: "SessionEnd",
|
|
725
|
+
commandMarker: EXE_HOOKS.sessionEnd,
|
|
726
|
+
owner: "exe-os",
|
|
727
|
+
purpose: "Stores session-end checkpoint and triages orphaned in-progress tasks.",
|
|
728
|
+
runtimes: ["claude"],
|
|
729
|
+
checkpointRole: "session_summary"
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
key: "notification",
|
|
733
|
+
event: "Notification",
|
|
734
|
+
commandMarker: EXE_HOOKS.notification,
|
|
735
|
+
owner: "exe-os",
|
|
736
|
+
purpose: "Captures runtime notifications and nudges.",
|
|
737
|
+
runtimes: ["claude"],
|
|
738
|
+
checkpointRole: "none"
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
key: "instructionsLoaded",
|
|
742
|
+
event: "InstructionsLoaded",
|
|
743
|
+
commandMarker: EXE_HOOKS.instructionsLoaded,
|
|
744
|
+
owner: "exe-os",
|
|
745
|
+
purpose: "Applies runtime instruction post-processing.",
|
|
746
|
+
runtimes: ["claude"],
|
|
747
|
+
checkpointRole: "none"
|
|
748
|
+
}
|
|
749
|
+
];
|
|
636
750
|
LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS = [
|
|
637
751
|
"dist/hooks/ingest.js",
|
|
638
752
|
"dist/hooks/error-recall.js",
|
|
@@ -205,6 +205,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
205
205
|
const userAU = raw.autoUpdate ?? {};
|
|
206
206
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
207
207
|
}
|
|
208
|
+
function normalizeOrchestration(raw) {
|
|
209
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
210
|
+
const userOrg = raw.orchestration ?? {};
|
|
211
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
212
|
+
}
|
|
208
213
|
async function loadConfig() {
|
|
209
214
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
210
215
|
await ensurePrivateDir(dir);
|
|
@@ -229,6 +234,7 @@ async function loadConfig() {
|
|
|
229
234
|
normalizeScalingRoadmap(migratedCfg);
|
|
230
235
|
normalizeSessionLifecycle(migratedCfg);
|
|
231
236
|
normalizeAutoUpdate(migratedCfg);
|
|
237
|
+
normalizeOrchestration(migratedCfg);
|
|
232
238
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
233
239
|
if (config.dbPath.startsWith("~")) {
|
|
234
240
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -252,6 +258,7 @@ function loadConfigSync() {
|
|
|
252
258
|
normalizeScalingRoadmap(migratedCfg);
|
|
253
259
|
normalizeSessionLifecycle(migratedCfg);
|
|
254
260
|
normalizeAutoUpdate(migratedCfg);
|
|
261
|
+
normalizeOrchestration(migratedCfg);
|
|
255
262
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
256
263
|
} catch {
|
|
257
264
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -273,6 +280,7 @@ async function loadConfigFrom(configPath) {
|
|
|
273
280
|
normalizeScalingRoadmap(migratedCfg);
|
|
274
281
|
normalizeSessionLifecycle(migratedCfg);
|
|
275
282
|
normalizeAutoUpdate(migratedCfg);
|
|
283
|
+
normalizeOrchestration(migratedCfg);
|
|
276
284
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
277
285
|
} catch {
|
|
278
286
|
return { ...DEFAULT_CONFIG };
|
|
@@ -344,6 +352,10 @@ var init_config = __esm({
|
|
|
344
352
|
checkOnBoot: true,
|
|
345
353
|
autoInstall: false,
|
|
346
354
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
355
|
+
},
|
|
356
|
+
orchestration: {
|
|
357
|
+
phase: "phase_1_coo",
|
|
358
|
+
phaseSetBy: "default"
|
|
347
359
|
}
|
|
348
360
|
};
|
|
349
361
|
CONFIG_MIGRATIONS = [
|
|
@@ -3937,6 +3949,12 @@ var init_platform_procedures = __esm({
|
|
|
3937
3949
|
priority: "p0",
|
|
3938
3950
|
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."
|
|
3939
3951
|
},
|
|
3952
|
+
{
|
|
3953
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3954
|
+
domain: "workflow",
|
|
3955
|
+
priority: "p1",
|
|
3956
|
+
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."
|
|
3957
|
+
},
|
|
3940
3958
|
{
|
|
3941
3959
|
title: "Single dispatch path \u2014 create_task only",
|
|
3942
3960
|
domain: "workflow",
|
|
@@ -3995,6 +4013,12 @@ var init_platform_procedures = __esm({
|
|
|
3995
4013
|
priority: "p0",
|
|
3996
4014
|
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."
|
|
3997
4015
|
},
|
|
4016
|
+
{
|
|
4017
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
4018
|
+
domain: "workflow",
|
|
4019
|
+
priority: "p1",
|
|
4020
|
+
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."
|
|
4021
|
+
},
|
|
3998
4022
|
{
|
|
3999
4023
|
title: "Desktop and TUI are the same product",
|
|
4000
4024
|
domain: "architecture",
|
package/dist/bin/scan-tasks.js
CHANGED
|
@@ -454,6 +454,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
454
454
|
const userAU = raw.autoUpdate ?? {};
|
|
455
455
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
456
456
|
}
|
|
457
|
+
function normalizeOrchestration(raw) {
|
|
458
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
459
|
+
const userOrg = raw.orchestration ?? {};
|
|
460
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
461
|
+
}
|
|
457
462
|
async function loadConfig() {
|
|
458
463
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
459
464
|
await ensurePrivateDir(dir);
|
|
@@ -478,6 +483,7 @@ async function loadConfig() {
|
|
|
478
483
|
normalizeScalingRoadmap(migratedCfg);
|
|
479
484
|
normalizeSessionLifecycle(migratedCfg);
|
|
480
485
|
normalizeAutoUpdate(migratedCfg);
|
|
486
|
+
normalizeOrchestration(migratedCfg);
|
|
481
487
|
const config = { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
482
488
|
if (config.dbPath.startsWith("~")) {
|
|
483
489
|
config.dbPath = config.dbPath.replace(/^~/, os2.homedir());
|
|
@@ -501,6 +507,7 @@ function loadConfigSync() {
|
|
|
501
507
|
normalizeScalingRoadmap(migratedCfg);
|
|
502
508
|
normalizeSessionLifecycle(migratedCfg);
|
|
503
509
|
normalizeAutoUpdate(migratedCfg);
|
|
510
|
+
normalizeOrchestration(migratedCfg);
|
|
504
511
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
505
512
|
} catch {
|
|
506
513
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db") };
|
|
@@ -522,6 +529,7 @@ async function loadConfigFrom(configPath) {
|
|
|
522
529
|
normalizeScalingRoadmap(migratedCfg);
|
|
523
530
|
normalizeSessionLifecycle(migratedCfg);
|
|
524
531
|
normalizeAutoUpdate(migratedCfg);
|
|
532
|
+
normalizeOrchestration(migratedCfg);
|
|
525
533
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
526
534
|
} catch {
|
|
527
535
|
return { ...DEFAULT_CONFIG };
|
|
@@ -593,6 +601,10 @@ var init_config = __esm({
|
|
|
593
601
|
checkOnBoot: true,
|
|
594
602
|
autoInstall: false,
|
|
595
603
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
604
|
+
},
|
|
605
|
+
orchestration: {
|
|
606
|
+
phase: "phase_1_coo",
|
|
607
|
+
phaseSetBy: "default"
|
|
596
608
|
}
|
|
597
609
|
};
|
|
598
610
|
CONFIG_MIGRATIONS = [
|
|
@@ -7615,6 +7627,12 @@ var init_platform_procedures = __esm({
|
|
|
7615
7627
|
priority: "p0",
|
|
7616
7628
|
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."
|
|
7617
7629
|
},
|
|
7630
|
+
{
|
|
7631
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
7632
|
+
domain: "workflow",
|
|
7633
|
+
priority: "p1",
|
|
7634
|
+
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."
|
|
7635
|
+
},
|
|
7618
7636
|
{
|
|
7619
7637
|
title: "Single dispatch path \u2014 create_task only",
|
|
7620
7638
|
domain: "workflow",
|
|
@@ -7673,6 +7691,12 @@ var init_platform_procedures = __esm({
|
|
|
7673
7691
|
priority: "p0",
|
|
7674
7692
|
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."
|
|
7675
7693
|
},
|
|
7694
|
+
{
|
|
7695
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
7696
|
+
domain: "workflow",
|
|
7697
|
+
priority: "p1",
|
|
7698
|
+
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."
|
|
7699
|
+
},
|
|
7676
7700
|
{
|
|
7677
7701
|
title: "Desktop and TUI are the same product",
|
|
7678
7702
|
domain: "architecture",
|