bosun 0.26.3 → 0.26.5

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 (2) hide show
  1. package/.env.example +65 -65
  2. package/package.json +3 -2
package/.env.example CHANGED
@@ -1,6 +1,6 @@
1
- # ─── OpenFleet — Environment Configuration ───────────────────────────────
1
+ # ─── Bosun — Environment Configuration ───────────────────────────────
2
2
  # Copy this file to .env and fill in your values.
3
- # Or run: openfleet --setup
3
+ # Or run: bosun --setup
4
4
  # All variables are optional unless marked [REQUIRED].
5
5
  # Boolean flags use true/false (preferred). Legacy 1/0 is still accepted.
6
6
  # Profile guidance:
@@ -31,7 +31,7 @@ TASK_CLAIM_OWNER_STALE_TTL_MS=600000
31
31
 
32
32
  # ─── Telegram Bot ─────────────────────────────────────────────────────────────
33
33
  # Create a bot via @BotFather on Telegram, then paste the token here.
34
- # Run `openfleet-chat-id` to discover your chat ID.
34
+ # Run `bosun-chat-id` to discover your chat ID.
35
35
  TELEGRAM_BOT_TOKEN=
36
36
  TELEGRAM_CHAT_ID=
37
37
  # Optional additional allow-list entries (comma-separated chat IDs or user IDs).
@@ -106,10 +106,10 @@ TELEGRAM_MINIAPP_ENABLED=false
106
106
  # TELEGRAM_UI_TUNNEL=auto
107
107
 
108
108
  # ─── Telegram Sentinel (independent watchdog) ──────────────────────────────
109
- # Keep Telegram command availability even when openfleet is down.
109
+ # Keep Telegram command availability even when bosun is down.
110
110
  # Sentinel can auto-restart monitor, detect crash loops, and run repair-agent.
111
- # Auto-start sentinel whenever openfleet starts (default: disabled)
112
- # OPENFLEET_SENTINEL_AUTO_START=true
111
+ # Auto-start sentinel whenever bosun starts (default: disabled)
112
+ # BOSUN_SENTINEL_AUTO_START=true
113
113
  # Auto-restart monitor when sentinel detects monitor down/crash (default: 1)
114
114
  # SENTINEL_AUTO_RESTART_MONITOR=true
115
115
  # Crash-loop threshold within rolling window (default: 3)
@@ -148,7 +148,7 @@ TELEGRAM_MINIAPP_ENABLED=false
148
148
  # TELEGRAM_IMMEDIATE_PRIORITY=1
149
149
 
150
150
  # ─── Presence & Multi-Instance Coordination ──────────────────────────────────
151
- # Presence heartbeat allows discovering multiple openfleet instances.
151
+ # Presence heartbeat allows discovering multiple bosun instances.
152
152
  # Heartbeat interval in seconds (default: 60)
153
153
  # TELEGRAM_PRESENCE_INTERVAL_SEC=60
154
154
  # Consider instances offline after this many seconds (default: 180)
@@ -174,7 +174,7 @@ TELEGRAM_MINIAPP_ENABLED=false
174
174
  # Optional WhatsApp channel for receiving commands and notifications.
175
175
  # Uses @whiskeysockets/baileys for WhatsApp Web multi-device API.
176
176
  # Install baileys: npm install @whiskeysockets/baileys qrcode-terminal
177
- # Then authenticate: openfleet --whatsapp-auth
177
+ # Then authenticate: bosun --whatsapp-auth
178
178
  # Enable WhatsApp channel (default: disabled)
179
179
  # WHATSAPP_ENABLED=false
180
180
  # Restrict to a specific chat JID (recommended for security)
@@ -217,7 +217,7 @@ TELEGRAM_MINIAPP_ENABLED=false
217
217
  # Define AI executors that work on tasks.
218
218
  # Format: EXECUTOR_TYPE:VARIANT:WEIGHT,EXECUTOR_TYPE:VARIANT:WEIGHT
219
219
  # Example: COPILOT:CLAUDE_OPUS_4_6:50,CODEX:DEFAULT:50
220
- # For full config, use openfleet.config.json instead.
220
+ # For full config, use bosun.config.json instead.
221
221
  # EXECUTORS=CODEX:DEFAULT:100
222
222
 
223
223
  # Task distribution mode: "weighted" | "round-robin" | "primary-only"
@@ -297,7 +297,7 @@ TELEGRAM_MINIAPP_ENABLED=false
297
297
  # GITHUB_PROJECT_MODE=issues
298
298
  # GitHub Project owner/title/number used when GITHUB_PROJECT_MODE=kanban
