@askexenow/exe-os 0.9.72 → 0.9.74

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 (109) hide show
  1. package/dist/bin/age-ontology-load.js +3 -0
  2. package/dist/bin/agentic-ontology-backfill.js +4 -1
  3. package/dist/bin/agentic-reflection-backfill.js +4 -1
  4. package/dist/bin/agentic-semantic-label.js +4 -1
  5. package/dist/bin/backfill-conversations.js +4 -1
  6. package/dist/bin/backfill-responses.js +4 -1
  7. package/dist/bin/backfill-vectors.js +4 -1
  8. package/dist/bin/bulk-sync-postgres.js +4 -1
  9. package/dist/bin/cc-doctor.js +3 -0
  10. package/dist/bin/cleanup-stale-review-tasks.js +4 -1
  11. package/dist/bin/cli.js +79 -51
  12. package/dist/bin/exe-agent-config.js +3 -0
  13. package/dist/bin/exe-agent.js +4 -1
  14. package/dist/bin/exe-assign.js +4 -1
  15. package/dist/bin/exe-boot.js +4 -1
  16. package/dist/bin/exe-call.js +4 -1
  17. package/dist/bin/exe-cloud.js +4 -1
  18. package/dist/bin/exe-dispatch.js +4 -1
  19. package/dist/bin/exe-doctor.js +4 -1
  20. package/dist/bin/exe-export-behaviors.js +4 -1
  21. package/dist/bin/exe-forget.js +4 -1
  22. package/dist/bin/exe-gateway.js +4 -1
  23. package/dist/bin/exe-healthcheck.js +3 -0
  24. package/dist/bin/exe-heartbeat.js +4 -1
  25. package/dist/bin/exe-kill.js +4 -1
  26. package/dist/bin/exe-launch-agent.js +4 -1
  27. package/dist/bin/exe-new-employee.js +40 -12
  28. package/dist/bin/exe-pending-messages.js +4 -1
  29. package/dist/bin/exe-pending-notifications.js +4 -1
  30. package/dist/bin/exe-pending-reviews.js +4 -1
  31. package/dist/bin/exe-rename.js +4 -1
  32. package/dist/bin/exe-review.js +4 -1
  33. package/dist/bin/exe-search.js +4 -1
  34. package/dist/bin/exe-session-cleanup.js +4 -1
  35. package/dist/bin/exe-settings.js +3 -0
  36. package/dist/bin/exe-start-codex.js +4 -1
  37. package/dist/bin/exe-start-opencode.js +4 -1
  38. package/dist/bin/exe-status.js +4 -1
  39. package/dist/bin/exe-team.js +4 -1
  40. package/dist/bin/git-sweep.js +4 -1
  41. package/dist/bin/graph-backfill.js +4 -1
  42. package/dist/bin/graph-export.js +4 -1
  43. package/dist/bin/install.js +39 -11
  44. package/dist/bin/intercom-check.js +4 -1
  45. package/dist/bin/postgres-agentic-reflection-backfill.js +3 -0
  46. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -0
  47. package/dist/bin/scan-tasks.js +4 -1
  48. package/dist/bin/setup.js +39 -11
  49. package/dist/bin/shard-migrate.js +4 -1
  50. package/dist/bin/update.js +3 -0
  51. package/dist/gateway/index.js +4 -1
  52. package/dist/hooks/bug-report-worker.js +4 -1
  53. package/dist/hooks/codex-stop-task-finalizer.js +4 -1
  54. package/dist/hooks/commit-complete.js +4 -1
  55. package/dist/hooks/error-recall.js +4 -1
  56. package/dist/hooks/exe-heartbeat-hook.js +3 -0
  57. package/dist/hooks/ingest-worker.js +3 -0
  58. package/dist/hooks/ingest.js +4 -1
  59. package/dist/hooks/instructions-loaded.js +4 -1
  60. package/dist/hooks/notification.js +4 -1
  61. package/dist/hooks/post-compact.js +4 -1
  62. package/dist/hooks/post-tool-combined.js +4 -1
  63. package/dist/hooks/pre-compact.js +4 -1
  64. package/dist/hooks/pre-tool-use.js +4 -1
  65. package/dist/hooks/prompt-submit.js +4 -1
  66. package/dist/hooks/session-end.js +4 -1
  67. package/dist/hooks/session-start.js +4 -1
  68. package/dist/hooks/stop.js +4 -1
  69. package/dist/hooks/subagent-stop.js +4 -1
  70. package/dist/hooks/summary-worker.js +4 -1
  71. package/dist/index.js +4 -1
  72. package/dist/lib/agent-config.js +3 -0
  73. package/dist/lib/cloud-sync.js +3 -0
  74. package/dist/lib/config.js +3 -0
  75. package/dist/lib/consolidation.js +3 -0
  76. package/dist/lib/database.js +3 -0
  77. package/dist/lib/db-daemon-client.js +3 -0
  78. package/dist/lib/db.js +3 -0
  79. package/dist/lib/device-registry.js +3 -0
  80. package/dist/lib/embedder.js +3 -0
  81. package/dist/lib/employee-templates.js +4 -1
  82. package/dist/lib/employees.js +3 -0
  83. package/dist/lib/exe-daemon-client.js +3 -0
  84. package/dist/lib/exe-daemon.js +4 -1
  85. package/dist/lib/hybrid-search.js +4 -1
  86. package/dist/lib/identity.js +3 -0
  87. package/dist/lib/license.js +3 -0
  88. package/dist/lib/messaging.js +3 -0
  89. package/dist/lib/reminders.js +3 -0
  90. package/dist/lib/schedules.js +4 -1
  91. package/dist/lib/session-wrappers.js +31 -6
  92. package/dist/lib/skill-learning.js +3 -0
  93. package/dist/lib/store.js +4 -1
  94. package/dist/lib/task-router.js +3 -0
  95. package/dist/lib/tasks.js +3 -0
  96. package/dist/lib/tmux-routing.js +3 -0
  97. package/dist/lib/token-spend.js +3 -0
  98. package/dist/mcp/server.js +4 -1
  99. package/dist/mcp/tools/complete-reminder.js +3 -0
  100. package/dist/mcp/tools/create-reminder.js +3 -0
  101. package/dist/mcp/tools/create-task.js +3 -0
  102. package/dist/mcp/tools/deactivate-behavior.js +3 -0
  103. package/dist/mcp/tools/list-reminders.js +3 -0
  104. package/dist/mcp/tools/list-tasks.js +3 -0
  105. package/dist/mcp/tools/send-message.js +3 -0
  106. package/dist/mcp/tools/update-task.js +3 -0
  107. package/dist/runtime/index.js +4 -1
  108. package/dist/tui/App.js +4 -1
  109. package/package.json +1 -1
