Sync MCP surface to SPEC §7 process model
Rename list_children/read_output/kill/send_message_to to their SPEC §7 process_id-shaped names; drop report_to_parent (direction inferred by send_message) and policy_check (replaced by per-project trust gating). Add the SPEC's missing tools: start_process, restart_process, close_process, rename_process, select_process, get_process_status, get_project_status, get_process_raw_output, search_output, get_process_ports, whoami, help. Process model now distinguishes agent/terminal/command kinds with opaque p_<6hex> IDs. Command entries are session-persistent so they survive PTY exit and can be Restart'd. Status enum gains starting and stopped. screen_version, port detection, and bracketed-paste send_input land alongside. Trust gating (internal/trust) replaces the regex policy: command-preset spawns return needs_trust on first use; the user confirms in a status-line modal and the grant persists to \$XDG_DATA_HOME/patterm/projects/<key>/trust.json. Tests cover send_message direction inference (parent↔child, sibling rejection, nil caller paths) and trust grant persistence across reopen.
This commit is contained in:
@@ -13,12 +13,15 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Kind is "agent" or "process".
|
||||
// Kind is "agent" or "command". Process presets are SPEC §7's
|
||||
// `command` kind (session-persistent). Terminal entries don't have
|
||||
// presets — they're created freeform with `kind: terminal` via
|
||||
// spawn_process.
|
||||
type Kind string
|
||||
|
||||
const (
|
||||
KindAgent Kind = "agent"
|
||||
KindProcess Kind = "process"
|
||||
KindCommand Kind = "command"
|
||||
)
|
||||
|
||||
// Preset is one loaded preset file. Agent-only fields stay zero on
|
||||
@@ -87,7 +90,7 @@ func Load() (Set, error) {
|
||||
if err != nil {
|
||||
return Set{}, err
|
||||
}
|
||||
procs, err := loadDir(filepath.Join(base, "presets", "processes"), KindProcess)
|
||||
procs, err := loadDir(filepath.Join(base, "presets", "processes"), KindCommand)
|
||||
if err != nil {
|
||||
return Set{}, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user