299
299
  # GITHUB_PROJECT_OWNER=your-org
300
- # GITHUB_PROJECT_TITLE=OpenFleet
300
+ # GITHUB_PROJECT_TITLE=Bosun
301
301
  # GITHUB_PROJECT_NUMBER=3
302
302
  # GitHub Project v2 status field name mapping (customize to match your board columns)
303
303
  # GITHUB_PROJECT_STATUS_TODO=Todo
@@ -305,7 +305,7 @@ TELEGRAM_MINIAPP_ENABLED=false
305
305
  # GITHUB_PROJECT_STATUS_INREVIEW=In Review
306
306
  # GITHUB_PROJECT_STATUS_DONE=Done
307
307
  # GITHUB_PROJECT_STATUS_CANCELLED=Cancelled
308
- # Auto-sync task status to project board when updating via openfleet (default: true)
308
+ # Auto-sync task status to project board when updating via bosun (default: true)
309
309
  # GITHUB_PROJECT_AUTO_SYNC=true
310
310
  # GitHub webhook endpoint (served by ui-server.mjs) for project item updates
311
311
  # GITHUB_PROJECT_WEBHOOK_PATH=/api/webhooks/github/project-sync
@@ -321,10 +321,10 @@ TELEGRAM_MINIAPP_ENABLED=false
321
321
  # GITHUB_DEFAULT_ASSIGNEE=
322
322
  # Auto-assign task creator/login when creating issues (default: true)
323
323
  # GITHUB_AUTO_ASSIGN_CREATOR=true
324
- # Codex task scoping label policy (only matching labels are picked by openfleet)
325
- # OPENFLEET_TASK_LABEL=openfleet
326
- # OPENFLEET_TASK_LABELS=openfleet,codex-mointor
327
- # OPENFLEET_ENFORCE_TASK_LABEL=true
324
+ # Codex task scoping label policy (only matching labels are picked by bosun)
325
+ # BOSUN_TASK_LABEL=bosun
326
+ # BOSUN_TASK_LABELS=bosun,codex-mointor
327
+ # BOSUN_ENFORCE_TASK_LABEL=true
328
328
  # Optional issue fetch cap per sync/poll cycle (default: 1000)
329
329
  # GITHUB_ISSUES_LIST_LIMIT=1000
330
330
 
@@ -341,7 +341,7 @@ TELEGRAM_MINIAPP_ENABLED=false
341
341
  # JIRA_SUBTASK_PARENT_KEY=ENG-1
342
342
  # Default assignee account ID for new Jira tasks
343
343
  # JIRA_DEFAULT_ASSIGNEE=5b10a2844c20165700ede21g
344
- # Jira workflow status mapping (openfleet status -> Jira status name)
344
+ # Jira workflow status mapping (bosun status -> Jira status name)
345
345
  # JIRA_STATUS_TODO=To Do
346
346
  # JIRA_STATUS_INPROGRESS=In Progress
347
347
  # JIRA_STATUS_INREVIEW=In Review
@@ -353,7 +353,7 @@ TELEGRAM_MINIAPP_ENABLED=false
353
353
  # JIRA_LABEL_STALE=codex:stale
354
354
  # JIRA_LABEL_IGNORE=codex:ignore
355
355
  # Jira task scoping labels (only tasks with these labels are picked up)
356
- # JIRA_TASK_LABELS=openfleet,codex-mointor
356
+ # JIRA_TASK_LABELS=bosun,codex-mointor
357
357
  # JIRA_ENFORCE_TASK_LABEL=true
358
358
  # Jira issue fetch cap per sync/poll cycle (default: 250)
359
359
  # JIRA_ISSUES_LIST_LIMIT=250
@@ -418,21 +418,21 @@ TELEGRAM_MINIAPP_ENABLED=false
418
418
  # COPILOT_ADDITIONAL_MCP_CONFIG=
419
419
 
420
420
  # ─── Daemon Mode ──────────────────────────────────────────────────────────────
421
- # Run openfleet as a background daemon:
422
- # openfleet --daemon Start detached daemon
423
- # openfleet --stop-daemon Stop running daemon
424
- # openfleet --daemon-status Check if daemon is running
421
+ # Run bosun as a background daemon:
422
+ # bosun --daemon Start detached daemon
423
+ # bosun --stop-daemon Stop running daemon
424
+ # bosun --daemon-status Check if daemon is running
425
425
  # Optional: keep sentinel always-on alongside monitor
426
- # openfleet --daemon --sentinel
427
- # PID file: .cache/openfleet.pid
426
+ # bosun --daemon --sentinel
427
+ # PID file: .cache/bosun.pid
428
428
  # Logs: logs/daemon.log
