@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.
Files changed (105) hide show
  1. package/deploy/stack-manifests/v0.9.json +4 -4
  2. package/dist/bin/backfill-conversations.js +22 -0
  3. package/dist/bin/backfill-responses.js +22 -0
  4. package/dist/bin/backfill-vectors.js +22 -0
  5. package/dist/bin/cleanup-stale-review-tasks.js +22 -0
  6. package/dist/bin/cli.js +2280 -1199
  7. package/dist/bin/exe-agent-config.js +4 -0
  8. package/dist/bin/exe-agent.js +16 -0
  9. package/dist/bin/exe-assign.js +22 -0
  10. package/dist/bin/exe-boot.js +116 -7
  11. package/dist/bin/exe-call.js +16 -0
  12. package/dist/bin/exe-cloud.js +6671 -464
  13. package/dist/bin/exe-dispatch.js +24 -0
  14. package/dist/bin/exe-doctor.js +2845 -1223
  15. package/dist/bin/exe-export-behaviors.js +24 -0
  16. package/dist/bin/exe-forget.js +22 -0
  17. package/dist/bin/exe-gateway.js +24 -0
  18. package/dist/bin/exe-heartbeat.js +23 -0
  19. package/dist/bin/exe-kill.js +22 -0
  20. package/dist/bin/exe-launch-agent.js +24 -0
  21. package/dist/bin/exe-link.js +310 -178
  22. package/dist/bin/exe-new-employee.js +127 -1
  23. package/dist/bin/exe-pending-messages.js +22 -0
  24. package/dist/bin/exe-pending-notifications.js +22 -0
  25. package/dist/bin/exe-pending-reviews.js +22 -0
  26. package/dist/bin/exe-rename.js +22 -0
  27. package/dist/bin/exe-review.js +22 -0
  28. package/dist/bin/exe-search.js +24 -0
  29. package/dist/bin/exe-session-cleanup.js +24 -0
  30. package/dist/bin/exe-settings.js +10 -0
  31. package/dist/bin/exe-start-codex.js +135 -1
  32. package/dist/bin/exe-start-opencode.js +149 -1
  33. package/dist/bin/exe-status.js +22 -0
  34. package/dist/bin/exe-team.js +22 -0
  35. package/dist/bin/git-sweep.js +24 -0
  36. package/dist/bin/graph-backfill.js +22 -0
  37. package/dist/bin/graph-export.js +22 -0
  38. package/dist/bin/install.js +115 -1
  39. package/dist/bin/intercom-check.js +24 -0
  40. package/dist/bin/scan-tasks.js +24 -0
  41. package/dist/bin/setup.js +412 -157
  42. package/dist/bin/shard-migrate.js +22 -0
  43. package/dist/bin/update.js +4 -0
  44. package/dist/gateway/index.js +24 -0
  45. package/dist/hooks/bug-report-worker.js +135 -42
  46. package/dist/hooks/codex-stop-task-finalizer.js +24 -0
  47. package/dist/hooks/commit-complete.js +24 -0
  48. package/dist/hooks/error-recall.js +24 -0
  49. package/dist/hooks/exe-heartbeat-hook.js +4 -0
  50. package/dist/hooks/ingest-worker.js +4 -0
  51. package/dist/hooks/ingest.js +23 -0
  52. package/dist/hooks/instructions-loaded.js +22 -0
  53. package/dist/hooks/notification.js +22 -0
  54. package/dist/hooks/post-compact.js +22 -0
  55. package/dist/hooks/post-tool-combined.js +24 -0
  56. package/dist/hooks/pre-compact.js +260 -109
  57. package/dist/hooks/pre-tool-use.js +22 -0
  58. package/dist/hooks/prompt-submit.js +24 -0
  59. package/dist/hooks/session-end.js +161 -122
  60. package/dist/hooks/session-start.js +142 -0
  61. package/dist/hooks/stop.js +23 -0
  62. package/dist/hooks/subagent-stop.js +22 -0
  63. package/dist/hooks/summary-worker.js +195 -79
  64. package/dist/index.js +24 -0
  65. package/dist/lib/agent-config.js +4 -0
  66. package/dist/lib/cloud-sync.js +50 -6
  67. package/dist/lib/config.js +12 -0
  68. package/dist/lib/consolidation.js +4 -0
  69. package/dist/lib/database.js +4 -0
  70. package/dist/lib/db-daemon-client.js +4 -0
  71. package/dist/lib/db.js +4 -0
  72. package/dist/lib/device-registry.js +4 -0
  73. package/dist/lib/embedder.js +12 -0
  74. package/dist/lib/employee-templates.js +16 -0
  75. package/dist/lib/employees.js +4 -0
  76. package/dist/lib/exe-daemon-client.js +4 -0
  77. package/dist/lib/exe-daemon.js +1144 -480
  78. package/dist/lib/hybrid-search.js +24 -0
  79. package/dist/lib/identity.js +4 -0
  80. package/dist/lib/license.js +4 -0
  81. package/dist/lib/messaging.js +4 -0
  82. package/dist/lib/reminders.js +4 -0
  83. package/dist/lib/schedules.js +22 -0
  84. package/dist/lib/skill-learning.js +12 -0
  85. package/dist/lib/status-brief.js +39 -0
  86. package/dist/lib/store.js +22 -0
  87. package/dist/lib/task-router.js +4 -0
  88. package/dist/lib/tasks.js +12 -0
  89. package/dist/lib/tmux-routing.js +12 -0
  90. package/dist/lib/token-spend.js +4 -0
  91. package/dist/mcp/server.js +1045 -427
  92. package/dist/mcp/tools/complete-reminder.js +4 -0
  93. package/dist/mcp/tools/create-reminder.js +4 -0
  94. package/dist/mcp/tools/create-task.js +12 -0
  95. package/dist/mcp/tools/deactivate-behavior.js +4 -0
  96. package/dist/mcp/tools/list-reminders.js +4 -0
  97. package/dist/mcp/tools/list-tasks.js +4 -0
  98. package/dist/mcp/tools/send-message.js +4 -0
  99. package/dist/mcp/tools/update-task.js +12 -0
  100. package/dist/runtime/index.js +24 -0
  101. package/dist/tui/App.js +24 -0
  102. package/package.json +3 -2
  103. package/src/commands/exe/cloud.md +15 -8
  104. package/src/commands/exe/link.md +7 -6
  105. 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 = [
@@ -3904,6 +3916,12 @@ var init_platform_procedures = __esm({
3904
3916
  priority: "p0",
3905
3917
  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."
3906
3918
  },
3919
+ {
3920
+ title: "Customer orchestration maturity \u2014 recommend, never trap",
3921
+ domain: "workflow",
3922
+ priority: "p1",
3923
+ 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."
3924
+ },
3907
3925
  {
3908
3926
  title: "Single dispatch path \u2014 create_task only",
3909
3927
  domain: "workflow",
@@ -3962,6 +3980,12 @@ var init_platform_procedures = __esm({
3962
3980
  priority: "p0",
3963
3981
  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."
3964
3982
  },
3983
+ {
3984
+ title: "Commit discipline \u2014 never leave verified work floating",
3985
+ domain: "workflow",
3986
+ priority: "p1",
3987
+ 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."
3988
+ },
3965
3989
  {
3966
3990
  title: "Desktop and TUI are the same product",
3967
3991
  domain: "architecture",
@@ -179,6 +179,11 @@ function normalizeAutoUpdate(raw) {
179
179
  const userAU = raw.autoUpdate ?? {};
180
180
  raw.autoUpdate = { ...defaultAU, ...userAU };
181
181
  }
182
+ function normalizeOrchestration(raw) {
183
+ const defaultOrg = DEFAULT_CONFIG.orchestration;
184
+ const userOrg = raw.orchestration ?? {};
185
+ raw.orchestration = { ...defaultOrg, ...userOrg };
186
+ }
182
187
  async function loadConfig() {
183
188
  const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
184
189
  await ensurePrivateDir(dir);
@@ -203,6 +208,7 @@ async function loadConfig() {
203
208
  normalizeScalingRoadmap(migratedCfg);
204
209
  normalizeSessionLifecycle(migratedCfg);
205
210
  normalizeAutoUpdate(migratedCfg);
211
+ normalizeOrchestration(migratedCfg);
206
212
  const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
207
213
  if (config.dbPath.startsWith("~")) {
208
214
  config.dbPath = config.dbPath.replace(/^~/, os.homedir());
@@ -278,6 +284,10 @@ var init_config = __esm({
278
284
  checkOnBoot: true,
279
285
  autoInstall: false,
280
286
  checkIntervalMs: 24 * 60 * 60 * 1e3
287
+ },
288
+ orchestration: {
289
+ phase: "phase_1_coo",
290
+ phaseSetBy: "default"
281
291
  }
282
292
  };
283
293
  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",
@@ -516,6 +516,11 @@ function normalizeAutoUpdate(raw) {
516
516
  const userAU = raw.autoUpdate ?? {};
517
517
  raw.autoUpdate = { ...defaultAU, ...userAU };
518
518
  }
519
+ function normalizeOrchestration(raw) {
520
+ const defaultOrg = DEFAULT_CONFIG.orchestration;
521
+ const userOrg = raw.orchestration ?? {};
522
+ raw.orchestration = { ...defaultOrg, ...userOrg };
523
+ }
519
524
  async function loadConfig() {
520
525
  const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
521
526
  await ensurePrivateDir(dir);
@@ -540,6 +545,7 @@ async function loadConfig() {
540
545
  normalizeScalingRoadmap(migratedCfg);
541
546
  normalizeSessionLifecycle(migratedCfg);
542
547
  normalizeAutoUpdate(migratedCfg);
548
+ normalizeOrchestration(migratedCfg);
543
549
  const config2 = { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
544
550
  if (config2.dbPath.startsWith("~")) {
545
551
  config2.dbPath = config2.dbPath.replace(/^~/, os2.homedir());
@@ -563,6 +569,7 @@ function loadConfigSync() {
563
569
  normalizeScalingRoadmap(migratedCfg);
564
570
  normalizeSessionLifecycle(migratedCfg);
565
571
  normalizeAutoUpdate(migratedCfg);
572
+ normalizeOrchestration(migratedCfg);
566
573
  return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db"), ...migratedCfg };
567
574
  } catch {
568
575
  return { ...DEFAULT_CONFIG, dbPath: path2.join(dir, "memories.db") };
@@ -584,6 +591,7 @@ async function loadConfigFrom(configPath) {
584
591
  normalizeScalingRoadmap(migratedCfg);
585
592
  normalizeSessionLifecycle(migratedCfg);
586
593
  normalizeAutoUpdate(migratedCfg);
594
+ normalizeOrchestration(migratedCfg);
587
595
  return { ...DEFAULT_CONFIG, ...migratedCfg };
588
596
  } catch {
589
597
  return { ...DEFAULT_CONFIG };
@@ -655,6 +663,10 @@ var init_config = __esm({
655
663
  checkOnBoot: true,
656
664
  autoInstall: false,
657
665
  checkIntervalMs: 24 * 60 * 60 * 1e3
666
+ },
667
+ orchestration: {
668
+ phase: "phase_1_coo",
669
+ phaseSetBy: "default"
658
670
  }
659
671
  };
660
672
  CONFIG_MIGRATIONS = [
@@ -4497,6 +4509,12 @@ var init_platform_procedures = __esm({
4497
4509
  priority: "p0",
4498
4510
  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."
4499
4511
  },
4512
+ {
4513
+ title: "Customer orchestration maturity \u2014 recommend, never trap",
4514
+ domain: "workflow",
4515
+ priority: "p1",
4516
+ 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."
4517
+ },
4500
4518
  {
4501
4519
  title: "Single dispatch path \u2014 create_task only",
4502
4520
  domain: "workflow",
@@ -4555,6 +4573,12 @@ var init_platform_procedures = __esm({
4555
4573
  priority: "p0",
4556
4574
  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."
4557
4575
  },
4576
+ {
4577
+ title: "Commit discipline \u2014 never leave verified work floating",
4578
+ domain: "workflow",
4579
+ priority: "p1",
4580
+ 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."
4581
+ },
4558
4582
  {
4559
4583
  title: "Desktop and TUI are the same product",
4560
4584
  domain: "architecture",
@@ -190,6 +190,11 @@ function normalizeAutoUpdate(raw) {
190
190
  const userAU = raw.autoUpdate ?? {};
191
191
  raw.autoUpdate = { ...defaultAU, ...userAU };
192
192
  }
193
+ function normalizeOrchestration(raw) {
194
+ const defaultOrg = DEFAULT_CONFIG.orchestration;
195
+ const userOrg = raw.orchestration ?? {};
196
+ raw.orchestration = { ...defaultOrg, ...userOrg };
197
+ }
193
198
  async function loadConfig() {
194
199
  const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
195
200
  await ensurePrivateDir(dir);
@@ -214,6 +219,7 @@ async function loadConfig() {
214
219
  normalizeScalingRoadmap(migratedCfg);
215
220
  normalizeSessionLifecycle(migratedCfg);
216
221
  normalizeAutoUpdate(migratedCfg);
222
+ normalizeOrchestration(migratedCfg);
217
223
  const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
218
224
  if (config.dbPath.startsWith("~")) {
219
225
  config.dbPath = config.dbPath.replace(/^~/, os.homedir());
@@ -237,6 +243,7 @@ function loadConfigSync() {
237
243
  normalizeScalingRoadmap(migratedCfg);
238
244
  normalizeSessionLifecycle(migratedCfg);
239
245
  normalizeAutoUpdate(migratedCfg);
246
+ normalizeOrchestration(migratedCfg);
240
247
  return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
241
248
  } catch {
242
249
  return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
@@ -308,6 +315,10 @@ var init_config = __esm({
308
315
  checkOnBoot: true,
309
316
  autoInstall: false,
310
317
  checkIntervalMs: 24 * 60 * 60 * 1e3
318
+ },
319
+ orchestration: {
320
+ phase: "phase_1_coo",
321
+ phaseSetBy: "default"
311
322
  }
312
323
  };
313
324
  CONFIG_MIGRATIONS = [
@@ -3868,6 +3879,12 @@ var init_platform_procedures = __esm({
3868
3879
  priority: "p0",
3869
3880
  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."
3870
3881
  },
3882
+ {
3883
+ title: "Customer orchestration maturity \u2014 recommend, never trap",
3884
+ domain: "workflow",
3885
+ priority: "p1",
3886
+ 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."
3887
+ },
3871
3888
  {
3872
3889
  title: "Single dispatch path \u2014 create_task only",
3873
3890
  domain: "workflow",
@@ -3926,6 +3943,12 @@ var init_platform_procedures = __esm({
3926
3943
  priority: "p0",
3927
3944
  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."
3928
3945
  },
3946
+ {
3947
+ title: "Commit discipline \u2014 never leave verified work floating",
3948
+ domain: "workflow",
3949
+ priority: "p1",
3950
+ 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."
3951
+ },
3929
3952
  {
3930
3953
  title: "Desktop and TUI are the same product",
3931
3954
  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 = [
@@ -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",
@@ -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 = [
@@ -3239,6 +3251,12 @@ var init_platform_procedures = __esm({
3239
3251
  priority: "p0",
3240
3252
  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."
3241
3253
  },
3254
+ {
3255
+ title: "Customer orchestration maturity \u2014 recommend, never trap",
3256
+ domain: "workflow",
3257
+ priority: "p1",
3258
+ 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."
3259
+ },
3242
3260
  {
3243
3261
  title: "Single dispatch path \u2014 create_task only",
3244
3262
  domain: "workflow",
@@ -3297,6 +3315,12 @@ var init_platform_procedures = __esm({
3297
3315
  priority: "p0",
3298
3316
  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."
3299
3317
  },
3318
+ {
3319
+ title: "Commit discipline \u2014 never leave verified work floating",
3320
+ domain: "workflow",
3321
+ priority: "p1",
3322
+ 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."
3323
+ },
3300
3324
  {
3301
3325
  title: "Desktop and TUI are the same product",
3302
3326
  domain: "architecture",