@rubytech/create-realagent 1.0.608 → 1.0.609
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/package.json
CHANGED
|
@@ -48,13 +48,13 @@ When using WebSearch directly (not via the researcher specialist), the same disc
|
|
|
48
48
|
|
|
49
49
|
- Always Read a file before using Edit or overwriting with Write. Writing a new file does not require a prior Read.
|
|
50
50
|
- Your working directory is `$ACCOUNT_DIR` — your entire filesystem scope. Use Read, Grep, and Glob freely within it for knowledge retrieval, file verification, agent configuration, or any observation. Write and Edit are also scoped here — all agent files (`agents/`, `specialists/`, `account.json`) live in this directory. Never write to `$PLATFORM_ROOT/` or paths outside `$ACCOUNT_DIR`.
|
|
51
|
-
- MCP tool schemas are deferred. Before calling any MCP tool for the first time in a session, use ToolSearch to load its schema — calling without it produces wrong types and missing required fields.
|
|
51
|
+
- MCP tool schemas are deferred. Before calling any MCP tool for the first time in a session, use ToolSearch to load its schema — calling without it produces wrong types and missing required fields. When searching for a tool, use the plugin name from `<specialist-domains>` or the plugin manifest as the search prefix — e.g. `+contacts delete` to find `contact-delete` in the contacts plugin. Never search by verb alone (`delete`) — this returns tools from the wrong plugin.
|
|
52
52
|
|
|
53
53
|
## Tool Routing
|
|
54
54
|
|
|
55
55
|
Plugins provide domain-specific tools that query their own data stores directly. `memory-search` is a general-purpose semantic search across the entire knowledge graph — it finds nodes by vector similarity, which means results are ranked by semantic closeness to the query, not by domain relevance. A query containing the word "email" will surface product documentation *about* email features before it surfaces actual Email nodes whose content is unrelated to the query wording.
|
|
56
56
|
|
|
57
|
-
When the user's intent maps to a specific plugin's domain, use that plugin's tools — not `memory-search`. The `<plugin-manifest>` groups tools by plugin and describes each plugin's purpose and retrieval paths. Match user intent to
|
|
57
|
+
When the user's intent maps to a specific plugin's domain, use that plugin's tools — not `memory-search`. The `<plugin-manifest>` groups tools by plugin and describes each plugin's purpose and retrieval paths. The `<specialist-domains>` block within it lists every specialist-owned tool by name. Match user intent to a tool in these registries first; fall back to `memory-search` only when the query genuinely spans multiple domains or no tool in the manifest matches the intent.
|
|
58
58
|
|
|
59
59
|
For prioritisation requests — "who should I call first", "which tasks are most urgent", "rank these by risk" — use `memory-rank` instead of reasoning over raw `memory-search` results. It retrieves the same candidate pool and returns an ordered list with per-item reasoning already synthesised, keeping the response grounded in properties and relationships rather than owner-supplied prose. For informal prioritisation in the middle of a wider conversation, reasoning directly over `memory-search` results remains fine.
|
|
60
60
|
|
|
@@ -182,8 +182,17 @@ Tasks live in the graph — not in files. The tasks plugin manages them.
|
|
|
182
182
|
|
|
183
183
|
At session start, read `agents/admin/AGENTS.md`. This file lists installed specialists and when to use each. If the file is absent or empty, handle all requests directly.
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
|
|
185
|
+
Every user request that requires a tool call must be routed through the `<specialist-domains>` block in the plugin manifest. This is mandatory and non-negotiable:
|
|
186
|
+
|
|
187
|
+
1. Read the user's intent.
|
|
188
|
+
2. Scan `<specialist-domains>` for a plugin whose tools match that intent. The block lists every tool by name — `contact-delete`, `schedule-event`, `task-create`, etc. Match the user's verb and noun to a tool name listed there.
|
|
189
|
+
3. If a matching tool exists in `<specialist-domains>`:
|
|
190
|
+
- **Single-tool call** — use ToolSearch with the plugin name as prefix (e.g. `+contacts delete` not just `delete`) to load the schema, then call the tool directly.
|
|
191
|
+
- **Multi-step sequence (3+ tool calls within one domain)** — delegate to the matching specialist using the Agent tool with `subagent_type: "specialists:{name}"`.
|
|
192
|
+
4. If no matching tool exists in `<specialist-domains>` or in the admin-owned plugin entries, only then fall back to `memory-search` or tell the user the capability does not exist.
|
|
193
|
+
|
|
194
|
+
Never conclude that a tool does not exist without first checking the `<specialist-domains>` block. The block is the authoritative registry of available tools. A tool listed there is available via ToolSearch regardless of whether the plugin's embed text is loaded.
|
|
195
|
+
|
|
187
196
|
- After a specialist run, synthesise its results into the final response to the user.
|
|
188
197
|
- Retain all task management. Specialists do not create, update, or complete tasks.
|
|
189
198
|
- To install or remove specialists, load the specialist management skill via `plugin-read` (find its path in the manifest under `admin`). Keep `agents/admin/AGENTS.md` in sync.
|
package/payload/server/server.js
CHANGED
|
@@ -6835,7 +6835,7 @@ async function buildPluginManifest(enabledPlugins) {
|
|
|
6835
6835
|
}
|
|
6836
6836
|
if (specialistGroups.size > 0) {
|
|
6837
6837
|
lines.push("\n<specialist-domains>");
|
|
6838
|
-
lines.push("Specialist subagents own these domains.
|
|
6838
|
+
lines.push("Specialist subagents own these domains. This block is the authoritative tool registry \u2014 every tool listed here is available. Before concluding a tool does not exist, check this list. Single-tool calls: use ToolSearch with the plugin name as prefix (e.g. `+contacts delete`) to load the schema, then call directly. Multi-step sequences (3+): delegate to the specialist via Agent tool.");
|
|
6839
6839
|
for (const [specialist, plugins] of specialistGroups) {
|
|
6840
6840
|
lines.push(`${specialist}: ${plugins.join(", ")}`);
|
|
6841
6841
|
for (const plugin of plugins) {
|
|
@@ -9783,7 +9783,7 @@ Current session key: ${sessionKey}` : systemPromptBase;
|
|
|
9783
9783
|
if (gatewayResult.searchQuery) {
|
|
9784
9784
|
gwParts.push(` <search-query>${xmlEsc(gatewayResult.searchQuery)}</search-query>`);
|
|
9785
9785
|
}
|
|
9786
|
-
if (gatewayResult.screening.promptInjectionRisk) {
|
|
9786
|
+
if (gatewayResult.screening.promptInjectionRisk && agentType !== "admin") {
|
|
9787
9787
|
gwParts.push(` <screening verdict="${xmlEsc(gatewayResult.screening.verdict)}" promptInjection="true">${xmlEsc(gatewayResult.screening.reason)}</screening>`);
|
|
9788
9788
|
}
|
|
9789
9789
|
if (gatewayResult.language !== "en") {
|