429
429
  # Daemon crash supervision (monitor child):
430
- # OPENFLEET_DAEMON_RESTART_DELAY_MS=5000
431
- # OPENFLEET_DAEMON_MAX_RESTARTS=0 # 0 = unlimited
430
+ # BOSUN_DAEMON_RESTART_DELAY_MS=5000
431
+ # BOSUN_DAEMON_MAX_RESTARTS=0 # 0 = unlimited
432
432
  # Consider any crash within this window as an instant startup failure (default: 15000)
433
- # OPENFLEET_DAEMON_INSTANT_CRASH_WINDOW_MS=15000
433
+ # BOSUN_DAEMON_INSTANT_CRASH_WINDOW_MS=15000
434
434
  # Stop auto-restarts after this many instant failures in a row (default: 3)
435
- # OPENFLEET_DAEMON_MAX_INSTANT_RESTARTS=3
435
+ # BOSUN_DAEMON_MAX_INSTANT_RESTARTS=3
436
436
 
437
437
  # ─── Vibe-Kanban ──────────────────────────────────────────────────────────────
438
438
  # Base URL for the Vibe-Kanban API (default: http://127.0.0.1:54089)
@@ -467,9 +467,9 @@ VK_RECOVERY_PORT=54089
467
467
 
468
468
  # ─── Shared Workspace Registry ───────────────────────────────────────────────
469
469
  # Optional registry path for shared workspace leasing
470
- # VE_SHARED_WORKSPACE_REGISTRY=.cache/openfleet/shared-workspaces.json
470
+ # VE_SHARED_WORKSPACE_REGISTRY=.cache/bosun/shared-workspaces.json
471
471
  # Optional audit log path for shared workspace leasing
472
- # VE_SHARED_WORKSPACE_AUDIT_LOG=.cache/openfleet/shared-workspace-audit.jsonl
472
+ # VE_SHARED_WORKSPACE_AUDIT_LOG=.cache/bosun/shared-workspace-audit.jsonl
473
473
  # Default lease TTL in minutes (Telegram claims); can override with seconds below
474
474
  # VE_WORKSPACE_LEASE_TTL_MIN=120
475
475
  # Default lease TTL in seconds (converted to minutes if set)
@@ -491,8 +491,8 @@ VK_RECOVERY_PORT=54089
491
491
  # GH_REPO=virtengine
492
492
  # Target branch for PR checks/merge (default: origin/main)
493
493
  # VK_TARGET_BRANCH=origin/main
494
- # Default upstream/base branch for openfleet tasks (overrides VK_TARGET_BRANCH)
495
- # OPENFLEET_TASK_UPSTREAM=origin/ve/openfleet-generic
494
+ # Default upstream/base branch for bosun tasks (overrides VK_TARGET_BRANCH)
495
+ # BOSUN_TASK_UPSTREAM=origin/ve/bosun-generic
496
496
 
497
497
  # ─── Codex / AI Provider ─────────────────────────────────────────────────────
498
498
  # The Codex SDK uses OpenAI-compatible configuration that has been setup in ~/.codex/config.toml -
@@ -540,50 +540,50 @@ VK_RECOVERY_PORT=54089
540
540
  # Setup can scaffold shared hook configs in:
541
541
  # .codex/hooks.json
542
542
  # .claude/settings.local.json
543
- # .github/hooks/openfleet.hooks.json
543
+ # .github/hooks/bosun.hooks.json
544
544
  #
545
545
  # Hook profile for setup/non-interactive runs:
546
546
  # strict | balanced | lightweight | none
547
- # OPENFLEET_HOOK_PROFILE=strict
547
+ # BOSUN_HOOK_PROFILE=strict
548
548
  #
549
549
  # Which agents should receive generated hook files (comma-separated):
550
550
  # codex,claude,copilot
551
- # OPENFLEET_HOOK_TARGETS=codex,claude,copilot
551
+ # BOSUN_HOOK_TARGETS=codex,claude,copilot
552
552
  #
553
553
  # Set to false to skip hook scaffolding during setup.
554
- # OPENFLEET_HOOKS_ENABLED=true
554
+ # BOSUN_HOOKS_ENABLED=true
555
555
  # Set to true to overwrite existing generated hook files.
556
- # OPENFLEET_HOOKS_OVERWRITE=false
556
+ # BOSUN_HOOKS_OVERWRITE=false
557
557
  # Optional overrides for generated bridge command tokens.
558
558
  # Defaults are portable across workstations:
