@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
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
_evictAllForTest,
|
|
3
|
+
_poolSnapshotForTest,
|
|
4
|
+
acquireClient,
|
|
5
|
+
acquireOneShotClient,
|
|
6
|
+
evictClient,
|
|
7
|
+
getActiveClient,
|
|
8
|
+
interruptClient,
|
|
9
|
+
pushUserMessage,
|
|
10
|
+
pushUserToolResult,
|
|
11
|
+
recordCachedTokens,
|
|
12
|
+
recordCrash,
|
|
13
|
+
setInflight,
|
|
14
|
+
startIdleEvictTick,
|
|
15
|
+
stopIdleEvictTick
|
|
16
|
+
} from "./chunk-H7AEWSE6.js";
|
|
17
|
+
import "./chunk-CJWFM3WX.js";
|
|
18
|
+
import "./chunk-JSBRDJBE.js";
|
|
19
|
+
export {
|
|
20
|
+
_evictAllForTest,
|
|
21
|
+
_poolSnapshotForTest,
|
|
22
|
+
acquireClient,
|
|
23
|
+
acquireOneShotClient,
|
|
24
|
+
evictClient,
|
|
25
|
+
getActiveClient,
|
|
26
|
+
interruptClient,
|
|
27
|
+
pushUserMessage,
|
|
28
|
+
pushUserToolResult,
|
|
29
|
+
recordCachedTokens,
|
|
30
|
+
recordCrash,
|
|
31
|
+
setInflight,
|
|
32
|
+
startIdleEvictTick,
|
|
33
|
+
stopIdleEvictTick
|
|
34
|
+
};
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
sanitizeClientCorrId,
|
|
16
16
|
streamActionEvents,
|
|
17
17
|
vncLog
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LU2UG7KB.js";
|
|
19
19
|
import {
|
|
20
20
|
LOG_DIR
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-H7AEWSE6.js";
|
|
22
22
|
import "./chunk-CJWFM3WX.js";
|
|
23
23
|
import "./chunk-JSBRDJBE.js";
|
|
24
24
|
|
package/payload/server/server.js
CHANGED
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
vncLog,
|
|
46
46
|
waitForExit,
|
|
47
47
|
writeChromiumWrapper
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-LU2UG7KB.js";
|
|
49
49
|
import {
|
|
50
50
|
ACCOUNTS_DIR,
|
|
51
51
|
COMMERCIAL_MODE,
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
unregisterSession,
|
|
89
89
|
validateAgentSlug,
|
|
90
90
|
validateSession
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-H7AEWSE6.js";
|
|
92
92
|
import {
|
|
93
93
|
CLOUDFLARE_TASK_DIAGNOSTICS,
|
|
94
94
|
appendCloudflareSteps,
|
|
@@ -7511,7 +7511,7 @@ var app11 = new Hono();
|
|
|
7511
7511
|
app11.post("/cancel", requireAdminSession, async (c) => {
|
|
7512
7512
|
const session_key = c.var.sessionKey;
|
|
7513
7513
|
try {
|
|
7514
|
-
const { interruptClient: interruptClient2 } = await import("./client-pool-
|
|
7514
|
+
const { interruptClient: interruptClient2 } = await import("./client-pool-MTXUA5HQ.js");
|
|
7515
7515
|
await interruptClient2(session_key);
|
|
7516
7516
|
return c.json({ ok: true });
|
|
7517
7517
|
} catch (err) {
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: real-agency-brochures
|
|
3
|
-
description: "Print-ready A4 property brochures from raw photos, transcripts, and floorplans. Produces HTML with PDF export via page-level image snapshots."
|
|
4
|
-
tools: []
|
|
5
|
-
always: false
|
|
6
|
-
metadata: {"platform":{"optional":true,"embed":["admin"]}}
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Real Agency — Property Brochures
|
|
10
|
-
|
|
11
|
-
One skill that produces 10-page A4 property brochures from raw assets — photos, walkthrough transcripts, floorplans, and EPC data. The brochure renders in-browser for live editing and exports to pixel-perfect PDF via page-level image snapshots.
|
|
12
|
-
|
|
13
|
-
## When to Activate
|
|
14
|
-
|
|
15
|
-
The user wants to create a property brochure, estate agent marketing document, or print-ready listing brochure from property photos and descriptions.
|
|
16
|
-
|
|
17
|
-
## Skills
|
|
18
|
-
|
|
19
|
-
| Skill | Purpose |
|
|
20
|
-
|-------|---------|
|
|
21
|
-
| `property-brochure` | Full brochure production — image organisation, HTML template population, live preview, print snapshot capture, PDF export |
|
|
22
|
-
|
|
23
|
-
## Tools Used
|
|
24
|
-
|
|
25
|
-
No MCP server. The skill operates via existing platform tools:
|
|
26
|
-
- Playwright MCP for browser preview and print snapshot capture
|
|
27
|
-
- Local HTTP server for live editing workflow
|
|
28
|
-
|
|
29
|
-
## References
|
|
30
|
-
|
|
31
|
-
The skill includes an HTML template (`references/template.html`) as the canonical brochure structure. The CSS and page layout are final — content is populated via placeholder replacement.
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Property Brochure
|
|
3
|
-
description: "Produce a 10-page A4 property brochure from raw photos, transcripts, floorplans, and EPC data. Renders in-browser for live editing and exports to pixel-perfect PDF via page-level image snapshots. Covers image organisation, SVG logo generation, AI hero image prompt, Material Information (DMCCA 2024), and print snapshot capture."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Property Brochure
|
|
7
|
-
|
|
8
|
-
Produce a 10-page A4 property brochure from raw assets. The brochure renders in-browser for live editing and exports to pixel-perfect PDF via page-level image snapshots.
|
|
9
|
-
|
|
10
|
-
## Reference template
|
|
11
|
-
|
|
12
|
-
See `references/template.html` — the canonical HTML template. Read it, copy to `output/brochure.html` in the property's project directory, and populate all `<!-- REPLACE: -->` placeholders with real content. The CSS is final; do not modify it.
|
|
13
|
-
|
|
14
|
-
## Required inputs
|
|
15
|
-
|
|
16
|
-
- **Property photographs** — minimum 20, ideally 30+. See image requirements below.
|
|
17
|
-
- **Property name and address**
|
|
18
|
-
- **Floor plan image** — used for room dimensions, total area, and compass orientation
|
|
19
|
-
- **EPC rating** — set the `current` class on the correct A-G band
|
|
20
|
-
- **Property walkthrough transcript or written description** — source for room descriptions, features, renovation history
|
|
21
|
-
- **Agent details** — default: Muvin (01279 600567, sales@muvin.co.uk, 25 Bell Street Sawbridgeworth CM21 9AR). Logos: `muvin.svg` (light bg), `muvin-light.png` (dark bg)
|
|
22
|
-
|
|
23
|
-
## Image requirements
|
|
24
|
-
|
|
25
|
-
Rename all photos to descriptive names in an `images/` subfolder. The template needs these categories and quantities:
|
|
26
|
-
|
|
27
|
-
| Slot | Count | Description |
|
|
28
|
-
|------|-------|-------------|
|
|
29
|
-
| `front-dusk.png` | 1 | AI-generated golden hour hero (cover) |
|
|
30
|
-
| `front-street.jpeg` | 1 | Front elevation, daytime |
|
|
31
|
-
| `rear-elevated.jpeg` | 1 | Rear elevation |
|
|
32
|
-
| `hallway.jpeg` | 1 | Entrance hall / staircase |
|
|
33
|
-
| `kitchen-hero.jpeg` | 1 | Wide kitchen shot (banner image, page 3) |
|
|
34
|
-
| `kitchen-bar.jpeg` | 1 | Kitchen island / breakfast bar |
|
|
35
|
-
| `kitchen-detail.jpeg` | 1 | Kitchen worktop / appliance detail |
|
|
36
|
-
| `dining-area.jpeg` | 1 | Dining space |
|
|
37
|
-
| `living-room.jpeg` | 1 | Living room wide |
|
|
38
|
-
| `living-detail.jpeg` | 1 | Living room detail / seating |
|
|
39
|
-
| `study.jpeg` | 1 | Study / home office |
|
|
40
|
-
| `utility.jpeg` | 1 | Utility room |
|
|
41
|
-
| `bedroom-master.jpeg` | 1 | Principal bedroom |
|
|
42
|
-
| `dressing-room.jpeg` | 1 | Dressing room / walk-in wardrobe |
|
|
43
|
-
| `ensuite-master.jpeg` | 1 | Master ensuite |
|
|
44
|
-
| `landing.jpeg` | 1 | Landing / staircase |
|
|
45
|
-
| `loft-room.jpeg` | 1 | Loft / additional room |
|
|
46
|
-
| `bedroom-child1.jpeg` | 1 | Bedroom 2 |
|
|
47
|
-
| `bedroom-child2.jpeg` | 1 | Bedroom 3 |
|
|
48
|
-
| `bathroom-freestanding.jpeg` | 1 | Family bathroom |
|
|
49
|
-
| `bathroom-dual-basins.jpeg` | 1 | Bathroom vanity detail |
|
|
50
|
-
| `cloakroom.jpeg` | 1 | Ground floor WC |
|
|
51
|
-
| `aerial-plan.jpeg` | 1 | Aerial / drone plan view (page 7 hero) |
|
|
52
|
-
| `garden-towards-house.jpeg` | 1 | Garden looking back at house |
|
|
53
|
-
| `garden-lawn.jpeg` | 1 | Garden / landscaping |
|
|
54
|
-
| `patio-decking.jpeg` | 1 | Patio / terrace |
|
|
55
|
-
| `patio-seating.jpeg` | 1 | Outdoor seating area |
|
|
56
|
-
| `floorplan.jpeg` | 1 | Floor plan (all levels, page 8) |
|
|
57
|
-
|
|
58
|
-
**Total: ~28 images.** Not every property will have all of these. Adapt the page layout when images are missing — remove the slot, don't leave a placeholder. If the property has fewer rooms, merge pages to maintain A4 fit.
|
|
59
|
-
|
|
60
|
-
## Output folder structure
|
|
61
|
-
|
|
62
|
-
All final artefacts go in a single `output/` folder, ready to host or hand off:
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
output/
|
|
66
|
-
brochure.html
|
|
67
|
-
cover-print.png
|
|
68
|
-
page2-print.png … page9-print.png
|
|
69
|
-
backpage-print.png
|
|
70
|
-
{name}-logo-dark.svg
|
|
71
|
-
{name}-logo-light.svg
|
|
72
|
-
muvin.svg
|
|
73
|
-
muvin-light.png
|
|
74
|
-
images/
|
|
75
|
-
{name}-01.png (dusk hero)
|
|
76
|
-
{name}-02.jpeg (front street)
|
|
77
|
-
{name}-03.jpeg … (remaining photos)
|
|
78
|
-
{name}-28.jpeg (floorplan)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Image renaming
|
|
82
|
-
|
|
83
|
-
Rename all source images to `{property-name}-NN.{ext}` (e.g. `laven-01.png`, `laven-02.jpeg`) in the order listed in the image requirements table above. Use zero-padded two-digit numbers. The brochure HTML must reference `images/{name}-NN.{ext}` — not the original camera/WhatsApp filenames. Discard the originals after copying to output.
|
|
84
|
-
|
|
85
|
-
## Line-drawing SVG logo
|
|
86
|
-
|
|
87
|
-
Trace the front elevation from the exterior photo into a minimal SVG line drawing:
|
|
88
|
-
- Dark version (`#2C2C2A` stroke) for light backgrounds
|
|
89
|
-
- Light version (`#FAFAF8` stroke) for the dark back page
|
|
90
|
-
- No text in the SVG — the property name is rendered in HTML
|
|
91
|
-
- Crop the viewBox tightly to the house outline
|
|
92
|
-
- Stroke weight should read clearly at ~120–160px wide
|
|
93
|
-
|
|
94
|
-
## AI hero image prompt
|
|
95
|
-
|
|
96
|
-
Generate a golden hour / dusk version of the front exterior. The prompt must:
|
|
97
|
-
- Reference the floor plan and aerial image to determine compass orientation
|
|
98
|
-
- Position the setting sun on the correct side of the frame relative to the front elevation
|
|
99
|
-
- Specify warm amber directional light on the facade from the sun side
|
|
100
|
-
- Sky gradient from deep amber at sun to pale peach opposite
|
|
101
|
-
- Keep the house structure sharp and unmodified
|
|
102
|
-
- Professional UK estate agent photography style
|
|
103
|
-
- Output the prompt text for the user to execute in their image tool of choice
|
|
104
|
-
|
|
105
|
-
## 10-page structure
|
|
106
|
-
|
|
107
|
-
Each page is a `<div class="page">` (or `.cover` / `.backpage`) at `width: 210mm; min-height: 297mm`. Every page must fit within A4 height (1123px at 96dpi). Measure with `element.scrollHeight` during development and adjust image heights with inline styles if content overflows.
|
|
108
|
-
|
|
109
|
-
| Page | Class | Section | Key content |
|
|
110
|
-
|------|-------|---------|-------------|
|
|
111
|
-
| 1 | `.cover` | Cover | Dusk hero, property name, subtitle, 5 glassmorphic stat cards |
|
|
112
|
-
| 2 | `.page` | Property Overview | Description, callout, hallway image, 2-image grid (front + rear) |
|
|
113
|
-
| 3 | `.page` | Kitchen & Living | Banner image with overlay text, kitchen split, living room split |
|
|
114
|
-
| 4 | `.page` | Study, Utility & Sustainability | Detail image grid, study/utility descriptions, dark band with energy features |
|
|
115
|
-
| 5 | `.page` | Principal Bedroom | Master suite, dressing room, ensuite, landing, loft room |
|
|
116
|
-
| 6 | `.page` | Bedrooms & Bathrooms | Remaining bedrooms, bathroom gallery, bathroom description |
|
|
117
|
-
| 7 | `.page` | Outside / Garden | Aerial plan view (full bleed), garden description, 3-image garden grid |
|
|
118
|
-
| 8 | `.page` | Floor Plans & Key Features | Floor plan image (85% width), total area, key features list, horizontal EPC bar |
|
|
119
|
-
| 9 | `.page` | Material Information | Parts A, B, C per DMCCA 2024 + NTS guidance |
|
|
120
|
-
| 10 | `.backpage` | Back Page | Property logo (light SVG), CTA heading, contact details, Muvin logo, disclaimer |
|
|
121
|
-
|
|
122
|
-
## Material Information (UK regulatory compliance)
|
|
123
|
-
|
|
124
|
-
Three tiers per National Trading Standards and DMCCA 2024. Populate all known fields; mark unknowns as "TBC":
|
|
125
|
-
|
|
126
|
-
- **Part A** (all transactions): price, tenure, council tax, property type, rooms, floor area, utilities (electricity, water, sewerage, heating), broadband, mobile, parking, EPC
|
|
127
|
-
- **Part B** (where applicable): building safety, covenants, rights of way, easements, listed status, conservation area, TPOs, accessibility
|
|
128
|
-
- **Part C** (additional facts): flood risk, coastal erosion, planning, construction type, structural issues, subsidence, damp, asbestos, knotweed, mining
|
|
129
|
-
|
|
130
|
-
## Design system
|
|
131
|
-
|
|
132
|
-
- **Fonts**: Playfair Display (headings) + Inter (body)
|
|
133
|
-
- **Palette**: sage `#7C8C72` primary, gold `#C5A572` accent, warm off-white `#FAFAF8` background
|
|
134
|
-
- **Cover/backpage dark**: greenish-black `#1a1c18` with gold `#D4B882` accents — not teal/cyan
|
|
135
|
-
- **Cover**: content at bottom (`justify-content: flex-end`), left-aligned, glassmorphic stat cards
|
|
136
|
-
- **EPC**: horizontal A-G bar at bottom of key features section, `current` class outlines the active band
|
|
137
|
-
- **Page numbers**: CSS counter on screen (bottom-centre of each `.page`), not on cover or backpage
|
|
138
|
-
|
|
139
|
-
## Live editing workflow
|
|
140
|
-
|
|
141
|
-
1. Copy template to property directory, populate with content
|
|
142
|
-
2. Serve locally: `python3 -m http.server <port>` from the project root
|
|
143
|
-
3. Navigate Playwright to the brochure URL
|
|
144
|
-
4. Present to user in browser for review
|
|
145
|
-
5. User requests changes — iterate on content, image sizing, page balance
|
|
146
|
-
6. Verify every page fits A4: measure `scrollHeight` for all `.page` elements, adjust if any exceed 1123px
|
|
147
|
-
7. Repeat 4–6 until user approves the final copy
|
|
148
|
-
8. **Only after user approval**: capture all print snapshots (see below)
|
|
149
|
-
9. User downloads PDF via the Download button (browser print with `@page { margin: 0 }`)
|
|
150
|
-
|
|
151
|
-
Do not capture snapshots during the editing cycle — they are expensive and invalidated by every change. Only generate them once the user confirms the content is final.
|
|
152
|
-
|
|
153
|
-
## Print snapshot capture
|
|
154
|
-
|
|
155
|
-
Every page is pre-captured as a PNG that swaps in during print. This guarantees pixel-perfect PDF — no browser print rendering issues. **Run this only once, after the user approves the final version.**
|
|
156
|
-
|
|
157
|
-
Capture all pages in one pass via Playwright `browser_run_code`:
|
|
158
|
-
|
|
159
|
-
```javascript
|
|
160
|
-
async (page) => {
|
|
161
|
-
await page.evaluate(() => {
|
|
162
|
-
document.querySelector('.download-bar').style.display = 'none';
|
|
163
|
-
document.body.style.overflow = 'hidden';
|
|
164
|
-
});
|
|
165
|
-
const base = '/path/to/property/';
|
|
166
|
-
const cover = page.locator('.cover');
|
|
167
|
-
await cover.scrollIntoViewIfNeeded();
|
|
168
|
-
await cover.screenshot({ path: base + 'cover-print.png', type: 'png' });
|
|
169
|
-
const pages = page.locator('.page');
|
|
170
|
-
for (let i = 0; i < await pages.count(); i++) {
|
|
171
|
-
await pages.nth(i).scrollIntoViewIfNeeded();
|
|
172
|
-
await pages.nth(i).screenshot({ path: base + `page${i+2}-print.png`, type: 'png' });
|
|
173
|
-
}
|
|
174
|
-
const back = page.locator('.backpage');
|
|
175
|
-
await back.scrollIntoViewIfNeeded();
|
|
176
|
-
await back.screenshot({ path: base + 'backpage-print.png', type: 'png' });
|
|
177
|
-
await page.evaluate(() => {
|
|
178
|
-
document.querySelector('.download-bar').style.display = '';
|
|
179
|
-
document.body.style.overflow = '';
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Print CSS**: `@page { size: A4 portrait; margin: 0; }`. Each container hides children except `.print-img` which fills the page at `z-index: 9999`.
|
|
185
|
-
|
|
186
|
-
The `.print-img` elements use `opacity: 0; width: 1px; height: 1px` on screen (not `display: none` — that prevents image loading in some browsers).
|
|
187
|
-
|
|
188
|
-
## Scope
|
|
189
|
-
|
|
190
|
-
**Included**: HTML brochure, image organisation, SVG logo (dark + light), AI hero prompt, all print snapshots, Material Information compliance, EPC chart, disclaimers, page numbering.
|
|
191
|
-
|
|
192
|
-
**Not included**: Professional photography, actual EPC assessment, legal verification of Material Information values, agent CRM integration, print shop preparation (CMYK, bleed marks), executing the AI hero image prompt.
|
|
193
|
-
|
|
194
|
-
**Depends on**: Playwright MCP for screenshots, local HTTP server for browser preview.
|