@askexenow/exe-os 0.9.104 → 0.9.105

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 (70) hide show
  1. package/dist/bin/agentic-ontology-backfill.js +15 -3
  2. package/dist/bin/agentic-reflection-backfill.js +15 -3
  3. package/dist/bin/agentic-semantic-label.js +15 -3
  4. package/dist/bin/backfill-conversations.js +15 -3
  5. package/dist/bin/backfill-responses.js +15 -3
  6. package/dist/bin/backfill-vectors.js +15 -3
  7. package/dist/bin/bulk-sync-postgres.js +15 -3
  8. package/dist/bin/cleanup-stale-review-tasks.js +15 -3
  9. package/dist/bin/cli.js +15 -3
  10. package/dist/bin/exe-agent.js +15 -3
  11. package/dist/bin/exe-assign.js +15 -3
  12. package/dist/bin/exe-boot.js +15 -3
  13. package/dist/bin/exe-call.js +15 -3
  14. package/dist/bin/exe-cloud.js +15 -3
  15. package/dist/bin/exe-dispatch.js +15 -3
  16. package/dist/bin/exe-doctor.js +15 -3
  17. package/dist/bin/exe-export-behaviors.js +15 -3
  18. package/dist/bin/exe-forget.js +15 -3
  19. package/dist/bin/exe-gateway.js +15 -3
  20. package/dist/bin/exe-heartbeat.js +15 -3
  21. package/dist/bin/exe-kill.js +15 -3
  22. package/dist/bin/exe-launch-agent.js +15 -3
  23. package/dist/bin/exe-new-employee.js +15 -3
  24. package/dist/bin/exe-pending-messages.js +15 -3
  25. package/dist/bin/exe-pending-notifications.js +15 -3
  26. package/dist/bin/exe-pending-reviews.js +15 -3
  27. package/dist/bin/exe-rename.js +15 -3
  28. package/dist/bin/exe-review.js +15 -3
  29. package/dist/bin/exe-search.js +15 -3
  30. package/dist/bin/exe-session-cleanup.js +15 -3
  31. package/dist/bin/exe-start-codex.js +15 -3
  32. package/dist/bin/exe-start-opencode.js +15 -3
  33. package/dist/bin/exe-status.js +15 -3
  34. package/dist/bin/exe-team.js +15 -3
  35. package/dist/bin/git-sweep.js +15 -3
  36. package/dist/bin/graph-backfill.js +15 -3
  37. package/dist/bin/graph-export.js +15 -3
  38. package/dist/bin/intercom-check.js +15 -3
  39. package/dist/bin/pre-publish.js +15 -3
  40. package/dist/bin/scan-tasks.js +15 -3
  41. package/dist/bin/setup.js +15 -3
  42. package/dist/bin/shard-migrate.js +15 -3
  43. package/dist/gateway/index.js +15 -3
  44. package/dist/hooks/bug-report-worker.js +15 -3
  45. package/dist/hooks/codex-stop-task-finalizer.js +15 -3
  46. package/dist/hooks/commit-complete.js +15 -3
  47. package/dist/hooks/error-recall.js +15 -3
  48. package/dist/hooks/ingest.js +15 -3
  49. package/dist/hooks/instructions-loaded.js +15 -3
  50. package/dist/hooks/notification.js +15 -3
  51. package/dist/hooks/post-compact.js +15 -3
  52. package/dist/hooks/post-tool-combined.js +15 -3
  53. package/dist/hooks/pre-compact.js +15 -3
  54. package/dist/hooks/pre-tool-use.js +15 -3
  55. package/dist/hooks/prompt-submit.js +15 -3
  56. package/dist/hooks/session-end.js +15 -3
  57. package/dist/hooks/session-start.js +15 -3
  58. package/dist/hooks/stop.js +15 -3
  59. package/dist/hooks/subagent-stop.js +15 -3
  60. package/dist/hooks/summary-worker.js +15 -3
  61. package/dist/index.js +15 -3
  62. package/dist/lib/employee-templates.js +15 -3
  63. package/dist/lib/exe-daemon.js +15 -3
  64. package/dist/lib/hybrid-search.js +15 -3
  65. package/dist/lib/schedules.js +15 -3
  66. package/dist/lib/store.js +15 -3
  67. package/dist/mcp/server.js +15 -3
  68. package/dist/runtime/index.js +15 -3
  69. package/dist/tui/App.js +15 -3
  70. package/package.json +1 -1
