[P1] Add reusable in-repo standard tool packs outside core #50
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/prolog-rlm#50
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Provide a separately loadable standard tool pack maintained in the same
lost-rob0t/prolog-rlmrepository by default for agents built onprolog-rlm, without expanding core authority or making the core runtime depend on concrete production tools.This is the standard in-repo concrete tool catalog. It is external to the core runtime dependency graph, not required to live in a separate Git repository. Third-party packs may still live elsewhere and use the same loader ABI.
Category model
Every concrete tool belongs to one or more advertised categories. The standard in-repo packs must support the core loading API:
Category loading controls which tool schemas/handlers are registered and available. It does not grant invocation capabilities or authority.
Repository/layout contract
The standard packages should remain visibly separated from core while sharing the same checkout, CI, versioning and issue tracker. Exact paths may be refined, but the intended shape is equivalent to:
Core must not import these production packs automatically.
Initial tool set by category
filesystem
project_read— migrated from core;project_search— bounded search under an explicit project root.git
Initial read-only surface:
git_status;git_diff;git_show.Follow-on write surface for self-hosting/coding harnesses must remain typed and structured rather than arbitrary shell text, including operations such as branch/worktree creation, expected-head patch application, commit, fetch and push. Repository mutations must compose with normal authority and durable-effect semantics.
forge
Add a backend-neutral forge vocabulary with first-party adapters for GitHub and Forgejo.
The common model should cover normalized repository collaboration operations rather than exposing arbitrary HTTP paths. Initial/follow-on tool surfaces should include bounded typed operations for:
Provider adapters:
Git remote transport and local repository operations remain owned by the
gitcategory; issues/PRs/reviews/CI and forge metadata belong toforge.Do not expose one generic model tool that accepts arbitrary forge API URLs/methods. Model-visible operations must use closed schemas and bounded semantics.
process
run_tests— bounded execution of an explicitly configured test command/profile;process_run— narrowly configured process execution with command allow-list/profile, timeout, cwd confinement, environment filtering, and output limits.network
http_get— bounded HTTP GET with explicit network capability, timeout, redirect, response-size, and scheme/host policy.mcp
Capability/authority direction
Availability is separate from permission. Prefer narrow operation capabilities rather than a single ambient
gitorforgesuperpower where write-risk differs materially.Examples of capability classes to design against:
Exact names follow implementation conventions.
forge_mergemust remain separately grantable from ordinary issue/PR work.Acceptance criteria
rlm_load_tools/3can register all standard tools in one category without registering unrelated categories.rlm_load_all_tools/2registers the installed standard set without granting capabilities or changing authority.rlm_toolcontract.Non-goals
prolog-rlmcore back onto the standard concrete tool packages.Closing as superseded by #141. The restored canonical boundary puts concrete coding/project tool catalogs (filesystem/Git/process/test/forge product packs) downstream in
lost-rob0t/agentProlog.prolog-rlmretains the generic tool/registry/capability/authority/effect contracts. The new expert-system layer will consume typed host-supplied capabilities rather than moving concrete product tools back into this repository.