@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
|
@@ -214,6 +214,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
214
214
|
const userAU = raw.autoUpdate ?? {};
|
|
215
215
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
216
216
|
}
|
|
217
|
+
function normalizeOrchestration(raw) {
|
|
218
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
219
|
+
const userOrg = raw.orchestration ?? {};
|
|
220
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
221
|
+
}
|
|
217
222
|
async function loadConfig() {
|
|
218
223
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
219
224
|
await ensurePrivateDir(dir);
|
|
@@ -238,6 +243,7 @@ async function loadConfig() {
|
|
|
238
243
|
normalizeScalingRoadmap(migratedCfg);
|
|
239
244
|
normalizeSessionLifecycle(migratedCfg);
|
|
240
245
|
normalizeAutoUpdate(migratedCfg);
|
|
246
|
+
normalizeOrchestration(migratedCfg);
|
|
241
247
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
242
248
|
if (config.dbPath.startsWith("~")) {
|
|
243
249
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -261,6 +267,7 @@ function loadConfigSync() {
|
|
|
261
267
|
normalizeScalingRoadmap(migratedCfg);
|
|
262
268
|
normalizeSessionLifecycle(migratedCfg);
|
|
263
269
|
normalizeAutoUpdate(migratedCfg);
|
|
270
|
+
normalizeOrchestration(migratedCfg);
|
|
264
271
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
265
272
|
} catch {
|
|
266
273
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -282,6 +289,7 @@ async function loadConfigFrom(configPath) {
|
|
|
282
289
|
normalizeScalingRoadmap(migratedCfg);
|
|
283
290
|
normalizeSessionLifecycle(migratedCfg);
|
|
284
291
|
normalizeAutoUpdate(migratedCfg);
|
|
292
|
+
normalizeOrchestration(migratedCfg);
|
|
285
293
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
286
294
|
} catch {
|
|
287
295
|
return { ...DEFAULT_CONFIG };
|
|
@@ -353,6 +361,10 @@ var init_config = __esm({
|
|
|
353
361
|
checkOnBoot: true,
|
|
354
362
|
autoInstall: false,
|
|
355
363
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
364
|
+
},
|
|
365
|
+
orchestration: {
|
|
366
|
+
phase: "phase_1_coo",
|
|
367
|
+
phaseSetBy: "default"
|
|
356
368
|
}
|
|
357
369
|
};
|
|
358
370
|
CONFIG_MIGRATIONS = [
|
|
@@ -3228,6 +3240,12 @@ var init_platform_procedures = __esm({
|
|
|
3228
3240
|
priority: "p0",
|
|
3229
3241
|
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."
|
|
3230
3242
|
},
|
|
3243
|
+
{
|
|
3244
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3245
|
+
domain: "workflow",
|
|
3246
|
+
priority: "p1",
|
|
3247
|
+
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."
|
|
3248
|
+
},
|
|
3231
3249
|
{
|
|
3232
3250
|
title: "Single dispatch path \u2014 create_task only",
|
|
3233
3251
|
domain: "workflow",
|
|
@@ -3286,6 +3304,12 @@ var init_platform_procedures = __esm({
|
|
|
3286
3304
|
priority: "p0",
|
|
3287
3305
|
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."
|
|
3288
3306
|
},
|
|
3307
|
+
{
|
|
3308
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3309
|
+
domain: "workflow",
|
|
3310
|
+
priority: "p1",
|
|
3311
|
+
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."
|
|
3312
|
+
},
|
|
3289
3313
|
{
|
|
3290
3314
|
title: "Desktop and TUI are the same product",
|
|
3291
3315
|
domain: "architecture",
|
|
@@ -3948,7 +3972,7 @@ function commandHasAnyMarker(command, markers) {
|
|
|
3948
3972
|
function isLegacySplitPostToolCommand(command) {
|
|
3949
3973
|
return commandHasAnyMarker(command, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS);
|
|
3950
3974
|
}
|
|
3951
|
-
var EXE_HOOKS, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS;
|
|
3975
|
+
var EXE_HOOKS, EXE_HOOK_MANIFEST, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS;
|
|
3952
3976
|
var init_runtime_hook_manifest = __esm({
|
|
3953
3977
|
"src/adapters/runtime-hook-manifest.ts"() {
|
|
3954
3978
|
"use strict";
|
|
@@ -3966,6 +3990,116 @@ var init_runtime_hook_manifest = __esm({
|
|
|
3966
3990
|
notification: "dist/hooks/notification.js",
|
|
3967
3991
|
instructionsLoaded: "dist/hooks/instructions-loaded.js"
|
|
3968
3992
|
};
|
|
3993
|
+
EXE_HOOK_MANIFEST = [
|
|
3994
|
+
{
|
|
3995
|
+
key: "postToolCombined",
|
|
3996
|
+
event: "PostToolUse",
|
|
3997
|
+
commandMarker: EXE_HOOKS.postToolCombined,
|
|
3998
|
+
owner: "exe-os",
|
|
3999
|
+
purpose: "Single PostToolUse entrypoint for ingestion, error recall, summaries, and bug detection.",
|
|
4000
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4001
|
+
checkpointRole: "none"
|
|
4002
|
+
},
|
|
4003
|
+
{
|
|
4004
|
+
key: "sessionStart",
|
|
4005
|
+
event: "SessionStart",
|
|
4006
|
+
commandMarker: EXE_HOOKS.sessionStart,
|
|
4007
|
+
owner: "exe-os",
|
|
4008
|
+
purpose: "Loads agent identity, procedures, and boot context.",
|
|
4009
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4010
|
+
checkpointRole: "none"
|
|
4011
|
+
},
|
|
4012
|
+
{
|
|
4013
|
+
key: "promptSubmit",
|
|
4014
|
+
event: "UserPromptSubmit",
|
|
4015
|
+
commandMarker: EXE_HOOKS.promptSubmit,
|
|
4016
|
+
owner: "exe-os",
|
|
4017
|
+
purpose: "Injects current tasks, pending reviews, and local context before each prompt.",
|
|
4018
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4019
|
+
checkpointRole: "none"
|
|
4020
|
+
},
|
|
4021
|
+
{
|
|
4022
|
+
key: "heartbeat",
|
|
4023
|
+
event: "UserPromptSubmit",
|
|
4024
|
+
commandMarker: EXE_HOOKS.heartbeat,
|
|
4025
|
+
owner: "exe-os",
|
|
4026
|
+
purpose: "Lightweight heartbeat/status sidecar for Claude Code sessions.",
|
|
4027
|
+
runtimes: ["claude"],
|
|
4028
|
+
checkpointRole: "none"
|
|
4029
|
+
},
|
|
4030
|
+
{
|
|
4031
|
+
key: "stop",
|
|
4032
|
+
event: "Stop",
|
|
4033
|
+
commandMarker: EXE_HOOKS.stop,
|
|
4034
|
+
owner: "exe-os",
|
|
4035
|
+
purpose: "Finalizes task state, capacity signals, and emergency checkpointing.",
|
|
4036
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4037
|
+
checkpointRole: "capacity_checkpoint"
|
|
4038
|
+
},
|
|
4039
|
+
{
|
|
4040
|
+
key: "preToolUse",
|
|
4041
|
+
event: "PreToolUse",
|
|
4042
|
+
commandMarker: EXE_HOOKS.preToolUse,
|
|
4043
|
+
owner: "exe-os",
|
|
4044
|
+
purpose: "Preflight guardrails before shell/tool execution.",
|
|
4045
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4046
|
+
checkpointRole: "none"
|
|
4047
|
+
},
|
|
4048
|
+
{
|
|
4049
|
+
key: "subagentStop",
|
|
4050
|
+
event: "SubagentStop",
|
|
4051
|
+
commandMarker: EXE_HOOKS.subagentStop,
|
|
4052
|
+
owner: "exe-os",
|
|
4053
|
+
purpose: "Captures subagent completion context.",
|
|
4054
|
+
runtimes: ["claude"],
|
|
4055
|
+
checkpointRole: "none"
|
|
4056
|
+
},
|
|
4057
|
+
{
|
|
4058
|
+
key: "preCompact",
|
|
4059
|
+
event: "PreCompact",
|
|
4060
|
+
commandMarker: EXE_HOOKS.preCompact,
|
|
4061
|
+
owner: "exe-os",
|
|
4062
|
+
purpose: "Writes active-task snapshot and compaction recovery context.",
|
|
4063
|
+
runtimes: ["claude"],
|
|
4064
|
+
checkpointRole: "recovery_context"
|
|
4065
|
+
},
|
|
4066
|
+
{
|
|
4067
|
+
key: "postCompact",
|
|
4068
|
+
event: "PostCompact",
|
|
4069
|
+
commandMarker: EXE_HOOKS.postCompact,
|
|
4070
|
+
owner: "exe-os",
|
|
4071
|
+
purpose: "Rehydrates recovery context after compaction.",
|
|
4072
|
+
runtimes: ["claude"],
|
|
4073
|
+
checkpointRole: "recovery_context"
|
|
4074
|
+
},
|
|
4075
|
+
{
|
|
4076
|
+
key: "sessionEnd",
|
|
4077
|
+
event: "SessionEnd",
|
|
4078
|
+
commandMarker: EXE_HOOKS.sessionEnd,
|
|
4079
|
+
owner: "exe-os",
|
|
4080
|
+
purpose: "Stores session-end checkpoint and triages orphaned in-progress tasks.",
|
|
4081
|
+
runtimes: ["claude"],
|
|
4082
|
+
checkpointRole: "session_summary"
|
|
4083
|
+
},
|
|
4084
|
+
{
|
|
4085
|
+
key: "notification",
|
|
4086
|
+
event: "Notification",
|
|
4087
|
+
commandMarker: EXE_HOOKS.notification,
|
|
4088
|
+
owner: "exe-os",
|
|
4089
|
+
purpose: "Captures runtime notifications and nudges.",
|
|
4090
|
+
runtimes: ["claude"],
|
|
4091
|
+
checkpointRole: "none"
|
|
4092
|
+
},
|
|
4093
|
+
{
|
|
4094
|
+
key: "instructionsLoaded",
|
|
4095
|
+
event: "InstructionsLoaded",
|
|
4096
|
+
commandMarker: EXE_HOOKS.instructionsLoaded,
|
|
4097
|
+
owner: "exe-os",
|
|
4098
|
+
purpose: "Applies runtime instruction post-processing.",
|
|
4099
|
+
runtimes: ["claude"],
|
|
4100
|
+
checkpointRole: "none"
|
|
4101
|
+
}
|
|
4102
|
+
];
|
|
3969
4103
|
LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS = [
|
|
3970
4104
|
"dist/hooks/ingest.js",
|
|
3971
4105
|
"dist/hooks/error-recall.js",
|
|
@@ -214,6 +214,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
214
214
|
const userAU = raw.autoUpdate ?? {};
|
|
215
215
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
216
216
|
}
|
|
217
|
+
function normalizeOrchestration(raw) {
|
|
218
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
219
|
+
const userOrg = raw.orchestration ?? {};
|
|
220
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
221
|
+
}
|
|
217
222
|
async function loadConfig() {
|
|
218
223
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
219
224
|
await ensurePrivateDir(dir);
|
|
@@ -238,6 +243,7 @@ async function loadConfig() {
|
|
|
238
243
|
normalizeScalingRoadmap(migratedCfg);
|
|
239
244
|
normalizeSessionLifecycle(migratedCfg);
|
|
240
245
|
normalizeAutoUpdate(migratedCfg);
|
|
246
|
+
normalizeOrchestration(migratedCfg);
|
|
241
247
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
242
248
|
if (config.dbPath.startsWith("~")) {
|
|
243
249
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -261,6 +267,7 @@ function loadConfigSync() {
|
|
|
261
267
|
normalizeScalingRoadmap(migratedCfg);
|
|
262
268
|
normalizeSessionLifecycle(migratedCfg);
|
|
263
269
|
normalizeAutoUpdate(migratedCfg);
|
|
270
|
+
normalizeOrchestration(migratedCfg);
|
|
264
271
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
265
272
|
} catch {
|
|
266
273
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -282,6 +289,7 @@ async function loadConfigFrom(configPath) {
|
|
|
282
289
|
normalizeScalingRoadmap(migratedCfg);
|
|
283
290
|
normalizeSessionLifecycle(migratedCfg);
|
|
284
291
|
normalizeAutoUpdate(migratedCfg);
|
|
292
|
+
normalizeOrchestration(migratedCfg);
|
|
285
293
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
286
294
|
} catch {
|
|
287
295
|
return { ...DEFAULT_CONFIG };
|
|
@@ -353,6 +361,10 @@ var init_config = __esm({
|
|
|
353
361
|
checkOnBoot: true,
|
|
354
362
|
autoInstall: false,
|
|
355
363
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
364
|
+
},
|
|
365
|
+
orchestration: {
|
|
366
|
+
phase: "phase_1_coo",
|
|
367
|
+
phaseSetBy: "default"
|
|
356
368
|
}
|
|
357
369
|
};
|
|
358
370
|
CONFIG_MIGRATIONS = [
|
|
@@ -3228,6 +3240,12 @@ var init_platform_procedures = __esm({
|
|
|
3228
3240
|
priority: "p0",
|
|
3229
3241
|
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."
|
|
3230
3242
|
},
|
|
3243
|
+
{
|
|
3244
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3245
|
+
domain: "workflow",
|
|
3246
|
+
priority: "p1",
|
|
3247
|
+
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."
|
|
3248
|
+
},
|
|
3231
3249
|
{
|
|
3232
3250
|
title: "Single dispatch path \u2014 create_task only",
|
|
3233
3251
|
domain: "workflow",
|
|
@@ -3286,6 +3304,12 @@ var init_platform_procedures = __esm({
|
|
|
3286
3304
|
priority: "p0",
|
|
3287
3305
|
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."
|
|
3288
3306
|
},
|
|
3307
|
+
{
|
|
3308
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3309
|
+
domain: "workflow",
|
|
3310
|
+
priority: "p1",
|
|
3311
|
+
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."
|
|
3312
|
+
},
|
|
3289
3313
|
{
|
|
3290
3314
|
title: "Desktop and TUI are the same product",
|
|
3291
3315
|
domain: "architecture",
|
|
@@ -3934,7 +3958,7 @@ var init_preferences = __esm({
|
|
|
3934
3958
|
function textHasLegacySplitPostToolHook(text) {
|
|
3935
3959
|
return [EXE_HOOK_FILES.ingest, EXE_HOOK_FILES.errorRecall, EXE_HOOK_FILES.ingestWorker].some((file) => text.includes(file));
|
|
3936
3960
|
}
|
|
3937
|
-
var EXE_HOOK_FILES;
|
|
3961
|
+
var EXE_HOOK_FILES, EXE_HOOKS, EXE_HOOK_MANIFEST;
|
|
3938
3962
|
var init_runtime_hook_manifest = __esm({
|
|
3939
3963
|
"src/adapters/runtime-hook-manifest.ts"() {
|
|
3940
3964
|
"use strict";
|
|
@@ -3944,6 +3968,130 @@ var init_runtime_hook_manifest = __esm({
|
|
|
3944
3968
|
errorRecall: "error-recall.js",
|
|
3945
3969
|
ingestWorker: "ingest-worker.js"
|
|
3946
3970
|
};
|
|
3971
|
+
EXE_HOOKS = {
|
|
3972
|
+
postToolCombined: "dist/hooks/post-tool-combined.js",
|
|
3973
|
+
sessionStart: "dist/hooks/session-start.js",
|
|
3974
|
+
promptSubmit: "dist/hooks/prompt-submit.js",
|
|
3975
|
+
heartbeat: "dist/hooks/exe-heartbeat-hook.js",
|
|
3976
|
+
stop: "dist/hooks/stop.js",
|
|
3977
|
+
preToolUse: "dist/hooks/pre-tool-use.js",
|
|
3978
|
+
subagentStop: "dist/hooks/subagent-stop.js",
|
|
3979
|
+
preCompact: "dist/hooks/pre-compact.js",
|
|
3980
|
+
postCompact: "dist/hooks/post-compact.js",
|
|
3981
|
+
sessionEnd: "dist/hooks/session-end.js",
|
|
3982
|
+
notification: "dist/hooks/notification.js",
|
|
3983
|
+
instructionsLoaded: "dist/hooks/instructions-loaded.js"
|
|
3984
|
+
};
|
|
3985
|
+
EXE_HOOK_MANIFEST = [
|
|
3986
|
+
{
|
|
3987
|
+
key: "postToolCombined",
|
|
3988
|
+
event: "PostToolUse",
|
|
3989
|
+
commandMarker: EXE_HOOKS.postToolCombined,
|
|
3990
|
+
owner: "exe-os",
|
|
3991
|
+
purpose: "Single PostToolUse entrypoint for ingestion, error recall, summaries, and bug detection.",
|
|
3992
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
3993
|
+
checkpointRole: "none"
|
|
3994
|
+
},
|
|
3995
|
+
{
|
|
3996
|
+
key: "sessionStart",
|
|
3997
|
+
event: "SessionStart",
|
|
3998
|
+
commandMarker: EXE_HOOKS.sessionStart,
|
|
3999
|
+
owner: "exe-os",
|
|
4000
|
+
purpose: "Loads agent identity, procedures, and boot context.",
|
|
4001
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4002
|
+
checkpointRole: "none"
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
key: "promptSubmit",
|
|
4006
|
+
event: "UserPromptSubmit",
|
|
4007
|
+
commandMarker: EXE_HOOKS.promptSubmit,
|
|
4008
|
+
owner: "exe-os",
|
|
4009
|
+
purpose: "Injects current tasks, pending reviews, and local context before each prompt.",
|
|
4010
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4011
|
+
checkpointRole: "none"
|
|
4012
|
+
},
|
|
4013
|
+
{
|
|
4014
|
+
key: "heartbeat",
|
|
4015
|
+
event: "UserPromptSubmit",
|
|
4016
|
+
commandMarker: EXE_HOOKS.heartbeat,
|
|
4017
|
+
owner: "exe-os",
|
|
4018
|
+
purpose: "Lightweight heartbeat/status sidecar for Claude Code sessions.",
|
|
4019
|
+
runtimes: ["claude"],
|
|
4020
|
+
checkpointRole: "none"
|
|
4021
|
+
},
|
|
4022
|
+
{
|
|
4023
|
+
key: "stop",
|
|
4024
|
+
event: "Stop",
|
|
4025
|
+
commandMarker: EXE_HOOKS.stop,
|
|
4026
|
+
owner: "exe-os",
|
|
4027
|
+
purpose: "Finalizes task state, capacity signals, and emergency checkpointing.",
|
|
4028
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4029
|
+
checkpointRole: "capacity_checkpoint"
|
|
4030
|
+
},
|
|
4031
|
+
{
|
|
4032
|
+
key: "preToolUse",
|
|
4033
|
+
event: "PreToolUse",
|
|
4034
|
+
commandMarker: EXE_HOOKS.preToolUse,
|
|
4035
|
+
owner: "exe-os",
|
|
4036
|
+
purpose: "Preflight guardrails before shell/tool execution.",
|
|
4037
|
+
runtimes: ["claude", "codex", "opencode"],
|
|
4038
|
+
checkpointRole: "none"
|
|
4039
|
+
},
|
|
4040
|
+
{
|
|
4041
|
+
key: "subagentStop",
|
|
4042
|
+
event: "SubagentStop",
|
|
4043
|
+
commandMarker: EXE_HOOKS.subagentStop,
|
|
4044
|
+
owner: "exe-os",
|
|
4045
|
+
purpose: "Captures subagent completion context.",
|
|
4046
|
+
runtimes: ["claude"],
|
|
4047
|
+
checkpointRole: "none"
|
|
4048
|
+
},
|
|
4049
|
+
{
|
|
4050
|
+
key: "preCompact",
|
|
4051
|
+
event: "PreCompact",
|
|
4052
|
+
commandMarker: EXE_HOOKS.preCompact,
|
|
4053
|
+
owner: "exe-os",
|
|
4054
|
+
purpose: "Writes active-task snapshot and compaction recovery context.",
|
|
4055
|
+
runtimes: ["claude"],
|
|
4056
|
+
checkpointRole: "recovery_context"
|
|
4057
|
+
},
|
|
4058
|
+
{
|
|
4059
|
+
key: "postCompact",
|
|
4060
|
+
event: "PostCompact",
|
|
4061
|
+
commandMarker: EXE_HOOKS.postCompact,
|
|
4062
|
+
owner: "exe-os",
|
|
4063
|
+
purpose: "Rehydrates recovery context after compaction.",
|
|
4064
|
+
runtimes: ["claude"],
|
|
4065
|
+
checkpointRole: "recovery_context"
|
|
4066
|
+
},
|
|
4067
|
+
{
|
|
4068
|
+
key: "sessionEnd",
|
|
4069
|
+
event: "SessionEnd",
|
|
4070
|
+
commandMarker: EXE_HOOKS.sessionEnd,
|
|
4071
|
+
owner: "exe-os",
|
|
4072
|
+
purpose: "Stores session-end checkpoint and triages orphaned in-progress tasks.",
|
|
4073
|
+
runtimes: ["claude"],
|
|
4074
|
+
checkpointRole: "session_summary"
|
|
4075
|
+
},
|
|
4076
|
+
{
|
|
4077
|
+
key: "notification",
|
|
4078
|
+
event: "Notification",
|
|
4079
|
+
commandMarker: EXE_HOOKS.notification,
|
|
4080
|
+
owner: "exe-os",
|
|
4081
|
+
purpose: "Captures runtime notifications and nudges.",
|
|
4082
|
+
runtimes: ["claude"],
|
|
4083
|
+
checkpointRole: "none"
|
|
4084
|
+
},
|
|
4085
|
+
{
|
|
4086
|
+
key: "instructionsLoaded",
|
|
4087
|
+
event: "InstructionsLoaded",
|
|
4088
|
+
commandMarker: EXE_HOOKS.instructionsLoaded,
|
|
4089
|
+
owner: "exe-os",
|
|
4090
|
+
purpose: "Applies runtime instruction post-processing.",
|
|
4091
|
+
runtimes: ["claude"],
|
|
4092
|
+
checkpointRole: "none"
|
|
4093
|
+
}
|
|
4094
|
+
];
|
|
3947
4095
|
}
|
|
3948
4096
|
});
|
|
3949
4097
|
|
package/dist/bin/exe-status.js
CHANGED
|
@@ -135,6 +135,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
135
135
|
const userAU = raw.autoUpdate ?? {};
|
|
136
136
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
137
137
|
}
|
|
138
|
+
function normalizeOrchestration(raw) {
|
|
139
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
140
|
+
const userOrg = raw.orchestration ?? {};
|
|
141
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
142
|
+
}
|
|
138
143
|
async function loadConfig() {
|
|
139
144
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
140
145
|
await ensurePrivateDir(dir);
|
|
@@ -159,6 +164,7 @@ async function loadConfig() {
|
|
|
159
164
|
normalizeScalingRoadmap(migratedCfg);
|
|
160
165
|
normalizeSessionLifecycle(migratedCfg);
|
|
161
166
|
normalizeAutoUpdate(migratedCfg);
|
|
167
|
+
normalizeOrchestration(migratedCfg);
|
|
162
168
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
163
169
|
if (config.dbPath.startsWith("~")) {
|
|
164
170
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -234,6 +240,10 @@ var init_config = __esm({
|
|
|
234
240
|
checkOnBoot: true,
|
|
235
241
|
autoInstall: false,
|
|
236
242
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
243
|
+
},
|
|
244
|
+
orchestration: {
|
|
245
|
+
phase: "phase_1_coo",
|
|
246
|
+
phaseSetBy: "default"
|
|
237
247
|
}
|
|
238
248
|
};
|
|
239
249
|
CONFIG_MIGRATIONS = [
|
|
@@ -3860,6 +3870,12 @@ var init_platform_procedures = __esm({
|
|
|
3860
3870
|
priority: "p0",
|
|
3861
3871
|
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."
|
|
3862
3872
|
},
|
|
3873
|
+
{
|
|
3874
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3875
|
+
domain: "workflow",
|
|
3876
|
+
priority: "p1",
|
|
3877
|
+
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."
|
|
3878
|
+
},
|
|
3863
3879
|
{
|
|
3864
3880
|
title: "Single dispatch path \u2014 create_task only",
|
|
3865
3881
|
domain: "workflow",
|
|
@@ -3918,6 +3934,12 @@ var init_platform_procedures = __esm({
|
|
|
3918
3934
|
priority: "p0",
|
|
3919
3935
|
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."
|
|
3920
3936
|
},
|
|
3937
|
+
{
|
|
3938
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3939
|
+
domain: "workflow",
|
|
3940
|
+
priority: "p1",
|
|
3941
|
+
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."
|
|
3942
|
+
},
|
|
3921
3943
|
{
|
|
3922
3944
|
title: "Desktop and TUI are the same product",
|
|
3923
3945
|
domain: "architecture",
|
package/dist/bin/exe-team.js
CHANGED
|
@@ -124,6 +124,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
124
124
|
const userAU = raw.autoUpdate ?? {};
|
|
125
125
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
126
126
|
}
|
|
127
|
+
function normalizeOrchestration(raw) {
|
|
128
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
129
|
+
const userOrg = raw.orchestration ?? {};
|
|
130
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
131
|
+
}
|
|
127
132
|
async function loadConfig() {
|
|
128
133
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
129
134
|
await ensurePrivateDir(dir);
|
|
@@ -148,6 +153,7 @@ async function loadConfig() {
|
|
|
148
153
|
normalizeScalingRoadmap(migratedCfg);
|
|
149
154
|
normalizeSessionLifecycle(migratedCfg);
|
|
150
155
|
normalizeAutoUpdate(migratedCfg);
|
|
156
|
+
normalizeOrchestration(migratedCfg);
|
|
151
157
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
152
158
|
if (config.dbPath.startsWith("~")) {
|
|
153
159
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
@@ -223,6 +229,10 @@ var init_config = __esm({
|
|
|
223
229
|
checkOnBoot: true,
|
|
224
230
|
autoInstall: false,
|
|
225
231
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
232
|
+
},
|
|
233
|
+
orchestration: {
|
|
234
|
+
phase: "phase_1_coo",
|
|
235
|
+
phaseSetBy: "default"
|
|
226
236
|
}
|
|
227
237
|
};
|
|
228
238
|
CONFIG_MIGRATIONS = [
|
|
@@ -3849,6 +3859,12 @@ var init_platform_procedures = __esm({
|
|
|
3849
3859
|
priority: "p0",
|
|
3850
3860
|
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."
|
|
3851
3861
|
},
|
|
3862
|
+
{
|
|
3863
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3864
|
+
domain: "workflow",
|
|
3865
|
+
priority: "p1",
|
|
3866
|
+
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."
|
|
3867
|
+
},
|
|
3852
3868
|
{
|
|
3853
3869
|
title: "Single dispatch path \u2014 create_task only",
|
|
3854
3870
|
domain: "workflow",
|
|
@@ -3907,6 +3923,12 @@ var init_platform_procedures = __esm({
|
|
|
3907
3923
|
priority: "p0",
|
|
3908
3924
|
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."
|
|
3909
3925
|
},
|
|
3926
|
+
{
|
|
3927
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3928
|
+
domain: "workflow",
|
|
3929
|
+
priority: "p1",
|
|
3930
|
+
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."
|
|
3931
|
+
},
|
|
3910
3932
|
{
|
|
3911
3933
|
title: "Desktop and TUI are the same product",
|
|
3912
3934
|
domain: "architecture",
|
package/dist/bin/git-sweep.js
CHANGED
|
@@ -442,6 +442,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
442
442
|
const userAU = raw.autoUpdate ?? {};
|
|
443
443
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
444
444
|
}
|
|
445
|
+
function normalizeOrchestration(raw) {
|
|
446
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
447
|
+
const userOrg = raw.orchestration ?? {};
|
|
448
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
449
|
+
}
|
|
445
450
|
async function loadConfig() {
|
|
446
451
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
447
452
|
await ensurePrivateDir(dir);
|
|
@@ -466,6 +471,7 @@ async function loadConfig() {
|
|
|
466
471
|
normalizeScalingRoadmap(migratedCfg);
|
|
467
472
|
normalizeSessionLifecycle(migratedCfg);
|
|
468
473
|
normalizeAutoUpdate(migratedCfg);
|
|
474
|
+
normalizeOrchestration(migratedCfg);
|
|
469
475
|
const config = { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
470
476
|
if (config.dbPath.startsWith("~")) {
|
|
471
477
|
config.dbPath = config.dbPath.replace(/^~/, os2.homedir());
|
|
@@ -489,6 +495,7 @@ function loadConfigSync() {
|
|
|
489
495
|
normalizeScalingRoadmap(migratedCfg);
|
|
490
496
|
normalizeSessionLifecycle(migratedCfg);
|
|
491
497
|
normalizeAutoUpdate(migratedCfg);
|
|
498
|
+
normalizeOrchestration(migratedCfg);
|
|
492
499
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
|
|
493
500
|
} catch {
|
|
494
501
|
return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db") };
|
|
@@ -510,6 +517,7 @@ async function loadConfigFrom(configPath) {
|
|
|
510
517
|
normalizeScalingRoadmap(migratedCfg);
|
|
511
518
|
normalizeSessionLifecycle(migratedCfg);
|
|
512
519
|
normalizeAutoUpdate(migratedCfg);
|
|
520
|
+
normalizeOrchestration(migratedCfg);
|
|
513
521
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
514
522
|
} catch {
|
|
515
523
|
return { ...DEFAULT_CONFIG };
|
|
@@ -581,6 +589,10 @@ var init_config = __esm({
|
|
|
581
589
|
checkOnBoot: true,
|
|
582
590
|
autoInstall: false,
|
|
583
591
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
592
|
+
},
|
|
593
|
+
orchestration: {
|
|
594
|
+
phase: "phase_1_coo",
|
|
595
|
+
phaseSetBy: "default"
|
|
584
596
|
}
|
|
585
597
|
};
|
|
586
598
|
CONFIG_MIGRATIONS = [
|
|
@@ -7544,6 +7556,12 @@ var init_platform_procedures = __esm({
|
|
|
7544
7556
|
priority: "p0",
|
|
7545
7557
|
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."
|
|
7546
7558
|
},
|
|
7559
|
+
{
|
|
7560
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
7561
|
+
domain: "workflow",
|
|
7562
|
+
priority: "p1",
|
|
7563
|
+
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."
|
|
7564
|
+
},
|
|
7547
7565
|
{
|
|
7548
7566
|
title: "Single dispatch path \u2014 create_task only",
|
|
7549
7567
|
domain: "workflow",
|
|
@@ -7602,6 +7620,12 @@ var init_platform_procedures = __esm({
|
|
|
7602
7620
|
priority: "p0",
|
|
7603
7621
|
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."
|
|
7604
7622
|
},
|
|
7623
|
+
{
|
|
7624
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
7625
|
+
domain: "workflow",
|
|
7626
|
+
priority: "p1",
|
|
7627
|
+
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."
|
|
7628
|
+
},
|
|
7605
7629
|
{
|
|
7606
7630
|
title: "Desktop and TUI are the same product",
|
|
7607
7631
|
domain: "architecture",
|
|
@@ -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 = [
|
|
@@ -3151,6 +3161,12 @@ var init_platform_procedures = __esm({
|
|
|
3151
3161
|
priority: "p0",
|
|
3152
3162
|
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."
|
|
3153
3163
|
},
|
|
3164
|
+
{
|
|
3165
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
3166
|
+
domain: "workflow",
|
|
3167
|
+
priority: "p1",
|
|
3168
|
+
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."
|
|
3169
|
+
},
|
|
3154
3170
|
{
|
|
3155
3171
|
title: "Single dispatch path \u2014 create_task only",
|
|
3156
3172
|
domain: "workflow",
|
|
@@ -3209,6 +3225,12 @@ var init_platform_procedures = __esm({
|
|
|
3209
3225
|
priority: "p0",
|
|
3210
3226
|
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."
|
|
3211
3227
|
},
|
|
3228
|
+
{
|
|
3229
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
3230
|
+
domain: "workflow",
|
|
3231
|
+
priority: "p1",
|
|
3232
|
+
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."
|
|
3233
|
+
},
|
|
3212
3234
|
{
|
|
3213
3235
|
title: "Desktop and TUI are the same product",
|
|
3214
3236
|
domain: "architecture",
|