@askexenow/exe-os 0.9.78 → 0.9.80

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 (71) hide show
  1. package/dist/bin/agentic-ontology-backfill.js +2 -2
  2. package/dist/bin/agentic-reflection-backfill.js +2 -2
  3. package/dist/bin/agentic-semantic-label.js +2 -2
  4. package/dist/bin/backfill-conversations.js +2 -2
  5. package/dist/bin/backfill-responses.js +2 -2
  6. package/dist/bin/backfill-vectors.js +2 -2
  7. package/dist/bin/bulk-sync-postgres.js +2 -2
  8. package/dist/bin/cleanup-stale-review-tasks.js +2 -2
  9. package/dist/bin/cli.js +116 -37
  10. package/dist/bin/customer-readiness.js +4 -0
  11. package/dist/bin/exe-agent.js +2 -2
  12. package/dist/bin/exe-assign.js +2 -2
  13. package/dist/bin/exe-boot.js +2 -2
  14. package/dist/bin/exe-call.js +2 -2
  15. package/dist/bin/exe-cloud.js +2 -2
  16. package/dist/bin/exe-dispatch.js +2 -2
  17. package/dist/bin/exe-doctor.js +2 -2
  18. package/dist/bin/exe-export-behaviors.js +2 -2
  19. package/dist/bin/exe-forget.js +2 -2
  20. package/dist/bin/exe-gateway.js +2 -2
  21. package/dist/bin/exe-heartbeat.js +2 -2
  22. package/dist/bin/exe-kill.js +2 -2
  23. package/dist/bin/exe-launch-agent.js +2 -2
  24. package/dist/bin/exe-new-employee.js +2 -2
  25. package/dist/bin/exe-pending-messages.js +2 -2
  26. package/dist/bin/exe-pending-notifications.js +2 -2
  27. package/dist/bin/exe-pending-reviews.js +2 -2
  28. package/dist/bin/exe-rename.js +2 -2
  29. package/dist/bin/exe-review.js +2 -2
  30. package/dist/bin/exe-search.js +2 -2
  31. package/dist/bin/exe-session-cleanup.js +2 -2
  32. package/dist/bin/exe-start-codex.js +2 -2
  33. package/dist/bin/exe-start-opencode.js +2 -2
  34. package/dist/bin/exe-status.js +2 -2
  35. package/dist/bin/exe-support.js +110 -31
  36. package/dist/bin/exe-team.js +2 -2
  37. package/dist/bin/git-sweep.js +2 -2
  38. package/dist/bin/graph-backfill.js +2 -2
  39. package/dist/bin/graph-export.js +2 -2
  40. package/dist/bin/intercom-check.js +2 -2
  41. package/dist/bin/scan-tasks.js +2 -2
  42. package/dist/bin/setup.js +2 -2
  43. package/dist/bin/shard-migrate.js +2 -2
  44. package/dist/gateway/index.js +2 -2
  45. package/dist/hooks/bug-report-worker.js +2 -2
  46. package/dist/hooks/codex-stop-task-finalizer.js +2 -2
  47. package/dist/hooks/commit-complete.js +2 -2
  48. package/dist/hooks/error-recall.js +2 -2
  49. package/dist/hooks/ingest.js +2 -2
  50. package/dist/hooks/instructions-loaded.js +2 -2
  51. package/dist/hooks/notification.js +2 -2
  52. package/dist/hooks/post-compact.js +2 -2
  53. package/dist/hooks/post-tool-combined.js +2 -2
  54. package/dist/hooks/pre-compact.js +2 -2
  55. package/dist/hooks/pre-tool-use.js +2 -2
  56. package/dist/hooks/prompt-submit.js +2 -2
  57. package/dist/hooks/session-end.js +2 -2
  58. package/dist/hooks/session-start.js +2 -2
  59. package/dist/hooks/stop.js +2 -2
  60. package/dist/hooks/subagent-stop.js +2 -2
  61. package/dist/hooks/summary-worker.js +2 -2
  62. package/dist/index.js +2 -2
  63. package/dist/lib/employee-templates.js +2 -2
  64. package/dist/lib/exe-daemon.js +431 -140
  65. package/dist/lib/hybrid-search.js +2 -2
  66. package/dist/lib/schedules.js +2 -2
  67. package/dist/lib/store.js +2 -2
  68. package/dist/mcp/server.js +368 -88
  69. package/dist/runtime/index.js +2 -2
  70. package/dist/tui/App.js +2 -2
  71. package/package.json +1 -1
