@rubytech/create-realagent 1.0.842 → 1.0.844
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 +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +2 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js +133 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +18 -19
- package/payload/platform/plugins/docs/references/plugins-guide.md +11 -1
- package/payload/platform/plugins/docs/references/troubleshooting.md +3 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +3 -1
- package/payload/premium-plugins/real-agency/BUNDLE.md +2 -4
- package/payload/server/chunk-H7AEWSE6.js +1569 -0
- package/payload/server/chunk-LU2UG7KB.js +10310 -0
- package/payload/server/chunk-OLP7LZDW.js +10119 -0
- package/payload/server/client-pool-MTXUA5HQ.js +34 -0
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/server.js +3 -3
- package/payload/premium-plugins/real-agency/plugins/real-agency-brochures/PLUGIN.md +0 -31
- package/payload/premium-plugins/real-agency/plugins/real-agency-brochures/skills/property-brochure/SKILL.md +0 -194
- package/payload/premium-plugins/real-agency/plugins/real-agency-brochures/skills/property-brochure/references/template.html +0 -1451
|
@@ -77,37 +77,36 @@ Using the lean pattern from `references/lean-pattern.md`, compose:
|
|
|
77
77
|
|
|
78
78
|
Show the user the complete SKILL.md content and each reference file. Ask them to review.
|
|
79
79
|
|
|
80
|
-
## Step 7: Save
|
|
80
|
+
## Step 7: Save the Skill as a Plugin File
|
|
81
81
|
|
|
82
|
-
Use `
|
|
82
|
+
Use `store-skill` to write the composed skill to disk as part of an admin-managed plugin. The tool computes the path internally — supply the names and content only.
|
|
83
|
+
|
|
84
|
+
Pick a `pluginName` that groups related operator-authored skills (e.g. `beacons-skills`, `my-utils`). Reuse the same `pluginName` across calls so the skill joins existing operator skills under one plugin. If this is the first skill in a new plugin, the tool creates the `PLUGIN.md` automatically.
|
|
83
85
|
|
|
84
86
|
```
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
87
|
+
store-skill({
|
|
88
|
+
pluginName: "{kebab-case plugin name}",
|
|
89
|
+
skillName: "{kebab-case skill name}",
|
|
90
|
+
description: "{the one-sentence description from Step 1}",
|
|
91
|
+
publicEmbed: false,
|
|
92
|
+
body: "{SKILL.md body content WITHOUT frontmatter — activation conditions, behaviour rules, references index}",
|
|
93
|
+
references: [
|
|
94
|
+
{ filename: "{kebab-case-name}.md", content: "{full reference body}" }
|
|
95
|
+
]
|
|
91
96
|
})
|
|
92
97
|
```
|
|
93
98
|
|
|
94
|
-
|
|
99
|
+
Set `publicEmbed: true` only when the user wants this skill surfaced to the public agent. Default to `false` for admin-only skills.
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
memory-write({
|
|
98
|
-
labels: ["CreativeWork"],
|
|
99
|
-
properties: {
|
|
100
|
-
title: "Skill Reference: {name}/{filename}",
|
|
101
|
-
abstract: "{full reference file content}"
|
|
102
|
-
}
|
|
103
|
-
})
|
|
104
|
-
```
|
|
101
|
+
`references` is optional — pass `[]` (or omit) when the skill has no detailed procedures or templates.
|
|
105
102
|
|
|
106
103
|
## Step 8: Confirm
|
|
107
104
|
|
|
108
105
|
Tell the user:
|
|
109
106
|
|
|
110
|
-
> "Your skill
|
|
107
|
+
> "Your skill is saved on disk as part of the `{pluginName}` plugin and is active right now for the admin agent. I can use it when the situation matches. To edit it later, ask me to update the skill — I'll re-run `store-skill` with the new content."
|
|
108
|
+
|
|
109
|
+
If `publicEmbed: true`, add: "It will surface in the public agent on the next session start."
|
|
111
110
|
|
|
112
111
|
---
|
|
113
112
|
|
|
@@ -57,7 +57,7 @@ Premium plugins are one-off purchases that grant permanent ownership. They are n
|
|
|
57
57
|
| Plugin | Type | What it does | Public agent |
|
|
58
58
|
|--------|------|-------------|-------------|
|
|
59
59
|
| `teaching` | Skills | Interactive tutoring, lesson planning, and study pack generation from your knowledge base | Yes — all 3 skills serve students and parents |
|
|
60
|
-
| `real-agency` | Bundle (
|
|
60
|
+
| `real-agency` | Bundle (10 sub-plugins) | UK estate agency skills — sales, listings, vendor management, buyer management, lead generation, coaching, business operations, onboarding, teaching, and Loop CRM. 2 specialist roles (negotiator, valuer) | 4 sub-plugins (estate-sales, buyers, estate-coaching, estate-onboarding) |
|
|
61
61
|
| `writer-craft` | Skills + Agent | Manuscript review and writing craft — story architecture, reader engagement, prose craft, editorial practice, and multi-level review | No — writing craft serves the author |
|
|
62
62
|
|
|
63
63
|
**How it works:** When you purchase a premium plugin, it's delivered to your {{productName}} via conversation. Tell {{productName}} "Enable the teaching plugin" and it handles the rest. Premium plugins are yours permanently — they survive updates and reinstalls.
|
|
@@ -90,6 +90,16 @@ Tell {{productName}}:
|
|
|
90
90
|
|
|
91
91
|
Ask {{productName}}: "What plugins do I have?" or "List my plugins."
|
|
92
92
|
|
|
93
|
+
## Operator-Authored Plugins (skill-builder output)
|
|
94
|
+
|
|
95
|
+
Skills you create at runtime through the admin `skill-builder` skill are saved on disk as their own plugin under `data/accounts/{accountId}/plugins/{pluginName}/`. The admin agent calls `mcp__admin__store-skill`, which composes `PLUGIN.md` (on first call) and `skills/{skillName}/SKILL.md` plus any reference files. The agent supplies `pluginName`, `skillName`, `description`, `publicEmbed`, `body`, and optional references — the path is computed by the tool, never by the agent.
|
|
96
|
+
|
|
97
|
+
These operator-authored plugins survive reinstall because the installer's wipe zone excludes `data/`. At admin session start the platform mirrors `data/accounts/{accountId}/plugins/*` into the runtime plugins directory so the same `parsePluginFrontmatter` / `assemblePublicPluginContent` / `loadEmbeddedPlugins` loaders that read shipped and premium plugins also pick up operator-authored ones — no special-case loader path. The admin agent sees every operator skill by default; per-skill `publicEmbed: true|false` controls which skills surface to the public agent.
|
|
98
|
+
|
|
99
|
+
To edit an operator-authored skill later, ask {{productName}} to update it — the admin agent re-runs `store-skill` for the same `pluginName`/`skillName` and the new content overwrites in place. To remove one, delete the directory under `data/accounts/{accountId}/plugins/{pluginName}/skills/{skillName}/` (or the whole plugin) — the next session start re-mirrors the remaining skills only.
|
|
100
|
+
|
|
101
|
+
`pluginName` collisions with shipped plugin names are refused by `store-skill` with a structured error. See [.docs/agents.md](../../../../.docs/agents.md) § "Operator-authored skills as plugin files" for the full contract.
|
|
102
|
+
|
|
93
103
|
## Brand Templating (for plugin and skill authors)
|
|
94
104
|
|
|
95
105
|
Skill content, plugin manifests, agent templates, and reference files reference the operator-visible brand name only via the literal `{{productName}}` placeholder. The platform substitutes from `brand.json.productName` at read time — Maxy installs render `Maxy`, Real Agent installs render `Real Agent`, all from the same source content.
|
|
@@ -58,7 +58,9 @@ tail -200 ~/.maxy/logs/maxy-ui.log | rg '\[remote-auth\].*resolvedKind='
|
|
|
58
58
|
- Platform process has stopped — restart it
|
|
59
59
|
- Network issue if accessing remotely — check your Cloudflare tunnel is running
|
|
60
60
|
|
|
61
|
-
**If the chat shows a single `[agent-loop-stop] same error twice — aborting` line and stops:** {{productName}} hit the same structured tool failure twice in a row inside one turn (e.g. a permission gate refused the same write twice, or two `Read` calls hit the same missing file). The runtime aborted the turn after the second occurrence to save tokens instead of running until the SDK turn budget exhausted. The blocker text names the tool and the first line of the error. Resolve the underlying cause (re-run the named skill, fix the missing prerequisite, etc.) and
|
|
61
|
+
**If the chat shows a single `[agent-loop-stop] same error twice — aborting` line and stops:** {{productName}} hit the same structured tool failure twice in a row inside one turn (e.g. a permission gate refused the same write twice, or two `Read` calls hit the same missing file). The runtime aborted the turn after the second occurrence to save tokens instead of running until the SDK turn budget exhausted. The blocker text names the tool and the first line of the error. Resolve the underlying cause (re-run the named skill, fix the missing prerequisite, etc.) and tap "Continue" — the next turn truly resumes the prior SDK session via the synthetic-tool-result contract, so {{productName}} picks up where it aborted instead of cold-querying its own session list. To see the diagnostic, ask {{productName}}: "Show me the most recent stall-recovery log line." Greppable post-deploy invariants: `[agent-loop-stop] reason=identical-tool-failure tool=<name> errorSignature=<sha8> toolInputDigest=<sha8>` followed by `[stall-recovery] kind=agent_loop_stop … handoff=resume-first` and on the next turn `[stall-resume] consumed kind=agent_loop_stop toolUseId=<8> priorSessionId=<8>`. The fallback path (when the SDK session id was lost) emits `handoff=metadata-only` + `[recovery-handoff] generated/consumed reason=agent-loop-stop` and the chat button reads "Start over" instead of "Continue". A `[recovery-handoff] WARN missing-on-cold-create` line means the fallback briefing wasn't persisted — surface to support.
|
|
62
|
+
|
|
63
|
+
**If a background task goes silent and the chat shows "A background task went silent — K of M completed":** {{productName}}'s subagent stopped emitting progress for over 2 minutes. Tap "Continue" — the next turn resumes the prior session and reads a synthetic tool_result describing what completed before the pause, so the agent re-plans without losing the work it had done. Most stalls are upstream API latency rather than the subagent's approach failing — the resume-first path treats both correctly. Greppable post-deploy invariants: `[stall-recovery] kind=subagent_stalled … completed=<K>/? handoff=resume-first` followed by `[stall-resume] consumed kind=subagent_stalled toolUseId=<8>` on the next turn. If the button reads "Start over" instead, the parent's pending tool_use_id was not captured — the fallback path took over; the prior conversation is preserved as a `<recovery-context>` block in the cold-started session.
|
|
62
64
|
|
|
63
65
|
**Agent searches the filesystem after uploading a zip.** If you uploaded a zip and the agent burns several turns running `find` / `Glob` instead of unzipping, that is the symptom of the recovery-retry attachment-context regression (now closed by the recovery context preservation contract in `.docs/agents.md`). Greppable confirmation is the `[context-overflow-recovery] retry … attachmentsCarried=<n>` line in the conversation stream log. If you see `[context-overflow-recovery] WARN attachment-context-lost`, the regression has returned — surface to support.
|
|
64
66
|
|
|
@@ -247,7 +247,9 @@ When `<previous-context>` is present:
|
|
|
247
247
|
|
|
248
248
|
When `<previous-context>` is absent, Neo4j was unreachable or no prior context exists — proceed normally, using tool calls to establish state.
|
|
249
249
|
|
|
250
|
-
A separate `<recovery-context>` block on the user-message side appears only when the previous turn was aborted
|
|
250
|
+
A separate `<recovery-context>` block on the user-message side appears only when the previous turn was aborted AND the platform could not perform a true SDK resume (the parent's pending tool_use_id was not captured, or the SDK session id was lost). Treat it as the authoritative description of what failed and what was incomplete — do not re-execute the failed work, do not call `session-list` to figure out what was happening, and do not re-research the blocker. The block coexists with `<previous-context>` (system-prompt session summary) on the recovery turn; the two are not duplicates — `<previous-context>` orients you to the session, `<recovery-context>` orients you to the specific failed turn.
|
|
251
|
+
|
|
252
|
+
When the platform CAN resume, the recovery is invisible at the prompt layer: the prior conversation is replayed by the API and the next user message you receive contains a `tool_result` for the previously in-flight tool_use, summarising what completed before the pause. This means a "Continue" turn may arrive with no preamble — read the `tool_result` content to see how many sub-tasks completed, then continue the work. Do not assume a stalled subagent failed in approach: many stalls are upstream API latency, not the subagent's fault.
|
|
251
253
|
|
|
252
254
|
In managed context mode, conversation history is provided within `<conversation-history>` tags. Use `session-compact-status` to retrieve older archived context if needed.
|
|
253
255
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: real-agency
|
|
3
|
-
description: "UK estate agency skills + Loop CRM integration —
|
|
3
|
+
description: "UK estate agency skills + Loop CRM integration — 10 sub-plugins covering sales, listings, vendor management, buyer management, lead generation, coaching, business operations, onboarding, teaching, and Loop CRM. 3 specialist roles (negotiator, valuer, compliance). 21 skills + 22 MCP tools."
|
|
4
4
|
plugins:
|
|
5
5
|
- estate-sales
|
|
6
6
|
- listings
|
|
7
|
-
- brochures
|
|
8
7
|
- vendors
|
|
9
8
|
- buyers
|
|
10
9
|
- leads
|
|
@@ -17,7 +16,7 @@ plugins:
|
|
|
17
16
|
|
|
18
17
|
# Real Agency
|
|
19
18
|
|
|
20
|
-
Premium plugin bundle for UK estate agency professionals. Purchasing this bundle grants access to all
|
|
19
|
+
Premium plugin bundle for UK estate agency professionals. Purchasing this bundle grants access to all 10 sub-plugins, each independently activatable via `enabledPlugins`. The bundle also delivers three specialist roles — negotiator, valuer, and compliance — that embed domain knowledge from the sub-plugins and operate autonomously with Loop CRM tools.
|
|
21
20
|
|
|
22
21
|
## Specialist Roles
|
|
23
22
|
|
|
@@ -33,7 +32,6 @@ Premium plugin bundle for UK estate agency professionals. Purchasing this bundle
|
|
|
33
32
|
|---|---|---|---|
|
|
34
33
|
| `estate-sales` | 3 | — | Sales cycle — discovery, closing, progression |
|
|
35
34
|
| `listings` | 3 | — | Pre-listing through marketing — presentations, campaigns, staging |
|
|
36
|
-
| `brochures` | 1 | — | Print-ready A4 property brochures from photos, transcripts, and floorplans |
|
|
37
35
|
| `vendors` | 2 | — | Active vendor lifecycle — communication, updates |
|
|
38
36
|
| `buyers` | 4 | — | Buyer lifecycle — enquiry, viewing feedback, educational guides |
|
|
39
37
|
| `leads` | 2 | — | Pipeline building — nurturing and prospecting |
|