@@ -3777,7 +3777,7 @@ var init_platform_procedures = __esm({
3777
3777
  title: "Bug report status check \u2014 surface available fixes on boot",
3778
3778
  domain: "support",
3779
3779
  priority: "p1",
3780
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
3780
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
3781
3781
  },
3782
3782
  {
3783
3783
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -3789,7 +3789,7 @@ var init_platform_procedures = __esm({
3789
3789
  title: "Feature request status check \u2014 surface shipped features on boot",
3790
3790
  domain: "support",
3791
3791
  priority: "p1",
3792
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
3792
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
3793
3793
  },
3794
3794
  // --- Tool guidance ---
3795
3795
  {
@@ -3825,6 +3825,18 @@ var init_platform_procedures = __esm({
3825
3825
  priority: "p0",
3826
3826
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
3827
3827
  },
3828
+ {
3829
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
3830
+ domain: "operations",
3831
+ priority: "p0",
3832
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
3833
+ },
3834
+ {
3835
+ title: "First install \u2014 setup wizard and license activation",
3836
+ domain: "operations",
3837
+ priority: "p1",
3838
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
3839
+ },
3828
3840
  // --- Operations ---
3829
3841
  {
3830
3842
  title: "Managers must supervise deployed workers",
@@ -3936,7 +3948,7 @@ var init_platform_procedures = __esm({
3936
3948
  title: "MCP tools \u2014 identity, behavior, and support",
3937
3949
  domain: "tool-use",
3938
3950
  priority: "p1",
3939
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
3951
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
3940
3952
  },
3941
3953
  {
3942
3954
  title: "MCP tools \u2014 communication and messaging",
@@ -3465,7 +3465,7 @@ var init_platform_procedures = __esm({
3465
3465
  title: "Bug report status check \u2014 surface available fixes on boot",
3466
3466
  domain: "support",
3467
3467
  priority: "p1",
3468
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
3468
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
3469
3469
  },
3470
3470
  {
3471
3471
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -3477,7 +3477,7 @@ var init_platform_procedures = __esm({
3477
3477
  title: "Feature request status check \u2014 surface shipped features on boot",
3478
3478
  domain: "support",
3479
3479
  priority: "p1",
3480
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
3480
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
3481
3481
  },
3482
3482
  // --- Tool guidance ---
3483
3483
  {
@@ -3513,6 +3513,18 @@ var init_platform_procedures = __esm({
3513
3513
  priority: "p0",
3514
3514
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
3515
3515
  },
3516
+ {
3517
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
3518
+ domain: "operations",
3519
+ priority: "p0",
3520
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
3521
+ },
3522
+ {
3523
+ title: "First install \u2014 setup wizard and license activation",
3524
+ domain: "operations",
3525
+ priority: "p1",
3526
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
3527
+ },
3516
3528
  // --- Operations ---
3517
3529
  {
3518
3530
  title: "Managers must supervise deployed workers",
@@ -3624,7 +3636,7 @@ var init_platform_procedures = __esm({
3624
3636
  title: "MCP tools \u2014 identity, behavior, and support",
3625
3637
  domain: "tool-use",
3626
3638
  priority: "p1",
3627
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
3639
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
3628
3640
  },
3629
3641
  {
3630
3642
  title: "MCP tools \u2014 communication and messaging",
@@ -338,7 +338,7 @@ var init_platform_procedures = __esm({
338
338
  title: "Bug report status check \u2014 surface available fixes on boot",
339
339
  domain: "support",
340
340
  priority: "p1",
341
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
341
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
342
342
  },
343
343
  {
344
344
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -350,7 +350,7 @@ var init_platform_procedures = __esm({
350
350
  title: "Feature request status check \u2014 surface shipped features on boot",
351
351
  domain: "support",
352
352
  priority: "p1",
353
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
353
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
354
354
  },
355
355
  // --- Tool guidance ---
356
356
  {
@@ -386,6 +386,18 @@ var init_platform_procedures = __esm({
386
386
  priority: "p0",
387
387
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
388
388
  },
389
+ {
390
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
391
+ domain: "operations",
392
+ priority: "p0",
393
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
394
+ },
395
+ {
396
+ title: "First install \u2014 setup wizard and license activation",
397
+ domain: "operations",
398
+ priority: "p1",
399
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
400
+ },
389
401
  // --- Operations ---
390
402
  {
391
403
  title: "Managers must supervise deployed workers",
@@ -497,7 +509,7 @@ var init_platform_procedures = __esm({
497
509
  title: "MCP tools \u2014 identity, behavior, and support",
498
510
  domain: "tool-use",
499
511
  priority: "p1",
500
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
512
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
501
513
  },
502
514
  {
503
515
  title: "MCP tools \u2014 communication and messaging",
@@ -6925,7 +6925,7 @@ var init_platform_procedures = __esm({
6925
6925
  title: "Bug report status check \u2014 surface available fixes on boot",
6926
6926
  domain: "support",
6927
6927
  priority: "p1",
6928
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
6928
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
6929
6929
  },
6930
6930
  {
6931
6931
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -6937,7 +6937,7 @@ var init_platform_procedures = __esm({
6937
6937
  title: "Feature request status check \u2014 surface shipped features on boot",
6938
6938
  domain: "support",
6939
6939
  priority: "p1",
6940
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
6940
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
6941
6941
  },
6942
6942
  // --- Tool guidance ---
6943
6943
  {
@@ -6973,6 +6973,18 @@ var init_platform_procedures = __esm({
6973
6973
  priority: "p0",
6974
6974
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
6975
6975
  },
6976
+ {
6977
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
6978
+ domain: "operations",
6979
+ priority: "p0",
6980
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
6981
+ },
6982
+ {
6983
+ title: "First install \u2014 setup wizard and license activation",
6984
+ domain: "operations",
6985
+ priority: "p1",
6986
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
6987
+ },
6976
6988
  // --- Operations ---
6977
6989
  {
6978
6990
  title: "Managers must supervise deployed workers",
@@ -7084,7 +7096,7 @@ var init_platform_procedures = __esm({
7084
7096
  title: "MCP tools \u2014 identity, behavior, and support",
7085
7097
  domain: "tool-use",
7086
7098
  priority: "p1",
7087
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
7099
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
7088
7100
  },
7089
7101
  {
7090
7102
  title: "MCP tools \u2014 communication and messaging",
@@ -8219,7 +8219,7 @@ var init_platform_procedures = __esm({
8219
8219
  title: "Bug report status check \u2014 surface available fixes on boot",
8220
8220
  domain: "support",
8221
8221
  priority: "p1",
8222
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
8222
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
8223
8223
  },
8224
8224
  {
8225
8225
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -8231,7 +8231,7 @@ var init_platform_procedures = __esm({
8231
8231
  title: "Feature request status check \u2014 surface shipped features on boot",
8232
8232
  domain: "support",
8233
8233
  priority: "p1",
8234
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
8234
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
8235
8235
  },
8236
8236
  // --- Tool guidance ---
8237
8237
  {
@@ -8267,6 +8267,18 @@ var init_platform_procedures = __esm({
8267
8267
  priority: "p0",
8268
8268
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
8269
8269
  },
8270
+ {
8271
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
8272
+ domain: "operations",
8273
+ priority: "p0",
8274
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
8275
+ },
8276
+ {
8277
+ title: "First install \u2014 setup wizard and license activation",
8278
+ domain: "operations",
8279
+ priority: "p1",
8280
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
8281
+ },
8270
8282
  // --- Operations ---
8271
8283
  {
8272
8284
  title: "Managers must supervise deployed workers",
@@ -8378,7 +8390,7 @@ var init_platform_procedures = __esm({
8378
8390
  title: "MCP tools \u2014 identity, behavior, and support",
8379
8391
  domain: "tool-use",
8380
8392
  priority: "p1",
8381
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
8393
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
8382
8394
  },
8383
8395
  {
8384
8396
  title: "MCP tools \u2014 communication and messaging",
@@ -4738,7 +4738,7 @@ var init_platform_procedures = __esm({
4738
4738
  title: "Bug report status check \u2014 surface available fixes on boot",
4739
4739
  domain: "support",
4740
4740
  priority: "p1",
4741
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4741
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4742
4742
  },
4743
4743
  {
4744
4744
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -4750,7 +4750,7 @@ var init_platform_procedures = __esm({
4750
4750
  title: "Feature request status check \u2014 surface shipped features on boot",
4751
4751
  domain: "support",
4752
4752
  priority: "p1",
4753
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4753
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4754
4754
  },
4755
4755
  // --- Tool guidance ---
4756
4756
  {
@@ -4786,6 +4786,18 @@ var init_platform_procedures = __esm({
4786
4786
  priority: "p0",
4787
4787
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
4788
4788
  },
4789
+ {
4790
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
4791
+ domain: "operations",
4792
+ priority: "p0",
4793
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
4794
+ },
4795
+ {
4796
+ title: "First install \u2014 setup wizard and license activation",
4797
+ domain: "operations",
4798
+ priority: "p1",
4799
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
4800
+ },
4789
4801
  // --- Operations ---
4790
4802
  {
4791
4803
  title: "Managers must supervise deployed workers",
@@ -4897,7 +4909,7 @@ var init_platform_procedures = __esm({
4897
4909
  title: "MCP tools \u2014 identity, behavior, and support",
4898
4910
  domain: "tool-use",
4899
4911
  priority: "p1",
4900
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4912
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4901
4913
  },
4902
4914
  {
4903
4915
  title: "MCP tools \u2014 communication and messaging",
@@ -4475,7 +4475,7 @@ var init_platform_procedures = __esm({
4475
4475
  title: "Bug report status check \u2014 surface available fixes on boot",
4476
4476
  domain: "support",
4477
4477
  priority: "p1",
4478
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4478
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4479
4479
  },
4480
4480
  {
4481
4481
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -4487,7 +4487,7 @@ var init_platform_procedures = __esm({
4487
4487
  title: "Feature request status check \u2014 surface shipped features on boot",
4488
4488
  domain: "support",
4489
4489
  priority: "p1",
4490
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4490
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4491
4491
  },
4492
4492
  // --- Tool guidance ---
4493
4493
  {
@@ -4523,6 +4523,18 @@ var init_platform_procedures = __esm({
4523
4523
  priority: "p0",
4524
4524
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
4525
4525
  },
4526
+ {
4527
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
4528
+ domain: "operations",
4529
+ priority: "p0",
4530
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
4531
+ },
4532
+ {
4533
+ title: "First install \u2014 setup wizard and license activation",
4534
+ domain: "operations",
4535
+ priority: "p1",
4536
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
4537
+ },
4526
4538
  // --- Operations ---
4527
4539
  {
4528
4540
  title: "Managers must supervise deployed workers",
@@ -4634,7 +4646,7 @@ var init_platform_procedures = __esm({
4634
4646
  title: "MCP tools \u2014 identity, behavior, and support",
4635
4647
  domain: "tool-use",
4636
4648
  priority: "p1",
4637
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4649
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4638
4650
  },
4639
4651
  {
4640
4652
  title: "MCP tools \u2014 communication and messaging",
@@ -4399,7 +4399,7 @@ var init_platform_procedures = __esm({
4399
4399
  title: "Bug report status check \u2014 surface available fixes on boot",
4400
4400
  domain: "support",
4401
4401
  priority: "p1",
4402
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4402
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4403
4403
  },
4404
4404
  {
4405
4405
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -4411,7 +4411,7 @@ var init_platform_procedures = __esm({
4411
4411
  title: "Feature request status check \u2014 surface shipped features on boot",
4412
4412
  domain: "support",
4413
4413
  priority: "p1",
4414
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4414
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4415
4415
  },
4416
4416
  // --- Tool guidance ---
4417
4417
  {
@@ -4447,6 +4447,18 @@ var init_platform_procedures = __esm({
4447
4447
  priority: "p0",
4448
4448
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
4449
4449
  },
4450
+ {
4451
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
4452
+ domain: "operations",
4453
+ priority: "p0",
4454
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
4455
+ },
4456
+ {
4457
+ title: "First install \u2014 setup wizard and license activation",
4458
+ domain: "operations",
4459
+ priority: "p1",
4460
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
4461
+ },
4450
4462
  // --- Operations ---
4451
4463
  {
4452
4464
  title: "Managers must supervise deployed workers",
@@ -4558,7 +4570,7 @@ var init_platform_procedures = __esm({
4558
4570
  title: "MCP tools \u2014 identity, behavior, and support",
4559
4571
  domain: "tool-use",
4560
4572
  priority: "p1",
4561
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4573
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4562
4574
  },
4563
4575
  {
4564
4576
  title: "MCP tools \u2014 communication and messaging",
@@ -5083,7 +5083,7 @@ var init_platform_procedures = __esm({
5083
5083
  title: "Bug report status check \u2014 surface available fixes on boot",
5084
5084
  domain: "support",
5085
5085
  priority: "p1",
5086
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
5086
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
5087
5087
  },
5088
5088
  {
5089
5089
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -5095,7 +5095,7 @@ var init_platform_procedures = __esm({
5095
5095
  title: "Feature request status check \u2014 surface shipped features on boot",
5096
5096
  domain: "support",
5097
5097
  priority: "p1",
5098
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
5098
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
5099
5099
  },
5100
5100
  // --- Tool guidance ---
5101
5101
  {
@@ -5131,6 +5131,18 @@ var init_platform_procedures = __esm({
5131
5131
  priority: "p0",
5132
5132
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
5133
5133
  },
5134
+ {
5135
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
5136
+ domain: "operations",
5137
+ priority: "p0",
5138
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
5139
+ },
5140
+ {
5141
+ title: "First install \u2014 setup wizard and license activation",
5142
+ domain: "operations",
5143
+ priority: "p1",
5144
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
5145
+ },
5134
5146
  // --- Operations ---
5135
5147
  {
5136
5148
  title: "Managers must supervise deployed workers",
@@ -5242,7 +5254,7 @@ var init_platform_procedures = __esm({
5242
5254
  title: "MCP tools \u2014 identity, behavior, and support",
5243
5255
  domain: "tool-use",
5244
5256
  priority: "p1",
5245
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
5257
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
5246
5258
  },
5247
5259
  {
5248
5260
  title: "MCP tools \u2014 communication and messaging",
@@ -4438,7 +4438,7 @@ var init_platform_procedures = __esm({
4438
4438
  title: "Bug report status check \u2014 surface available fixes on boot",
4439
4439
  domain: "support",
4440
4440
  priority: "p1",
4441
- content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4441
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_bugs') to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'closed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. You can also file new bugs with support(action='create_bug') and check status anytime with support(action='list_my_bugs'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4442
4442
  },
4443
4443
  {
4444
4444
  title: "Feature request triage \u2014 upstream feature vs local customization",
@@ -4450,7 +4450,7 @@ var init_platform_procedures = __esm({
4450
4450
  title: "Feature request status check \u2014 surface shipped features on boot",
4451
4451
  domain: "support",
4452
4452
  priority: "p1",
4453
- content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
4453
+ content: "Once per session (COO boot only, never repeat), call support(action='list_my_features') to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. You can also file new requests with support(action='create_feature') and check status anytime with support(action='list_my_features'). This boot check is one-time, not a recurring poll. If the tool is unavailable, skip silently."
4454
4454
  },
4455
4455
  // --- Tool guidance ---
4456
4456
  {
@@ -4486,6 +4486,18 @@ var init_platform_procedures = __esm({
4486
4486
  priority: "p0",
4487
4487
  content: "exe-os has TWO version numbers that move independently. This is normal \u2014 do not treat a mismatch as an error. (1) CLI version (e.g. 0.9.89, 0.9.90) \u2014 the npm package installed locally. Updates frequently: bug fixes, new MCP tools, platform procedures, search improvements, client-side changes. Update with `npm install -g @askexenow/exe-os@latest`. (2) Stack version (e.g. 0.9.7, 0.9.8) \u2014 the Docker images on the VPS. Updates less frequently: only when server-side daemon, gateway, wiki, or CRM images need rebuilding. Update with `exe-os stack-update --target <version> --yes`. The CLI version will almost always be higher than the stack version. A CLI at 0.9.90 with a stack at 0.9.8 is perfectly normal \u2014 it means the CLI got 12 patches since the last Docker image rebuild. Only update the stack when: (a) the boot brief surfaces a fix that mentions 'stack update required', (b) a new stack manifest version is bundled in the CLI (`exe-os stack-update --check` shows pending changes), or (c) AskExe support explicitly tells you to. Do NOT attempt to make the numbers match \u2014 they are separate tracks."
4488
4488
  },
4489
+ {
4490
+ title: "Update lifecycle \u2014 what each command does and what picks up new code",
4491
+ domain: "operations",
4492
+ priority: "p0",
4493
+ content: "Three update paths exist \u2014 know which does what. (1) `npm install -g @askexenow/exe-os@latest` \u2014 customer update. Replaces all dist/ files. postinstall copies slash commands AND restarts the daemon automatically. MCP server picks up new code on next `/mcp` reconnect or new Claude Code session. Hooks pick up new code on next session (they spawn fresh processes). (2) `exe-os update` \u2014 interactive update command. Runs `npm install -g` then `install --global` which restarts daemon, regenerates session wrappers, normalizes roster, registers Codex hooks. This is the recommended customer path. (3) `npm run deploy` \u2014 dev-only (COO/CTO on main branch). Builds, installs globally, runs `install --global`, restarts daemon. Never run from a worktree. NEVER confuse `exe-os setup` (first-time setup wizard for new installs) with `exe-os update` (update existing install). Setup creates encryption keys, configures cloud, runs first sync. Update just replaces code and restarts services. They are completely different commands."
4494
+ },
4495
+ {
4496
+ title: "First install \u2014 setup wizard and license activation",
4497
+ domain: "operations",
4498
+ priority: "p1",
4499
+ content: "Fresh install: `npm install -g @askexenow/exe-os` then run `exe` to start the setup wizard. The wizard prompts for: encryption passphrase (creates master key), license key (exe_sk_* from AskExe team), COO name, and optional team members. No license key = free tier (1 employee, 5K memories). After setup: hooks install automatically, MCP server registers in ~/.claude.json, daemon starts. Verify health: run `exe-os healthcheck` or use mcp_ping() tool."
4500
+ },
4489
4501
  // --- Operations ---
4490
4502
  {
4491
4503
  title: "Managers must supervise deployed workers",
@@ -4597,7 +4609,7 @@ var init_platform_procedures = __esm({
4597
4609
  title: "MCP tools \u2014 identity, behavior, and support",
4598
4610
  domain: "tool-use",
4599
4611
  priority: "p1",
4600
- content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug") / create_bug_report: file a bug report to AskExe (title, description, severity). support(action="create_feature") / create_feature_request: file a feature request. support(action="health") / support_health: check support server readiness. support(action="triage_bug"): triage a bug (id, triage_notes). AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4612
+ content: `identity(action="get") / get_identity: read an agent's exe.md (Layer 1 identity). identity(action="update") / update_identity: write an agent's exe.md. Identity > behavior. behavior(action="store") / store_behavior: record a correction or pattern (Layer 2 expertise). behavior(action="list") / list_behaviors: view active behaviors. behavior(action="deactivate") / deactivate_behavior: soft-delete a stale behavior. support(action="create_bug"): file a bug report (title, description, severity p0-p3). Auto-delivers to AskExe. support(action="create_feature"): file a feature request (title, description, use_case). support(action="list_my_bugs"): check status of YOUR filed bug reports \u2014 see which are open, triaged, or fixed with version number. support(action="list_my_features"): check status of YOUR filed feature requests \u2014 see which are planned, shipped, or closed. support(action="health"): verify support server is reachable. When a bug you filed shows status='fixed' with a fixed_version, update exe-os to that version to get the fix. support(action="triage_bug"): AskExe-internal only. CRITICAL: triage uses triage_notes NOT notes.`
4601
4613
  },
4602
4614
  {
4603
4615
  title: "MCP tools \u2014 communication and messaging",