@polderlabs/bizar-omp 0.6.2 → 0.6.3
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.
- package/README.md +54 -0
- package/dist/cli/agents.d.ts +1 -0
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +11 -0
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/omb-commands.d.ts +30 -0
- package/dist/cli/omb-commands.d.ts.map +1 -0
- package/dist/cli/omb-commands.js +109 -0
- package/dist/cli/omb-commands.js.map +1 -0
- package/dist/cli/omb-daemon.d.ts +1 -0
- package/dist/cli/omb-daemon.d.ts.map +1 -1
- package/dist/cli/omb-daemon.js +15 -1
- package/dist/cli/omb-daemon.js.map +1 -1
- package/dist/cli/omb-dashboard.d.ts +1 -1
- package/dist/cli/omb-dashboard.d.ts.map +1 -1
- package/dist/cli/omb-dashboard.js +2 -1
- package/dist/cli/omb-dashboard.js.map +1 -1
- package/dist/cli/omb-runtime.d.ts +42 -0
- package/dist/cli/omb-runtime.d.ts.map +1 -0
- package/dist/cli/omb-runtime.js +507 -0
- package/dist/cli/omb-runtime.js.map +1 -0
- package/dist/cli/omb-tray.d.ts +3 -0
- package/dist/cli/omb-tray.d.ts.map +1 -0
- package/dist/cli/omb-tray.js +44 -0
- package/dist/cli/omb-tray.js.map +1 -0
- package/dist/cli/omb.js +8 -33
- package/dist/cli/omb.js.map +1 -1
- package/dist/omp/daemon.d.ts +1 -0
- package/dist/omp/daemon.d.ts.map +1 -1
- package/dist/omp/daemon.js +1 -1
- package/dist/omp/daemon.js.map +1 -1
- package/dist/omp/omb-sessions.d.ts +24 -0
- package/dist/omp/omb-sessions.d.ts.map +1 -1
- package/dist/omp/omb-sessions.js +30 -12
- package/dist/omp/omb-sessions.js.map +1 -1
- package/dist/omp/tmux.d.ts +18 -0
- package/dist/omp/tmux.d.ts.map +1 -1
- package/dist/omp/tmux.js +131 -4
- package/dist/omp/tmux.js.map +1 -1
- package/dist/omp/tray.d.ts +2 -0
- package/dist/omp/tray.d.ts.map +1 -1
- package/dist/omp/tray.js +30 -4
- package/dist/omp/tray.js.map +1 -1
- package/dist/src/cli/agents-ink.d.ts +25 -0
- package/dist/src/cli/agents-ink.js +517 -0
- package/dist/src/cli/agents-ink.js.map +1 -0
- package/dist/src/cli/agents.d.ts +14 -0
- package/dist/src/cli/agents.js +197 -0
- package/dist/src/cli/agents.js.map +1 -0
- package/dist/src/cli/directory-selector.d.ts +60 -0
- package/dist/src/cli/directory-selector.js +208 -0
- package/dist/src/cli/directory-selector.js.map +1 -0
- package/dist/src/cli/doctor.d.ts +41 -0
- package/dist/src/cli/doctor.js +31 -0
- package/dist/src/cli/doctor.js.map +1 -0
- package/dist/src/cli/install.d.ts +129 -0
- package/dist/src/cli/install.js +164 -0
- package/dist/src/cli/install.js.map +1 -0
- package/dist/src/cli/main.d.ts +2 -0
- package/dist/src/cli/main.js +117 -0
- package/dist/src/cli/main.js.map +1 -0
- package/dist/src/cli/migrate.d.ts +18 -0
- package/dist/src/cli/migrate.js +14 -0
- package/dist/src/cli/migrate.js.map +1 -0
- package/dist/src/cli/omb-commands.d.ts +29 -0
- package/dist/src/cli/omb-commands.js +107 -0
- package/dist/src/cli/omb-commands.js.map +1 -0
- package/dist/src/cli/omb-daemon.d.ts +2 -0
- package/dist/src/cli/omb-daemon.js +135 -0
- package/dist/src/cli/omb-daemon.js.map +1 -0
- package/dist/src/cli/omb-dashboard.d.ts +12 -0
- package/dist/src/cli/omb-dashboard.js +113 -0
- package/dist/src/cli/omb-dashboard.js.map +1 -0
- package/dist/src/cli/omb-invocation.d.ts +8 -0
- package/dist/src/cli/omb-invocation.js +41 -0
- package/dist/src/cli/omb-invocation.js.map +1 -0
- package/dist/src/cli/omb-runtime.d.ts +41 -0
- package/dist/src/cli/omb-runtime.js +371 -0
- package/dist/src/cli/omb-runtime.js.map +1 -0
- package/dist/src/cli/omb-tray.d.ts +2 -0
- package/dist/src/cli/omb-tray.js +38 -0
- package/dist/src/cli/omb-tray.js.map +1 -0
- package/dist/src/cli/omb.d.ts +2 -0
- package/dist/src/cli/omb.js +31 -0
- package/dist/src/cli/omb.js.map +1 -0
- package/dist/src/cli/omp-theme.d.ts +17 -0
- package/dist/src/cli/omp-theme.js +22 -0
- package/dist/src/cli/omp-theme.js.map +1 -0
- package/dist/src/cli/process.d.ts +6 -0
- package/dist/src/cli/process.js +54 -0
- package/dist/src/cli/process.js.map +1 -0
- package/dist/src/cli/run.d.ts +2 -0
- package/dist/src/cli/run.js +5 -0
- package/dist/src/cli/run.js.map +1 -0
- package/dist/src/cli/setup-ui.d.ts +37 -0
- package/dist/src/cli/setup-ui.js +90 -0
- package/dist/src/cli/setup-ui.js.map +1 -0
- package/dist/src/core/acceptance.d.ts +32 -0
- package/dist/src/core/acceptance.js +87 -0
- package/dist/src/core/acceptance.js.map +1 -0
- package/dist/src/core/errors.d.ts +20 -0
- package/dist/src/core/errors.js +30 -0
- package/dist/src/core/errors.js.map +1 -0
- package/dist/src/core/evidence.d.ts +10 -0
- package/dist/src/core/evidence.js +35 -0
- package/dist/src/core/evidence.js.map +1 -0
- package/dist/src/core/policies.d.ts +10 -0
- package/dist/src/core/policies.js +60 -0
- package/dist/src/core/policies.js.map +1 -0
- package/dist/src/core/recovery.d.ts +6 -0
- package/dist/src/core/recovery.js +56 -0
- package/dist/src/core/recovery.js.map +1 -0
- package/dist/src/core/transitions.d.ts +13 -0
- package/dist/src/core/transitions.js +59 -0
- package/dist/src/core/transitions.js.map +1 -0
- package/dist/src/core/types.d.ts +256 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/extension.d.ts +60 -0
- package/dist/src/extension.js +538 -0
- package/dist/src/extension.js.map +1 -0
- package/dist/src/index.d.ts +29 -0
- package/dist/src/index.js +30 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/omp/autonomous-settings.d.ts +14 -0
- package/dist/src/omp/autonomous-settings.js +65 -0
- package/dist/src/omp/autonomous-settings.js.map +1 -0
- package/dist/src/omp/capabilities.d.ts +23 -0
- package/dist/src/omp/capabilities.js +6 -0
- package/dist/src/omp/capabilities.js.map +1 -0
- package/dist/src/omp/compatibility.d.ts +30 -0
- package/dist/src/omp/compatibility.js +34 -0
- package/dist/src/omp/compatibility.js.map +1 -0
- package/dist/src/omp/completion.d.ts +7 -0
- package/dist/src/omp/completion.js +10 -0
- package/dist/src/omp/completion.js.map +1 -0
- package/dist/src/omp/config.d.ts +10 -0
- package/dist/src/omp/config.js +14 -0
- package/dist/src/omp/config.js.map +1 -0
- package/dist/src/omp/context.d.ts +15 -0
- package/dist/src/omp/context.js +3 -0
- package/dist/src/omp/context.js.map +1 -0
- package/dist/src/omp/daemon-service.d.ts +25 -0
- package/dist/src/omp/daemon-service.js +483 -0
- package/dist/src/omp/daemon-service.js.map +1 -0
- package/dist/src/omp/daemon.d.ts +48 -0
- package/dist/src/omp/daemon.js +194 -0
- package/dist/src/omp/daemon.js.map +1 -0
- package/dist/src/omp/dashboard-html.d.ts +3 -0
- package/dist/src/omp/dashboard-html.js +419 -0
- package/dist/src/omp/dashboard-html.js.map +1 -0
- package/dist/src/omp/dispatch-admission.d.ts +2 -0
- package/dist/src/omp/dispatch-admission.js +12 -0
- package/dist/src/omp/dispatch-admission.js.map +1 -0
- package/dist/src/omp/integration-recovery.d.ts +10 -0
- package/dist/src/omp/integration-recovery.js +18 -0
- package/dist/src/omp/integration-recovery.js.map +1 -0
- package/dist/src/omp/isolation-policy.d.ts +14 -0
- package/dist/src/omp/isolation-policy.js +9 -0
- package/dist/src/omp/isolation-policy.js.map +1 -0
- package/dist/src/omp/lifecycle.d.ts +14 -0
- package/dist/src/omp/lifecycle.js +14 -0
- package/dist/src/omp/lifecycle.js.map +1 -0
- package/dist/src/omp/memory.d.ts +16 -0
- package/dist/src/omp/memory.js +4 -0
- package/dist/src/omp/memory.js.map +1 -0
- package/dist/src/omp/model-role-assignment.d.ts +296 -0
- package/dist/src/omp/model-role-assignment.js +559 -0
- package/dist/src/omp/model-role-assignment.js.map +1 -0
- package/dist/src/omp/model-roles.d.ts +19 -0
- package/dist/src/omp/model-roles.js +6 -0
- package/dist/src/omp/model-roles.js.map +1 -0
- package/dist/src/omp/omb-sessions.d.ts +122 -0
- package/dist/src/omp/omb-sessions.js +512 -0
- package/dist/src/omp/omb-sessions.js.map +1 -0
- package/dist/src/omp/omb-settings.d.ts +35 -0
- package/dist/src/omp/omb-settings.js +104 -0
- package/dist/src/omp/omb-settings.js.map +1 -0
- package/dist/src/omp/result-reconciliation.d.ts +2 -0
- package/dist/src/omp/result-reconciliation.js +9 -0
- package/dist/src/omp/result-reconciliation.js.map +1 -0
- package/dist/src/omp/rpc.d.ts +67 -0
- package/dist/src/omp/rpc.js +4 -0
- package/dist/src/omp/rpc.js.map +1 -0
- package/dist/src/omp/run-log.d.ts +25 -0
- package/dist/src/omp/run-log.js +24 -0
- package/dist/src/omp/run-log.js.map +1 -0
- package/dist/src/omp/session-activity.d.ts +70 -0
- package/dist/src/omp/session-activity.js +361 -0
- package/dist/src/omp/session-activity.js.map +1 -0
- package/dist/src/omp/session-controls.d.ts +17 -0
- package/dist/src/omp/session-controls.js +14 -0
- package/dist/src/omp/session-controls.js.map +1 -0
- package/dist/src/omp/tmux.d.ts +89 -0
- package/dist/src/omp/tmux.js +445 -0
- package/dist/src/omp/tmux.js.map +1 -0
- package/dist/src/omp/tray-icons.d.ts +5 -0
- package/dist/src/omp/tray-icons.js +78 -0
- package/dist/src/omp/tray-icons.js.map +1 -0
- package/dist/src/omp/tray.d.ts +23 -0
- package/dist/src/omp/tray.js +167 -0
- package/dist/src/omp/tray.js.map +1 -0
- package/dist/src/services/budget.d.ts +19 -0
- package/dist/src/services/budget.js +10 -0
- package/dist/src/services/budget.js.map +1 -0
- package/dist/src/services/candidate-local.d.ts +13 -0
- package/dist/src/services/candidate-local.js +15 -0
- package/dist/src/services/candidate-local.js.map +1 -0
- package/dist/src/services/candidates.d.ts +20 -0
- package/dist/src/services/candidates.js +100 -0
- package/dist/src/services/candidates.js.map +1 -0
- package/dist/src/services/evidence-bundle.d.ts +17 -0
- package/dist/src/services/evidence-bundle.js +21 -0
- package/dist/src/services/evidence-bundle.js.map +1 -0
- package/dist/src/services/inspector.d.ts +11 -0
- package/dist/src/services/inspector.js +6 -0
- package/dist/src/services/inspector.js.map +1 -0
- package/dist/src/services/lessons.d.ts +13 -0
- package/dist/src/services/lessons.js +11 -0
- package/dist/src/services/lessons.js.map +1 -0
- package/dist/src/services/projection.d.ts +21 -0
- package/dist/src/services/projection.js +10 -0
- package/dist/src/services/projection.js.map +1 -0
- package/dist/src/services/readiness.d.ts +4 -0
- package/dist/src/services/readiness.js +35 -0
- package/dist/src/services/readiness.js.map +1 -0
- package/dist/src/services/recipes.d.ts +15 -0
- package/dist/src/services/recipes.js +42 -0
- package/dist/src/services/recipes.js.map +1 -0
- package/dist/src/services/recovery.d.ts +19 -0
- package/dist/src/services/recovery.js +9 -0
- package/dist/src/services/recovery.js.map +1 -0
- package/dist/src/services/review.d.ts +15 -0
- package/dist/src/services/review.js +9 -0
- package/dist/src/services/review.js.map +1 -0
- package/dist/src/storage/journal-recovery.d.ts +10 -0
- package/dist/src/storage/journal-recovery.js +33 -0
- package/dist/src/storage/journal-recovery.js.map +1 -0
- package/dist/src/storage/journal.d.ts +12 -0
- package/dist/src/storage/journal.js +82 -0
- package/dist/src/storage/journal.js.map +1 -0
- package/dist/src/storage/migrations.d.ts +22 -0
- package/dist/src/storage/migrations.js +107 -0
- package/dist/src/storage/migrations.js.map +1 -0
- package/dist/src/storage/repository-identity.d.ts +11 -0
- package/dist/src/storage/repository-identity.js +67 -0
- package/dist/src/storage/repository-identity.js.map +1 -0
- package/dist/src/storage/resources.d.ts +66 -0
- package/dist/src/storage/resources.js +148 -0
- package/dist/src/storage/resources.js.map +1 -0
- package/dist/src/tools/evidence.d.ts +8 -0
- package/dist/src/tools/evidence.js +9 -0
- package/dist/src/tools/evidence.js.map +1 -0
- package/dist/src/tools/integrate.d.ts +13 -0
- package/dist/src/tools/integrate.js +90 -0
- package/dist/src/tools/integrate.js.map +1 -0
- package/dist/src/tools/result.d.ts +9 -0
- package/dist/src/tools/result.js +2 -0
- package/dist/src/tools/result.js.map +1 -0
- package/dist/src/tools/verify.d.ts +13 -0
- package/dist/src/tools/verify.js +61 -0
- package/dist/src/tools/verify.js.map +1 -0
- package/dist/src/tools/workflow.d.ts +8 -0
- package/dist/src/tools/workflow.js +65 -0
- package/dist/src/tools/workflow.js.map +1 -0
- package/dist/src/workflows/direct.d.ts +9 -0
- package/dist/src/workflows/direct.js +2 -0
- package/dist/src/workflows/direct.js.map +1 -0
- package/dist/src/workflows/implement.d.ts +2 -0
- package/dist/src/workflows/implement.js +4 -0
- package/dist/src/workflows/implement.js.map +1 -0
- package/dist/src/workflows/plan.d.ts +17 -0
- package/dist/src/workflows/plan.js +6 -0
- package/dist/src/workflows/plan.js.map +1 -0
- package/dist/src/workflows/research.d.ts +15 -0
- package/dist/src/workflows/research.js +2 -0
- package/dist/src/workflows/research.js.map +1 -0
- package/dist/src/workflows/review.d.ts +15 -0
- package/dist/src/workflows/review.js +2 -0
- package/dist/src/workflows/review.js.map +1 -0
- package/dist/src/workflows/verify.d.ts +9 -0
- package/dist/src/workflows/verify.js +2 -0
- package/dist/src/workflows/verify.js.map +1 -0
- package/dist/tests/acceptance.test.d.ts +1 -0
- package/dist/tests/acceptance.test.js +27 -0
- package/dist/tests/acceptance.test.js.map +1 -0
- package/dist/tests/agents.test.d.ts +1 -0
- package/dist/tests/agents.test.js +369 -0
- package/dist/tests/agents.test.js.map +1 -0
- package/dist/tests/candidates.test.d.ts +1 -0
- package/dist/tests/candidates.test.js +60 -0
- package/dist/tests/candidates.test.js.map +1 -0
- package/dist/tests/core.test.d.ts +1 -0
- package/dist/tests/core.test.js +39 -0
- package/dist/tests/core.test.js.map +1 -0
- package/dist/tests/daemon.test.d.ts +1 -0
- package/dist/tests/daemon.test.js +157 -0
- package/dist/tests/daemon.test.js.map +1 -0
- package/dist/tests/dashboard.test.d.ts +1 -0
- package/dist/tests/dashboard.test.js +414 -0
- package/dist/tests/dashboard.test.js.map +1 -0
- package/dist/tests/directory-selector.test.d.ts +1 -0
- package/dist/tests/directory-selector.test.js +93 -0
- package/dist/tests/directory-selector.test.js.map +1 -0
- package/dist/tests/doctor.test.d.ts +1 -0
- package/dist/tests/doctor.test.js +32 -0
- package/dist/tests/doctor.test.js.map +1 -0
- package/dist/tests/install.test.d.ts +1 -0
- package/dist/tests/install.test.js +101 -0
- package/dist/tests/install.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +49 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/journal.test.d.ts +1 -0
- package/dist/tests/journal.test.js +50 -0
- package/dist/tests/journal.test.js.map +1 -0
- package/dist/tests/model-role-assignment.test.d.ts +1 -0
- package/dist/tests/model-role-assignment.test.js +294 -0
- package/dist/tests/model-role-assignment.test.js.map +1 -0
- package/dist/tests/omb-runtime.test.d.ts +1 -0
- package/dist/tests/omb-runtime.test.js +554 -0
- package/dist/tests/omb-runtime.test.js.map +1 -0
- package/dist/tests/omb-session-actions.test.d.ts +1 -0
- package/dist/tests/omb-session-actions.test.js +191 -0
- package/dist/tests/omb-session-actions.test.js.map +1 -0
- package/dist/tests/omb-settings.test.d.ts +1 -0
- package/dist/tests/omb-settings.test.js +82 -0
- package/dist/tests/omb-settings.test.js.map +1 -0
- package/dist/tests/omp-contract.test.d.ts +1 -0
- package/dist/tests/omp-contract.test.js +362 -0
- package/dist/tests/omp-contract.test.js.map +1 -0
- package/dist/tests/process.test.d.ts +1 -0
- package/dist/tests/process.test.js +12 -0
- package/dist/tests/process.test.js.map +1 -0
- package/dist/tests/psmux-windows.test.d.ts +1 -0
- package/dist/tests/psmux-windows.test.js +105 -0
- package/dist/tests/psmux-windows.test.js.map +1 -0
- package/dist/tests/recovery.test.d.ts +1 -0
- package/dist/tests/recovery.test.js +9 -0
- package/dist/tests/recovery.test.js.map +1 -0
- package/dist/tests/resources.test.d.ts +1 -0
- package/dist/tests/resources.test.js +55 -0
- package/dist/tests/resources.test.js.map +1 -0
- package/dist/tests/session-activity.test.d.ts +1 -0
- package/dist/tests/session-activity.test.js +159 -0
- package/dist/tests/session-activity.test.js.map +1 -0
- package/dist/tests/setup-ui.test.d.ts +1 -0
- package/dist/tests/setup-ui.test.js +37 -0
- package/dist/tests/setup-ui.test.js.map +1 -0
- package/dist/tests/storage-integrity.test.d.ts +1 -0
- package/dist/tests/storage-integrity.test.js +88 -0
- package/dist/tests/storage-integrity.test.js.map +1 -0
- package/dist/tests/tmux.test.d.ts +1 -0
- package/dist/tests/tmux.test.js +239 -0
- package/dist/tests/tmux.test.js.map +1 -0
- package/dist/tests/tray.test.d.ts +1 -0
- package/dist/tests/tray.test.js +37 -0
- package/dist/tests/tray.test.js.map +1 -0
- package/dist/tests/verification.test.d.ts +1 -0
- package/dist/tests/verification.test.js +61 -0
- package/dist/tests/verification.test.js.map +1 -0
- package/dist/tests/workflow-features.test.d.ts +1 -0
- package/dist/tests/workflow-features.test.js +82 -0
- package/dist/tests/workflow-features.test.js.map +1 -0
- package/dist/tests/workflow-safety.test.d.ts +1 -0
- package/dist/tests/workflow-safety.test.js +57 -0
- package/dist/tests/workflow-safety.test.js.map +1 -0
- package/docs/compatibility/baseline.json +1 -1
- package/docs/releases/0.6.2.md +2 -2
- package/docs/releases/0.6.3.md +27 -0
- package/package.json +1 -1
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { Box, Text, useApp, useInput, useStdin, useStdout, useWindowSize, render } from "ink";
|
|
4
|
+
import { listOmbSessions, ombSessionDisplayName } from "../omp/omb-sessions.js";
|
|
5
|
+
import { activitySummary, compactAge } from "../omp/session-activity.js";
|
|
6
|
+
import { directoryKeyAction, expandDirectoryPath, filterDirectoryOptions, readDirectoryCompletions, readDirectoryOptions } from "./directory-selector.js";
|
|
7
|
+
import { OMP_THEME } from "./omp-theme.js";
|
|
8
|
+
const STATUS_STYLE = {
|
|
9
|
+
working: { label: "WORKING", mark: "●", color: OMP_THEME.success },
|
|
10
|
+
waiting: { label: "WAITING", mark: "◐", color: OMP_THEME.warning },
|
|
11
|
+
connected: { label: "CONNECTED", mark: "◉", color: OMP_THEME.accent },
|
|
12
|
+
disconnected: { label: "DISCONNECTED", mark: "◌", color: OMP_THEME.muted },
|
|
13
|
+
stopped: { label: "STOPPED", mark: "○", color: OMP_THEME.border },
|
|
14
|
+
};
|
|
15
|
+
/** Display order for counts and ranking, mirroring STATE_RANK in omb-sessions.ts. */
|
|
16
|
+
const HUB_STATES = ["working", "waiting", "connected", "disconnected", "stopped"];
|
|
17
|
+
/** One-line meaning of each state, used by the help overlay. */
|
|
18
|
+
const STATUS_HINT = {
|
|
19
|
+
working: "the journal shows unfinished work",
|
|
20
|
+
waiting: "attached and waiting for your input",
|
|
21
|
+
connected: "attached with nothing in flight",
|
|
22
|
+
disconnected: "no client attached and nothing in flight",
|
|
23
|
+
stopped: "no host observed and the journal went silent",
|
|
24
|
+
};
|
|
25
|
+
function activityColor(activity) {
|
|
26
|
+
if (activity?.phase === "stalled")
|
|
27
|
+
return OMP_THEME.error;
|
|
28
|
+
if (activity?.stale)
|
|
29
|
+
return OMP_THEME.muted;
|
|
30
|
+
return OMP_THEME.accentSoft;
|
|
31
|
+
}
|
|
32
|
+
const short = (value, width) => value.length <= width ? value : width <= 1 ? value.slice(0, width) : `${value.slice(0, width - 1)}…`;
|
|
33
|
+
function age(session) {
|
|
34
|
+
const timestamp = session.lastAttachedAt ?? session.createdAt;
|
|
35
|
+
if (!timestamp)
|
|
36
|
+
return "age unknown";
|
|
37
|
+
const seconds = Math.max(0, Math.floor(Date.now() / 1000) - timestamp);
|
|
38
|
+
if (seconds < 60)
|
|
39
|
+
return "just now";
|
|
40
|
+
if (seconds < 3600)
|
|
41
|
+
return `${Math.floor(seconds / 60)}m ago`;
|
|
42
|
+
if (seconds < 86400)
|
|
43
|
+
return `${Math.floor(seconds / 3600)}h ago`;
|
|
44
|
+
return `${Math.floor(seconds / 86400)}d ago`;
|
|
45
|
+
}
|
|
46
|
+
function workspacePath(session) {
|
|
47
|
+
return session.cwd === "?" ? session.project : session.cwd;
|
|
48
|
+
}
|
|
49
|
+
function visibleSessions(allSessions, settings) {
|
|
50
|
+
return [...(settings.showStoppedSessions ? allSessions : allSessions.filter(session => session.state !== "stopped"))]
|
|
51
|
+
.sort((a, b) => workspacePath(a).localeCompare(workspacePath(b)) || HUB_STATES.indexOf(a.state) - HUB_STATES.indexOf(b.state) || a.name.localeCompare(b.name));
|
|
52
|
+
}
|
|
53
|
+
function Header({ sessions }) {
|
|
54
|
+
const working = sessions.filter(session => session.state === "working").length;
|
|
55
|
+
const waiting = sessions.filter(session => session.state === "waiting").length;
|
|
56
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 2, justifyContent: "space-between", children: [_jsxs(Text, { bold: true, color: OMP_THEME.accent, children: ["\u03C0 ", _jsx(Text, { color: OMP_THEME.text, children: "BIZAR SESSIONS" })] }), _jsxs(Text, { color: OMP_THEME.muted, children: [sessions.length, " total ", _jsxs(Text, { color: OMP_THEME.success, children: ["\u00B7 ", working, " working"] }), " ", _jsxs(Text, { color: OMP_THEME.warning, children: ["\u00B7 ", waiting, " waiting"] })] })] }));
|
|
57
|
+
}
|
|
58
|
+
function SessionRow({ session, selected, width }) {
|
|
59
|
+
const status = STATUS_STYLE[session.state];
|
|
60
|
+
const activity = session.activity;
|
|
61
|
+
const displayName = ombSessionDisplayName(session);
|
|
62
|
+
return (_jsxs(Box, { width: "100%", paddingX: 1, backgroundColor: selected ? OMP_THEME.selectedBackground : undefined, justifyContent: "space-between", children: [_jsx(Box, { justifyContent: "space-between", children: _jsxs(Text, { color: selected ? OMP_THEME.text : status.color, bold: selected, children: [selected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", status.mark, " ", short(displayName, Math.max(18, width - (width >= 100 ? 58 : 24)))] }) }), _jsxs(Text, { color: selected ? OMP_THEME.accent : status.color, children: [" ", status.label] }), width >= 100 && _jsxs(Text, { color: activityColor(activity), children: [" \u00B7 ", short(activitySummary(activity), 24), " ", _jsxs(Text, { color: OMP_THEME.muted, children: ["\u00B7 ", activity ? compactAge(activity.ageSeconds) : age(session)] })] })] }));
|
|
63
|
+
}
|
|
64
|
+
function sessionWindow(sessions, selected, rows) {
|
|
65
|
+
if (!sessions.length)
|
|
66
|
+
return { start: 0, visible: [] };
|
|
67
|
+
const budget = Math.max(3, rows - 14);
|
|
68
|
+
const lineCost = (items) => items.reduce((cost, session, index) => cost + 1 + (index === 0 || workspacePath(items[index - 1]) !== workspacePath(session) ? 1 : 0), 0);
|
|
69
|
+
let start = Math.max(0, Math.min(selected, sessions.length - 1));
|
|
70
|
+
let end = start + 1;
|
|
71
|
+
while (true) {
|
|
72
|
+
let changed = false;
|
|
73
|
+
if (start > 0 && lineCost(sessions.slice(start - 1, end)) <= budget) {
|
|
74
|
+
start -= 1;
|
|
75
|
+
changed = true;
|
|
76
|
+
}
|
|
77
|
+
if (end < sessions.length && lineCost(sessions.slice(start, end + 1)) <= budget) {
|
|
78
|
+
end += 1;
|
|
79
|
+
changed = true;
|
|
80
|
+
}
|
|
81
|
+
if (!changed)
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
return { start, visible: sessions.slice(start, end) };
|
|
85
|
+
}
|
|
86
|
+
function SessionList({ sessions, selected, rows, width }) {
|
|
87
|
+
const { start, visible } = sessionWindow(sessions, selected, rows);
|
|
88
|
+
let previousWorkspace;
|
|
89
|
+
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsxs(Box, { flexDirection: "column", flexGrow: 1, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: OMP_THEME.accent, children: "SESSIONS" }), _jsx(Text, { color: OMP_THEME.muted, children: sessions.length ? `${start + 1}-${start + visible.length} of ${sessions.length}` : "empty" })] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: visible.length === 0 ? (_jsx(Box, { flexDirection: "column", paddingY: 2, children: _jsx(Text, { color: OMP_THEME.warning, children: "No sessions. Press n to create one." }) })) : visible.map((session, offset) => {
|
|
90
|
+
const index = start + offset;
|
|
91
|
+
const workspace = workspacePath(session);
|
|
92
|
+
const workspaceChanged = workspace !== previousWorkspace;
|
|
93
|
+
if (workspaceChanged)
|
|
94
|
+
previousWorkspace = workspace;
|
|
95
|
+
return (_jsxs(Box, { flexDirection: "column", children: [workspaceChanged && _jsxs(Text, { color: OMP_THEME.muted, children: [" ", short(session.project, 20), " \u00B7 ", short(workspace, Math.max(20, width - 24))] }), _jsx(SessionRow, { session: session, selected: index === selected, width: width })] }, session.name));
|
|
96
|
+
}) })] }) }));
|
|
97
|
+
}
|
|
98
|
+
function SelectedSummary({ session, width }) {
|
|
99
|
+
if (!session)
|
|
100
|
+
return _jsx(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsx(Text, { color: OMP_THEME.muted, children: "No session selected" }) });
|
|
101
|
+
const status = STATUS_STYLE[session.state];
|
|
102
|
+
const activity = session.activity;
|
|
103
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, children: short(ombSessionDisplayName(session), Math.max(16, Math.floor(width * .3))) }), " ", _jsxs(Text, { color: status.color, children: [status.mark, " ", status.label] })] }), _jsx(Text, { color: activityColor(activity), children: short(activitySummary(activity), Math.max(16, Math.floor(width * .3))) }), _jsx(Text, { color: OMP_THEME.muted, children: session.hosted === false ? "history only" : short(session.cwd, Math.max(18, Math.floor(width * .28))) })] }));
|
|
104
|
+
}
|
|
105
|
+
function Footer() {
|
|
106
|
+
return (_jsx(Box, { borderStyle: "round", borderColor: OMP_THEME.border, paddingX: 1, children: _jsxs(Text, { color: OMP_THEME.muted, children: [_jsx(Text, { color: OMP_THEME.accent, children: "Enter" }), " open ", _jsx(Text, { color: OMP_THEME.accent, children: "n" }), " new ", _jsx(Text, { color: OMP_THEME.accent, children: "e" }), " rename ", _jsx(Text, { color: OMP_THEME.accent, children: "d" }), " delete ", _jsx(Text, { color: OMP_THEME.accent, children: "s" }), " settings ", _jsx(Text, { color: OMP_THEME.accent, children: "?" }), " more ", _jsx(Text, { color: OMP_THEME.accent, children: "q" }), " quit"] }) }));
|
|
107
|
+
}
|
|
108
|
+
function Modal({ title, children, width, columns }) {
|
|
109
|
+
return (_jsxs(Box, { position: "absolute", top: 2, left: Math.max(0, Math.floor((columns - width) / 2)), width: width, flexDirection: "column", borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 2, paddingY: 1, children: [_jsxs(Text, { bold: true, color: OMP_THEME.accent, children: ["\u03C0 \u203A ", title] }), _jsx(Box, { marginTop: 1, width: "100%", flexDirection: "column", backgroundColor: OMP_THEME.surface, children: children })] }));
|
|
110
|
+
}
|
|
111
|
+
function NewSessionModal({ cwd, sessions, projectsFolder, initialDirectory: workspaceDirectory, selected, columns, rows, onSubmit, onClose, }) {
|
|
112
|
+
const initialDirectory = workspaceDirectory?.trim()
|
|
113
|
+
? expandDirectoryPath(workspaceDirectory, cwd)
|
|
114
|
+
: projectsFolder.trim()
|
|
115
|
+
? expandDirectoryPath(projectsFolder, cwd)
|
|
116
|
+
: selected?.cwd && selected.cwd !== "?" ? selected.cwd : cwd;
|
|
117
|
+
const [mode, setMode] = useState("directory");
|
|
118
|
+
const [directoryPath, setDirectoryPath] = useState(initialDirectory);
|
|
119
|
+
const [directoryQuery, setDirectoryQuery] = useState("");
|
|
120
|
+
const [directoryOptions, setDirectoryOptions] = useState([]);
|
|
121
|
+
const [pathOptions, setPathOptions] = useState([]);
|
|
122
|
+
const [directorySelected, setDirectorySelected] = useState(0);
|
|
123
|
+
const [projectCwd, setProjectCwd] = useState(initialDirectory);
|
|
124
|
+
const [task, setTask] = useState("");
|
|
125
|
+
const [sessionId, setSessionId] = useState("");
|
|
126
|
+
const [loading, setLoading] = useState(true);
|
|
127
|
+
const recentPaths = useMemo(() => [...new Set(sessions.map(session => session.cwd).filter(path => path && path !== "?"))], [sessions]);
|
|
128
|
+
const recentPathsKey = useMemo(() => [...recentPaths].sort().join("\0"), [recentPaths]);
|
|
129
|
+
const filteredDirectories = useMemo(() => filterDirectoryOptions([...pathOptions, ...directoryOptions], directoryQuery), [directoryOptions, directoryQuery, pathOptions]);
|
|
130
|
+
const visibleCount = Math.max(4, Math.min(9, rows - 14));
|
|
131
|
+
const directoryStart = Math.max(0, Math.min(Math.max(0, filteredDirectories.length - visibleCount), directorySelected - Math.floor(visibleCount / 2)));
|
|
132
|
+
const visibleDirectories = filteredDirectories.slice(directoryStart, directoryStart + visibleCount);
|
|
133
|
+
const selectedDirectory = filteredDirectories[directorySelected];
|
|
134
|
+
useEffect(() => {
|
|
135
|
+
let active = true;
|
|
136
|
+
setLoading(true);
|
|
137
|
+
void readDirectoryOptions(directoryPath, recentPaths, "", projectsFolder).then(options => {
|
|
138
|
+
if (!active)
|
|
139
|
+
return;
|
|
140
|
+
setDirectoryOptions(options);
|
|
141
|
+
setDirectorySelected(0);
|
|
142
|
+
setLoading(false);
|
|
143
|
+
});
|
|
144
|
+
return () => { active = false; };
|
|
145
|
+
}, [directoryPath, projectsFolder, recentPathsKey]);
|
|
146
|
+
useEffect(() => {
|
|
147
|
+
setDirectorySelected(0);
|
|
148
|
+
if (!directoryQuery.includes("/") && !directoryQuery.startsWith("~")) {
|
|
149
|
+
setPathOptions([]);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
let active = true;
|
|
153
|
+
void readDirectoryOptions(directoryPath, [], directoryQuery).then(options => {
|
|
154
|
+
if (active)
|
|
155
|
+
setPathOptions(options.filter(option => option.kind === "path"));
|
|
156
|
+
});
|
|
157
|
+
return () => { active = false; };
|
|
158
|
+
}, [directoryPath, directoryQuery]);
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
setDirectorySelected(value => Math.min(value, Math.max(0, filteredDirectories.length - 1)));
|
|
161
|
+
}, [filteredDirectories.length]);
|
|
162
|
+
const selectDirectory = (option) => {
|
|
163
|
+
if (!option)
|
|
164
|
+
return;
|
|
165
|
+
if (option.kind === "parent") {
|
|
166
|
+
setDirectoryPath(option.path);
|
|
167
|
+
setDirectoryQuery("");
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
setProjectCwd(option.path);
|
|
171
|
+
setMode("task");
|
|
172
|
+
};
|
|
173
|
+
const openDirectory = (option) => {
|
|
174
|
+
if (!option || option.kind === "current")
|
|
175
|
+
return;
|
|
176
|
+
setDirectoryPath(option.path);
|
|
177
|
+
setDirectoryQuery("");
|
|
178
|
+
};
|
|
179
|
+
const goToParent = () => {
|
|
180
|
+
const parent = directoryPath.replace(/[\\/]$/, "").split(/[\\/]/).slice(0, -1).join("/") || "/";
|
|
181
|
+
if (parent !== directoryPath) {
|
|
182
|
+
setDirectoryPath(parent);
|
|
183
|
+
setDirectoryQuery("");
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
useInput((input, key) => {
|
|
187
|
+
if (key.escape) {
|
|
188
|
+
if (mode === "name")
|
|
189
|
+
setMode("task");
|
|
190
|
+
else if (mode === "task")
|
|
191
|
+
setMode("directory");
|
|
192
|
+
else
|
|
193
|
+
onClose();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (mode === "directory") {
|
|
197
|
+
const action = directoryKeyAction(input, key);
|
|
198
|
+
if (action.kind === "cursor-up")
|
|
199
|
+
setDirectorySelected(value => Math.max(0, value - 1));
|
|
200
|
+
else if (action.kind === "cursor-down")
|
|
201
|
+
setDirectorySelected(value => Math.min(Math.max(0, filteredDirectories.length - 1), value + 1));
|
|
202
|
+
else if (action.kind === "select")
|
|
203
|
+
selectDirectory(selectedDirectory);
|
|
204
|
+
else if (action.kind === "open")
|
|
205
|
+
openDirectory(selectedDirectory);
|
|
206
|
+
else if (action.kind === "parent")
|
|
207
|
+
goToParent();
|
|
208
|
+
else if (action.kind === "backspace") {
|
|
209
|
+
setDirectoryQuery(value => value.slice(0, -1));
|
|
210
|
+
setDirectorySelected(0);
|
|
211
|
+
}
|
|
212
|
+
else if (action.kind === "clear") {
|
|
213
|
+
setDirectoryQuery("");
|
|
214
|
+
setDirectorySelected(0);
|
|
215
|
+
}
|
|
216
|
+
else if (action.kind === "type") {
|
|
217
|
+
setDirectoryQuery(value => `${value}${action.input}`);
|
|
218
|
+
setDirectorySelected(0);
|
|
219
|
+
}
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const updateText = (setter) => {
|
|
223
|
+
if (key.backspace || (key.ctrl && input === "h"))
|
|
224
|
+
setter(value => value.slice(0, -1));
|
|
225
|
+
else if (key.ctrl && input === "u")
|
|
226
|
+
setter("");
|
|
227
|
+
else if (input && !key.ctrl && !key.meta && input >= " ")
|
|
228
|
+
setter(value => `${value}${input}`);
|
|
229
|
+
};
|
|
230
|
+
if (mode === "task") {
|
|
231
|
+
if (key.return)
|
|
232
|
+
setMode("name");
|
|
233
|
+
else
|
|
234
|
+
updateText(setTask);
|
|
235
|
+
}
|
|
236
|
+
else if (key.return) {
|
|
237
|
+
onSubmit({ projectCwd, task: task.trim(), sessionId: sessionId.trim() });
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
updateText(setSessionId);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
const width = Math.min(92, Math.max(54, columns - 6));
|
|
244
|
+
return (_jsx(Modal, { title: "NEW BIZAR SESSION", width: width, columns: columns, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: mode === "directory" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "directory", children: "1 Project directory" }), mode === "directory" ? (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u2315 " }), _jsx(Text, { color: OMP_THEME.text, children: directoryQuery || "Type to fuzzy-search directories" })] }), _jsx(Text, { color: OMP_THEME.muted, children: directoryPath }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: loading ? _jsx(Text, { color: OMP_THEME.warning, children: "Scanning directories\u2026" }) : visibleDirectories.length === 0 ? _jsx(Text, { color: OMP_THEME.warning, children: "No matching directories. Type an absolute path to jump." }) : visibleDirectories.map((option, offset) => {
|
|
245
|
+
const index = directoryStart + offset;
|
|
246
|
+
const isSelected = index === directorySelected;
|
|
247
|
+
return (_jsxs(Box, { width: "100%", flexDirection: "column", backgroundColor: isSelected ? OMP_THEME.selectedBackground : undefined, children: [_jsxs(Text, { color: isSelected ? OMP_THEME.text : option.kind === "recent" ? OMP_THEME.success : OMP_THEME.muted, bold: isSelected, children: [isSelected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", option.kind === "parent" ? "↰" : option.kind === "recent" ? "●" : option.kind === "current" ? "◆" : option.kind === "projects-root" ? "▣" : option.kind === "project" ? "◇" : "□", " ", option.label] }), isSelected && _jsxs(Text, { color: OMP_THEME.muted, children: [" ", option.detail ?? option.path] })] }, `${option.kind}:${option.path}`));
|
|
248
|
+
}) }), _jsxs(Text, { color: OMP_THEME.muted, children: [filteredDirectories.length ? `${directoryStart + 1}-${Math.min(directoryStart + visibleCount, filteredDirectories.length)} of ${filteredDirectories.length}` : "0 directories", " \u00B7 Enter choose \u2192 open \u2190 parent \u00B7 fuzzy matches scan all subdirectories"] })] })) : (_jsxs(Text, { color: OMP_THEME.muted, children: [" ", projectCwd] })), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: mode === "task" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "task", children: "2 Initial task" }), mode === "task" ? _jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: task || "Optional task description" })] }) : _jsxs(Text, { color: OMP_THEME.muted, children: [" ", task || "Optional"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: mode === "name" ? OMP_THEME.accent : OMP_THEME.text, bold: mode === "name", children: "3 Session name" }), mode === "name" ? _jsxs(Box, { borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: sessionId || "Blank generates a name" })] }) : _jsxs(Text, { color: OMP_THEME.muted, children: [" ", sessionId || "Generated automatically"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: OMP_THEME.muted, children: "Type to search or edit \u00B7 Up/Down select \u00B7 Enter continue \u00B7 Esc back" }), _jsx(Text, { color: OMP_THEME.warning, children: mode === "directory" ? projectsFolder ? `Global sessions are listed below; ${projectsFolder} is indexed here.` : "Global sessions are listed below; configure a projects folder in settings for faster picking." : mode === "name" ? "Enter starts the durable OMB host." : "Enter moves to the session name." })] })] }) }));
|
|
249
|
+
}
|
|
250
|
+
function SettingsModal({ cwd, settings, selected, columns, onToggle, onMove, onSetProjectsFolder, onSave, onClose }) {
|
|
251
|
+
const options = [
|
|
252
|
+
["Project directory root", settings.projectsFolder || "not set"],
|
|
253
|
+
["Attach plain omb to latest live session", settings.autoAttachLatest],
|
|
254
|
+
["Enable mouse scrolling in OMB sessions", settings.mouseScrolling],
|
|
255
|
+
["Show stopped sessions in this view", settings.showStoppedSessions],
|
|
256
|
+
["Enable system tray icon", settings.trayEnabled],
|
|
257
|
+
];
|
|
258
|
+
const [editingFolder, setEditingFolder] = useState(false);
|
|
259
|
+
const [folderInput, setFolderInput] = useState(settings.projectsFolder);
|
|
260
|
+
const [folderSuggestions, setFolderSuggestions] = useState([]);
|
|
261
|
+
const [folderSuggestionSelected, setFolderSuggestionSelected] = useState(0);
|
|
262
|
+
useEffect(() => {
|
|
263
|
+
if (!editingFolder) {
|
|
264
|
+
setFolderSuggestions([]);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
let active = true;
|
|
268
|
+
void readDirectoryCompletions(folderInput, cwd).then(options => {
|
|
269
|
+
if (!active)
|
|
270
|
+
return;
|
|
271
|
+
setFolderSuggestions(options);
|
|
272
|
+
setFolderSuggestionSelected(0);
|
|
273
|
+
});
|
|
274
|
+
return () => { active = false; };
|
|
275
|
+
}, [cwd, editingFolder, folderInput]);
|
|
276
|
+
useInput((input, key) => {
|
|
277
|
+
if (editingFolder) {
|
|
278
|
+
if (key.escape) {
|
|
279
|
+
setFolderInput(settings.projectsFolder);
|
|
280
|
+
setEditingFolder(false);
|
|
281
|
+
}
|
|
282
|
+
else if (key.upArrow)
|
|
283
|
+
setFolderSuggestionSelected(value => Math.max(0, value - 1));
|
|
284
|
+
else if (key.downArrow)
|
|
285
|
+
setFolderSuggestionSelected(value => Math.min(Math.max(0, folderSuggestions.length - 1), value + 1));
|
|
286
|
+
else if (key.tab || key.rightArrow) {
|
|
287
|
+
const suggestion = folderSuggestions[folderSuggestionSelected];
|
|
288
|
+
if (suggestion)
|
|
289
|
+
setFolderInput(suggestion.path);
|
|
290
|
+
}
|
|
291
|
+
else if (key.return) {
|
|
292
|
+
onSetProjectsFolder(folderSuggestions[folderSuggestionSelected]?.path ?? folderInput.trim());
|
|
293
|
+
setEditingFolder(false);
|
|
294
|
+
}
|
|
295
|
+
else if (key.backspace || (key.ctrl && input === "h"))
|
|
296
|
+
setFolderInput(value => value.slice(0, -1));
|
|
297
|
+
else if (key.ctrl && input === "u")
|
|
298
|
+
setFolderInput("");
|
|
299
|
+
else if (input && !key.ctrl && !key.meta && input >= " ")
|
|
300
|
+
setFolderInput(value => `${value}${input}`);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (key.upArrow)
|
|
304
|
+
onMove(Math.max(0, selected - 1));
|
|
305
|
+
else if (key.downArrow)
|
|
306
|
+
onMove(Math.min(options.length - 1, selected + 1));
|
|
307
|
+
else if (key.escape || input === "q")
|
|
308
|
+
onClose();
|
|
309
|
+
else if (input === "s")
|
|
310
|
+
onSave();
|
|
311
|
+
else if (input === " " || key.return) {
|
|
312
|
+
if (selected === 0)
|
|
313
|
+
setEditingFolder(true);
|
|
314
|
+
else
|
|
315
|
+
onToggle();
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
return (_jsxs(Modal, { title: "OMB SETTINGS", width: Math.min(70, Math.max(46, columns - 6)), columns: columns, children: [options.map(([label, enabled], index) => (_jsx(Box, { width: "100%", backgroundColor: index === selected ? OMP_THEME.selectedBackground : OMP_THEME.surface, children: _jsxs(Text, { color: index === selected ? OMP_THEME.text : OMP_THEME.muted, children: [index === selected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", typeof enabled === "boolean" ? `[${enabled ? "on " : "off"}]` : enabled, " ", label] }) }, label))), selected === 0 && (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: editingFolder ? OMP_THEME.accent : OMP_THEME.border, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u2315 " }), _jsx(Text, { children: editingFolder ? folderInput || "Type ~/projects or an absolute path" : settings.projectsFolder || "Press Enter to set a projects folder" })] })), selected === 0 && editingFolder && folderSuggestions.length > 0 && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: OMP_THEME.muted, children: "Autocomplete" }), folderSuggestions.slice(0, 5).map((suggestion, index) => (_jsx(Box, { width: "100%", backgroundColor: index === folderSuggestionSelected ? OMP_THEME.selectedBackground : OMP_THEME.surface, children: _jsxs(Text, { color: index === folderSuggestionSelected ? OMP_THEME.text : OMP_THEME.muted, children: [index === folderSuggestionSelected ? _jsx(Text, { color: OMP_THEME.accent, children: "\u203A" }) : " ", " ", suggestion.path] }) }, suggestion.path)))] })), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: editingFolder ? "Type path Enter apply Ctrl-U clear Esc cancel" : "Up/Down select Space/Enter edit s save Esc cancel" }), _jsx(Text, { color: OMP_THEME.warning, children: selected === 0 ? "Child directories from this folder appear in the new-session picker." : selected === 2 ? "Mouse mode applies to existing OMB sessions when saved." : selected === 4 ? "The tray starts a native menu for supported Linux, macOS, and Windows hosts." : "The hub always shows every Bizar session across projects." })] }));
|
|
319
|
+
}
|
|
320
|
+
function HelpModal({ columns, onClose }) {
|
|
321
|
+
useInput((input, key) => { if (key.escape || key.return || input === "q")
|
|
322
|
+
onClose(); });
|
|
323
|
+
return (_jsxs(Modal, { title: "OMB AGENTS SHORTCUTS", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "Enter" }), " open the selected live session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "n" }), " create a session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "Mouse" }), " click rows and scroll the list"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "e" }), " rename the selected session"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "d" }), " delete after confirmation"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "s" }), " open launcher settings"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "r" }), " refresh the session list"] }), _jsxs(Text, { children: [_jsx(Text, { color: OMP_THEME.accent, children: "q / Esc" }), " leave this view"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: "STATES" }), HUB_STATES.map(state => (_jsxs(Text, { color: OMP_THEME.muted, children: [_jsxs(Text, { color: STATUS_STYLE[state].color, children: [STATUS_STYLE[state].mark, " ", state] }), " ", STATUS_HINT[state]] }, state))), _jsx(Text, { color: OMP_THEME.muted, children: "Enter or Esc returns." })] }));
|
|
324
|
+
}
|
|
325
|
+
function DeleteModal({ session, columns, onConfirm, onClose }) {
|
|
326
|
+
useInput((input, key) => {
|
|
327
|
+
if (input.toLowerCase() === "y")
|
|
328
|
+
onConfirm();
|
|
329
|
+
else if (key.escape || key.return || input.length > 0)
|
|
330
|
+
onClose();
|
|
331
|
+
});
|
|
332
|
+
return (_jsxs(Modal, { title: session.hosted === false ? "REMOVE SESSION?" : "DELETE SESSION?", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsx(Text, { bold: true, children: ombSessionDisplayName(session) }), _jsxs(Text, { color: STATUS_STYLE[session.state].color, children: [STATUS_STYLE[session.state].mark, " ", STATUS_STYLE[session.state].label] }), _jsx(Text, { color: OMP_THEME.muted, children: short(session.cwd, 54) }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.warning, children: session.hosted === false ? "This removes the stale history entry." : "This stops OMP and removes the tmux session." }), _jsxs(Text, { children: ["Press ", _jsx(Text, { color: OMP_THEME.error, bold: true, children: "y" }), " to confirm, any other key to cancel."] })] }));
|
|
333
|
+
}
|
|
334
|
+
function RenameModal({ session, columns, onConfirm, onClose }) {
|
|
335
|
+
const [value, setValue] = useState(session.id);
|
|
336
|
+
useInput((input, key) => {
|
|
337
|
+
if (key.escape)
|
|
338
|
+
onClose();
|
|
339
|
+
else if (key.return)
|
|
340
|
+
onConfirm(value.trim() || session.id);
|
|
341
|
+
else if (key.backspace || (key.ctrl && input === "h"))
|
|
342
|
+
setValue(current => current.slice(0, -1));
|
|
343
|
+
else if (key.ctrl && input === "u")
|
|
344
|
+
setValue("");
|
|
345
|
+
else if (input && !key.ctrl && !key.meta && input >= " ")
|
|
346
|
+
setValue(current => `${current}${input}`);
|
|
347
|
+
});
|
|
348
|
+
return (_jsxs(Modal, { title: "RENAME SESSION", width: Math.min(64, Math.max(42, columns - 6)), columns: columns, children: [_jsx(Text, { color: OMP_THEME.muted, children: short(session.cwd, 54) }), _jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: OMP_THEME.accent, backgroundColor: OMP_THEME.surface, paddingX: 1, children: [_jsx(Text, { color: OMP_THEME.accent, children: "\u203A " }), _jsx(Text, { children: value || "Type a session name" })] }), _jsx(Text, { children: " " }), _jsx(Text, { color: OMP_THEME.muted, children: "Enter save Ctrl-U clear Esc cancel" })] }));
|
|
349
|
+
}
|
|
350
|
+
/** Enable SGR mouse reporting while the hub owns the alternate screen. */
|
|
351
|
+
function useTerminalMouse(onMouse) {
|
|
352
|
+
const { stdin } = useStdin();
|
|
353
|
+
const { stdout } = useStdout();
|
|
354
|
+
const onMouseRef = useRef(onMouse);
|
|
355
|
+
useEffect(() => { onMouseRef.current = onMouse; }, [onMouse]);
|
|
356
|
+
useEffect(() => {
|
|
357
|
+
if (!stdin.isTTY)
|
|
358
|
+
return;
|
|
359
|
+
const enable = "\u001b[?1000h\u001b[?1006h";
|
|
360
|
+
const disable = "\u001b[?1000l\u001b[?1006l";
|
|
361
|
+
stdout.write(enable);
|
|
362
|
+
let buffer = "";
|
|
363
|
+
const pattern = /\u001b\[<(\d+);(\d+);(\d+)([mM])/g;
|
|
364
|
+
const onData = (chunk) => {
|
|
365
|
+
buffer += chunk.toString();
|
|
366
|
+
pattern.lastIndex = 0;
|
|
367
|
+
let consumed = 0;
|
|
368
|
+
let match;
|
|
369
|
+
while ((match = pattern.exec(buffer))) {
|
|
370
|
+
consumed = pattern.lastIndex;
|
|
371
|
+
onMouseRef.current({ button: Number(match[1]), x: Number(match[2]), y: Number(match[3]), release: match[4] === "m" });
|
|
372
|
+
}
|
|
373
|
+
const remainder = buffer.slice(consumed);
|
|
374
|
+
const escape = remainder.lastIndexOf("\u001b");
|
|
375
|
+
buffer = escape >= 0 ? remainder.slice(escape) : "";
|
|
376
|
+
if (buffer.length > 64)
|
|
377
|
+
buffer = buffer.slice(-64);
|
|
378
|
+
};
|
|
379
|
+
stdin.on("data", onData);
|
|
380
|
+
return () => {
|
|
381
|
+
stdin.off("data", onData);
|
|
382
|
+
stdout.write(disable);
|
|
383
|
+
};
|
|
384
|
+
}, [stdin, stdout]);
|
|
385
|
+
}
|
|
386
|
+
function sessionMouseIndex(sessions, selected, rows, y) {
|
|
387
|
+
const { start, visible } = sessionWindow(sessions, selected, rows);
|
|
388
|
+
// Header, one-row gap, list border, and list title precede the first group.
|
|
389
|
+
let line = 7;
|
|
390
|
+
let previousWorkspace;
|
|
391
|
+
for (const [offset, session] of visible.entries()) {
|
|
392
|
+
if (workspacePath(session) !== previousWorkspace) {
|
|
393
|
+
line += 1;
|
|
394
|
+
previousWorkspace = workspacePath(session);
|
|
395
|
+
}
|
|
396
|
+
if (y === line)
|
|
397
|
+
return start + offset;
|
|
398
|
+
line += 1;
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
function AgentsApp({ cwd, env, sessions: initialSessions, settings: initialSettings, initialSelectedName, openNewSessionOnStart = false, onAction }) {
|
|
403
|
+
const { columns, rows } = useWindowSize();
|
|
404
|
+
const [allSessions, setAllSessions] = useState(initialSessions);
|
|
405
|
+
const [settings, setSettings] = useState(initialSettings);
|
|
406
|
+
const [selectedName, setSelectedName] = useState(initialSelectedName ?? initialSessions[0]?.name);
|
|
407
|
+
const [newSessionDirectory, setNewSessionDirectory] = useState();
|
|
408
|
+
const [overlay, setOverlay] = useState(openNewSessionOnStart ? "new" : undefined);
|
|
409
|
+
const [overlaySelected, setOverlaySelected] = useState(0);
|
|
410
|
+
const [draftSettings, setDraftSettings] = useState(initialSettings);
|
|
411
|
+
const refreshSequence = useRef(0);
|
|
412
|
+
const { exit } = useApp();
|
|
413
|
+
const sessions = useMemo(() => visibleSessions(allSessions, settings), [allSessions, settings]);
|
|
414
|
+
const selected = Math.max(0, sessions.findIndex(session => session.name === selectedName));
|
|
415
|
+
const selectedSession = sessions[selected];
|
|
416
|
+
const refresh = async (current = settings) => {
|
|
417
|
+
const sequence = ++refreshSequence.current;
|
|
418
|
+
const next = await listOmbSessions(cwd, env, { includeStopped: current.showStoppedSessions });
|
|
419
|
+
if (sequence === refreshSequence.current)
|
|
420
|
+
setAllSessions(next);
|
|
421
|
+
};
|
|
422
|
+
useEffect(() => {
|
|
423
|
+
const timer = setInterval(() => { void refresh(); }, 3000);
|
|
424
|
+
return () => clearInterval(timer);
|
|
425
|
+
}, [cwd, env, settings.showStoppedSessions]);
|
|
426
|
+
useEffect(() => {
|
|
427
|
+
if (sessions.length === 0) {
|
|
428
|
+
setSelectedName(undefined);
|
|
429
|
+
}
|
|
430
|
+
else if (!selectedName || !sessions.some(session => session.name === selectedName)) {
|
|
431
|
+
setSelectedName(sessions[0]?.name);
|
|
432
|
+
}
|
|
433
|
+
}, [sessions, selectedName]);
|
|
434
|
+
const finish = (action) => { onAction(action); exit(); };
|
|
435
|
+
const openNewSession = (workspacePath) => {
|
|
436
|
+
setNewSessionDirectory(workspacePath);
|
|
437
|
+
setOverlay("new");
|
|
438
|
+
};
|
|
439
|
+
const selectSession = (index) => {
|
|
440
|
+
const session = sessions[index];
|
|
441
|
+
if (!session)
|
|
442
|
+
return;
|
|
443
|
+
setSelectedName(session.name);
|
|
444
|
+
};
|
|
445
|
+
useTerminalMouse(event => {
|
|
446
|
+
if (overlay || event.release)
|
|
447
|
+
return;
|
|
448
|
+
if (event.button === 64 || event.button === 65) {
|
|
449
|
+
selectSession(Math.max(0, Math.min(Math.max(0, sessions.length - 1), selected + (event.button === 64 ? -1 : 1))));
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
if (event.button !== 0)
|
|
453
|
+
return;
|
|
454
|
+
const index = sessionMouseIndex(sessions, selected, rows, event.y);
|
|
455
|
+
if (index === undefined)
|
|
456
|
+
return;
|
|
457
|
+
const session = sessions[index];
|
|
458
|
+
if (session?.name === selectedName && session.hosted !== false && session.state !== "stopped")
|
|
459
|
+
finish({ type: "attach", session });
|
|
460
|
+
else
|
|
461
|
+
selectSession(index);
|
|
462
|
+
});
|
|
463
|
+
useInput((input, key) => {
|
|
464
|
+
if (overlay)
|
|
465
|
+
return;
|
|
466
|
+
if (key.ctrl && input === "c") {
|
|
467
|
+
finish({ type: "quit" });
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
if (key.escape || input === "q") {
|
|
471
|
+
finish({ type: "quit" });
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (key.upArrow || input === "k")
|
|
475
|
+
selectSession(Math.max(0, selected - 1));
|
|
476
|
+
else if (key.downArrow || input === "j")
|
|
477
|
+
selectSession(Math.min(Math.max(0, sessions.length - 1), selected + 1));
|
|
478
|
+
else if (key.return && selectedSession && selectedSession.hosted !== false && selectedSession.state !== "stopped")
|
|
479
|
+
finish({ type: "attach", session: selectedSession });
|
|
480
|
+
else if (input === "n")
|
|
481
|
+
openNewSession(selectedSession?.cwd === "?" ? undefined : selectedSession?.cwd);
|
|
482
|
+
else if (input === "e" && selectedSession && selectedSession.hosted !== false && selectedSession.state !== "stopped")
|
|
483
|
+
setOverlay("rename");
|
|
484
|
+
else if (input === "d" && selectedSession) {
|
|
485
|
+
setOverlay("delete");
|
|
486
|
+
}
|
|
487
|
+
else if (input === "r") {
|
|
488
|
+
void refresh();
|
|
489
|
+
}
|
|
490
|
+
else if (input === "?")
|
|
491
|
+
setOverlay("help");
|
|
492
|
+
else if (input === "s") {
|
|
493
|
+
setDraftSettings(settings);
|
|
494
|
+
setOverlaySelected(0);
|
|
495
|
+
setOverlay("settings");
|
|
496
|
+
}
|
|
497
|
+
});
|
|
498
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", minHeight: Math.max(12, rows - 1), paddingX: 1, children: [_jsx(Header, { sessions: sessions }), _jsx(Box, { flexGrow: 1, marginTop: 1, children: _jsx(SessionList, { sessions: sessions, selected: selected, rows: rows, width: Math.max(34, columns - 4) }) }), _jsx(SelectedSummary, { session: selectedSession, width: Math.max(34, columns - 4) }), _jsx(Footer, {}), overlay === "new" && (_jsx(NewSessionModal, { cwd: cwd, sessions: allSessions, projectsFolder: settings.projectsFolder, initialDirectory: newSessionDirectory, selected: selectedSession, columns: columns, rows: rows, onSubmit: value => finish({ type: "new", ...value }), onClose: () => setOverlay(undefined) })), overlay === "help" && _jsx(HelpModal, { columns: columns, onClose: () => setOverlay(undefined) }), overlay === "delete" && selectedSession && _jsx(DeleteModal, { session: selectedSession, columns: columns, onConfirm: () => finish({ type: "delete", session: selectedSession, nextSessionName: sessions[selected - 1]?.name ?? sessions[selected + 1]?.name }), onClose: () => setOverlay(undefined) }), overlay === "rename" && selectedSession && _jsx(RenameModal, { session: selectedSession, columns: columns, onConfirm: value => finish({ type: "rename", session: selectedSession, nextId: value }), onClose: () => setOverlay(undefined) }), overlay === "settings" && (_jsx(SettingsModal, { cwd: cwd, settings: draftSettings, selected: overlaySelected, onMove: setOverlaySelected, columns: columns, onToggle: () => {
|
|
499
|
+
if (overlaySelected === 0)
|
|
500
|
+
return;
|
|
501
|
+
const field = overlaySelected === 1 ? "autoAttachLatest" : overlaySelected === 2 ? "mouseScrolling" : overlaySelected === 3 ? "showStoppedSessions" : "trayEnabled";
|
|
502
|
+
setDraftSettings(value => ({ ...value, [field]: !value[field] }));
|
|
503
|
+
}, onSetProjectsFolder: value => setDraftSettings(current => ({ ...current, projectsFolder: value })), onSave: () => {
|
|
504
|
+
setSettings(draftSettings);
|
|
505
|
+
void refresh(draftSettings);
|
|
506
|
+
finish({ type: "settings", settings: draftSettings });
|
|
507
|
+
}, onClose: () => setOverlay(undefined) }))] }));
|
|
508
|
+
}
|
|
509
|
+
export async function runInkAgentsHub(cwd, env, sessions, settings, initialSelectedName, openNewSession = false) {
|
|
510
|
+
let action = { type: "quit" };
|
|
511
|
+
const app = render(_jsx(AgentsApp, { cwd: cwd, env: env, sessions: sessions, settings: settings, initialSelectedName: initialSelectedName, openNewSessionOnStart: openNewSession, onAction: value => { action = value; } }), {
|
|
512
|
+
alternateScreen: true,
|
|
513
|
+
});
|
|
514
|
+
await app.waitUntilExit();
|
|
515
|
+
return action;
|
|
516
|
+
}
|
|
517
|
+
//# sourceMappingURL=agents-ink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-ink.js","sourceRoot":"","sources":["../../../src/cli/agents-ink.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { type OmbSettings } from "../omp/omb-settings.js";
|
|
3
|
+
import { type OmbSessionInfo } from "../omp/omb-sessions.js";
|
|
4
|
+
interface HubRenderOptions {
|
|
5
|
+
currentCwd?: string;
|
|
6
|
+
maxVisible?: number;
|
|
7
|
+
notice?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const AGENTS_USAGE = "omb agents [--new]\n\n Keyboard-first session hub across every project: attach, start, rename, and\n stop Bizar-owned sessions, and edit settings (tray, stopped-session rows).\n \"omb hub\" is an alias.\n\n --new open the new-session picker immediately";
|
|
10
|
+
export declare function renderAgentsHub(sessions: OmbSessionInfo[], selected: number, options?: HubRenderOptions): string;
|
|
11
|
+
export declare function renderSettingsOverlay(settings: OmbSettings, selected: number): string;
|
|
12
|
+
/** Run the keyboard-first cross-project session manager. */
|
|
13
|
+
export declare function runAgentsHub(cwd?: string, _args?: string[], env?: NodeJS.ProcessEnv): Promise<number>;
|
|
14
|
+
export {};
|