@askexenow/exe-os 0.9.94 → 0.9.96

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 (77) hide show
  1. package/dist/bin/agentic-ontology-backfill.js +3 -3
  2. package/dist/bin/agentic-reflection-backfill.js +3 -3
  3. package/dist/bin/agentic-semantic-label.js +3 -3
  4. package/dist/bin/backfill-conversations.js +3 -3
  5. package/dist/bin/backfill-responses.js +3 -3
  6. package/dist/bin/backfill-vectors.js +3 -3
  7. package/dist/bin/bulk-sync-postgres.js +3 -3
  8. package/dist/bin/cleanup-stale-review-tasks.js +6 -3
  9. package/dist/bin/cli.js +6 -3
  10. package/dist/bin/customer-readiness.js +17 -7
  11. package/dist/bin/exe-agent.js +3 -3
  12. package/dist/bin/exe-assign.js +3 -3
  13. package/dist/bin/exe-boot.js +6 -3
  14. package/dist/bin/exe-call.js +3 -3
  15. package/dist/bin/exe-cloud.js +3 -3
  16. package/dist/bin/exe-dispatch.js +6 -3
  17. package/dist/bin/exe-doctor.js +3 -3
  18. package/dist/bin/exe-export-behaviors.js +3 -3
  19. package/dist/bin/exe-forget.js +3 -3
  20. package/dist/bin/exe-gateway.js +6 -3
  21. package/dist/bin/exe-heartbeat.js +6 -3
  22. package/dist/bin/exe-kill.js +3 -3
  23. package/dist/bin/exe-launch-agent.js +3 -3
  24. package/dist/bin/exe-new-employee.js +3 -3
  25. package/dist/bin/exe-pending-messages.js +6 -3
  26. package/dist/bin/exe-pending-notifications.js +6 -3
  27. package/dist/bin/exe-pending-reviews.js +6 -3
  28. package/dist/bin/exe-rename.js +3 -3
  29. package/dist/bin/exe-review.js +3 -3
  30. package/dist/bin/exe-search.js +3 -3
  31. package/dist/bin/exe-session-cleanup.js +6 -3
  32. package/dist/bin/exe-start-codex.js +3 -3
  33. package/dist/bin/exe-start-opencode.js +3 -3
  34. package/dist/bin/exe-status.js +6 -3
  35. package/dist/bin/exe-team.js +3 -3
  36. package/dist/bin/git-sweep.js +6 -3
  37. package/dist/bin/graph-backfill.js +3 -3
  38. package/dist/bin/graph-export.js +3 -3
  39. package/dist/bin/intercom-check.js +6 -3
  40. package/dist/bin/scan-tasks.js +6 -3
  41. package/dist/bin/setup.js +3 -3
  42. package/dist/bin/shard-migrate.js +3 -3
  43. package/dist/gateway/index.js +6 -3
  44. package/dist/hooks/bug-report-worker.js +6 -3
  45. package/dist/hooks/codex-stop-task-finalizer.js +6 -3
  46. package/dist/hooks/commit-complete.js +6 -3
  47. package/dist/hooks/error-recall.js +3 -3
  48. package/dist/hooks/ingest.js +3 -3
  49. package/dist/hooks/instructions-loaded.js +3 -3
  50. package/dist/hooks/notification.js +3 -3
  51. package/dist/hooks/post-compact.js +6 -3
  52. package/dist/hooks/post-tool-combined.js +6 -3
  53. package/dist/hooks/pre-compact.js +6 -3
  54. package/dist/hooks/pre-tool-use.js +6 -3
  55. package/dist/hooks/prompt-submit.js +6 -3
  56. package/dist/hooks/session-end.js +6 -3
  57. package/dist/hooks/session-start.js +6 -3
  58. package/dist/hooks/stop.js +6 -3
  59. package/dist/hooks/subagent-stop.js +6 -3
  60. package/dist/hooks/summary-worker.js +6 -3
  61. package/dist/index.js +6 -3
  62. package/dist/lib/employee-templates.js +3 -3
  63. package/dist/lib/exe-daemon.js +83 -3
  64. package/dist/lib/hybrid-search.js +3 -3
  65. package/dist/lib/messaging.js +3 -0
  66. package/dist/lib/schedules.js +3 -3
  67. package/dist/lib/store.js +3 -3
  68. package/dist/lib/tasks.js +3 -0
  69. package/dist/lib/tmux-routing.js +3 -0
  70. package/dist/mcp/server.js +15 -3
  71. package/dist/mcp/tools/create-task.js +3 -0
  72. package/dist/mcp/tools/list-tasks.js +3 -0
  73. package/dist/mcp/tools/send-message.js +3 -0
  74. package/dist/mcp/tools/update-task.js +3 -0
  75. package/dist/runtime/index.js +6 -3
  76. package/dist/tui/App.js +6 -3
  77. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6624,6 +6624,9 @@ function getDispatchedBy(sessionKey) {
6624
6624
  }
