rename service → operator, orchestrator/operator session → minibuffer - #1252
Merged
Conversation
The daemon-created dispatcher session — SessionKind::Orchestrator, shown as the "operator" panel — is now simply the minibuffer, matching the widget it lives in (one concept, one name): - SessionKind::Orchestrator -> SessionKind::Minibuffer, with a serde alias so pre-rename meta.json files keep loading; same for the persisted operator_loop_disabled -> minibuffer_loop_disabled flag and the [orchestrator] -> [minibuffer] config table. - CONSTRUCT_SESSION_KIND now says "minibuffer"; smith's ambient-loop tuning env vars move to CONSTRUCT_MINIBUFFER_* with the old CONSTRUCT_OPERATOR_* spellings still honored as fallback. - The TUI's transient input-line widget, which already owned the name Minibuffer internally, becomes Prompt (PromptIntent, handle_prompt_key, app/prompt.rs) so the term minibuffer unambiguously means the session and its panel. - Prose that used "the operator" for the human at the controls now says "the user"; prose about the session says "the minibuffer". - Specs 0002 and 0019-0024 renamed (files + content).
Services — the named definitions that answer channels by spawning sessions — are now operators, ahead of giving them fleet-internal channels (inboxes) beyond slack/http: - Wire protocol: service.* IPC methods -> operator.*, Service* types -> Operator*, the service/channel-publication-state notification -> operator/, and construct_service_reply (MCP) -> construct_operator_reply. - Config: definitions live in <config>/operators/ (one TOML per operator); routing state in <data>/operators/. A one-shot idempotent boot migration renames the legacy services/ directories, and load_summary lazily rewrites persisted service:<name> session-title prefixes to operator:<name> so routed sessions stay attached. - TUI: /operator and /operators (with /service and /services accepted as pre-rename aliases); /serve still opens the create editor. - Docs: docs/services.md -> docs/operators.md; the twelve service specs renamed to operator (files + content). - Deliberately untouched: keychain service, denial-of-service, service tier, and similar unrelated uses; Slack's own bot/app token vocabulary in the channel editor.
/m now matches both /model and /minibuffer, so Tab at /m is a no-op; completing from /mo still yields /model.
xterm.js exposes term._core.coreService; the service→operator sweep must not touch vendored xterm API names.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Renames the two core standing-agent nouns across the entire stack, ahead of growing operators into role-specialized agents with fleet-internal (inbox) channels. Pure rename — no behavior change beyond the names. Follows the canvas→program playbook (#562): full wire rename, lazy idempotent data migration.
The new vocabulary
specs/0199-operator-and-minibuffer-naming.md.What changed
service.*IPC →operator.*;Service*types →Operator*;service/channel-publication-state→operator/…; MCPconstruct_service_reply→construct_operator_reply;SessionKind::Orchestrator→SessionKind::Minibuffer<config>/operators/;[orchestrator]config table →[minibuffer]; smith ambient-loop env varsCONSTRUCT_OPERATOR_*→CONSTRUCT_MINIBUFFER_*/operator,/operatorsslash commands (/service,/servicesaccepted as aliases;/servestill opens the create editor); smith's/operator enable|disable→/minibuffer enable|disable; the transient input-line widget (which owned the nameMinibufferinternally) becomesPromptso "minibuffer" unambiguously means the sessiondocs/services.md→docs/operators.md; specs 0002, 0019–0024 and the twelve service specs renamed (files + content); new spec 0199 records the decisionBack-compat / migration
orchestratorsession kind,operator_loop_disabled, the[orchestrator]config table<config>/services/→<config>/operators/and<data>/services/→<data>/operators/(only when old exists and new doesn't)load_summarylazily rewritesservice:<name>session-title prefixes tooperator:<name>so pre-rename routed sessions stay attached to their operatorCONSTRUCT_OPERATOR_*env spellings still honored as fallback for the minibuffer tuning knobsDeliberately untouched
macOS keychain "service",
denial-of-service, Anthropic "service tier", "service signup" (README), Slack's own bot/app-token vocabulary, and xterm.js's internalcoreServiceAPI (one sed casualty caught by e2e and restored).Verification
cargo build— greencargo test --workspace— all crates green (2,600+ tests; one smith tab-completion expectation updated:/mis now ambiguous between/modeland/minibuffer)cargo test -p construct-e2e— 21 targets green after thecoreServicefixconfig/services/+data/services/migrate on boot with log lines, daemon healthy🤖 Generated with Claude Code