Skip to content

feat(extensions): make calm-omp available in every OMP session - #4603

Closed
mdc2122 wants to merge 5 commits into
kunchenguid:mainfrom
mdc2122:fm/calm-omp-global-10
Closed

mdc2122 wants to merge 5 commits into
kunchenguid:mainfrom
mdc2122:fm/calm-omp-global-10

Conversation

@mdc2122

@mdc2122 mdc2122 commented Sep 16, 2026 •

Copy link
Copy Markdown

Intent

Make the calm-omp extension work globally for all omp sessions, not just firstmate sessions.

What changed

  • extensions/fm-calm-omp/ — the OMP Calm extension (/calm-omp + the shared working-ship boat) as an OMP plugin package (package.json omp.extensions entry). It lives outside .omp/extensions/ on purpose: OMP de-duplicates extension entries by absolute path rather than realpath, so a project-local copy plus a global link would double-load in sessions running inside a firstmate checkout.
  • bin/fm-omp-calm-install.sh — links the package into OMP's user plugin scope via omp plugin link (~/.omp/plugins/node_modules/fm-calm-omp). Idempotent; retires the legacy project-local .omp/extensions/fm-calm-omp.ts (identical → removed, divergent → .bak, aborts on failure); warns when linked from a git worktree.
  • tests/fm-omp-calm-install.test.sh — sandboxed-HOME behavioral coverage: link, idempotent reinstall, identical/divergent legacy handling, failed-retirement abort, manifest resolution.
  • Docs: docs/calm.md gains the OMP section (mechanism, install, unload via omp plugin disable — omp 18.2.0's plugin uninstall leaves the symlink and the extension keeps loading), docs/calm-mode-feasibility.md gains the dated verification record, README.md and AGENTS.md get one-line pointers.

Verified (OMP 18.2.0)

  • bin/fm-omp-calm-install.sh links the package; omp plugin list/doctor report fm-calm-omp healthy.
  • omp -p "/calm-omp" in a directory outside any firstmate checkout executes the registered command locally with no model call; an unknown command in the same session reaches the model.
  • tests/fm-omp-calm-install.test.sh green; shellcheck clean; fm-doc-audience-check.sh ok.
  • Live validation drove the installer and headless /calm-omp against the real OMP CLI; the interactive TUI toggle/boat path is not exercised headless (accepted at the test gate).

The OMP Calm extension lived untracked at .omp/extensions/fm-calm-omp.ts,
so it loaded only in sessions whose cwd was the firstmate home. Move it to
extensions/fm-calm-omp/ as an omp plugin package and add
bin/fm-omp-calm-install.sh, which links it into OMP's user plugin scope so
/calm-omp and the working boat load in every omp session.

The package stays outside .omp/extensions/ because OMP de-duplicates
extension entries by absolute path, not realpath: a project-local copy
plus a global link would load twice in home sessions. The installer
retires the legacy copy, removing an identical file and renaming a
divergent one to .bak.
@mdc2122

mdc2122 commented Sep 25, 2026

Copy link
Copy Markdown
Author

Closing in favor of a single clean Calm-for-omp PR cut from current main, if we re-propose it.

@mdc2122 mdc2122 closed this Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant