@rubytech/create-realagent 1.0.843 → 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.
@@ -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-OLP7LZDW.js";
18
+ } from "./chunk-LU2UG7KB.js";
19
19
  import {
20
20
  LOG_DIR
21
- } from "./chunk-2YG3AYAH.js";
21
+ } from "./chunk-H7AEWSE6.js";
22
22
  import "./chunk-CJWFM3WX.js";
23
23
  import "./chunk-JSBRDJBE.js";
24
24
 
@@ -45,7 +45,7 @@ import {
45
45
  vncLog,
46
46
  waitForExit,
47
47
  writeChromiumWrapper
48
- } from "./chunk-OLP7LZDW.js";
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-2YG3AYAH.js";
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-SMWCZMZG.js");
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.