@polderlabs/bizar-omp 0.7.0 → 0.7.2
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 +8 -4
- package/dist/cli/agents-ink.d.ts.map +1 -1
- package/dist/cli/agents-ink.js +5 -3
- package/dist/cli/agents-ink.js.map +1 -1
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +27 -9
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/doctor.d.ts +4 -4
- package/dist/cli/main.js +0 -0
- package/dist/cli/omb.js +0 -0
- package/dist/core/recovery.d.ts.map +1 -1
- package/dist/core/recovery.js +10 -5
- package/dist/core/recovery.js.map +1 -1
- package/dist/core/transitions.d.ts +4 -0
- package/dist/core/transitions.d.ts.map +1 -1
- package/dist/core/transitions.js +12 -2
- package/dist/core/transitions.js.map +1 -1
- package/dist/core/types.d.ts +46 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/extension.d.ts +4 -0
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +308 -23
- package/dist/extension.js.map +1 -1
- package/dist/omp/compatibility.d.ts +5 -5
- package/dist/omp/compatibility.d.ts.map +1 -1
- package/dist/omp/compatibility.js +2 -2
- package/dist/omp/compatibility.js.map +1 -1
- package/dist/omp/daemon-service.d.ts.map +1 -1
- package/dist/omp/daemon-service.js +54 -21
- package/dist/omp/daemon-service.js.map +1 -1
- package/dist/omp/daemon.d.ts.map +1 -1
- package/dist/omp/daemon.js +109 -21
- package/dist/omp/daemon.js.map +1 -1
- package/dist/omp/dashboard-html.js +5 -5
- package/dist/omp/dispatch-admission.js +1 -1
- package/dist/omp/dispatch-admission.js.map +1 -1
- package/dist/omp/model-role-assignment.d.ts +4 -0
- package/dist/omp/model-role-assignment.d.ts.map +1 -1
- package/dist/omp/model-role-assignment.js +52 -7
- package/dist/omp/model-role-assignment.js.map +1 -1
- package/dist/omp/omb-sessions.d.ts +65 -7
- package/dist/omp/omb-sessions.d.ts.map +1 -1
- package/dist/omp/omb-sessions.js +329 -34
- package/dist/omp/omb-sessions.js.map +1 -1
- package/dist/omp/omb-settings.d.ts +15 -1
- package/dist/omp/omb-settings.d.ts.map +1 -1
- package/dist/omp/omb-settings.js +107 -31
- package/dist/omp/omb-settings.js.map +1 -1
- package/dist/omp/rpc.d.ts +8 -0
- package/dist/omp/rpc.d.ts.map +1 -1
- package/dist/omp/session-activity.d.ts +5 -0
- package/dist/omp/session-activity.d.ts.map +1 -1
- package/dist/omp/session-activity.js +17 -0
- package/dist/omp/session-activity.js.map +1 -1
- package/dist/omp/tmux.d.ts +3 -1
- package/dist/omp/tmux.d.ts.map +1 -1
- package/dist/omp/tmux.js +195 -31
- package/dist/omp/tmux.js.map +1 -1
- package/dist/services/candidate-verify.d.ts.map +1 -1
- package/dist/services/candidate-verify.js +44 -1
- package/dist/services/candidate-verify.js.map +1 -1
- package/dist/services/inspector.d.ts +5 -1
- package/dist/services/inspector.d.ts.map +1 -1
- package/dist/services/inspector.js +11 -2
- package/dist/services/inspector.js.map +1 -1
- package/dist/services/native-review-ingest.d.ts +35 -0
- package/dist/services/native-review-ingest.d.ts.map +1 -0
- package/dist/services/native-review-ingest.js +14 -0
- package/dist/services/native-review-ingest.js.map +1 -0
- package/dist/storage/journal-recovery.js +1 -1
- package/dist/storage/journal-recovery.js.map +1 -1
- package/dist/storage/resources.js +1 -1
- package/dist/storage/resources.js.map +1 -1
- package/dist/tools/integrate.d.ts.map +1 -1
- package/dist/tools/integrate.js +13 -0
- package/dist/tools/integrate.js.map +1 -1
- package/dist/tools/workflow.d.ts +9 -0
- package/dist/tools/workflow.d.ts.map +1 -1
- package/dist/tools/workflow.js +25 -2
- package/dist/tools/workflow.js.map +1 -1
- package/docs/compatibility/baseline.json +8 -7
- package/docs/compatibility/supported-surfaces.json +2 -1
- package/docs/development/ci-release-implementation-guide.md +1261 -0
- package/docs/development/contributing-and-releasing.md +117 -0
- package/docs/development/omp-compatibility-update-guide.md +117 -0
- package/docs/releases/0.7.1.md +15 -0
- package/docs/releases/0.7.2.md +32 -0
- package/docs/releases/native-stable.md +11 -1
- package/docs/releases/npm-publishing.md +31 -4
- package/docs/releases/support-matrix.md +1 -1
- package/package.json +2 -1
- package/rules/oflow-gitlab.md +6 -0
- package/skills/oflow-gitlab-context/SKILL.md +49 -0
- package/skills/omp-native-development/SKILL.md +1 -1
- package/skills/omp-native-development/references/accuracy-and-versioning.md +1 -1
- package/skills/omp-native-development/references/source-manifest.json +3 -3
- package/dist/src/cli/agents-ink.d.ts +0 -25
- package/dist/src/cli/agents-ink.js +0 -517
- package/dist/src/cli/agents-ink.js.map +0 -1
- package/dist/src/cli/agents.d.ts +0 -14
- package/dist/src/cli/agents.js +0 -197
- package/dist/src/cli/agents.js.map +0 -1
- package/dist/src/cli/directory-selector.d.ts +0 -60
- package/dist/src/cli/directory-selector.js +0 -208
- package/dist/src/cli/directory-selector.js.map +0 -1
- package/dist/src/cli/doctor.d.ts +0 -41
- package/dist/src/cli/doctor.js +0 -31
- package/dist/src/cli/doctor.js.map +0 -1
- package/dist/src/cli/install.d.ts +0 -129
- package/dist/src/cli/install.js +0 -164
- package/dist/src/cli/install.js.map +0 -1
- package/dist/src/cli/main.d.ts +0 -2
- package/dist/src/cli/main.js +0 -117
- package/dist/src/cli/main.js.map +0 -1
- package/dist/src/cli/migrate.d.ts +0 -18
- package/dist/src/cli/migrate.js +0 -14
- package/dist/src/cli/migrate.js.map +0 -1
- package/dist/src/cli/omb-commands.d.ts +0 -29
- package/dist/src/cli/omb-commands.js +0 -107
- package/dist/src/cli/omb-commands.js.map +0 -1
- package/dist/src/cli/omb-daemon.d.ts +0 -2
- package/dist/src/cli/omb-daemon.js +0 -135
- package/dist/src/cli/omb-daemon.js.map +0 -1
- package/dist/src/cli/omb-dashboard.d.ts +0 -12
- package/dist/src/cli/omb-dashboard.js +0 -113
- package/dist/src/cli/omb-dashboard.js.map +0 -1
- package/dist/src/cli/omb-invocation.d.ts +0 -8
- package/dist/src/cli/omb-invocation.js +0 -41
- package/dist/src/cli/omb-invocation.js.map +0 -1
- package/dist/src/cli/omb-runtime.d.ts +0 -41
- package/dist/src/cli/omb-runtime.js +0 -371
- package/dist/src/cli/omb-runtime.js.map +0 -1
- package/dist/src/cli/omb-tray.d.ts +0 -2
- package/dist/src/cli/omb-tray.js +0 -38
- package/dist/src/cli/omb-tray.js.map +0 -1
- package/dist/src/cli/omb.d.ts +0 -2
- package/dist/src/cli/omb.js +0 -31
- package/dist/src/cli/omb.js.map +0 -1
- package/dist/src/cli/omp-theme.d.ts +0 -17
- package/dist/src/cli/omp-theme.js +0 -22
- package/dist/src/cli/omp-theme.js.map +0 -1
- package/dist/src/cli/process.d.ts +0 -6
- package/dist/src/cli/process.js +0 -54
- package/dist/src/cli/process.js.map +0 -1
- package/dist/src/cli/run.d.ts +0 -2
- package/dist/src/cli/run.js +0 -5
- package/dist/src/cli/run.js.map +0 -1
- package/dist/src/cli/setup-ui.d.ts +0 -37
- package/dist/src/cli/setup-ui.js +0 -90
- package/dist/src/cli/setup-ui.js.map +0 -1
- package/dist/src/core/acceptance.d.ts +0 -32
- package/dist/src/core/acceptance.js +0 -87
- package/dist/src/core/acceptance.js.map +0 -1
- package/dist/src/core/errors.d.ts +0 -20
- package/dist/src/core/errors.js +0 -30
- package/dist/src/core/errors.js.map +0 -1
- package/dist/src/core/evidence.d.ts +0 -10
- package/dist/src/core/evidence.js +0 -35
- package/dist/src/core/evidence.js.map +0 -1
- package/dist/src/core/policies.d.ts +0 -10
- package/dist/src/core/policies.js +0 -60
- package/dist/src/core/policies.js.map +0 -1
- package/dist/src/core/recovery.d.ts +0 -6
- package/dist/src/core/recovery.js +0 -56
- package/dist/src/core/recovery.js.map +0 -1
- package/dist/src/core/transitions.d.ts +0 -13
- package/dist/src/core/transitions.js +0 -59
- package/dist/src/core/transitions.js.map +0 -1
- package/dist/src/core/types.d.ts +0 -256
- package/dist/src/core/types.js +0 -2
- package/dist/src/core/types.js.map +0 -1
- package/dist/src/extension.d.ts +0 -60
- package/dist/src/extension.js +0 -538
- package/dist/src/extension.js.map +0 -1
- package/dist/src/index.d.ts +0 -29
- package/dist/src/index.js +0 -30
- package/dist/src/index.js.map +0 -1
- package/dist/src/omp/autonomous-settings.d.ts +0 -14
- package/dist/src/omp/autonomous-settings.js +0 -65
- package/dist/src/omp/autonomous-settings.js.map +0 -1
- package/dist/src/omp/capabilities.d.ts +0 -23
- package/dist/src/omp/capabilities.js +0 -6
- package/dist/src/omp/capabilities.js.map +0 -1
- package/dist/src/omp/compatibility.d.ts +0 -30
- package/dist/src/omp/compatibility.js +0 -34
- package/dist/src/omp/compatibility.js.map +0 -1
- package/dist/src/omp/completion.d.ts +0 -7
- package/dist/src/omp/completion.js +0 -10
- package/dist/src/omp/completion.js.map +0 -1
- package/dist/src/omp/config.d.ts +0 -10
- package/dist/src/omp/config.js +0 -14
- package/dist/src/omp/config.js.map +0 -1
- package/dist/src/omp/context.d.ts +0 -15
- package/dist/src/omp/context.js +0 -3
- package/dist/src/omp/context.js.map +0 -1
- package/dist/src/omp/daemon-service.d.ts +0 -25
- package/dist/src/omp/daemon-service.js +0 -483
- package/dist/src/omp/daemon-service.js.map +0 -1
- package/dist/src/omp/daemon.d.ts +0 -48
- package/dist/src/omp/daemon.js +0 -194
- package/dist/src/omp/daemon.js.map +0 -1
- package/dist/src/omp/dashboard-html.d.ts +0 -3
- package/dist/src/omp/dashboard-html.js +0 -419
- package/dist/src/omp/dashboard-html.js.map +0 -1
- package/dist/src/omp/dispatch-admission.d.ts +0 -2
- package/dist/src/omp/dispatch-admission.js +0 -12
- package/dist/src/omp/dispatch-admission.js.map +0 -1
- package/dist/src/omp/integration-recovery.d.ts +0 -10
- package/dist/src/omp/integration-recovery.js +0 -18
- package/dist/src/omp/integration-recovery.js.map +0 -1
- package/dist/src/omp/isolation-policy.d.ts +0 -14
- package/dist/src/omp/isolation-policy.js +0 -9
- package/dist/src/omp/isolation-policy.js.map +0 -1
- package/dist/src/omp/lifecycle.d.ts +0 -14
- package/dist/src/omp/lifecycle.js +0 -14
- package/dist/src/omp/lifecycle.js.map +0 -1
- package/dist/src/omp/memory.d.ts +0 -16
- package/dist/src/omp/memory.js +0 -4
- package/dist/src/omp/memory.js.map +0 -1
- package/dist/src/omp/model-role-assignment.d.ts +0 -296
- package/dist/src/omp/model-role-assignment.js +0 -559
- package/dist/src/omp/model-role-assignment.js.map +0 -1
- package/dist/src/omp/model-roles.d.ts +0 -19
- package/dist/src/omp/model-roles.js +0 -6
- package/dist/src/omp/model-roles.js.map +0 -1
- package/dist/src/omp/omb-sessions.d.ts +0 -122
- package/dist/src/omp/omb-sessions.js +0 -512
- package/dist/src/omp/omb-sessions.js.map +0 -1
- package/dist/src/omp/omb-settings.d.ts +0 -35
- package/dist/src/omp/omb-settings.js +0 -104
- package/dist/src/omp/omb-settings.js.map +0 -1
- package/dist/src/omp/result-reconciliation.d.ts +0 -2
- package/dist/src/omp/result-reconciliation.js +0 -9
- package/dist/src/omp/result-reconciliation.js.map +0 -1
- package/dist/src/omp/rpc.d.ts +0 -67
- package/dist/src/omp/rpc.js +0 -4
- package/dist/src/omp/rpc.js.map +0 -1
- package/dist/src/omp/run-log.d.ts +0 -25
- package/dist/src/omp/run-log.js +0 -24
- package/dist/src/omp/run-log.js.map +0 -1
- package/dist/src/omp/session-activity.d.ts +0 -70
- package/dist/src/omp/session-activity.js +0 -361
- package/dist/src/omp/session-activity.js.map +0 -1
- package/dist/src/omp/session-controls.d.ts +0 -17
- package/dist/src/omp/session-controls.js +0 -14
- package/dist/src/omp/session-controls.js.map +0 -1
- package/dist/src/omp/tmux.d.ts +0 -89
- package/dist/src/omp/tmux.js +0 -445
- package/dist/src/omp/tmux.js.map +0 -1
- package/dist/src/omp/tray-icons.d.ts +0 -5
- package/dist/src/omp/tray-icons.js +0 -78
- package/dist/src/omp/tray-icons.js.map +0 -1
- package/dist/src/omp/tray.d.ts +0 -23
- package/dist/src/omp/tray.js +0 -167
- package/dist/src/omp/tray.js.map +0 -1
- package/dist/src/services/budget.d.ts +0 -19
- package/dist/src/services/budget.js +0 -10
- package/dist/src/services/budget.js.map +0 -1
- package/dist/src/services/candidate-local.d.ts +0 -13
- package/dist/src/services/candidate-local.js +0 -15
- package/dist/src/services/candidate-local.js.map +0 -1
- package/dist/src/services/candidates.d.ts +0 -20
- package/dist/src/services/candidates.js +0 -100
- package/dist/src/services/candidates.js.map +0 -1
- package/dist/src/services/evidence-bundle.d.ts +0 -17
- package/dist/src/services/evidence-bundle.js +0 -21
- package/dist/src/services/evidence-bundle.js.map +0 -1
- package/dist/src/services/inspector.d.ts +0 -11
- package/dist/src/services/inspector.js +0 -6
- package/dist/src/services/inspector.js.map +0 -1
- package/dist/src/services/lessons.d.ts +0 -13
- package/dist/src/services/lessons.js +0 -11
- package/dist/src/services/lessons.js.map +0 -1
- package/dist/src/services/projection.d.ts +0 -21
- package/dist/src/services/projection.js +0 -10
- package/dist/src/services/projection.js.map +0 -1
- package/dist/src/services/readiness.d.ts +0 -4
- package/dist/src/services/readiness.js +0 -35
- package/dist/src/services/readiness.js.map +0 -1
- package/dist/src/services/recipes.d.ts +0 -15
- package/dist/src/services/recipes.js +0 -42
- package/dist/src/services/recipes.js.map +0 -1
- package/dist/src/services/recovery.d.ts +0 -19
- package/dist/src/services/recovery.js +0 -9
- package/dist/src/services/recovery.js.map +0 -1
- package/dist/src/services/review.d.ts +0 -15
- package/dist/src/services/review.js +0 -9
- package/dist/src/services/review.js.map +0 -1
- package/dist/src/storage/journal-recovery.d.ts +0 -10
- package/dist/src/storage/journal-recovery.js +0 -33
- package/dist/src/storage/journal-recovery.js.map +0 -1
- package/dist/src/storage/journal.d.ts +0 -12
- package/dist/src/storage/journal.js +0 -82
- package/dist/src/storage/journal.js.map +0 -1
- package/dist/src/storage/migrations.d.ts +0 -22
- package/dist/src/storage/migrations.js +0 -107
- package/dist/src/storage/migrations.js.map +0 -1
- package/dist/src/storage/repository-identity.d.ts +0 -11
- package/dist/src/storage/repository-identity.js +0 -67
- package/dist/src/storage/repository-identity.js.map +0 -1
- package/dist/src/storage/resources.d.ts +0 -66
- package/dist/src/storage/resources.js +0 -148
- package/dist/src/storage/resources.js.map +0 -1
- package/dist/src/tools/evidence.d.ts +0 -8
- package/dist/src/tools/evidence.js +0 -9
- package/dist/src/tools/evidence.js.map +0 -1
- package/dist/src/tools/integrate.d.ts +0 -13
- package/dist/src/tools/integrate.js +0 -90
- package/dist/src/tools/integrate.js.map +0 -1
- package/dist/src/tools/result.d.ts +0 -9
- package/dist/src/tools/result.js +0 -2
- package/dist/src/tools/result.js.map +0 -1
- package/dist/src/tools/verify.d.ts +0 -13
- package/dist/src/tools/verify.js +0 -61
- package/dist/src/tools/verify.js.map +0 -1
- package/dist/src/tools/workflow.d.ts +0 -8
- package/dist/src/tools/workflow.js +0 -65
- package/dist/src/tools/workflow.js.map +0 -1
- package/dist/src/workflows/direct.d.ts +0 -9
- package/dist/src/workflows/direct.js +0 -2
- package/dist/src/workflows/direct.js.map +0 -1
- package/dist/src/workflows/implement.d.ts +0 -2
- package/dist/src/workflows/implement.js +0 -4
- package/dist/src/workflows/implement.js.map +0 -1
- package/dist/src/workflows/plan.d.ts +0 -17
- package/dist/src/workflows/plan.js +0 -6
- package/dist/src/workflows/plan.js.map +0 -1
- package/dist/src/workflows/research.d.ts +0 -15
- package/dist/src/workflows/research.js +0 -2
- package/dist/src/workflows/research.js.map +0 -1
- package/dist/src/workflows/review.d.ts +0 -15
- package/dist/src/workflows/review.js +0 -2
- package/dist/src/workflows/review.js.map +0 -1
- package/dist/src/workflows/verify.d.ts +0 -9
- package/dist/src/workflows/verify.js +0 -2
- package/dist/src/workflows/verify.js.map +0 -1
- package/dist/tests/acceptance.test.d.ts +0 -1
- package/dist/tests/acceptance.test.js +0 -27
- package/dist/tests/acceptance.test.js.map +0 -1
- package/dist/tests/agents.test.d.ts +0 -1
- package/dist/tests/agents.test.js +0 -369
- package/dist/tests/agents.test.js.map +0 -1
- package/dist/tests/candidates.test.d.ts +0 -1
- package/dist/tests/candidates.test.js +0 -60
- package/dist/tests/candidates.test.js.map +0 -1
- package/dist/tests/core.test.d.ts +0 -1
- package/dist/tests/core.test.js +0 -39
- package/dist/tests/core.test.js.map +0 -1
- package/dist/tests/daemon.test.d.ts +0 -1
- package/dist/tests/daemon.test.js +0 -157
- package/dist/tests/daemon.test.js.map +0 -1
- package/dist/tests/dashboard.test.d.ts +0 -1
- package/dist/tests/dashboard.test.js +0 -414
- package/dist/tests/dashboard.test.js.map +0 -1
- package/dist/tests/directory-selector.test.d.ts +0 -1
- package/dist/tests/directory-selector.test.js +0 -93
- package/dist/tests/directory-selector.test.js.map +0 -1
- package/dist/tests/doctor.test.d.ts +0 -1
- package/dist/tests/doctor.test.js +0 -32
- package/dist/tests/doctor.test.js.map +0 -1
- package/dist/tests/install.test.d.ts +0 -1
- package/dist/tests/install.test.js +0 -101
- package/dist/tests/install.test.js.map +0 -1
- package/dist/tests/integration.test.d.ts +0 -1
- package/dist/tests/integration.test.js +0 -49
- package/dist/tests/integration.test.js.map +0 -1
- package/dist/tests/journal.test.d.ts +0 -1
- package/dist/tests/journal.test.js +0 -50
- package/dist/tests/journal.test.js.map +0 -1
- package/dist/tests/model-role-assignment.test.d.ts +0 -1
- package/dist/tests/model-role-assignment.test.js +0 -294
- package/dist/tests/model-role-assignment.test.js.map +0 -1
- package/dist/tests/omb-runtime.test.d.ts +0 -1
- package/dist/tests/omb-runtime.test.js +0 -554
- package/dist/tests/omb-runtime.test.js.map +0 -1
- package/dist/tests/omb-session-actions.test.d.ts +0 -1
- package/dist/tests/omb-session-actions.test.js +0 -191
- package/dist/tests/omb-session-actions.test.js.map +0 -1
- package/dist/tests/omb-settings.test.d.ts +0 -1
- package/dist/tests/omb-settings.test.js +0 -82
- package/dist/tests/omb-settings.test.js.map +0 -1
- package/dist/tests/omp-contract.test.d.ts +0 -1
- package/dist/tests/omp-contract.test.js +0 -362
- package/dist/tests/omp-contract.test.js.map +0 -1
- package/dist/tests/process.test.d.ts +0 -1
- package/dist/tests/process.test.js +0 -12
- package/dist/tests/process.test.js.map +0 -1
- package/dist/tests/psmux-windows.test.d.ts +0 -1
- package/dist/tests/psmux-windows.test.js +0 -105
- package/dist/tests/psmux-windows.test.js.map +0 -1
- package/dist/tests/recovery.test.d.ts +0 -1
- package/dist/tests/recovery.test.js +0 -9
- package/dist/tests/recovery.test.js.map +0 -1
- package/dist/tests/resources.test.d.ts +0 -1
- package/dist/tests/resources.test.js +0 -55
- package/dist/tests/resources.test.js.map +0 -1
- package/dist/tests/session-activity.test.d.ts +0 -1
- package/dist/tests/session-activity.test.js +0 -159
- package/dist/tests/session-activity.test.js.map +0 -1
- package/dist/tests/setup-ui.test.d.ts +0 -1
- package/dist/tests/setup-ui.test.js +0 -37
- package/dist/tests/setup-ui.test.js.map +0 -1
- package/dist/tests/storage-integrity.test.d.ts +0 -1
- package/dist/tests/storage-integrity.test.js +0 -88
- package/dist/tests/storage-integrity.test.js.map +0 -1
- package/dist/tests/tmux.test.d.ts +0 -1
- package/dist/tests/tmux.test.js +0 -239
- package/dist/tests/tmux.test.js.map +0 -1
- package/dist/tests/tray.test.d.ts +0 -1
- package/dist/tests/tray.test.js +0 -37
- package/dist/tests/tray.test.js.map +0 -1
- package/dist/tests/verification.test.d.ts +0 -1
- package/dist/tests/verification.test.js +0 -61
- package/dist/tests/verification.test.js.map +0 -1
- package/dist/tests/workflow-features.test.d.ts +0 -1
- package/dist/tests/workflow-features.test.js +0 -82
- package/dist/tests/workflow-features.test.js.map +0 -1
- package/dist/tests/workflow-safety.test.d.ts +0 -1
- package/dist/tests/workflow-safety.test.js +0 -57
- package/dist/tests/workflow-safety.test.js.map +0 -1
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { execFileSync } from "node:child_process";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import extension from "../src/extension.js";
|
|
7
|
-
import { loadOmbSettings } from "../src/omp/omb-settings.js";
|
|
8
|
-
import { result } from "../src/tools/result.js";
|
|
9
|
-
import { admitDispatch } from "../src/omp/dispatch-admission.js";
|
|
10
|
-
import { reconcileResult } from "../src/omp/result-reconciliation.js";
|
|
11
|
-
import { createRun, addWorkItem } from "../src/core/transitions.js";
|
|
12
|
-
import { classifyRoute } from "../src/core/policies.js";
|
|
13
|
-
function gitProject() { const root = mkdtempSync(join(tmpdir(), "bizar-omp-project-")); execFileSync("git", ["init", "-q", root]); execFileSync("git", ["-C", root, "config", "user.email", "test@example.invalid"]); execFileSync("git", ["-C", root, "config", "user.name", "Bizar Test"]); execFileSync("git", ["-C", root, "commit", "--allow-empty", "-qm", "init"]); return root; }
|
|
14
|
-
function fakeSchema(kind, value) { return { kind, value, optional: () => fakeSchema(kind, value) }; }
|
|
15
|
-
function fakeZod() {
|
|
16
|
-
return {
|
|
17
|
-
string: () => fakeSchema("string"), boolean: () => fakeSchema("boolean"), array: (item) => fakeSchema("array", item), enum: (items) => fakeSchema("enum", items), union: (items) => fakeSchema("union", items), object: (shape) => fakeSchema("object", shape),
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function extensionHost(tools, handlers, commands = [], commandDefinitions = new Map(), extras = {}) {
|
|
21
|
-
return { zod: fakeZod(), registerTool: (tool) => tools.push(tool), registerCommand: (name, definition) => { commands.push(name); commandDefinitions.set(name, definition); }, on: (name, handler) => handlers.set(name, handler), ...extras };
|
|
22
|
-
}
|
|
23
|
-
/** The extension reads OMP settings from process.env, so keep that I/O in a scratch config root. */
|
|
24
|
-
function isolatedConfigHome() {
|
|
25
|
-
const root = mkdtempSync(join(tmpdir(), "bizar-omp-config-"));
|
|
26
|
-
vi.stubEnv("XDG_CONFIG_HOME", root);
|
|
27
|
-
return root;
|
|
28
|
-
}
|
|
29
|
-
describe("OMP contracts", () => {
|
|
30
|
-
afterEach(() => { vi.unstubAllEnvs(); });
|
|
31
|
-
it("registers workflow and inspectable feature tools without runtime side effects", () => {
|
|
32
|
-
const tools = [];
|
|
33
|
-
const commands = [];
|
|
34
|
-
const events = new Map();
|
|
35
|
-
extension(extensionHost(tools, events, commands));
|
|
36
|
-
expect(tools.map(tool => tool.name)).toEqual(["bizar_workflow", "bizar_verify", "bizar_evidence", "bizar_integrate", "bizar_recipe_preview", "bizar_inspect", "bizar_capabilities", "bizar_apply_model_roles"]);
|
|
37
|
-
expect(commands).toEqual(["bizar", "bizar-dashboard", "bizar-models"]);
|
|
38
|
-
expect(events.has("session_start")).toBe(true);
|
|
39
|
-
expect(events.has("before_agent_start")).toBe(true);
|
|
40
|
-
const workflow = tools.find(tool => tool.name === "bizar_workflow");
|
|
41
|
-
expect(workflow.parameters.value.action.value).toContain("complete");
|
|
42
|
-
expect(workflow.parameters.value.action.value).toContain("accept-work");
|
|
43
|
-
expect(workflow.parameters.value.requiredChecks.kind).toBe("array");
|
|
44
|
-
});
|
|
45
|
-
it("dispatches the dashboard command through the host exec capability", async () => {
|
|
46
|
-
const root = mkdtempSync(join(tmpdir(), "bizar-dashboard-cli-"));
|
|
47
|
-
const bin = join(root, "omb");
|
|
48
|
-
writeFileSync(bin, "#!/bin/sh\nexit 0\n", { mode: 0o755 });
|
|
49
|
-
const previousPath = process.env.PATH;
|
|
50
|
-
process.env.PATH = root;
|
|
51
|
-
try {
|
|
52
|
-
const tools = [];
|
|
53
|
-
const events = new Map();
|
|
54
|
-
const commands = [];
|
|
55
|
-
const definitions = new Map();
|
|
56
|
-
const calls = [];
|
|
57
|
-
const exec = async (command, args) => {
|
|
58
|
-
calls.push({ command, args });
|
|
59
|
-
return args[1] === "stop"
|
|
60
|
-
? { code: 0, stdout: "dashboard stopped (daemon stopped)\n" }
|
|
61
|
-
: { code: 0, stdout: JSON.stringify({ url: "http://127.0.0.1:44047/dash?oc=abc", port: 44047, pid: 42, code: "abc" }) };
|
|
62
|
-
};
|
|
63
|
-
extension(extensionHost(tools, events, commands, definitions, { exec }));
|
|
64
|
-
const notices = [];
|
|
65
|
-
const ctx = { cwd: process.cwd(), ui: { notify: (message, level) => notices.push({ message, level }) } };
|
|
66
|
-
await definitions.get("bizar-dashboard").handler("", ctx);
|
|
67
|
-
expect(calls.at(-1)?.args).toEqual(["dashboard", "--json"]);
|
|
68
|
-
expect(notices.at(-1)?.message).toContain("http://127.0.0.1:44047/dash?oc=abc");
|
|
69
|
-
await definitions.get("bizar-dashboard").handler("open", ctx);
|
|
70
|
-
expect(calls.at(-1)?.args).toEqual(["dashboard", "--open", "--json"]);
|
|
71
|
-
await definitions.get("bizar-dashboard").handler("stop", ctx);
|
|
72
|
-
expect(calls.at(-1)?.args).toEqual(["dashboard", "stop"]);
|
|
73
|
-
expect(notices.at(-1)?.message).toBe("dashboard stopped (daemon stopped)");
|
|
74
|
-
await definitions.get("bizar-dashboard").handler("nonsense", ctx);
|
|
75
|
-
expect(notices.at(-1)?.level).toBe("error");
|
|
76
|
-
expect(calls.at(-1)?.args).toEqual(["dashboard", "stop"]);
|
|
77
|
-
}
|
|
78
|
-
finally {
|
|
79
|
-
if (previousPath === undefined)
|
|
80
|
-
delete process.env.PATH;
|
|
81
|
-
else
|
|
82
|
-
process.env.PATH = previousPath;
|
|
83
|
-
rmSync(root, { recursive: true, force: true });
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
it("admits isolated managed dispatch with apply and merge disabled", () => {
|
|
87
|
-
let run = createRun("p", { objective: "implement", nonGoals: [], constraints: [], acceptanceCriteria: ["done"], verificationPlan: [], stopConditions: [], userRestrictions: [] });
|
|
88
|
-
run = addWorkItem(run, { title: "write", role: "bizar-implementer", scope: ["src"], dependencies: [], acceptanceCriteria: ["done"], verificationPlan: [] });
|
|
89
|
-
const intent = admitDispatch(run, run.workItems[0], classifyRoute({ text: "write", role: "bizar-implementer", files: ["src/a.ts"] }), "restricted-managed", "parent");
|
|
90
|
-
expect(intent).toMatchObject({ isolation: "required", apply: false, merge: false, status: "admitted" });
|
|
91
|
-
expect(reconcileResult(intent, { dispatchId: intent.id, sourceEvent: "ack", sequence: 1, status: "running", artifactRefs: [], observedAt: "now" }).status).toBe("acknowledged");
|
|
92
|
-
});
|
|
93
|
-
it("binds lifecycle handlers to a temporary Git project", async () => {
|
|
94
|
-
const root = gitProject();
|
|
95
|
-
try {
|
|
96
|
-
const tools = [];
|
|
97
|
-
const handlers = new Map();
|
|
98
|
-
extension(extensionHost(tools, handlers));
|
|
99
|
-
await handlers.get("session_start")({}, { cwd: root, sessionManager: { getSessionFile: () => "session-1" } });
|
|
100
|
-
const workflow = tools.find(tool => tool.name === "bizar_workflow");
|
|
101
|
-
const output = await workflow.execute("call-1", { action: "start", objective: "build a feature" }, new AbortController().signal, undefined, { cwd: root, sessionManager: { getSessionFile: () => "session-1" } });
|
|
102
|
-
expect(output.details.run.phase).toBe("created");
|
|
103
|
-
expect(output.details.run.nativeSessionId).toBe("session-1");
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
rmSync(root, { recursive: true, force: true });
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
it("uses local state when the session starts outside Git or before its first commit", async () => {
|
|
110
|
-
const root = mkdtempSync(join(tmpdir(), "bizar-omp-no-git-"));
|
|
111
|
-
const unbornRoot = mkdtempSync(join(tmpdir(), "bizar-omp-unborn-"));
|
|
112
|
-
try {
|
|
113
|
-
const tools = [];
|
|
114
|
-
const handlers = new Map();
|
|
115
|
-
extension(extensionHost(tools, handlers));
|
|
116
|
-
await expect(handlers.get("session_start")({}, { cwd: root, sessionManager: { getSessionFile: () => "session-no-git" } })).resolves.toBeUndefined();
|
|
117
|
-
const workflow = tools.find(tool => tool.name === "bizar_workflow");
|
|
118
|
-
const output = await workflow.execute("call-1", { action: "start", objective: "work" }, undefined, undefined, { cwd: root, sessionManager: { getSessionFile: () => "session-no-git" } });
|
|
119
|
-
expect(output.isError).toBeUndefined();
|
|
120
|
-
expect(output.details.run.nativeSessionId).toBe("session-no-git");
|
|
121
|
-
execFileSync("git", ["init", "-q", unbornRoot]);
|
|
122
|
-
await expect(handlers.get("session_start")({}, { cwd: unbornRoot, sessionManager: { getSessionFile: () => "session-unborn" } })).resolves.toBeUndefined();
|
|
123
|
-
}
|
|
124
|
-
finally {
|
|
125
|
-
rmSync(root, { recursive: true, force: true });
|
|
126
|
-
rmSync(unbornRoot, { recursive: true, force: true });
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
it("does not prevent OMP startup when settings mutation fails", async () => {
|
|
130
|
-
const tools = [];
|
|
131
|
-
const handlers = new Map();
|
|
132
|
-
const notifications = [];
|
|
133
|
-
const settings = { modelRoles: {}, modelTags: {}, cycleOrder: [] };
|
|
134
|
-
extension(extensionHost(tools, handlers, [], new Map(), { pi: { settings: { get: (path) => settings[path], set: () => { throw new Error("settings are read-only"); } } } }));
|
|
135
|
-
await expect(handlers.get("session_start")({}, { ui: { notify: (message, level) => notifications.push({ message, level }) } })).resolves.toBeUndefined();
|
|
136
|
-
expect(notifications).toEqual([{ message: expect.stringContaining("continuing without the failed setting update"), level: "warning" }]);
|
|
137
|
-
});
|
|
138
|
-
it("never takes terminal ownership from a direct OMP session", async () => {
|
|
139
|
-
const tools = [];
|
|
140
|
-
const handlers = new Map();
|
|
141
|
-
let shutdownCalled = false;
|
|
142
|
-
extension(extensionHost(tools, handlers));
|
|
143
|
-
await handlers.get("session_start")({}, { shutdown: () => { shutdownCalled = true; } });
|
|
144
|
-
expect(shutdownCalled).toBe(false);
|
|
145
|
-
});
|
|
146
|
-
it("rebinds tools after a session switch instead of reusing the prior session", async () => {
|
|
147
|
-
const firstRoot = gitProject();
|
|
148
|
-
const secondRoot = gitProject();
|
|
149
|
-
try {
|
|
150
|
-
const tools = [];
|
|
151
|
-
const handlers = new Map();
|
|
152
|
-
extension(extensionHost(tools, handlers));
|
|
153
|
-
await handlers.get("session_start")({}, { cwd: firstRoot, sessionManager: { getSessionFile: () => "session-a" } });
|
|
154
|
-
const workflow = tools.find(tool => tool.name === "bizar_workflow");
|
|
155
|
-
const first = await workflow.execute("call-a", { action: "start", objective: "first" }, undefined, undefined, { cwd: firstRoot, sessionManager: { getSessionFile: () => "session-a" } });
|
|
156
|
-
await handlers.get("session_before_switch")({}, { cwd: firstRoot, sessionManager: { getSessionFile: () => "session-a" } });
|
|
157
|
-
const second = await workflow.execute("call-b", { action: "start", objective: "second" }, undefined, undefined, { cwd: secondRoot, sessionManager: { getSessionFile: () => "session-b" } });
|
|
158
|
-
expect(first.details.run.nativeSessionId).toBe("session-a");
|
|
159
|
-
expect(second.details.run.nativeSessionId).toBe("session-b");
|
|
160
|
-
}
|
|
161
|
-
finally {
|
|
162
|
-
rmSync(firstRoot, { recursive: true, force: true });
|
|
163
|
-
rmSync(secondRoot, { recursive: true, force: true });
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
it("injects autonomous guidance into the native system prompt and marks tool failures", () => {
|
|
167
|
-
const tools = [];
|
|
168
|
-
const handlers = new Map();
|
|
169
|
-
extension(extensionHost(tools, handlers));
|
|
170
|
-
const injected = handlers.get("before_agent_start")({ systemPrompt: ["base"] }, {});
|
|
171
|
-
expect(injected.systemPrompt).toEqual(expect.arrayContaining(["base"]));
|
|
172
|
-
expect(injected.systemPrompt.at(-1)).toContain("explicitly requests a goal");
|
|
173
|
-
expect(result({ error: "failed" }, true).isError).toBe(true);
|
|
174
|
-
});
|
|
175
|
-
it("reports configured Bizar model roles healthy and ignores unrelated roles", async () => {
|
|
176
|
-
const tools = [];
|
|
177
|
-
const handlers = new Map();
|
|
178
|
-
const commands = new Map();
|
|
179
|
-
const notifications = [];
|
|
180
|
-
const settings = { modelRoles: { bizar_review: "openai/strong", bizar_research: "anthropic/fast", operator_role: "@default" } };
|
|
181
|
-
extension(extensionHost(tools, handlers, [], commands, { pi: { settings: { get: (path) => settings[path] } } }));
|
|
182
|
-
await commands.get("bizar").handler("model-roles health", { models: { resolve: (selector) => selector === "openai/strong" || selector === "anthropic/fast" ? { id: selector } : undefined }, ui: { notify: (message, level) => notifications.push({ message, level }) } });
|
|
183
|
-
expect(notifications).toEqual([{ message: "Bizar model-role health: 2 configured roles are healthy.", level: "info" }]);
|
|
184
|
-
});
|
|
185
|
-
it("reports each unresolved configured Bizar model role", async () => {
|
|
186
|
-
const tools = [];
|
|
187
|
-
const handlers = new Map();
|
|
188
|
-
const commands = new Map();
|
|
189
|
-
const notifications = [];
|
|
190
|
-
const settings = { modelRoles: { bizar_review: "openai/missing", operator_role: "unrelated/missing", bizar_research: "anthropic/missing" } };
|
|
191
|
-
extension(extensionHost(tools, handlers, [], commands, { pi: { settings: { get: (path) => settings[path] } } }));
|
|
192
|
-
await commands.get("bizar").handler("model-roles health", { models: { resolve: () => undefined }, ui: { notify: (message, level) => notifications.push({ message, level }) } });
|
|
193
|
-
expect(notifications).toEqual([{ message: "OMP could not resolve configured Bizar model roles: bizar_review=openai/missing, bizar_research=anthropic/missing", level: "error" }]);
|
|
194
|
-
});
|
|
195
|
-
it("reports malformed Bizar selectors while ignoring malformed unrelated roles", async () => {
|
|
196
|
-
const tools = [];
|
|
197
|
-
const handlers = new Map();
|
|
198
|
-
const commands = new Map();
|
|
199
|
-
const notifications = [];
|
|
200
|
-
const settings = { modelRoles: { bizar_review: 42, operator_role: false } };
|
|
201
|
-
extension(extensionHost(tools, handlers, [], commands, { pi: { settings: { get: (path) => settings[path] } } }));
|
|
202
|
-
await commands.get("bizar").handler("model-roles health", { models: { resolve: () => undefined }, ui: { notify: (message, level) => notifications.push({ message, level }) } });
|
|
203
|
-
expect(notifications).toEqual([{ message: "Configured Bizar model role has a malformed selector: bizar_review=42", level: "error" }]);
|
|
204
|
-
});
|
|
205
|
-
it("reports an actionable error when OMP has no model resolver", async () => {
|
|
206
|
-
const tools = [];
|
|
207
|
-
const handlers = new Map();
|
|
208
|
-
const commands = new Map();
|
|
209
|
-
const notifications = [];
|
|
210
|
-
const settings = { modelRoles: { bizar_review: "openai/strong" } };
|
|
211
|
-
extension(extensionHost(tools, handlers, [], commands, { pi: { settings: { get: (path) => settings[path] } } }));
|
|
212
|
-
await commands.get("bizar").handler("model-roles health", { models: {}, ui: { notify: (message, level) => notifications.push({ message, level }) } });
|
|
213
|
-
expect(notifications).toEqual([{ message: "OMP model resolver is unavailable; cannot verify configured Bizar model roles", level: "error" }]);
|
|
214
|
-
});
|
|
215
|
-
it("registers visible Bizar roles and keeps a compact compatibility fallback", async () => {
|
|
216
|
-
const tools = [];
|
|
217
|
-
const handlers = new Map();
|
|
218
|
-
const commands = new Map();
|
|
219
|
-
const notifications = [];
|
|
220
|
-
const messages = [];
|
|
221
|
-
const settings = { modelRoleStorage: "global", modelRoles: { operator_role: "@default" }, modelTags: {}, cycleOrder: ["smol", "default", "slow"] };
|
|
222
|
-
extension(extensionHost(tools, handlers, [], commands, { pi: { settings: { get: (path) => settings[path], set: (path, value) => { settings[path] = value; } } }, sendUserMessage: (message) => messages.push(message) }));
|
|
223
|
-
await handlers.get("session_start")({}, {});
|
|
224
|
-
await commands.get("bizar").handler("model-roles", { ui: { notify: (message) => notifications.push(message) } });
|
|
225
|
-
await commands.get("bizar-models").handler("", { ui: { notify: (message) => notifications.push(message) } });
|
|
226
|
-
expect(settings.modelRoles.operator_role).toBe("@default");
|
|
227
|
-
expect(settings.modelRoles.bizar_review).toBe("@slow");
|
|
228
|
-
expect(settings.modelTags.bizar_research.name).toBe("Bizar Research");
|
|
229
|
-
expect(settings.cycleOrder).toContain("bizar_research");
|
|
230
|
-
expect(settings["async.enabled"]).toBe(true);
|
|
231
|
-
expect(settings["advisor.enabled"]).toBe(true);
|
|
232
|
-
expect(settings.hideThinkingBlock).toBe(true);
|
|
233
|
-
expect(settings["display.hideToolActivity"]).toBe(true);
|
|
234
|
-
expect(settings["display.pinnedAgents"]).toBe("full");
|
|
235
|
-
expect(settings["task.batch"]).toBe(true);
|
|
236
|
-
expect(settings["collab.autoStart"]).toBe("control");
|
|
237
|
-
expect(settings.modelRoles.bizar_orchestrator).toBe("@default");
|
|
238
|
-
expect(settings.modelRoles.bizar_advisor).toBe("@advisor");
|
|
239
|
-
expect(messages[0]).toContain("current available model catalog");
|
|
240
|
-
expect(messages[0]).not.toContain("never call .map");
|
|
241
|
-
expect(notifications[0]).toContain("compact mapping");
|
|
242
|
-
expect(notifications[1]).toContain("compact mapping");
|
|
243
|
-
});
|
|
244
|
-
it("hands the live catalog to the agent and persists only the distribution the agent approves", async () => {
|
|
245
|
-
const configRoot = isolatedConfigHome();
|
|
246
|
-
const tools = [];
|
|
247
|
-
const handlers = new Map();
|
|
248
|
-
const commands = new Map();
|
|
249
|
-
const notifications = [];
|
|
250
|
-
const messages = [];
|
|
251
|
-
const settings = { modelRoles: { operator_role: "@default", bizar_orchestrator: "test/stale" } };
|
|
252
|
-
const model = { provider: "test", id: "balanced", contextWindow: 256_000, maxTokens: 32_000, reasoning: true, thinking: ["low", "high"], input: ["text"], cost: { input: 0, output: 0 } };
|
|
253
|
-
extension(extensionHost(tools, handlers, [], commands, {
|
|
254
|
-
pi: { settings: { get: (path) => settings[path], set: (path, value) => { settings[path] = value; } } },
|
|
255
|
-
sendUserMessage: (message) => messages.push(message),
|
|
256
|
-
}));
|
|
257
|
-
const ctx = {
|
|
258
|
-
models: { list: () => [model], family: () => "test", resolve: (selector) => selector === "test/balanced" ? model : undefined },
|
|
259
|
-
ui: { notify: (message) => notifications.push(message) },
|
|
260
|
-
};
|
|
261
|
-
await commands.get("bizar-models").handler("", ctx);
|
|
262
|
-
// The command decides nothing by itself: it hands the live catalog to the agent.
|
|
263
|
-
expect(settings.modelRoles).toEqual({ operator_role: "@default", bizar_orchestrator: "test/stale" });
|
|
264
|
-
expect(messages).toHaveLength(1);
|
|
265
|
-
expect(messages[0]).toContain("AVAILABLE MODELS (1)");
|
|
266
|
-
expect(messages[0]).toContain("test/balanced");
|
|
267
|
-
// Existing assignments are re-evaluated rather than trusted.
|
|
268
|
-
expect(messages[0]).toContain("bizar_orchestrator = test/stale");
|
|
269
|
-
expect(messages[0]).toContain("bizar_apply_model_roles");
|
|
270
|
-
expect(notifications[0]).toContain("Re-evaluated 13 Bizar roles against 1 live models");
|
|
271
|
-
const apply = tools.find(tool => tool.name === "bizar_apply_model_roles");
|
|
272
|
-
const refused = await apply.execute("call-1", { assignment: [{ role: "bizar_orchestrator", selector: "test/missing" }] }, undefined, undefined, ctx);
|
|
273
|
-
expect(refused.details).toMatchObject({ applied: false });
|
|
274
|
-
expect(settings.modelRoles).toEqual({ operator_role: "@default", bizar_orchestrator: "test/stale" });
|
|
275
|
-
const applied = await apply.execute("call-2", { assignment: [{ role: "bizar_orchestrator", selector: "test/balanced" }] }, undefined, undefined, ctx);
|
|
276
|
-
expect(applied.details).toMatchObject({ applied: true });
|
|
277
|
-
expect(settings.modelRoles).toEqual({ operator_role: "@default", bizar_orchestrator: "test/balanced" });
|
|
278
|
-
// The catalog was recorded when it was observed, so the next run reports movement
|
|
279
|
-
// even for runs whose distribution was never applied.
|
|
280
|
-
expect(loadOmbSettings({ XDG_CONFIG_HOME: configRoot }).modelCatalog?.models.map(record => record.selector)).toEqual(["test/balanced"]);
|
|
281
|
-
messages.length = 0;
|
|
282
|
-
notifications.length = 0;
|
|
283
|
-
await commands.get("bizar-models").handler("", ctx);
|
|
284
|
-
expect(notifications[0]).toContain("0 added, 0 removed, 0 changed, 1 unchanged");
|
|
285
|
-
ctx.models.list = () => [model, { ...model, id: "fresh" }];
|
|
286
|
-
messages.length = 0;
|
|
287
|
-
notifications.length = 0;
|
|
288
|
-
await commands.get("bizar-models").handler("", ctx);
|
|
289
|
-
expect(notifications[0]).toContain("1 added");
|
|
290
|
-
expect(messages[0]).toContain("test/fresh");
|
|
291
|
-
});
|
|
292
|
-
it("keeps an applied distribution live when only the catalog observation cannot be recorded", async () => {
|
|
293
|
-
const configRoot = isolatedConfigHome();
|
|
294
|
-
// An unreadable settings file: writing bookkeeping must never clobber it, and
|
|
295
|
-
// the role mapping the agent approved must still be reported as applied.
|
|
296
|
-
const settingsPath = join(configRoot, "bizar-omp", "omb.json");
|
|
297
|
-
mkdirSync(join(configRoot, "bizar-omp"), { recursive: true });
|
|
298
|
-
writeFileSync(settingsPath, '{"mouseScrolling": fal');
|
|
299
|
-
const tools = [];
|
|
300
|
-
const handlers = new Map();
|
|
301
|
-
const commands = new Map();
|
|
302
|
-
const settings = { modelRoles: { operator_role: "@default" } };
|
|
303
|
-
const model = { provider: "test", id: "balanced", contextWindow: 256_000, maxTokens: 32_000, reasoning: true, thinking: ["low", "high"], input: ["text"], cost: { input: 0, output: 0 } };
|
|
304
|
-
extension(extensionHost(tools, handlers, [], commands, {
|
|
305
|
-
pi: { settings: { get: (path) => settings[path], set: (path, value) => { settings[path] = value; } } },
|
|
306
|
-
sendUserMessage: () => undefined,
|
|
307
|
-
}));
|
|
308
|
-
const ctx = { models: { list: () => [model], family: () => "test", resolve: (selector) => selector === "test/balanced" ? model : undefined }, ui: { notify: () => undefined } };
|
|
309
|
-
const apply = tools.find(tool => tool.name === "bizar_apply_model_roles");
|
|
310
|
-
const outcome = await apply.execute("call-1", { assignment: [{ role: "bizar_orchestrator", selector: "test/balanced" }] }, undefined, undefined, ctx);
|
|
311
|
-
expect(outcome.isError).not.toBe(true);
|
|
312
|
-
expect(outcome.details).toMatchObject({ applied: true, note: expect.stringContaining("not readable JSON") });
|
|
313
|
-
expect(settings.modelRoles).toEqual({ operator_role: "@default", bizar_orchestrator: "test/balanced" });
|
|
314
|
-
expect(readFileSync(settingsPath, "utf8")).toBe('{"mouseScrolling": fal');
|
|
315
|
-
});
|
|
316
|
-
it("previews the deterministic distribution without messaging an agent or writing settings", async () => {
|
|
317
|
-
isolatedConfigHome();
|
|
318
|
-
const tools = [];
|
|
319
|
-
const handlers = new Map();
|
|
320
|
-
const commands = new Map();
|
|
321
|
-
const notifications = [];
|
|
322
|
-
const messages = [];
|
|
323
|
-
const settings = { modelRoles: { operator_role: "@default" } };
|
|
324
|
-
const model = { provider: "test", id: "balanced", contextWindow: 256_000, maxTokens: 32_000, reasoning: true, thinking: ["low", "high"], input: ["text"], cost: { input: 0, output: 0 } };
|
|
325
|
-
extension(extensionHost(tools, handlers, [], commands, {
|
|
326
|
-
pi: { settings: { get: (path) => settings[path], set: (path, value) => { settings[path] = value; } } },
|
|
327
|
-
sendUserMessage: (message) => messages.push(message),
|
|
328
|
-
}));
|
|
329
|
-
await commands.get("bizar-models").handler("preview", {
|
|
330
|
-
models: { list: () => [model], family: () => "test", resolve: (selector) => selector === "test/balanced" ? model : undefined },
|
|
331
|
-
ui: { notify: (message) => notifications.push(message) },
|
|
332
|
-
});
|
|
333
|
-
expect(notifications[0]).toContain("bizar_orchestrator -> test/balanced");
|
|
334
|
-
expect(notifications[0]).toContain("Preview only: no agent was messaged and no settings were written.");
|
|
335
|
-
expect(messages).toEqual([]);
|
|
336
|
-
expect(settings.modelRoles).toEqual({ operator_role: "@default" });
|
|
337
|
-
await commands.get("bizar-models").handler("preview", { models: { list: () => [] }, ui: { notify: (message) => notifications.push(message) } });
|
|
338
|
-
expect(notifications.at(-1)).toContain("model catalog is unavailable or empty");
|
|
339
|
-
});
|
|
340
|
-
it("falls back to the local planner when the host has no agent messaging", async () => {
|
|
341
|
-
isolatedConfigHome();
|
|
342
|
-
const tools = [];
|
|
343
|
-
const handlers = new Map();
|
|
344
|
-
const commands = new Map();
|
|
345
|
-
const notifications = [];
|
|
346
|
-
const settings = { modelRoles: { operator_role: "@default" } };
|
|
347
|
-
const model = { provider: "test", id: "balanced", contextWindow: 256_000, maxTokens: 32_000, reasoning: true, thinking: ["low", "high"], input: ["text"], cost: { input: 0, output: 0 } };
|
|
348
|
-
extension(extensionHost(tools, handlers, [], commands, {
|
|
349
|
-
pi: { settings: { get: (path) => settings[path], set: (path, value) => { settings[path] = value; } } },
|
|
350
|
-
}));
|
|
351
|
-
await commands.get("bizar-models").handler("", {
|
|
352
|
-
models: { list: () => [model], family: () => "test", resolve: (selector) => selector === "test/balanced" ? model : undefined },
|
|
353
|
-
ui: { notify: (message) => notifications.push(message) },
|
|
354
|
-
});
|
|
355
|
-
const roles = settings.modelRoles;
|
|
356
|
-
expect(Object.keys(roles).filter(role => role.startsWith("bizar_"))).toHaveLength(13);
|
|
357
|
-
expect(roles.bizar_orchestrator).toBe("test/balanced");
|
|
358
|
-
expect(roles.bizar_security).toBe("test/balanced");
|
|
359
|
-
expect(notifications[0]).toContain("Assigned 13/13 Bizar roles from 1 available OMP models");
|
|
360
|
-
});
|
|
361
|
-
});
|
|
362
|
-
//# sourceMappingURL=omp-contract.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"omp-contract.test.js","sourceRoot":"","sources":["../../tests/omp-contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { runNpm } from "../src/cli/process.js";
|
|
3
|
-
describe("runNpm", () => {
|
|
4
|
-
it("executes npm and returns its output on Windows-style shim hosts", () => {
|
|
5
|
-
const output = runNpm(["--version"], { encoding: "utf8" });
|
|
6
|
-
expect(output.trim()).toMatch(/^\d+\.\d+\.\d+/);
|
|
7
|
-
});
|
|
8
|
-
it("propagates npm failures instead of hiding them", () => {
|
|
9
|
-
expect(() => runNpm(["not-a-real-subcommand"], { stdio: "pipe" })).toThrow();
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=process.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process.test.js","sourceRoot":"","sources":["../../tests/process.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAW,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { afterAll, describe, expect, it } from "vitest";
|
|
2
|
-
import { spawn } from "node:child_process";
|
|
3
|
-
import { mkdtempSync, rmSync } from "node:fs";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { listOmbSessions, resolveMultiplexerBin } from "../src/omp/omb-sessions.js";
|
|
7
|
-
import { deleteOmbSession, ombSessionName, renameOmbSession, setOmbSessionMouse, shouldLaunchOmbInTmux, } from "../src/omp/tmux.js";
|
|
8
|
-
/**
|
|
9
|
-
* Exercises the real tmux-compatible multiplexer (psmux on Windows, tmux
|
|
10
|
-
* elsewhere) end to end: create a Bizar-owned session, list it, rename it,
|
|
11
|
-
* toggle mouse, and kill it. Skipped when no multiplexer binary is available.
|
|
12
|
-
*/
|
|
13
|
-
const multiplexerAvailable = await new Promise(resolve => {
|
|
14
|
-
const child = spawn(resolveMultiplexerBin(), ["-V"], { stdio: "ignore" });
|
|
15
|
-
child.once("error", () => resolve(false));
|
|
16
|
-
child.once("close", code => resolve(code === 0));
|
|
17
|
-
});
|
|
18
|
-
const liveMultiplexer = multiplexerAvailable ? describe : describe.skip;
|
|
19
|
-
const scratch = mkdtempSync(join(tmpdir(), "bizar-psmux-live-"));
|
|
20
|
-
const heldSessions = [];
|
|
21
|
-
afterAll(async () => {
|
|
22
|
-
for (const session of heldSessions)
|
|
23
|
-
await deleteOmbSession(session, scratch);
|
|
24
|
-
// kill-session resolves before Windows releases the pane's conhost handles,
|
|
25
|
-
// so poll for the lock to clear instead of guessing a fixed delay; a locked
|
|
26
|
-
// %TEMP% scratch dir is disposable and must not fail the suite.
|
|
27
|
-
for (let attempt = 0; attempt < 10; attempt += 1) {
|
|
28
|
-
try {
|
|
29
|
-
rmSync(scratch, { recursive: true, force: true });
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
await new Promise(resolve => setImmediate(resolve));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
function runMultiplexer(args, env, cwd) {
|
|
38
|
-
return new Promise(resolve => {
|
|
39
|
-
const child = spawn(resolveMultiplexerBin(env), args, { cwd, env, stdio: "ignore" });
|
|
40
|
-
child.once("error", () => resolve(1));
|
|
41
|
-
child.once("close", code => resolve(code ?? 1));
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The hosted pane must outlive its creator on every platform the suite runs
|
|
46
|
-
* on: Windows parks on `cmd.exe /c pause`, POSIX has no cmd.exe and parks on a
|
|
47
|
-
* long sleep instead.
|
|
48
|
-
*/
|
|
49
|
-
const paneKeepAliveCommand = process.platform === "win32" ? ["cmd.exe", "/c", "pause"] : ["sleep", "600"];
|
|
50
|
-
describe("multiplexer resolution", () => {
|
|
51
|
-
it("prefers psmux on Windows and tmux elsewhere unless overridden", () => {
|
|
52
|
-
expect(resolveMultiplexerBin({})).toBe(process.platform === "win32" ? "psmux" : "tmux");
|
|
53
|
-
expect(resolveMultiplexerBin({ BIZAR_TMUX_BIN: "/custom/tmux" })).toBe("/custom/tmux");
|
|
54
|
-
});
|
|
55
|
-
it("keeps interactive TTY hosts eligible for the multiplexer boundary on Windows", () => {
|
|
56
|
-
if (process.platform !== "win32")
|
|
57
|
-
return;
|
|
58
|
-
expect(shouldLaunchOmbInTmux({ env: {}, stdinIsTTY: true, stdoutIsTTY: true, args: [] })).toBe(true);
|
|
59
|
-
expect(shouldLaunchOmbInTmux({ env: {}, stdinIsTTY: false, stdoutIsTTY: true, args: [] })).toBe(false);
|
|
60
|
-
expect(shouldLaunchOmbInTmux({ env: { BIZAR_OMP_NO_TMUX: "1" }, stdinIsTTY: true, stdoutIsTTY: true, args: [] })).toBe(false);
|
|
61
|
-
expect(shouldLaunchOmbInTmux({ env: { TMUX: "/tmp/tmux" }, stdinIsTTY: true, stdoutIsTTY: true, args: [] })).toBe(false);
|
|
62
|
-
expect(shouldLaunchOmbInTmux({ env: {}, stdinIsTTY: true, stdoutIsTTY: true, args: ["--print"] })).toBe(false);
|
|
63
|
-
expect(shouldLaunchOmbInTmux({ env: {}, stdinIsTTY: true, stdoutIsTTY: true, args: ["--mode", "rpc"] })).toBe(false);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
liveMultiplexer("live multiplexer session lifecycle", () => {
|
|
67
|
-
it("creates, lists, renames, and kills a Bizar-owned session", { timeout: 30000 }, async () => {
|
|
68
|
-
const session = ombSessionName(scratch, "psmux-live");
|
|
69
|
-
heldSessions.push(session);
|
|
70
|
-
const env = { ...process.env, BIZAR_OMP_NO_TMUX: "1" };
|
|
71
|
-
// listOmbSessions must tolerate a warm server that already hosts other
|
|
72
|
-
// Bizar sessions and one with zero sessions (psmux exits 0 with empty
|
|
73
|
-
// output where tmux exits 1).
|
|
74
|
-
const before = await listOmbSessions(scratch, env);
|
|
75
|
-
expect(before.find(item => item.name === session)).toBeUndefined();
|
|
76
|
-
// A pane that outlives its command: `pause` blocks until input, mirroring
|
|
77
|
-
// a durable host. A command that exits immediately would tear down the
|
|
78
|
-
// session and the whole server before the first assertion.
|
|
79
|
-
expect(await runMultiplexer(["new-session", "-d", "-s", session, "-c", scratch, ...paneKeepAliveCommand], env, scratch)).toBe(0);
|
|
80
|
-
const listed = await listOmbSessions(scratch, env);
|
|
81
|
-
const mine = listed.find(item => item.name === session);
|
|
82
|
-
expect(mine).toBeTruthy();
|
|
83
|
-
// Hub vocabulary (issue #30): live, no attached client, nothing in flight.
|
|
84
|
-
expect(mine?.state).toBe("disconnected");
|
|
85
|
-
await expect(setOmbSessionMouse(session, false, scratch, env)).resolves.toBe(0);
|
|
86
|
-
const renamed = `${session}-x`;
|
|
87
|
-
await expect(renameOmbSession(session, renamed, scratch, env)).resolves.toBe(0);
|
|
88
|
-
heldSessions.splice(heldSessions.indexOf(session), 1, renamed);
|
|
89
|
-
await expect(deleteOmbSession(renamed, scratch, env)).resolves.toBe(0);
|
|
90
|
-
heldSessions.splice(heldSessions.indexOf(renamed), 1);
|
|
91
|
-
const remaining = await listOmbSessions(scratch, env);
|
|
92
|
-
expect(remaining.find(item => item.name === renamed)).toBeUndefined();
|
|
93
|
-
});
|
|
94
|
-
it("hosts a long-lived process in a session that outlives its creator", { timeout: 30000 }, async () => {
|
|
95
|
-
const session = ombSessionName(scratch, "psmux-persist");
|
|
96
|
-
heldSessions.push(session);
|
|
97
|
-
const env = { ...process.env, BIZAR_OMP_NO_TMUX: "1" };
|
|
98
|
-
expect(await runMultiplexer(["new-session", "-d", "-s", session, "-c", scratch, ...paneKeepAliveCommand], env, scratch)).toBe(0);
|
|
99
|
-
// The spawning test process keeps running, mirroring the launcher flow:
|
|
100
|
-
// the session must stay visible for the agents hub while alive.
|
|
101
|
-
const listed = await listOmbSessions(scratch, env);
|
|
102
|
-
expect(listed.find(item => item.name === session)?.state).toBe("disconnected");
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
//# sourceMappingURL=psmux-windows.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"psmux-windows.test.js","sourceRoot":"","sources":["../../tests/psmux-windows.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { classifyGitOutcome, recoveryInstruction } from "../src/omp/integration-recovery.js";
|
|
3
|
-
import { admitIsolation } from "../src/omp/isolation-policy.js";
|
|
4
|
-
describe("recovery and trust contracts", () => {
|
|
5
|
-
it("recognizes a partial merge instead of treating a failed command as no-op", () => expect(classifyGitOutcome({ exitCode: 1, headChanged: true, indexChanged: true, dirty: true })).toBe("partial-merge"));
|
|
6
|
-
it("gives actionable recovery instructions", () => expect(recoveryInstruction("conflict")).toMatch(/repair assignment/));
|
|
7
|
-
it("requires native isolation for managed writes", () => expect(() => admitIsolation({ editing: true, preset: "restricted-managed", isolated: false, apply: false, merge: false })).toThrow(/isolation/));
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=recovery.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.test.js","sourceRoot":"","sources":["../../tests/recovery.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5M,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5M,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|