@@ -98,6 +98,9 @@ var DEFAULT_CONFIG = {
98
98
  autoInstall: false,
99
99
  checkIntervalMs: 24 * 60 * 60 * 1e3
100
100
  },
101
+ support: {
102
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
103
+ },
101
104
  orchestration: {
102
105
  phase: "phase_1_coo",
103
106
  phaseSetBy: "default"
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3359,7 +3362,7 @@ var init_platform_procedures = __esm({
3359
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3360
3363
  domain: "support",
3361
3364
  priority: "p0",
3362
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3365
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3363
3366
  },
3364
3367
  // --- Operations ---
3365
3368
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3359,7 +3362,7 @@ var init_platform_procedures = __esm({
3359
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3360
3363
  domain: "support",
3361
3364
  priority: "p0",
3362
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3365
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3363
3366
  },
3364
3367
  // --- Operations ---
3365
3368
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3359,7 +3362,7 @@ var init_platform_procedures = __esm({
3359
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3360
3363
  domain: "support",
3361
3364
  priority: "p0",
3362
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3365
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3363
3366
  },
3364
3367
  // --- Operations ---
3365
3368
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3499,7 +3502,7 @@ var init_platform_procedures = __esm({
3499
3502
  title: "Customer patch triage \u2014 upstream bug vs customization",
3500
3503
  domain: "support",
3501
3504
  priority: "p0",
3502
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3505
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3503
3506
  },
3504
3507
  // --- Operations ---
3505
3508
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3499,7 +3502,7 @@ var init_platform_procedures = __esm({
3499
3502
  title: "Customer patch triage \u2014 upstream bug vs customization",
3500
3503
  domain: "support",
3501
3504
  priority: "p0",
3502
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3505
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3503
3506
  },
3504
3507
  // --- Operations ---
3505
3508
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3495,7 +3498,7 @@ var init_platform_procedures = __esm({
3495
3498
  title: "Customer patch triage \u2014 upstream bug vs customization",
3496
3499
  domain: "support",
3497
3500
  priority: "p0",
3498
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3501
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3499
3502
  },
3500
3503
  // --- Operations ---
3501
3504
  {
@@ -298,6 +298,9 @@ var init_config = __esm({
298
298
  autoInstall: false,
299
299
  checkIntervalMs: 24 * 60 * 60 * 1e3
300
300
  },
301
+ support: {
302
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
303
+ },
301
304
  orchestration: {
302
305
  phase: "phase_1_coo",
303
306
  phaseSetBy: "default"
@@ -3667,7 +3670,7 @@ var init_platform_procedures = __esm({
3667
3670
  title: "Customer patch triage \u2014 upstream bug vs customization",
3668
3671
  domain: "support",
3669
3672
  priority: "p0",
3670
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3673
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
3671
3674
  },
3672
3675
  // --- Operations ---
3673
3676
  {
@@ -110,6 +110,9 @@ var DEFAULT_CONFIG = {
110
110
  autoInstall: false,
111
111
  checkIntervalMs: 24 * 60 * 60 * 1e3
112
112
  },
113
+ support: {
114
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
115
+ },
113
116
  orchestration: {
114
117
  phase: "phase_1_coo",
115
118
  phaseSetBy: "default"
@@ -300,6 +300,9 @@ var init_config = __esm({
300
300
  autoInstall: false,
301
301
  checkIntervalMs: 24 * 60 * 60 * 1e3
302
302
  },
303
+ support: {
304
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
305
+ },
303
306
  orchestration: {
304
307
  phase: "phase_1_coo",
305
308
  phaseSetBy: "default"
@@ -4142,7 +4145,7 @@ var init_platform_procedures = __esm({
4142
4145
  title: "Customer patch triage \u2014 upstream bug vs customization",
4143
4146
  domain: "support",
4144
4147
  priority: "p0",
4145
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
4148
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
4146
4149
  },
4147
4150
  // --- Operations ---
4148
4151
  {
package/dist/bin/cli.js CHANGED
@@ -310,6 +310,9 @@ var init_config = __esm({
310
310
  autoInstall: false,
311
311
  checkIntervalMs: 24 * 60 * 60 * 1e3
312
312
  },
313
+ support: {
314
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
315
+ },
313
316
  orchestration: {
314
317
  phase: "phase_1_coo",
315
318
  phaseSetBy: "default"
@@ -3695,8 +3698,8 @@ function findPackageRoot() {
3695
3698
  function getAvailableMemoryGB() {
3696
3699
  if (process.platform === "darwin") {
3697
3700
  try {
3698
- const { execSync: execSync17 } = __require("child_process");
3699
- const vmstat = execSync17("vm_stat", { encoding: "utf8" });
3701
+ const { execSync: execSync18 } = __require("child_process");
3702
+ const vmstat = execSync18("vm_stat", { encoding: "utf8" });
3700
3703
  const pageSize = 16384;
3701
3704
  const pageSizeMatch = vmstat.match(/page size of (\d+) bytes/);
3702
3705
  const actualPageSize = pageSizeMatch ? parseInt(pageSizeMatch[1], 10) : pageSize;
@@ -8663,7 +8666,7 @@ var init_platform_procedures = __esm({
8663
8666
  title: "Customer patch triage \u2014 upstream bug vs customization",
8664
8667
  domain: "support",
8665
8668
  priority: "p0",
8666
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
8669
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
8667
8670
  },
8668
8671
  // --- Operations ---
8669
8672
  {
@@ -18116,12 +18119,14 @@ import {
18116
18119
  readdirSync as readdirSync9,
18117
18120
  unlinkSync as unlinkSync14
18118
18121
  } from "fs";
18122
+ import { execSync as execSync13 } from "child_process";
18119
18123
  import path37 from "path";
18120
18124
  import { homedir as homedir5 } from "os";
18121
18125
  function generateSessionWrappers(packageRoot, homeDir) {
18122
18126
  const home = homeDir ?? homedir5();
18123
18127
  const binDir = path37.join(home, ".exe-os", "bin");
18124
18128
  const rosterPath = path37.join(home, ".exe-os", "exe-employees.json");
18129
+ const shouldMirrorToGlobalBin = homeDir === void 0;
18125
18130
  mkdirSync21(binDir, { recursive: true });
18126
18131
  const exeStartDst = path37.join(binDir, "exe-start");
18127
18132
  const candidates = [
@@ -18162,15 +18167,18 @@ function generateSessionWrappers(packageRoot, homeDir) {
18162
18167
  const wrapperContent = `#!/bin/bash
18163
18168
  exec "${exeStartDst}" "$0" "$@"
18164
18169
  `;
18170
+ const globalBinDir = shouldMirrorToGlobalBin ? resolveGlobalBinDir() : null;
18165
18171
  for (const emp of employees) {
18166
18172
  for (let n = 1; n <= MAX_N; n++) {
18167
- const wrapperPath = path37.join(binDir, `${emp.name}${n}`);
18168
- writeFileSync22(wrapperPath, wrapperContent);
18169
- chmodSync3(wrapperPath, 493);
18173
+ writeWrapper(path37.join(binDir, `${emp.name}${n}`), wrapperContent);
18174
+ if (globalBinDir) {
18175
+ writeWrapper(path37.join(globalBinDir, `${emp.name}${n}`), wrapperContent);
18176
+ }
18170
18177
  created++;
18171
- const codexPath = path37.join(binDir, `${emp.name}${n}-codex`);
18172
- writeFileSync22(codexPath, wrapperContent);
18173
- chmodSync3(codexPath, 493);
18178
+ writeWrapper(path37.join(binDir, `${emp.name}${n}-codex`), wrapperContent);
18179
+ if (globalBinDir) {
18180
+ writeWrapper(path37.join(globalBinDir, `${emp.name}${n}-codex`), wrapperContent);
18181
+ }
18174
18182
  created++;
18175
18183
  }
18176
18184
  }
@@ -18199,6 +18207,26 @@ exec node "${codexLauncher}" --agent ${emp.name} "$@"
18199
18207
  const pathConfigured = ensurePath(home, binDir);
18200
18208
  return { created, pathConfigured };
18201
18209
  }
18210
+ function writeWrapper(wrapperPath, content) {
18211
+ try {
18212
+ writeFileSync22(wrapperPath, content);
18213
+ chmodSync3(wrapperPath, 493);
18214
+ } catch {
18215
+ }
18216
+ }
18217
+ function resolveGlobalBinDir() {
18218
+ try {
18219
+ const exeOsPath = execSync13("command -v exe-os", { encoding: "utf8", timeout: 3e3 }).trim().split("\n")[0];
18220
+ if (exeOsPath) return path37.dirname(exeOsPath);
18221
+ } catch {
18222
+ }
18223
+ try {
18224
+ const prefix = execSync13("npm prefix -g", { encoding: "utf8", timeout: 3e3 }).trim();
18225
+ if (prefix) return path37.join(prefix, "bin");
18226
+ } catch {
18227
+ }
18228
+ return null;
18229
+ }
18202
18230
  function ensurePath(home, binDir) {
18203
18231
  if (process.env.PATH?.split(":").includes(binDir)) {
18204
18232
  return false;
@@ -18300,8 +18328,8 @@ function ask3(rl, prompt) {
18300
18328
  function getAvailableMemoryGB2() {
18301
18329
  if (process.platform === "darwin") {
18302
18330
  try {
18303
- const { execSync: execSync17 } = __require("child_process");
18304
- const vmstat = execSync17("vm_stat", { encoding: "utf8" });
18331
+ const { execSync: execSync18 } = __require("child_process");
18332
+ const vmstat = execSync18("vm_stat", { encoding: "utf8" });
18305
18333
  const pageSizeMatch = vmstat.match(/page size of (\d+) bytes/);
18306
18334
  const pageSize = pageSizeMatch ? parseInt(pageSizeMatch[1], 10) : 16384;
18307
18335
  const free = vmstat.match(/Pages free:\s+(\d+)/);
@@ -19161,7 +19189,7 @@ var init_update_backup = __esm({
19161
19189
  });
19162
19190
 
19163
19191
  // src/lib/update-check.ts
19164
- import { execSync as execSync13 } from "child_process";
19192
+ import { execSync as execSync14 } from "child_process";
19165
19193
  import { readFileSync as readFileSync27 } from "fs";
19166
19194
  import path40 from "path";
19167
19195
  function getLocalVersion(packageRoot) {
@@ -19171,7 +19199,7 @@ function getLocalVersion(packageRoot) {
19171
19199
  }
19172
19200
  function getRemoteVersion() {
19173
19201
  try {
19174
- const output = execSync13("npm view @askexenow/exe-os version", {
19202
+ const output = execSync14("npm view @askexenow/exe-os version", {
19175
19203
  encoding: "utf-8",
19176
19204
  timeout: 15e3,
19177
19205
  stdio: ["pipe", "pipe", "pipe"]
@@ -19210,7 +19238,7 @@ __export(update_exports, {
19210
19238
  getRemoteVersion: () => getRemoteVersion,
19211
19239
  runUpdate: () => runUpdate
19212
19240
  });
19213
- import { execSync as execSync14 } from "child_process";
19241
+ import { execSync as execSync15 } from "child_process";
19214
19242
  import { createInterface as createInterface5 } from "readline";
19215
19243
  async function runRestore() {
19216
19244
  console.log("\n\u{1F504} Restoring from update backup...");
@@ -19221,7 +19249,7 @@ async function runRestore() {
19221
19249
  console.log(`
19222
19250
  \u{1F4E5} Reinstalling @askexenow/exe-os@${manifest.version}...`);
19223
19251
  try {
19224
- execSync14(`npm install -g @askexenow/exe-os@${manifest.version}`, {
19252
+ execSync15(`npm install -g @askexenow/exe-os@${manifest.version}`, {
19225
19253
  stdio: ["pipe", "pipe", "inherit"],
19226
19254
  timeout: 3e5
19227
19255
  });
@@ -19298,7 +19326,7 @@ async function runUpdate(cliArgs) {
19298
19326
  }
19299
19327
  console.log("\u{1F9F9} Clearing npm cache...");
19300
19328
  try {
19301
- execSync14("npm cache clean --force", { stdio: "pipe" });
19329
+ execSync15("npm cache clean --force", { stdio: "pipe" });
19302
19330
  console.log(" Done");
19303
19331
  } catch {
19304
19332
  console.log(" Skipped (non-critical)");
@@ -19306,7 +19334,7 @@ async function runUpdate(cliArgs) {
19306
19334
  console.log("\u{1F4E5} Installing @askexenow/exe-os@latest...");
19307
19335
  console.log(" This may take a minute...\n");
19308
19336
  try {
19309
- execSync14("npm install -g @askexenow/exe-os@latest", {
19337
+ execSync15("npm install -g @askexenow/exe-os@latest", {
19310
19338
  stdio: ["pipe", "pipe", "inherit"],
19311
19339
  timeout: 3e5
19312
19340
  });
@@ -19324,7 +19352,7 @@ async function runUpdate(cliArgs) {
19324
19352
  newVersion = getLocalVersion(packageRoot);
19325
19353
  } catch {
19326
19354
  try {
19327
- const out = execSync14("npm list -g @askexenow/exe-os --depth=0 2>/dev/null", { encoding: "utf8" });
19355
+ const out = execSync15("npm list -g @askexenow/exe-os --depth=0 2>/dev/null", { encoding: "utf8" });
19328
19356
  const match = out.match(/@askexenow\/exe-os@(\S+)/);
19329
19357
  newVersion = match?.[1] ?? "unknown";
19330
19358
  } catch {
@@ -19353,7 +19381,7 @@ async function runUpdate(cliArgs) {
19353
19381
  }
19354
19382
  console.log("\u{1F527} Re-registering MCP, hooks, wrappers, and daemon...");
19355
19383
  try {
19356
- execSync14("exe-os-install --global", {
19384
+ execSync15("exe-os-install --global", {
19357
19385
  stdio: ["pipe", "inherit", "inherit"],
19358
19386
  timeout: 3e5
19359
19387
  });
@@ -26690,13 +26718,13 @@ __export(tmux_status_exports, {
26690
26718
  parseActivity: () => parseActivity,
26691
26719
  parseContextPercentage: () => parseContextPercentage
26692
26720
  });
26693
- import { execSync as execSync15 } from "child_process";
26721
+ import { execSync as execSync16 } from "child_process";
26694
26722
  function inTmux() {
26695
26723
  if (process.env.TMUX || process.env.TMUX_PANE) return true;
26696
26724
  const term = process.env.TERM ?? "";
26697
26725
  if (term.startsWith("tmux") || term.startsWith("screen")) return true;
26698
26726
  try {
26699
- execSync15("tmux display-message -p '#{session_name}' 2>/dev/null", {
26727
+ execSync16("tmux display-message -p '#{session_name}' 2>/dev/null", {
26700
26728
  encoding: "utf8",
26701
26729
  timeout: 2e3
26702
26730
  });
@@ -26706,12 +26734,12 @@ function inTmux() {
26706
26734
  try {
26707
26735
  let pid = process.ppid;
26708
26736
  for (let depth = 0; depth < 8 && pid > 1; depth++) {
26709
- const comm = execSync15(`ps -p ${pid} -o comm= 2>/dev/null`, {
26737
+ const comm = execSync16(`ps -p ${pid} -o comm= 2>/dev/null`, {
26710
26738
  encoding: "utf8",
26711
26739
  timeout: 1e3
26712
26740
  }).trim();
26713
26741
  if (/tmux/.test(comm)) return true;
26714
- const ppid = execSync15(`ps -p ${pid} -o ppid= 2>/dev/null`, {
26742
+ const ppid = execSync16(`ps -p ${pid} -o ppid= 2>/dev/null`, {
26715
26743
  encoding: "utf8",
26716
26744
  timeout: 1e3
26717
26745
  }).trim();
@@ -26724,7 +26752,7 @@ function inTmux() {
26724
26752
  }
26725
26753
  function listTmuxSessions() {
26726
26754
  try {
26727
- const out = execSync15("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
26755
+ const out = execSync16("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
26728
26756
  encoding: "utf8",
26729
26757
  timeout: 3e3
26730
26758
  });
@@ -26735,7 +26763,7 @@ function listTmuxSessions() {
26735
26763
  }
26736
26764
  function capturePaneLines(windowName, lines = 10) {
26737
26765
  try {
26738
- const out = execSync15(
26766
+ const out = execSync16(
26739
26767
  `tmux capture-pane -t ${JSON.stringify(windowName)} -p 2>/dev/null | tail -${lines}`,
26740
26768
  { encoding: "utf8", timeout: 3e3 }
26741
26769
  );
@@ -26746,7 +26774,7 @@ function capturePaneLines(windowName, lines = 10) {
26746
26774
  }
26747
26775
  function getPaneCwd(windowName) {
26748
26776
  try {
26749
- const out = execSync15(
26777
+ const out = execSync16(
26750
26778
  `tmux display-message -t ${JSON.stringify(windowName)} -p '#{pane_current_path}' 2>/dev/null`,
26751
26779
  { encoding: "utf8", timeout: 3e3 }
26752
26780
  );
@@ -26757,7 +26785,7 @@ function getPaneCwd(windowName) {
26757
26785
  }
26758
26786
  function projectFromPath(dir) {
26759
26787
  try {
26760
- const root = execSync15("git -C " + JSON.stringify(dir) + " rev-parse --show-toplevel 2>/dev/null", {
26788
+ const root = execSync16("git -C " + JSON.stringify(dir) + " rev-parse --show-toplevel 2>/dev/null", {
26761
26789
  encoding: "utf8",
26762
26790
  timeout: 3e3
26763
26791
  }).trim();
@@ -26826,7 +26854,7 @@ function getEmployeeStatuses(employeeNames) {
26826
26854
  }
26827
26855
  let paneAlive = true;
26828
26856
  try {
26829
- const paneStatus = execSync15(
26857
+ const paneStatus = execSync16(
26830
26858
  `tmux list-panes -t ${JSON.stringify(sessionName)} -F '#{pane_dead}' 2>/dev/null`,
26831
26859
  { encoding: "utf8", timeout: 3e3 }
26832
26860
  ).trim();
@@ -27016,8 +27044,8 @@ function Footer() {
27016
27044
  setSessions(allSessions.length);
27017
27045
  if (!currentSession) {
27018
27046
  try {
27019
- const { execSync: execSync17 } = await import("child_process");
27020
- const name = execSync17("tmux display-message -p '#{session_name}' 2>/dev/null", {
27047
+ const { execSync: execSync18 } = await import("child_process");
27048
+ const name = execSync18("tmux display-message -p '#{session_name}' 2>/dev/null", {
27021
27049
  encoding: "utf8",
27022
27050
  timeout: 2e3
27023
27051
  }).trim();
@@ -30371,8 +30399,8 @@ function TmuxPane({ sessionName, employeeName, employeeRole, projectName, onDeta
30371
30399
  }
30372
30400
  const capture = () => {
30373
30401
  try {
30374
- const { execSync: execSync17 } = __require("child_process");
30375
- const output = execSync17(
30402
+ const { execSync: execSync18 } = __require("child_process");
30403
+ const output = execSync18(
30376
30404
  `tmux capture-pane -t ${JSON.stringify(sessionName)} -p -e 2>/dev/null | tail -${CAPTURE_LINES}`,
30377
30405
  { encoding: "utf8", timeout: 3e3 }
30378
30406
  );
@@ -30396,8 +30424,8 @@ function TmuxPane({ sessionName, employeeName, employeeRole, projectName, onDeta
30396
30424
  if (key.return) {
30397
30425
  if (!demo && inputBuffer.trim()) {
30398
30426
  try {
30399
- const { execSync: execSync17 } = __require("child_process");
30400
- execSync17(
30427
+ const { execSync: execSync18 } = __require("child_process");
30428
+ execSync18(
30401
30429
  `tmux send-keys -t ${JSON.stringify(sessionName)} ${JSON.stringify(inputBuffer)} Enter`,
30402
30430
  { timeout: 2e3 }
30403
30431
  );
@@ -30405,8 +30433,8 @@ function TmuxPane({ sessionName, employeeName, employeeRole, projectName, onDeta
30405
30433
  }
30406
30434
  } else if (!demo) {
30407
30435
  try {
30408
- const { execSync: execSync17 } = __require("child_process");
30409
- execSync17(`tmux send-keys -t ${JSON.stringify(sessionName)} Enter`, { timeout: 2e3 });
30436
+ const { execSync: execSync18 } = __require("child_process");
30437
+ execSync18(`tmux send-keys -t ${JSON.stringify(sessionName)} Enter`, { timeout: 2e3 });
30410
30438
  } catch {
30411
30439
  }
30412
30440
  }
@@ -31093,12 +31121,12 @@ function SessionsView({
31093
31121
  return;
31094
31122
  }
31095
31123
  } else {
31096
- const { execSync: execSync17 } = await import("child_process");
31124
+ const { execSync: execSync18 } = await import("child_process");
31097
31125
  const dir = projectDir || process.cwd();
31098
- execSync17(`tmux new-session -d -s ${JSON.stringify(entry.sessionName)} -c ${JSON.stringify(dir)}`, { timeout: 5e3 });
31099
- execSync17(`tmux send-keys -t ${JSON.stringify(entry.sessionName)} "claude --dangerously-skip-permissions" Enter`, { timeout: 3e3 });
31126
+ execSync18(`tmux new-session -d -s ${JSON.stringify(entry.sessionName)} -c ${JSON.stringify(dir)}`, { timeout: 5e3 });
31127
+ execSync18(`tmux send-keys -t ${JSON.stringify(entry.sessionName)} "claude --dangerously-skip-permissions" Enter`, { timeout: 3e3 });
31100
31128
  await new Promise((r) => setTimeout(r, 3e3));
31101
- execSync17(`tmux send-keys -t ${JSON.stringify(entry.sessionName)} "/exe" Enter`, { timeout: 3e3 });
31129
+ execSync18(`tmux send-keys -t ${JSON.stringify(entry.sessionName)} "/exe" Enter`, { timeout: 3e3 });
31102
31130
  }
31103
31131
  const updated = { ...entry, status: "active", activity: "Starting...", attached: false };
31104
31132
  setViewingEmployee(updated);
@@ -31201,7 +31229,7 @@ function SessionsView({
31201
31229
  const { listTmuxSessions: listTmuxSessions2, inTmux: inTmux2, capturePaneLines: capturePaneLines2, parseActivity: parseActivity2 } = await Promise.resolve().then(() => (init_tmux_status(), tmux_status_exports));
31202
31230
  const { getCoordinatorName: getCoordinatorName2, isCoordinatorRole: isCoordinatorRole2, loadEmployees: loadEmployees2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
31203
31231
  const { isExeSession: isExeSession2 } = await Promise.resolve().then(() => (init_tmux_routing(), tmux_routing_exports));
31204
- const { execSync: execSync17 } = await import("child_process");
31232
+ const { execSync: execSync18 } = await import("child_process");
31205
31233
  if (!inTmux2()) {
31206
31234
  setTmuxAvailable(false);
31207
31235
  setProjects([]);
@@ -31210,7 +31238,7 @@ function SessionsView({
31210
31238
  setTmuxAvailable(true);
31211
31239
  const attachedMap = /* @__PURE__ */ new Map();
31212
31240
  try {
31213
- const out = execSync17("tmux list-sessions -F '#{session_name}:#{session_attached}' 2>/dev/null", {
31241
+ const out = execSync18("tmux list-sessions -F '#{session_name}:#{session_attached}' 2>/dev/null", {
31214
31242
  encoding: "utf8",
31215
31243
  timeout: 3e3
31216
31244
  });
@@ -32246,8 +32274,8 @@ function upsertConversation(conversations, platform, senderId, message) {
32246
32274
  async function loadGatewayConfig() {
32247
32275
  const state = { running: false, port: 3100, adapters: [], agents: [], gatewayUrl: "" };
32248
32276
  try {
32249
- const { execSync: execSync17 } = await import("child_process");
32250
- const ps = execSync17("pgrep -f exe-gateway 2>/dev/null", { encoding: "utf8", timeout: 3e3 });
32277
+ const { execSync: execSync18 } = await import("child_process");
32278
+ const ps = execSync18("pgrep -f exe-gateway 2>/dev/null", { encoding: "utf8", timeout: 3e3 });
32251
32279
  state.running = ps.trim().length > 0;
32252
32280
  } catch {
32253
32281
  state.running = false;
@@ -32724,10 +32752,10 @@ var init_Gateway = __esm({
32724
32752
  });
32725
32753
 
32726
32754
  // src/tui/utils/agent-status.ts
32727
- import { execSync as execSync16 } from "child_process";
32755
+ import { execSync as execSync17 } from "child_process";
32728
32756
  function getAgentStatus(agentId) {
32729
32757
  try {
32730
- const sessions = execSync16("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
32758
+ const sessions = execSync17("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
32731
32759
  encoding: "utf8",
32732
32760
  timeout: 2e3
32733
32761
  }).trim().split("\n");
@@ -32738,7 +32766,7 @@ function getAgentStatus(agentId) {
32738
32766
  return /^\d?-/.test(suffix) || /^\d+$/.test(suffix);
32739
32767
  });
32740
32768
  if (!agentSession) return { label: "offline", color: "gray" };
32741
- const pane = execSync16(`tmux capture-pane -t "${agentSession}" -p 2>/dev/null | tail -3`, {
32769
+ const pane = execSync17(`tmux capture-pane -t "${agentSession}" -p 2>/dev/null | tail -3`, {
32742
32770
  encoding: "utf8",
32743
32771
  timeout: 2e3
32744
32772
  });
@@ -33661,8 +33689,8 @@ function SettingsView({ onBack }) {
33661
33689
  };
33662
33690
  });
33663
33691
  try {
33664
- const { execSync: execSync17 } = await import("child_process");
33665
- execSync17("curl -s --max-time 1 http://localhost:11434/api/tags", { timeout: 2e3 });
33692
+ const { execSync: execSync18 } = await import("child_process");
33693
+ execSync18("curl -s --max-time 1 http://localhost:11434/api/tags", { timeout: 2e3 });
33666
33694
  providerList.push({ name: "Ollama", configured: true, detail: "localhost:11434" });
33667
33695
  } catch {
33668
33696
  providerList.push({ name: "Ollama", configured: false, detail: "not running" });
@@ -36458,10 +36486,10 @@ async function runClaudeUninstall(flags = []) {
36458
36486
  }
36459
36487
  }
36460
36488
  try {
36461
- const { execSync: execSync17 } = await import("child_process");
36489
+ const { execSync: execSync18 } = await import("child_process");
36462
36490
  const findExeBin3 = () => {
36463
36491
  try {
36464
- return execSync17(process.platform === "win32" ? "where exe-os" : "which exe-os", { encoding: "utf8" }).trim();
36492
+ return execSync18(process.platform === "win32" ? "where exe-os" : "which exe-os", { encoding: "utf8" }).trim();
36465
36493
  } catch {
36466
36494
  return null;
36467
36495
  }
@@ -117,6 +117,9 @@ var init_config = __esm({
117
117
  autoInstall: false,
118
118
  checkIntervalMs: 24 * 60 * 60 * 1e3
119
119
  },
120
+ support: {
121
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
122
+ },
120
123
  orchestration: {
121
124
  phase: "phase_1_coo",
122
125
  phaseSetBy: "default"
@@ -101,6 +101,9 @@ var init_config = __esm({
101
101
  autoInstall: false,
102
102
  checkIntervalMs: 24 * 60 * 60 * 1e3
103
103
  },
104
+ support: {
105
+ bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
106
+ },
104
107
  orchestration: {
105
108
  phase: "phase_1_coo",
106
109
  phaseSetBy: "default"
@@ -1372,7 +1375,7 @@ var PLATFORM_PROCEDURES = [
1372
1375
  title: "Customer patch triage \u2014 upstream bug vs customization",
1373
1376
  domain: "support",
1374
1377
  priority: "p0",
1375
- content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
1378
+ content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
1376
1379
  },
1377
1380
  // --- Operations ---
1378
1381
  {