6625
6625
  }
6626
6626
  function resolveExeSession() {
6627
+ if (process.env.EXE_SESSION_NAME) {
6628
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
6629
+ }
6627
6630
  const mySession = getMySession();
6628
6631
  if (!mySession) return null;
6629
6632
  const fromSessionName = extractRootExe(mySession);
@@ -8447,13 +8450,13 @@ var init_platform_procedures = __esm({
8447
8450
  title: "MCP tools \u2014 memory, decision, and search",
8448
8451
  domain: "tool-use",
8449
8452
  priority: "p1",
8450
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
8453
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
8451
8454
  },
8452
8455
  {
8453
8456
  title: "MCP tools \u2014 task orchestration",
8454
8457
  domain: "tool-use",
8455
8458
  priority: "p1",
8456
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
8459
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
8457
8460
  },
8458
8461
  {
8459
8462
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -8483,7 +8486,7 @@ var init_platform_procedures = __esm({
8483
8486
  title: "MCP tools \u2014 admin, config, and operations",
8484
8487
  domain: "tool-use",
8485
8488
  priority: "p1",
8486
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
8489
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
8487
8490
  }
8488
8491
  ];
8489
8492
  PLATFORM_PROCEDURE_TITLES = new Set(
@@ -355,13 +355,13 @@ var PLATFORM_PROCEDURES = [
355
355
  title: "MCP tools \u2014 memory, decision, and search",
356
356
  domain: "tool-use",
357
357
  priority: "p1",
358
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
358
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
359
359
  },
360
360
  {
361
361
  title: "MCP tools \u2014 task orchestration",
362
362
  domain: "tool-use",
363
363
  priority: "p1",
364
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
364
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
365
365
  },
366
366
  {
367
367
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -391,7 +391,7 @@ var PLATFORM_PROCEDURES = [
391
391
  title: "MCP tools \u2014 admin, config, and operations",
392
392
  domain: "tool-use",
393
393
  priority: "p1",
394
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
394
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
395
395
  }
396
396
  ];
397
397
  var PLATFORM_PROCEDURE_TITLES = new Set(
@@ -6016,13 +6016,13 @@ var init_platform_procedures = __esm({
6016
6016
  title: "MCP tools \u2014 memory, decision, and search",
6017
6017
  domain: "tool-use",
6018
6018
  priority: "p1",
6019
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
6019
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
6020
6020
  },
6021
6021
  {
6022
6022
  title: "MCP tools \u2014 task orchestration",
6023
6023
  domain: "tool-use",
6024
6024
  priority: "p1",
6025
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
6025
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
6026
6026
  },
6027
6027
  {
6028
6028
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -6052,7 +6052,7 @@ var init_platform_procedures = __esm({
6052
6052
  title: "MCP tools \u2014 admin, config, and operations",
6053
6053
  domain: "tool-use",
6054
6054
  priority: "p1",
6055
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
6055
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
6056
6056
  }
6057
6057
  ];
6058
6058
  PLATFORM_PROCEDURE_TITLES = new Set(
@@ -12892,6 +12892,9 @@ function getDispatchedBy(sessionKey) {
12892
12892
  }
12893
12893
  }
12894
12894
  function resolveExeSession() {
12895
+ if (process.env.EXE_SESSION_NAME) {
12896
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
12897
+ }
12895
12898
  const mySession = getMySession();
12896
12899
  if (!mySession) return null;
12897
12900
  const fromSessionName = extractRootExe(mySession);
@@ -33290,6 +33293,15 @@ function registerSupportConsolidated(server) {
33290
33293
  args.actual = args.actual_behavior;
33291
33294
  delete args.actual_behavior;
33292
33295
  }
33296
+ if (args.send_upstream === void 0) args.send_upstream = true;
33297
+ if (!args.classification) args.classification = "unclear";
33298
+ }
33299
+ if (action === "create_feature") {
33300
+ if (args.send_upstream === void 0) args.send_upstream = true;
33301
+ if (!args.category) args.category = "unclear";
33302
+ if (args.description && !args.use_case) {
33303
+ args.use_case = args.description;
33304
+ }
33293
33305
  }
33294
33306
  if ((action === "triage_bug" || action === "triage_feature") && args.notes && !args.triage_notes) {
33295
33307
  args.triage_notes = args.notes;
@@ -37149,6 +37161,73 @@ function startRssWatchdog() {
37149
37161
  process.stderr.write(`[exed] RSS watchdog started (warn: ${(RSS_WARN_BYTES / 1024 ** 3).toFixed(1)} GB, restart: ${(RSS_RESTART_BYTES / 1024 ** 3).toFixed(1)} GB)
37150
37162
  `);
37151
37163
  }
37164
+ var API_WATCHDOG_INTERVAL_MS = 3e4;
37165
+ var API_ERROR_PATTERNS = [
37166
+ /ConnectionRefused|ECONNREFUSED/i,
37167
+ /ETIMEDOUT|socket hang up/i,
37168
+ /Unable to connect to API/i,
37169
+ /overloaded_error|overloaded/i,
37170
+ /529|503 Service/,
37171
+ /rate.limit.*exceeded|429 Too Many/i
37172
+ ];
37173
+ var _apiWatchdogLastNudge = /* @__PURE__ */ new Map();
37174
+ function startApiWatchdog() {
37175
+ const tick = async () => {
37176
+ fired("api_watchdog");
37177
+ try {
37178
+ const { loadConfigSync: loadConfigSync2 } = await Promise.resolve().then(() => (init_config(), config_exports));
37179
+ const cfg = loadConfigSync2();
37180
+ const watchdogCfg = cfg.apiWatchdog;
37181
+ if (watchdogCfg?.enabled === false) return;
37182
+ const cooldownMs = (watchdogCfg?.cooldownMinutes ?? 10) * 6e4;
37183
+ const { execFileSync: execFileSync4 } = await import("child_process");
37184
+ let sessions;
37185
+ try {
37186
+ sessions = execFileSync4("tmux", ["list-sessions", "-F", "#{session_name}"], { timeout: 3e3 }).toString().trim().split("\n").filter(Boolean);
37187
+ } catch {
37188
+ return;
37189
+ }
37190
+ for (const session of sessions) {
37191
+ if (!session.includes("-")) continue;
37192
+ const lastNudge = _apiWatchdogLastNudge.get(session) ?? 0;
37193
+ if (Date.now() - lastNudge < cooldownMs) continue;
37194
+ let pane;
37195
+ try {
37196
+ pane = execFileSync4("tmux", ["capture-pane", "-t", session, "-p", "-S", "-30"], { timeout: 3e3 }).toString();
37197
+ } catch {
37198
+ continue;
37199
+ }
37200
+ const matchedPattern = API_ERROR_PATTERNS.find((p) => p.test(pane));
37201
+ if (!matchedPattern) continue;
37202
+ try {
37203
+ execFileSync4("tmux", ["send-keys", "-t", session, "", "Enter"], { timeout: 2e3 });
37204
+ _apiWatchdogLastNudge.set(session, Date.now());
37205
+ acted("api_watchdog");
37206
+ process.stderr.write(`[exed] API watchdog nudged ${session} (matched: ${matchedPattern.source})
37207
+ `);
37208
+ const { appendFileSync: appendFileSync5, mkdirSync: mkdirSync26 } = await import("fs");
37209
+ const { join: join4 } = await import("path");
37210
+ const logDir = join4(process.env.EXE_OS_DIR ?? join4(process.env.HOME ?? "", ".exe-os"), "logs");
37211
+ try {
37212
+ mkdirSync26(logDir, { recursive: true });
37213
+ } catch {
37214
+ }
37215
+ appendFileSync5(
37216
+ join4(logDir, "api-watchdog.jsonl"),
37217
+ JSON.stringify({ ts: (/* @__PURE__ */ new Date()).toISOString(), session, pattern: matchedPattern.source }) + "\n"
37218
+ );
37219
+ } catch {
37220
+ }
37221
+ }
37222
+ } catch (err) {
37223
+ process.stderr.write(`[exed] API watchdog error: ${err instanceof Error ? err.message : String(err)}
37224
+ `);
37225
+ }
37226
+ };
37227
+ const timer = setInterval(() => void tick(), API_WATCHDOG_INTERVAL_MS);
37228
+ timer.unref();
37229
+ process.stderr.write("[exed] API watchdog started (30s scan, 10m cooldown per session)\n");
37230
+ }
37152
37231
  function startBackgroundJobGuardrails() {
37153
37232
  const tick = async () => {
37154
37233
  fired("background_job_guardrails");
@@ -37341,6 +37420,7 @@ try {
37341
37420
  startSoftDeletePurge();
37342
37421
  startAutoUpdateCheck();
37343
37422
  startRssWatchdog();
37423
+ startApiWatchdog();
37344
37424
  startBackgroundJobGuardrails();
37345
37425
  startTaskEnforcementScanner();
37346
37426
  const { startToolTelemetryFlush: startToolTelemetryFlush2 } = await Promise.resolve().then(() => (init_tool_telemetry(), tool_telemetry_exports));
@@ -4333,13 +4333,13 @@ var init_platform_procedures = __esm({
4333
4333
  title: "MCP tools \u2014 memory, decision, and search",
4334
4334
  domain: "tool-use",
4335
4335
  priority: "p1",
4336
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
4336
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
4337
4337
  },
4338
4338
  {
4339
4339
  title: "MCP tools \u2014 task orchestration",
4340
4340
  domain: "tool-use",
4341
4341
  priority: "p1",
4342
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
4342
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
4343
4343
  },
4344
4344
  {
4345
4345
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -4369,7 +4369,7 @@ var init_platform_procedures = __esm({
4369
4369
  title: "MCP tools \u2014 admin, config, and operations",
4370
4370
  domain: "tool-use",
4371
4371
  priority: "p1",
4372
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
4372
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
4373
4373
  }
4374
4374
  ];
4375
4375
  PLATFORM_PROCEDURE_TITLES = new Set(
@@ -684,6 +684,9 @@ function getParentExe(sessionKey) {
684
684
  }
685
685
  }
686
686
  function resolveExeSession() {
687
+ if (process.env.EXE_SESSION_NAME) {
688
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
689
+ }
687
690
  const mySession = getMySession();
688
691
  if (!mySession) return null;
689
692
  const fromSessionName = extractRootExe(mySession);
@@ -3562,13 +3562,13 @@ var init_platform_procedures = __esm({
3562
3562
  title: "MCP tools \u2014 memory, decision, and search",
3563
3563
  domain: "tool-use",
3564
3564
  priority: "p1",
3565
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
3565
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
3566
3566
  },
3567
3567
  {
3568
3568
  title: "MCP tools \u2014 task orchestration",
3569
3569
  domain: "tool-use",
3570
3570
  priority: "p1",
3571
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
3571
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
3572
3572
  },
3573
3573
  {
3574
3574
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -3598,7 +3598,7 @@ var init_platform_procedures = __esm({
3598
3598
  title: "MCP tools \u2014 admin, config, and operations",
3599
3599
  domain: "tool-use",
3600
3600
  priority: "p1",
3601
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
3601
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
3602
3602
  }
3603
3603
  ];
3604
3604
  PLATFORM_PROCEDURE_TITLES = new Set(
package/dist/lib/store.js CHANGED
@@ -3562,13 +3562,13 @@ var init_platform_procedures = __esm({
3562
3562
  title: "MCP tools \u2014 memory, decision, and search",
3563
3563
  domain: "tool-use",
3564
3564
  priority: "p1",
3565
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
3565
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
3566
3566
  },
3567
3567
  {
3568
3568
  title: "MCP tools \u2014 task orchestration",
3569
3569
  domain: "tool-use",
3570
3570
  priority: "p1",
3571
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
3571
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
3572
3572
  },
3573
3573
  {
3574
3574
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -3598,7 +3598,7 @@ var init_platform_procedures = __esm({
3598
3598
  title: "MCP tools \u2014 admin, config, and operations",
3599
3599
  domain: "tool-use",
3600
3600
  priority: "p1",
3601
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
3601
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
3602
3602
  }
3603
3603
  ];
3604
3604
  PLATFORM_PROCEDURE_TITLES = new Set(
package/dist/lib/tasks.js CHANGED
@@ -1976,6 +1976,9 @@ function getDispatchedBy(sessionKey) {
1976
1976
  }
1977
1977
  }
1978
1978
  function resolveExeSession() {
1979
+ if (process.env.EXE_SESSION_NAME) {
1980
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
1981
+ }
1979
1982
  const mySession = getMySession();
1980
1983
  if (!mySession) return null;
1981
1984
  const fromSessionName = extractRootExe(mySession);
@@ -4022,6 +4022,9 @@ function getDispatchedBy(sessionKey) {
4022
4022
  }
4023
4023
  }
4024
4024
  function resolveExeSession() {
4025
+ if (process.env.EXE_SESSION_NAME) {
4026
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
4027
+ }
4025
4028
  const mySession = getMySession();
4026
4029
  if (!mySession) return null;
4027
4030
  const fromSessionName = extractRootExe(mySession);
@@ -4982,13 +4982,13 @@ var init_platform_procedures = __esm({
4982
4982
  title: "MCP tools \u2014 memory, decision, and search",
4983
4983
  domain: "tool-use",
4984
4984
  priority: "p1",
4985
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
4985
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
4986
4986
  },
4987
4987
  {
4988
4988
  title: "MCP tools \u2014 task orchestration",
4989
4989
  domain: "tool-use",
4990
4990
  priority: "p1",
4991
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
4991
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
4992
4992
  },
4993
4993
  {
4994
4994
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -5018,7 +5018,7 @@ var init_platform_procedures = __esm({
5018
5018
  title: "MCP tools \u2014 admin, config, and operations",
5019
5019
  domain: "tool-use",
5020
5020
  priority: "p1",
5021
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
5021
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
5022
5022
  }
5023
5023
  ];
5024
5024
  PLATFORM_PROCEDURE_TITLES = new Set(
@@ -10549,6 +10549,9 @@ function getDispatchedBy(sessionKey) {
10549
10549
  }
10550
10550
  }
10551
10551
  function resolveExeSession() {
10552
+ if (process.env.EXE_SESSION_NAME) {
10553
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
10554
+ }
10552
10555
  const mySession = getMySession();
10553
10556
  if (!mySession) return null;
10554
10557
  const fromSessionName = extractRootExe(mySession);
@@ -30362,6 +30365,15 @@ function registerSupportConsolidated(server2) {
30362
30365
  args.actual = args.actual_behavior;
30363
30366
  delete args.actual_behavior;
30364
30367
  }
30368
+ if (args.send_upstream === void 0) args.send_upstream = true;
30369
+ if (!args.classification) args.classification = "unclear";
30370
+ }
30371
+ if (action === "create_feature") {
30372
+ if (args.send_upstream === void 0) args.send_upstream = true;
30373
+ if (!args.category) args.category = "unclear";
30374
+ if (args.description && !args.use_case) {
30375
+ args.use_case = args.description;
30376
+ }
30365
30377
  }
30366
30378
  if ((action === "triage_bug" || action === "triage_feature") && args.notes && !args.triage_notes) {
30367
30379
  args.triage_notes = args.notes;
@@ -2216,6 +2216,9 @@ function getDispatchedBy(sessionKey) {
2216
2216
  }
2217
2217
  }
2218
2218
  function resolveExeSession() {
2219
+ if (process.env.EXE_SESSION_NAME) {
2220
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
2221
+ }
2219
2222
  const mySession = getMySession();
2220
2223
  if (!mySession) return null;
2221
2224
  const fromSessionName = extractRootExe(mySession);
@@ -597,6 +597,9 @@ function getParentExe(sessionKey) {
597
597
  }
598
598
  }
599
599
  function resolveExeSession() {
600
+ if (process.env.EXE_SESSION_NAME) {
601
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
602
+ }
600
603
  const mySession = getMySession();
601
604
  if (!mySession) return null;
602
605
  const fromSessionName = extractRootExe(mySession);
@@ -684,6 +684,9 @@ function getParentExe(sessionKey) {
684
684
  }
685
685
  }
686
686
  function resolveExeSession() {
687
+ if (process.env.EXE_SESSION_NAME) {
688
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
689
+ }
687
690
  const mySession = getMySession();
688
691
  if (!mySession) return null;
689
692
  const fromSessionName = extractRootExe(mySession);
@@ -1979,6 +1979,9 @@ function getDispatchedBy(sessionKey) {
1979
1979
  }
1980
1980
  }
1981
1981
  function resolveExeSession() {
1982
+ if (process.env.EXE_SESSION_NAME) {
1983
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
1984
+ }
1982
1985
  const mySession = getMySession();
1983
1986
  if (!mySession) return null;
1984
1987
  const fromSessionName = extractRootExe(mySession);
@@ -6384,6 +6384,9 @@ function getDispatchedBy(sessionKey) {
6384
6384
  }
6385
6385
  }
6386
6386
  function resolveExeSession() {
6387
+ if (process.env.EXE_SESSION_NAME) {
6388
+ return extractRootExe(process.env.EXE_SESSION_NAME) ?? process.env.EXE_SESSION_NAME;
6389
+ }
6387
6390
  const mySession = getMySession();
6388
6391
  if (!mySession) return null;
6389
6392
  const fromSessionName = extractRootExe(mySession);
@@ -8207,13 +8210,13 @@ var init_platform_procedures = __esm({
8207
8210
  title: "MCP tools \u2014 memory, decision, and search",
8208
8211
  domain: "tool-use",
8209
8212
  priority: "p1",
8210
- content: `memory(action="recall") / recall_my_memory: search your own memories (semantic + FTS). Supports as_of param for bi-temporal queries (what did I know at time X?), kind param to filter by memory type (decision, procedure, observation, raw, conversation, behavior). memory(action="ask_team") / ask_team_memory: search a colleague's memories by agent name. memory(action="store") / store_memory: persist a memory. Supports kind param and procedure_for domain tag for procedure-type memories. memory(action="commit") / commit_memory: high-importance memory that survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal memory window. Requires session_id + target_timestamp. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede") / supersede: replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
8213
+ content: `memory(action="recall") / recall_my_memory: search memories (semantic + FTS). Params: as_of (bi-temporal \u2014 what did I know at time X?), kind (decision|procedure|observation|raw|conversation|behavior), retrieval_mode (all|decisions_only|procedures_only|operational|recent_high_value). memory(action="ask_team") / ask_team_memory: search a colleague's memories. memory(action="store") / store_memory: persist a memory. Params: kind, procedure_for (domain tag for procedures). memory(action="commit") / commit_memory: high-importance, survives consolidation. Requires summary. memory(action="search") / search_everything: unified search across memories, tasks, entities, conversations. memory(action="session_context") / get_session_context: temporal window. Requires session_id + target_timestamp. memory(action="get_by_id"): fetch one memory by UUID with full untruncated text. memory(action="consolidate") / consolidate_memories: merge duplicate/related memories. memory(action="cardinality") / get_memory_cardinality: count memories per agent. memory(action="supersede"): replace an old memory with a new version (old_id + new text). decision(action="store") / store_decision: record an architectural decision (domain, decision, rationale). decision(action="get") / get_decision: retrieve a past decision by domain or query.`
8211
8214
  },
8212
8215
  {
8213
8216
  title: "MCP tools \u2014 task orchestration",
8214
8217
  domain: "tool-use",
8215
8218
  priority: "p1",
8216
- content: `task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Supports spawn_runtime and spawn_model params to override the agent's default runtime/model for a specific task. task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.`
8219
+ content: 'task(action="create") / create_task: dispatch work (title, assigned_to, context). The ONLY dispatch path. Auto-spawns session. Params: blocked_by (task ID for dependency), parent_task_id (subtask hierarchy), reviewer, complexity (routine|standard|complex|critical), budget_tokens (max token cap), budget_fallback_model, spawn_runtime (override runtime: claude|codex|opencode), spawn_model (override model). task(action="list") / list_tasks: query tasks by status, assignee, project. task(action="get") / get_task: fetch full task details by task_id. task(action="update") / update_task: change status (in_progress, done, blocked, cancelled) + result summary. task(action="close") / close_task: finalize a reviewed task (COO only). task(action="checkpoint") / checkpoint_task: save progress state for crash recovery. task(action="resume") / resume_employee: re-spawn an employee session for an existing task.'
8217
8220
  },
8218
8221
  {
8219
8222
  title: "MCP tools \u2014 knowledge graph (GraphRAG)",
@@ -8243,7 +8246,7 @@ var init_platform_procedures = __esm({
8243
8246
  title: "MCP tools \u2014 admin, config, and operations",
8244
8247
  domain: "tool-use",
8245
8248
  priority: "p1",
8246
- content: 'config(action="list_employees"): view roster. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. Returns top-K tools ranked by relevance. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role identity. Returns drift score + recommendations. mcp_ping(): daemon health + license status + tool usage stats.'
8249
+ content: 'config(action="list_employees"): view roster. config(action="set_agent_config"): view or change per-agent runtime + model. Call with no args to show all agents. config(action="agent_spend"): token usage per agent. config(action="daemon_health"): check exed status. config(action="license_status"): check license. config(action="cloud_sync"): force sync. Supports cloud_action param: status|sync|reupload. config(action="memory_audit"): health check (dupes, null vectors). config(action="run_consolidation"): trigger memory consolidation. config(action="worker_gate"): check spawn slot availability \u2014 alive/stale/reserved counts vs max. Use before dispatching. config(action="auto_wake_status"): orphaned tasks, blocked tasks, auto-wake retry status. config(action="orchestration_phase"): view/change org phase (phase_1_coo|phase_2_executives|phase_3_parallel_org). config(action="company_procedure", subaction="store|list|deactivate"): manage company procedures. config(action="global_procedure"): list all procedures (platform + company). config(action="create_trigger|list_triggers"): scheduled agent jobs. config(action="export_orchestration|import_orchestration"): portable org state. diagnostics(action="healthcheck|doctor|status_brief|check_update|cloud_status"): system diagnostics. diagnostics(action="pending_work_summary"): pending reviews + messages + notifications in one call. diagnostics(action="rename_employee"): rename an agent across all systems (roster, identity, DB, symlinks). diagnostics(action="tool_search"): semantic tool discovery \u2014 find relevant MCP tools by natural language query. diagnostics(action="drift"): identity drift detection \u2014 score how far an agent has drifted from its role. mcp_ping(): daemon health + license status + tool usage stats.'
8247
8250
  }
8248
8251
  ];
8249
8252
  PLATFORM_PROCEDURE_TITLES = new Set(