@@ -3362,7 +3362,7 @@ var init_platform_procedures = __esm({
3362
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3363
3363
  domain: "support",
3364
3364
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3366
3366
  },
3367
3367
  // --- Operations ---
3368
3368
  {
@@ -3444,7 +3444,7 @@ var init_platform_procedures = __esm({
3444
3444
  title: "MCP tools \u2014 identity, behavior, and decisions",
3445
3445
  domain: "tool-use",
3446
3446
  priority: "p1",
3447
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3447
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3448
3448
  },
3449
3449
  {
3450
3450
  title: "MCP tools \u2014 communication and messaging",
@@ -3362,7 +3362,7 @@ var init_platform_procedures = __esm({
3362
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3363
3363
  domain: "support",
3364
3364
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3366
3366
  },
3367
3367
  // --- Operations ---
3368
3368
  {
@@ -3444,7 +3444,7 @@ var init_platform_procedures = __esm({
3444
3444
  title: "MCP tools \u2014 identity, behavior, and decisions",
3445
3445
  domain: "tool-use",
3446
3446
  priority: "p1",
3447
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3447
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3448
3448
  },
3449
3449
  {
3450
3450
  title: "MCP tools \u2014 communication and messaging",
@@ -3362,7 +3362,7 @@ var init_platform_procedures = __esm({
3362
3362
  title: "Customer patch triage \u2014 upstream bug vs customization",
3363
3363
  domain: "support",
3364
3364
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3366
3366
  },
3367
3367
  // --- Operations ---
3368
3368
  {
@@ -3444,7 +3444,7 @@ var init_platform_procedures = __esm({
3444
3444
  title: "MCP tools \u2014 identity, behavior, and decisions",
3445
3445
  domain: "tool-use",
3446
3446
  priority: "p1",
3447
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3447
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3448
3448
  },
3449
3449
  {
3450
3450
  title: "MCP tools \u2014 communication and messaging",
@@ -3502,7 +3502,7 @@ var init_platform_procedures = __esm({
3502
3502
  title: "Customer patch triage \u2014 upstream bug vs customization",
3503
3503
  domain: "support",
3504
3504
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3506
3506
  },
3507
3507
  // --- Operations ---
3508
3508
  {
@@ -3584,7 +3584,7 @@ var init_platform_procedures = __esm({
3584
3584
  title: "MCP tools \u2014 identity, behavior, and decisions",
3585
3585
  domain: "tool-use",
3586
3586
  priority: "p1",
3587
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3587
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3588
3588
  },
3589
3589
  {
3590
3590
  title: "MCP tools \u2014 communication and messaging",
@@ -3502,7 +3502,7 @@ var init_platform_procedures = __esm({
3502
3502
  title: "Customer patch triage \u2014 upstream bug vs customization",
3503
3503
  domain: "support",
3504
3504
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3506
3506
  },
3507
3507
  // --- Operations ---
3508
3508
  {
@@ -3584,7 +3584,7 @@ var init_platform_procedures = __esm({
3584
3584
  title: "MCP tools \u2014 identity, behavior, and decisions",
3585
3585
  domain: "tool-use",
3586
3586
  priority: "p1",
3587
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3587
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3588
3588
  },
3589
3589
  {
3590
3590
  title: "MCP tools \u2014 communication and messaging",
@@ -3498,7 +3498,7 @@ var init_platform_procedures = __esm({
3498
3498
  title: "Customer patch triage \u2014 upstream bug vs customization",
3499
3499
  domain: "support",
3500
3500
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3502
3502
  },
3503
3503
  // --- Operations ---
3504
3504
  {
@@ -3580,7 +3580,7 @@ var init_platform_procedures = __esm({
3580
3580
  title: "MCP tools \u2014 identity, behavior, and decisions",
3581
3581
  domain: "tool-use",
3582
3582
  priority: "p1",
3583
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3583
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3584
3584
  },
3585
3585
  {
3586
3586
  title: "MCP tools \u2014 communication and messaging",
@@ -3670,7 +3670,7 @@ var init_platform_procedures = __esm({
3670
3670
  title: "Customer patch triage \u2014 upstream bug vs customization",
3671
3671
  domain: "support",
3672
3672
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3674
3674
  },
3675
3675
  // --- Operations ---
3676
3676
  {
@@ -3752,7 +3752,7 @@ var init_platform_procedures = __esm({
3752
3752
  title: "MCP tools \u2014 identity, behavior, and decisions",
3753
3753
  domain: "tool-use",
3754
3754
  priority: "p1",
3755
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3755
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3756
3756
  },
3757
3757
  {
3758
3758
  title: "MCP tools \u2014 communication and messaging",
@@ -4145,7 +4145,7 @@ var init_platform_procedures = __esm({
4145
4145
  title: "Customer patch triage \u2014 upstream bug vs customization",
4146
4146
  domain: "support",
4147
4147
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
4149
4149
  },
4150
4150
  // --- Operations ---
4151
4151
  {
@@ -4227,7 +4227,7 @@ var init_platform_procedures = __esm({
4227
4227
  title: "MCP tools \u2014 identity, behavior, and decisions",
4228
4228
  domain: "tool-use",
4229
4229
  priority: "p1",
4230
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
4230
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
4231
4231
  },
4232
4232
  {
4233
4233
  title: "MCP tools \u2014 communication and messaging",
package/dist/bin/cli.js CHANGED
@@ -8667,7 +8667,7 @@ var init_platform_procedures = __esm({
8667
8667
  title: "Customer patch triage \u2014 upstream bug vs customization",
8668
8668
  domain: "support",
8669
8669
  priority: "p0",
8670
- 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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
8670
+ 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
8671
8671
  },
8672
8672
  // --- Operations ---
8673
8673
  {
@@ -8749,7 +8749,7 @@ var init_platform_procedures = __esm({
8749
8749
  title: "MCP tools \u2014 identity, behavior, and decisions",
8750
8750
  domain: "tool-use",
8751
8751
  priority: "p1",
8752
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
8752
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
8753
8753
  },
8754
8754
  {
8755
8755
  title: "MCP tools \u2014 communication and messaging",
@@ -10948,25 +10948,32 @@ var init_exe_key = __esm({
10948
10948
  // src/bin/exe-support.ts
10949
10949
  var exe_support_exports = {};
10950
10950
  __export(exe_support_exports, {
10951
- main: () => main4
10951
+ hasFailures: () => hasFailures,
10952
+ main: () => main4,
10953
+ runHealth: () => runHealth,
10954
+ runTest: () => runTest
10952
10955
  });
10953
10956
  import { mkdirSync as mkdirSync13, readFileSync as readFileSync14, unlinkSync as unlinkSync7, writeFileSync as writeFileSync13 } from "fs";
10954
10957
  import path20 from "path";
10955
10958
  import { randomUUID as randomUUID4 } from "crypto";
10956
10959
  async function main4(argv = process.argv.slice(2)) {
10957
- const command = argv[0] && !argv[0].startsWith("--") ? argv[0] : "test";
10960
+ const command = argv[0] && !argv[0].startsWith("--") ? argv[0] : "health";
10958
10961
  const json = argv.includes("--json");
10959
10962
  const project = getArg(argv, "--project") ?? "support-smoke";
10963
+ if (command === "help" || argv.includes("--help") || argv.includes("-h")) {
10964
+ printHelp();
10965
+ return;
10966
+ }
10960
10967
  if (command === "health") {
10961
10968
  const result = await runHealth();
10962
- output(result, json);
10963
- process.exitCode = result.some((row) => !row.ok) ? 1 : 0;
10969
+ output(result, json, "health");
10970
+ process.exitCode = hasFailures(result) ? 1 : 0;
10964
10971
  return;
10965
10972
  }
10966
10973
  if (command === "test") {
10967
10974
  const result = await runTest(project);
10968
- output(result, json);
10969
- process.exitCode = result.some((row) => !row.ok) ? 1 : 0;
10975
+ output(result, json, "test");
10976
+ process.exitCode = hasFailures(result) ? 1 : 0;
10970
10977
  return;
10971
10978
  }
10972
10979
  console.error("Usage: exe-os support health|test [--project <name>] [--json]");
@@ -10978,34 +10985,40 @@ async function runHealth() {
10978
10985
  checks.push(checkLocalWrite());
10979
10986
  checks.push({
10980
10987
  check: "license_key_present",
10981
- ok: Boolean(loadLicense()),
10982
- detail: loadLicense() ? "license.key found" : "missing ~/.exe-os/license.key; run exe-os setup or exe-os cloud setup"
10988
+ level: loadLicense() ? "pass" : "fail",
10989
+ detail: loadLicense() ? "license.key found" : "missing ~/.exe-os/license.key; run exe-os setup or exe-os cloud setup",
10990
+ next: loadLicense() ? void 0 : "Run `exe-os setup` or ask AskExe for the customer license key."
10983
10991
  });
10984
10992
  checks.push({
10985
10993
  check: "license_token_cached",
10986
- ok: Boolean(readCachedLicenseToken()),
10987
- detail: readCachedLicenseToken() ? "cached license token found" : "no cached token yet; support can still use license.key"
10994
+ level: readCachedLicenseToken() ? "pass" : "warn",
10995
+ detail: readCachedLicenseToken() ? "cached license token found" : "no cached token yet; support can still use license.key",
10996
+ next: readCachedLicenseToken() ? void 0 : "This is OK if license.key exists. It refreshes after cloud/license validation."
10988
10997
  });
10989
10998
  try {
10990
10999
  const res = await fetch(endpoints.healthEndpoint, { method: "GET", signal: AbortSignal.timeout(1e4) });
10991
11000
  const body = await safeJson2(res);
10992
11001
  checks.push({
10993
11002
  check: "support_health_endpoint",
10994
- ok: res.ok && body?.status !== "down",
10995
- detail: `${res.status} ${body?.status ?? res.statusText}`
11003
+ level: res.ok && body?.status !== "down" ? "pass" : "fail",
11004
+ detail: `${res.status} ${body?.status ?? res.statusText}`,
11005
+ next: res.ok ? void 0 : "Check internet access, DNS, or AskExe support status."
10996
11006
  });
10997
11007
  for (const remote of body?.checks ?? []) {
11008
+ const name = remote.name ?? "unknown";
10998
11009
  checks.push({
10999
- check: `server_${remote.name ?? "unknown"}`,
11000
- ok: remote.ok === true,
11001
- detail: remote.detail ?? (remote.ok ? "ok" : "failed")
11010
+ check: `server_${name}`,
11011
+ level: remote.ok === true ? "pass" : name === "admin_inbox_configured" ? "warn" : "fail",
11012
+ detail: remote.detail ?? (remote.ok ? "ok" : "failed"),
11013
+ next: remote.ok ? void 0 : "AskExe must fix this server-side."
11002
11014
  });
11003
11015
  }
11004
11016
  } catch (err) {
11005
11017
  checks.push({
11006
11018
  check: "support_health_endpoint",
11007
- ok: false,
11008
- detail: err instanceof Error ? err.message : String(err)
11019
+ level: "fail",
11020
+ detail: err instanceof Error ? err.message : String(err),
11021
+ next: "Check internet access, then run `exe-os support health` again."
11009
11022
  });
11010
11023
  }
11011
11024
  return checks;
@@ -11018,9 +11031,14 @@ async function runTest(project) {
11018
11031
  const id = randomUUID4();
11019
11032
  const version = readPackageVersion();
11020
11033
  const reportPath = writeLocalTestReport(id, project, version);
11021
- checks.push({ check: "local_report_file", ok: true, detail: reportPath });
11034
+ checks.push({ check: "local_report_file", level: "pass", detail: reportPath });
11022
11035
  if (!licenseKey && !licenseToken) {
11023
- checks.push({ check: "upstream_post", ok: false, detail: "missing license key/token" });
11036
+ checks.push({
11037
+ check: "upstream_post",
11038
+ level: "fail",
11039
+ detail: "not sent because this device has no license key/token",
11040
+ next: "Run `exe-os setup` or ask AskExe to provision this customer device."
11041
+ });
11024
11042
  return checks;
11025
11043
  }
11026
11044
  const payload = {
@@ -11053,14 +11071,20 @@ async function runTest(project) {
11053
11071
  const data = await safeJson2(res);
11054
11072
  checks.push({
11055
11073
  check: "upstream_post",
11056
- ok: res.ok,
11057
- detail: res.ok ? `sent id=${String(data?.id ?? id)}` : `${res.status} ${JSON.stringify(data)}`
11074
+ level: res.ok ? "pass" : "fail",
11075
+ detail: res.ok ? `sent id=${String(data?.id ?? id)}` : summarizeHttpFailure(res.status, data),
11076
+ next: res.ok ? void 0 : nextForPostFailure(res.status)
11058
11077
  });
11059
11078
  if (res.ok) {
11060
11079
  checks.push(await maybeCloseAdmin(String(data?.id ?? id), endpoints.adminEndpoint, version));
11061
11080
  }
11062
11081
  } catch (err) {
11063
- checks.push({ check: "upstream_post", ok: false, detail: err instanceof Error ? err.message : String(err) });
11082
+ checks.push({
11083
+ check: "upstream_post",
11084
+ level: "fail",
11085
+ detail: err instanceof Error ? err.message : String(err),
11086
+ next: "Check internet access, then run `exe-os support test` again."
11087
+ });
11064
11088
  }
11065
11089
  return checks;
11066
11090
  }
@@ -11078,9 +11102,14 @@ function checkLocalWrite() {
11078
11102
  mkdirSync13(dir, { recursive: true, mode: 448 });
11079
11103
  writeFileSync13(testPath, "ok\n", { mode: 384 });
11080
11104
  unlinkSync7(testPath);
11081
- return { check: "local_bug_report_dir_writable", ok: true, detail: dir };
11105
+ return { check: "local_bug_report_dir_writable", level: "pass", detail: dir };
11082
11106
  } catch (err) {
11083
- return { check: "local_bug_report_dir_writable", ok: false, detail: err instanceof Error ? err.message : String(err) };
11107
+ return {
11108
+ check: "local_bug_report_dir_writable",
11109
+ level: "fail",
11110
+ detail: err instanceof Error ? err.message : String(err),
11111
+ next: "Fix permissions on ~/.exe-os or rerun setup on a writable user account."
11112
+ };
11084
11113
  }
11085
11114
  }
11086
11115
  function writeLocalTestReport(id, project, version) {
@@ -11100,7 +11129,7 @@ Synthetic smoke test from \`exe-os support test\`. Safe to close.
11100
11129
  async function maybeCloseAdmin(id, adminEndpoint, version) {
11101
11130
  const token = process.env.ASKEXE_SUPPORT_ADMIN_TOKEN ?? process.env.EXE_SUPPORT_ADMIN_TOKEN;
11102
11131
  if (!token) {
11103
- return { check: "askexe_admin_autoclose", ok: true, detail: "skipped; admin token is AskExe-only" };
11132
+ return { check: "askexe_admin_autoclose", level: "warn", detail: "skipped; admin token is AskExe-only" };
11104
11133
  }
11105
11134
  try {
11106
11135
  const res = await fetch(`${adminEndpoint}/${encodeURIComponent(id)}`, {
@@ -11113,9 +11142,19 @@ async function maybeCloseAdmin(id, adminEndpoint, version) {
11113
11142
  }),
11114
11143
  signal: AbortSignal.timeout(1e4)
11115
11144
  });
11116
- return { check: "askexe_admin_autoclose", ok: res.ok, detail: res.ok ? "closed" : `${res.status} ${await res.text()}` };
11145
+ return {
11146
+ check: "askexe_admin_autoclose",
11147
+ level: res.ok ? "pass" : "warn",
11148
+ detail: res.ok ? "closed" : `${res.status} ${await res.text()}`,
11149
+ next: res.ok ? void 0 : "Report was sent; AskExe can close the smoke report manually."
11150
+ };
11117
11151
  } catch (err) {
11118
- return { check: "askexe_admin_autoclose", ok: false, detail: err instanceof Error ? err.message : String(err) };
11152
+ return {
11153
+ check: "askexe_admin_autoclose",
11154
+ level: "warn",
11155
+ detail: err instanceof Error ? err.message : String(err),
11156
+ next: "Report was sent; AskExe can close the smoke report manually."
11157
+ };
11119
11158
  }
11120
11159
  }
11121
11160
  function readPackageVersion() {
@@ -11145,14 +11184,54 @@ function getArg(argv, name) {
11145
11184
  const found = argv.find((arg) => arg.startsWith(prefix));
11146
11185
  return found?.slice(prefix.length);
11147
11186
  }
11148
- function output(rows, json) {
11187
+ function hasFailures(rows) {
11188
+ return rows.some((row) => row.level === "fail");
11189
+ }
11190
+ function summarizeHttpFailure(status, data) {
11191
+ const error = data?.error;
11192
+ return `${status} ${error?.message ?? JSON.stringify(data)}`;
11193
+ }
11194
+ function nextForPostFailure(status) {
11195
+ if (status === 401) return "License credentials were not sent. Run `exe-os support health` and check license_key_present.";
11196
+ if (status === 403) return "License is valid locally but not accepted by support intake. AskExe must check server-side license provisioning.";
11197
+ if (status >= 500) return "AskExe support intake is unhealthy server-side. Try again shortly and report the local file path.";
11198
+ return "Run `exe-os support health`; if it passes, send this output to AskExe.";
11199
+ }
11200
+ function printHelp() {
11201
+ console.log(`
11202
+ exe-os support
11203
+
11204
+ Customer-safe diagnostics for AskExe bug-report intake.
11205
+
11206
+ Commands:
11207
+ exe-os support health Check local setup + AskExe support server health
11208
+ exe-os support test --project hygo Send a safe smoke report end-to-end
11209
+
11210
+ What success means:
11211
+ health = this device looks ready
11212
+ test = AskExe received a real report from this device
11213
+ `);
11214
+ }
11215
+ function output(rows, json, command) {
11149
11216
  if (json) {
11150
- console.log(JSON.stringify({ ok: rows.every((row) => row.ok), checks: rows }, null, 2));
11217
+ console.log(JSON.stringify({ ok: !hasFailures(rows), checks: rows }, null, 2));
11151
11218
  return;
11152
11219
  }
11153
- console.log("\nexe-os support diagnostics\n");
11220
+ console.log(`
11221
+ exe-os support ${command}
11222
+ `);
11154
11223
  for (const row of rows) {
11155
- console.log(`${row.ok ? "\u2705" : "\u274C"} ${row.check}: ${row.detail}`);
11224
+ const icon = row.level === "pass" ? "\u2705" : row.level === "warn" ? "\u26A0\uFE0F " : "\u274C";
11225
+ console.log(`${icon} ${row.check}: ${row.detail}`);
11226
+ if (row.next) console.log(` \u2192 ${row.next}`);
11227
+ }
11228
+ console.log("");
11229
+ if (hasFailures(rows)) {
11230
+ console.log("Result: not ready. Fix the failed item(s), then rerun this command.");
11231
+ } else if (rows.some((row) => row.level === "warn")) {
11232
+ console.log("Result: ready with warnings. Bug reports can be sent; warnings are informational unless AskExe asked for stricter validation.");
11233
+ } else {
11234
+ console.log(command === "test" ? "Result: ready. AskExe received the test report." : "Result: ready. Run `exe-os support test --project <customer>` for an end-to-end send test.");
11156
11235
  }
11157
11236
  console.log("");
11158
11237
  }
@@ -20172,7 +20251,7 @@ function parseArgs4(args2) {
20172
20251
  else if (arg === "--allow-breaking") opts.allowedBreakingChangeIds.push(...next().split(",").map((s) => s.trim()).filter(Boolean));
20173
20252
  else if (arg.startsWith("--allow-breaking=")) opts.allowedBreakingChangeIds.push(...arg.split("=")[1].split(",").map((s) => s.trim()).filter(Boolean));
20174
20253
  else if (arg === "--help" || arg === "-h") {
20175
- printHelp();
20254
+ printHelp2();
20176
20255
  process.exit(0);
20177
20256
  } else {
20178
20257
  throw new Error(`Unknown option: ${arg}`);
@@ -20180,7 +20259,7 @@ function parseArgs4(args2) {
20180
20259
  }
20181
20260
  return opts;
20182
20261
  }
20183
- function printHelp() {
20262
+ function printHelp2() {
20184
20263
  console.log(`exe-os stack-update \u2014 update a self-hosted Exe OS stack from a pinned manifest
20185
20264
 
20186
20265
  Usage:
@@ -20450,7 +20529,7 @@ var registry_proxy_exports = {};
20450
20529
  __export(registry_proxy_exports, {
20451
20530
  main: () => main8
20452
20531
  });
20453
- function printHelp2() {
20532
+ function printHelp3() {
20454
20533
  console.log(`exe-os registry-proxy \u2014 authenticated pull-through proxy for AskExe customer images
20455
20534
 
20456
20535
  Environment:
@@ -20469,7 +20548,7 @@ Docker image shape for clients:
20469
20548
  }
20470
20549
  async function main8(args2 = process.argv.slice(2)) {
20471
20550
  if (args2.includes("--help") || args2.includes("-h")) {
20472
- printHelp2();
20551
+ printHelp3();
20473
20552
  return;
20474
20553
  }
20475
20554
  await runRegistryProxy(registryProxyOptionsFromEnv());
@@ -153,9 +153,13 @@ test("Support intake \u2014 customer CLI smoke test is routed", () => {
153
153
  const cli = readSrc("src/bin/cli.ts");
154
154
  const support = readSrc("src/bin/exe-support.ts");
155
155
  const tsup = readSrc("tsup.config.ts");
156
+ const mcpTools = readSrc("src/mcp/tools/support.ts");
157
+ const registry = readSrc("src/mcp/register-tools.ts");
156
158
  if (!cli.includes('args[0] === "support"')) return "exe-os support route missing";
157
159
  if (!support.includes("support health") || !support.includes("support test")) return "support CLI missing health/test commands";
158
160
  if (!tsup.includes('"bin/exe-support"')) return "exe-support missing from build entries";
161
+ if (!mcpTools.includes("support_health") || !mcpTools.includes("support_test")) return "support MCP tools missing";
162
+ if (!registry.includes("registerSupportTools")) return "support MCP tools not registered";
159
163
  return true;
160
164
  });
161
165
  test("Support intake \u2014 API health route and cloud-sync license fallback exist", () => {
@@ -1375,7 +1375,7 @@ var PLATFORM_PROCEDURES = [
1375
1375
  title: "Customer patch triage \u2014 upstream bug vs customization",
1376
1376
  domain: "support",
1377
1377
  priority: "p0",
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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
1379
1379
  },
1380
1380
  // --- Operations ---
1381
1381
  {
@@ -1457,7 +1457,7 @@ var PLATFORM_PROCEDURES = [
1457
1457
  title: "MCP tools \u2014 identity, behavior, and decisions",
1458
1458
  domain: "tool-use",
1459
1459
  priority: "p1",
1460
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
1460
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
1461
1461
  },
1462
1462
  {
1463
1463
  title: "MCP tools \u2014 communication and messaging",
@@ -3512,7 +3512,7 @@ var init_platform_procedures = __esm({
3512
3512
  title: "Customer patch triage \u2014 upstream bug vs customization",
3513
3513
  domain: "support",
3514
3514
  priority: "p0",
3515
- 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. If upstream delivery fails, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
3515
+ 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. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. 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."
3516
3516
  },
3517
3517
  // --- Operations ---
3518
3518
  {
@@ -3594,7 +3594,7 @@ var init_platform_procedures = __esm({
3594
3594
  title: "MCP tools \u2014 identity, behavior, and decisions",
3595
3595
  domain: "tool-use",
3596
3596
  priority: "p1",
3597
- content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
3597
+ content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. support_health: check local support readiness and AskExe support server health without filing a report. support_test: file a safe end-to-end smoke report. Customers only get report/test access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, call support_test first; only fall back to the terminal command `exe-os support test` when MCP is disconnected."
3598
3598
  },
3599
3599
  {
3600
3600
  title: "MCP tools \u2014 communication and messaging",