559
- # node scripts/openfleet/agent-hook-bridge.mjs
560
- # OPENFLEET_HOOK_NODE_BIN=node
561
- # OPENFLEET_HOOK_BRIDGE_PATH=scripts/openfleet/agent-hook-bridge.mjs
559
+ # node scripts/bosun/agent-hook-bridge.mjs
560
+ # BOSUN_HOOK_NODE_BIN=node
561
+ # BOSUN_HOOK_BRIDGE_PATH=scripts/bosun/agent-hook-bridge.mjs
562
562
  #
563
563
  # Optional per-event command overrides (separate multiple commands with ';;').
564
564
  # Use value 'none' to disable that event in generated .codex/hooks.json.
565
- # OPENFLEET_HOOK_PREPUSH=go vet ./...;;go build ./...
566
- # OPENFLEET_HOOK_PRECOMMIT=gofmt -l .
567
- # OPENFLEET_HOOK_TASK_COMPLETE=echo \"task completed\"
568
- # OPENFLEET_HOOK_SESSION_START=echo \"session start\"
569
- # OPENFLEET_HOOK_SESSION_STOP=echo \"session stop\"
565
+ # BOSUN_HOOK_PREPUSH=go vet ./...;;go build ./...
566
+ # BOSUN_HOOK_PRECOMMIT=gofmt -l .
567
+ # BOSUN_HOOK_TASK_COMPLETE=echo \"task completed\"
568
+ # BOSUN_HOOK_SESSION_START=echo \"session start\"
569
+ # BOSUN_HOOK_SESSION_STOP=echo \"session stop\"
570
570
  #
571
- # Built-in hook behavior inside openfleet runtime:
571
+ # Built-in hook behavior inside bosun runtime:
572
572
  # force (default), auto, off
573
- # OPENFLEET_HOOKS_BUILTINS_MODE=force
574
- # OPENFLEET_HOOKS_DISABLE_PREPUSH=false
575
- # OPENFLEET_HOOKS_DISABLE_TASK_COMPLETE=false
576
- # OPENFLEET_HOOKS_DISABLE_HEALTH_CHECK=false
573
+ # BOSUN_HOOKS_BUILTINS_MODE=force
574
+ # BOSUN_HOOKS_DISABLE_PREPUSH=false
575
+ # BOSUN_HOOKS_DISABLE_TASK_COMPLETE=false
576
+ # BOSUN_HOOKS_DISABLE_HEALTH_CHECK=false
577
577
 
578
578
  # Force hooks to fire even for non-managed sessions (debug only):
579
- # OPENFLEET_HOOKS_FORCE=false
579
+ # BOSUN_HOOKS_FORCE=false
580
580
 
581
- # VE_MANAGED is auto-set by openfleet at startup. Agent hook bridge
581
+ # VE_MANAGED is auto-set by bosun at startup. Agent hook bridge
582
582
  # scripts check for this and exit silently if not present, preventing
583
583
  # hooks from firing in standalone Copilot/Codex/Claude sessions.
584
584
 
585
585
  # ─── Devmode Monitor-Monitor (24/7 reliability guardian) ───────────────────
586
- # Prompt is injected directly from openfleet source (no .github/agents file required).
586
+ # Prompt is injected directly from bosun source (no .github/agents file required).
587
587
  # Enabled by default in devmode source checkouts. Set to false to disable.
588
588
  # DEVMODE_MONITOR_MONITOR_ENABLED=true
589
589
  # Poll interval for monitor-monitor runs (milliseconds). Default: 300000 (5 min)
@@ -746,9 +746,9 @@ COMPLEXITY_ROUTING_ENABLED=true
746
746
  # COMPLEXITY_ROUTING_COPILOT_HIGH_REASONING=high
747
747
 
748
748
  # ─── Shared Cloud Workspaces ────────────────────────────────────────────────
749
- # Registry file for shared workspace leasing (default: .cache/openfleet/shared-workspaces.json)
749
+ # Registry file for shared workspace leasing (default: .cache/bosun/shared-workspaces.json)
750
750
  # VE_SHARED_WORKSPACE_REGISTRY=
751
- # Audit log file for claim/release events (default: .cache/openfleet/shared-workspace-audit.jsonl)
751
+ # Audit log file for claim/release events (default: .cache/bosun/shared-workspace-audit.jsonl)
752
752
  # VE_SHARED_WORKSPACE_AUDIT_LOG=
753
753
 
754
754
  # ─── CI Sweep (Orchestrator) ─────────────────────────────────────────────────
@@ -788,7 +788,7 @@ COPILOT_CLOUD_DISABLED=true
788
788
 
789
789
  # ─── Git Identity (optional) ─────────────────────────────────────────────────
790
790
  # Override git author for automated commits
791
- # VE_GIT_AUTHOR_NAME=OpenFleet
791
+ # VE_GIT_AUTHOR_NAME=Bosun
792
792
  # VE_GIT_AUTHOR_EMAIL=bot@yoursite.com
793
793
 
794
794
  # ─── Task Planner ─────────────────────────────────────────────────────────────
@@ -811,16 +811,16 @@ COPILOT_CLOUD_DISABLED=true
811
811
  # GH_RECONCILE_MERGED_LOOKBACK_HOURS=72
812
812
  # GH_RECONCILE_TRACKING_LABELS=tracking
813
813
 
814
- # ─── Prompt Overrides (.openfleet/agents) ────────────────────────────────
815
- # openfleet scaffolds generic prompt templates under:
816
- # .openfleet/agents/*.md
814
+ # ─── Prompt Overrides (.bosun/agents) ────────────────────────────────
815
+ # bosun scaffolds generic prompt templates under:
816
+ # .bosun/agents/*.md
817
817
  # Files in that folder are loaded automatically and are intended for per-project customization.
818
818
  # You can also override any prompt path explicitly with env vars:
819
- # OPENFLEET_PROMPT_PLANNER=.openfleet/agents/task-planner.md
820
- # OPENFLEET_PROMPT_MONITOR_MONITOR=.openfleet/agents/monitor-monitor.md
821
- # OPENFLEET_PROMPT_TASK_EXECUTOR=.openfleet/agents/task-executor.md
822
- # OPENFLEET_PROMPT_REVIEWER=.openfleet/agents/reviewer.md
823
- # OPENFLEET_PROMPT_SDK_CONFLICT_RESOLVER=.openfleet/agents/sdk-conflict-resolver.md
819
+ # BOSUN_PROMPT_PLANNER=.bosun/agents/task-planner.md
820
+ # BOSUN_PROMPT_MONITOR_MONITOR=.bosun/agents/monitor-monitor.md
821
+ # BOSUN_PROMPT_TASK_EXECUTOR=.bosun/agents/task-executor.md
822
+ # BOSUN_PROMPT_REVIEWER=.bosun/agents/reviewer.md
823
+ # BOSUN_PROMPT_SDK_CONFLICT_RESOLVER=.bosun/agents/sdk-conflict-resolver.md
824
824
 
825
825
  # ─── Dependabot / Bot PR Auto-Merge ───────────────────────────────────────────
826
826
  # Auto-merge Dependabot (and other bot) PRs after all CI checks pass.
@@ -863,8 +863,8 @@ COPILOT_CLOUD_DISABLED=true
863
863
  # MERGE_CONFLICT_RESOLUTION_TIMEOUT_MS=600000
864
864
 
865
865
  # ─── Advanced ─────────────────────────────────────────────────────────────────
866
- # Override openfleet config directory (where .env and config live)
867
- # OPENFLEET_DIR=/path/to/scripts/openfleet
866
+ # Override bosun config directory (where .env and config live)
867
+ # BOSUN_DIR=/path/to/scripts/bosun
868
868
  # Max orchestrator restarts (0 = unlimited)
869
869
  # MAX_RESTARTS=0
870
870
  # Restart delay in milliseconds
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "bosun",
3
- "version": "0.26.3",
3
+ "version": "0.26.5",
4
4
  "description": "AI-powered orchestrator supervisor — manages AI agent executors with failover, auto-restarts on failure, analyzes crashes with Codex SDK, creates PRs via Vibe-Kanban API, and sends Telegram notifications. Supports N executors with weighted distribution, multi-repo projects, and auto-setup.",
5
5
  "type": "module",
6
6
  "license": "Apache 2.0",
7
7
  "author": "VirtEngine <dev@virtengine.com>",
8
- "homepage": "https://github.com/virtengine/virtengine/tree/main/scripts/bosun",
8
+ "homepage": "https://github.com/virtengine/bosun",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/virtengine/virtengine.git",
@@ -86,6 +86,7 @@
86
86
  "pretest": "npm run syntax:check",
87
87
  "test": "vitest run --config vitest.config.mjs",
88
88
  "test:watch": "vitest",
89
+ "preinstall": "node preinstall.mjs",
89
90
  "postinstall": "node postinstall.mjs",
90
91
  "sentinel": "node telegram-sentinel.mjs",
91
92
  "sentinel:stop": "node -e \"import('./telegram-sentinel.mjs').then(m => m.stopSentinel())\"",