@rubytech/create-maxy-code 0.1.67 → 0.1.69

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.
Files changed (115) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  3. package/payload/platform/plugins/docs/references/admin-session.md +39 -2
  4. package/payload/platform/plugins/docs/references/deployment.md +2 -2
  5. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js +3 -2
  6. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js.map +1 -1
  7. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -1
  8. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +55 -55
  9. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
  10. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +4 -4
  11. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  12. package/payload/platform/services/claude-session-manager/dist/http-server.js +19 -0
  13. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  14. package/payload/platform/services/claude-session-manager/dist/index.js +18 -0
  15. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  16. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts +42 -0
  17. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts.map +1 -0
  18. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js +330 -0
  19. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js.map +1 -0
  20. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +10 -1
  21. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  22. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +15 -1
  23. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  24. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +8 -5
  25. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  26. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +35 -16
  27. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  28. package/payload/platform/templates/agents/admin/IDENTITY.md +8 -0
  29. package/payload/platform/templates/agents/admin/SOUL.md +1 -1
  30. package/payload/platform/templates/specialists/agents/database-operator.md +8 -48
  31. package/payload/premium-plugins/real-agent/plugins/brochures/skills/brand-design/SKILL.md +48 -0
  32. package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/SKILL.md +1 -1
  33. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +36 -5
  34. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/build.md +256 -11
  35. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/index.html +1 -0
  36. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/registers.md +65 -8
  37. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/template.html +1 -0
  38. package/payload/server/{chunk-S6PQA6Q4.js → chunk-HZ77KMTV.js} +1 -1
  39. package/payload/server/{chunk-NPZKH5EC.js → chunk-ITQ55PCQ.js} +1 -1
  40. package/payload/server/{chunk-X3Y6ENKA.js → chunk-VGMVEYX7.js} +35 -61
  41. package/payload/server/{cloudflare-task-tracker-TL6R364J.js → cloudflare-task-tracker-PZBX7X3D.js} +2 -2
  42. package/payload/server/maxy-edge.js +2 -2
  43. package/payload/server/public/assets/{admin-t8QqVwJF.js → admin-BPRjc4z9.js} +3 -3
  44. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DgfgldJT.js → architectureDiagram-Q4EWVU46-Asw7tNG5.js} +1 -1
  45. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-agu8GDzA.js → blockDiagram-DXYQGD6D-Blvay4_b.js} +1 -1
  46. package/payload/server/public/assets/{brand-BWCtpG7_.js → brand-B8JhGW9e.js} +1 -1
  47. package/payload/server/public/assets/{brand-BDASZqMG.css → brand-CwHvVF8s.css} +1 -1
  48. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CmNsUmAe.js → c4Diagram-AHTNJAMY-C2st6jZP.js} +1 -1
  49. package/payload/server/public/assets/channel-DTh_uFbz.js +1 -0
  50. package/payload/server/public/assets/{chunk-336JU56O-D9Uts7k9.js → chunk-336JU56O-Cp7B2yh1.js} +2 -2
  51. package/payload/server/public/assets/{chunk-426QAEUC-D4ABqXMn.js → chunk-426QAEUC-B0x3RXvj.js} +1 -1
  52. package/payload/server/public/assets/{chunk-4TB4RGXK-D1KE4OAX.js → chunk-4TB4RGXK-B0yM0pgq.js} +1 -1
  53. package/payload/server/public/assets/{chunk-5FUZZQ4R-CAh0GXe2.js → chunk-5FUZZQ4R-CqGhfArO.js} +1 -1
  54. package/payload/server/public/assets/{chunk-5PVQY5BW-DBHa6HOv.js → chunk-5PVQY5BW-jSeD3Yrj.js} +1 -1
  55. package/payload/server/public/assets/{chunk-EDXVE4YY-BDC-6mL3.js → chunk-EDXVE4YY-C7HuvG2r.js} +1 -1
  56. package/payload/server/public/assets/{chunk-ENJZ2VHE-CH3uROkW.js → chunk-ENJZ2VHE-DzCrge6H.js} +1 -1
  57. package/payload/server/public/assets/{chunk-ICPOFSXX-BzZf0nAw.js → chunk-ICPOFSXX-BPvCh0Yc.js} +1 -1
  58. package/payload/server/public/assets/{chunk-OYMX7WX6-BrLHrI6O.js → chunk-OYMX7WX6-DamxwrTn.js} +1 -1
  59. package/payload/server/public/assets/{chunk-U2HBQHQK-Bw4UkLe_.js → chunk-U2HBQHQK-DDiVd0qV.js} +1 -1
  60. package/payload/server/public/assets/{chunk-X2U36JSP-23xgdk05.js → chunk-X2U36JSP-CDof681v.js} +1 -1
  61. package/payload/server/public/assets/{chunk-YZCP3GAM-BA8iGgRa.js → chunk-YZCP3GAM-DYzaYjrN.js} +1 -1
  62. package/payload/server/public/assets/{chunk-ZZ45TVLE-B-ol4EgR.js → chunk-ZZ45TVLE-j0bcHHzU.js} +1 -1
  63. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Dsupydrn.js +1 -0
  64. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DrwAXnBf.js +1 -0
  65. package/payload/server/public/assets/clone-COx5mf-H.js +1 -0
  66. package/payload/server/public/assets/{dagre--kXszEIb.js → dagre-C8nbdG6y.js} +1 -1
  67. package/payload/server/public/assets/{dagre-KV5264BT-amN1uU2d.js → dagre-KV5264BT-1RnGN_fy.js} +1 -1
  68. package/payload/server/public/assets/data-DOI26n9p.js +1 -0
  69. package/payload/server/public/assets/{device-url-actions-CPoz5fqz.js → device-url-actions-C_Keyr0L.js} +1 -1
  70. package/payload/server/public/assets/{diagram-5BDNPKRD-Cwizs9tP.js → diagram-5BDNPKRD-C6d3Rrui.js} +1 -1
  71. package/payload/server/public/assets/{diagram-G4DWMVQ6-BpSu5Uao.js → diagram-G4DWMVQ6-aD4Dik01.js} +1 -1
  72. package/payload/server/public/assets/{diagram-MMDJMWI5-DiArtkto.js → diagram-MMDJMWI5-CAub49YE.js} +1 -1
  73. package/payload/server/public/assets/{diagram-TYMM5635-_tygK58Y.js → diagram-TYMM5635-CAKnAfEr.js} +1 -1
  74. package/payload/server/public/assets/{erDiagram-SMLLAGMA-CBV6LWYA.js → erDiagram-SMLLAGMA-BrqOworC.js} +1 -1
  75. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-CHZFrtOU.js → flowDiagram-DWJPFMVM-DV4eU-T2.js} +1 -1
  76. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-B3vKq5ov.js → ganttDiagram-T4ZO3ILL-DayXUN42.js} +1 -1
  77. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-dnJPjbtj.js → gitGraphDiagram-UUTBAWPF-CK1xV1OV.js} +1 -1
  78. package/payload/server/public/assets/graph-DP9P7TKZ.js +1 -0
  79. package/payload/server/public/assets/graph-labels-BoLyECfJ.js +1 -0
  80. package/payload/server/public/assets/{graphlib-CNXtnega.js → graphlib-CkF9o1XT.js} +1 -1
  81. package/payload/server/public/assets/{infoDiagram-42DDH7IO-D8DYwVAF.js → infoDiagram-42DDH7IO-CiepM2H6.js} +1 -1
  82. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CfEVY2Ud.js → ishikawaDiagram-UXIWVN3A-DwNkdQ6z.js} +1 -1
  83. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-FmoBq7Kh.js → journeyDiagram-VCZTEJTY-BlDLMfu_.js} +1 -1
  84. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-B-Q9qk99.js → kanban-definition-6JOO6SKY-ayZTc0Oj.js} +1 -1
  85. package/payload/server/public/assets/{line-DZwbJENP.js → line-LhPUiuH-.js} +1 -1
  86. package/payload/server/public/assets/{mermaid-parser.core-C3ahKykw.js → mermaid-parser.core-DyZYsQv_.js} +1 -1
  87. package/payload/server/public/assets/{mermaid.core-B8OFZIE8.js → mermaid.core-CauxgRdz.js} +3 -3
  88. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CqhkfbWa.js → mindmap-definition-QFDTVHPH-CQzcaJuh.js} +1 -1
  89. package/payload/server/public/assets/{page-B9GFro9g.js → page-BGv81dGN.js} +1 -1
  90. package/payload/server/public/assets/{page-BWKfXlHt.js → page-DAw3-U_s.js} +2 -2
  91. package/payload/server/public/assets/{pieDiagram-DEJITSTG-CJqQ6u3-.js → pieDiagram-DEJITSTG-BPhAeTm9.js} +1 -1
  92. package/payload/server/public/assets/{public-rWe9ADCS.js → public-CGI24wrL.js} +5 -5
  93. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-BtEqOXQM.js → quadrantDiagram-34T5L4WZ-CxrzL3ZF.js} +1 -1
  94. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DPHWUtE6.js → requirementDiagram-MS252O5E-ZBSC4fGX.js} +1 -1
  95. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-FBmc3wHT.js → sankeyDiagram-XADWPNL6-BTDBEisC.js} +1 -1
  96. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BMSd2-1M.js → sequenceDiagram-FGHM5R23-Bv7fA5_J.js} +1 -1
  97. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DqFbU-LT.js → stateDiagram-FHFEXIEX-D07lcZrk.js} +1 -1
  98. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cr1Qet-f.js +1 -0
  99. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-DsfvHVK8.js → timeline-definition-GMOUNBTQ-DyeyUqKa.js} +1 -1
  100. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-kHU05mqC.js → vennDiagram-DHZGUBPP-B9FqDmwS.js} +1 -1
  101. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-C696Mez_.js → wardleyDiagram-NUSXRM2D-4-5uCIAD.js} +1 -1
  102. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-yht-JyXJ.js → xychartDiagram-5P7HB3ND-WdkP5T_y.js} +1 -1
  103. package/payload/server/public/data.html +5 -5
  104. package/payload/server/public/graph.html +5 -5
  105. package/payload/server/public/index.html +7 -7
  106. package/payload/server/public/public.html +4 -4
  107. package/payload/server/server.js +18 -6
  108. package/payload/server/public/assets/channel-DXGOX55q.js +0 -1
  109. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DTuuDxpK.js +0 -1
  110. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CIw8RU0q.js +0 -1
  111. package/payload/server/public/assets/clone-O4ZyuvYl.js +0 -1
  112. package/payload/server/public/assets/data-vHmNQyXt.js +0 -1
  113. package/payload/server/public/assets/graph-C7QOwigU.js +0 -1
  114. package/payload/server/public/assets/graph-labels-Dm2RMEFy.js +0 -1
  115. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CXTnsHGq.js +0 -1
@@ -12,14 +12,16 @@
12
12
  // <accountDir>/agents/<role>/IDENTITY.md
13
13
  // <soul> ... </soul> — verbatim contents of
14
14
  // <accountDir>/agents/<role>/SOUL.md
15
- // <about-owner> ... </about-owner> — operator profile body produced
15
+ // <about-owner> ... </about-owner> — operator-profile body produced
16
16
  // by `formatProfileSummary` in
17
- // neo4j-store.ts. When the caller
18
- // resolves the body to ok:false,
19
- // the sentinel carries the literal
20
- // line `coverage-unresolved: <reason>`
21
- // so the agent narrates the gap to
22
- // the operator. Omitted entirely
17
+ // neo4j-store.ts. Two prose lines:
18
+ // the first names what is known
19
+ // (or the literal token `NOTHING`),
20
+ // the second carries the standing
21
+ // MAXIMISE imperative. On caller
22
+ // ok:false the body keeps the same
23
+ // shape with the reason inline-coded
24
+ // inside line one. Omitted entirely
23
25
  // when the caller supplies nothing
24
26
  // (e.g. role=public flows that do
25
27
  // not load an owner profile).
@@ -50,8 +52,9 @@
50
52
  // unreadable under <accountDir>/agents/<role>/.
51
53
  // No silent fallback: the caller surfaces the literal path so the operator
52
54
  // can grep `[pty-spawn]` for the failed file. Neo4j unreachable does NOT
53
- // fail the spawn; the loud-fail surface is the `coverage-unresolved` sentinel
54
- // body the agent reads back to the operator.
55
+ // fail the spawn; the loud-fail surface is the prose unresolved body inside
56
+ // `<about-owner>` same two-line shape as the happy path, reason token
57
+ // inline-coded so an operator can grep for it.
55
58
  import { readFileSync } from 'node:fs';
56
59
  import { join } from 'node:path';
57
60
  export const ATTACHMENT_CEILING_BYTES = 31_457_280; // 30 MiB, mirrors the SDK uploader
@@ -72,7 +75,14 @@ function readIdentityFile(path) {
72
75
  function renderAboutOwner(block) {
73
76
  if (!block)
74
77
  return { body: null, bytes: 0 };
75
- const inner = block.ok ? block.body : `coverage-unresolved: ${block.reason}`;
78
+ // Task 182: the failure branch matches the success branch's prose register
79
+ // — same two-line shape, NOTHING surfaced as the known state, and the
80
+ // reason token inline-coded so an operator can still grep for it. Reasons
81
+ // are short tokens (neo4j-unreachable, profile-not-found, missing-user-id);
82
+ // the surrounding sentence stays principled, not prescriptive.
83
+ const inner = block.ok
84
+ ? block.body
85
+ : `This is what you know about the operator: NOTHING (operator-data source unavailable: \`${block.reason}\`).\nYou must seek to MAXIMISE what you know about the operator to do your job effectively.`;
76
86
  return { body: inner, bytes: Buffer.byteLength(inner, 'utf8') };
77
87
  }
78
88
  function renderDormantPlugins(plugins) {
@@ -249,7 +259,11 @@ export function runSystemPromptSelfTest() {
249
259
  tunnelUrl: null,
250
260
  };
251
261
  const rendered = renderAppendBlock(host, '# self-test identity', '# self-test soul', {
252
- aboutOwner: { ok: true, body: '## About the Owner\n\nself-test owner' },
262
+ aboutOwner: {
263
+ ok: true,
264
+ body: 'This is what you know about the operator: name self-test owner.\n' +
265
+ 'You must seek to MAXIMISE what you know about the operator to do your job effectively.',
266
+ },
253
267
  dormantPlugins: [{ name: 'cloudflare', description: 'self-test plugin description' }],
254
268
  activePlugins: [
255
269
  {
@@ -290,14 +304,19 @@ export function runSystemPromptSelfTest() {
290
304
  return { ok: false, missing: tag };
291
305
  }
292
306
  }
293
- // Also exercise the coverage-unresolved branch — a refactor that drops the
294
- // `coverage-unresolved:` prefix would still pass the happy-path render but
295
- // strand the operator-visible failure signal.
307
+ // Also exercise the failure branch — a refactor that drops the prose
308
+ // unresolved body would still pass the happy-path render but strand the
309
+ // operator-visible failure signal. Task 182 doctrine: the reason token
310
+ // stays inline-coded so an operator can grep for it; the surrounding
311
+ // sentence holds the MAXIMISE imperative regardless of resolve state.
296
312
  const unresolved = renderAppendBlock(host, '# i', '# s', {
297
313
  aboutOwner: { ok: false, reason: 'self-test-reason' },
298
314
  });
299
- if (!unresolved.block.includes('coverage-unresolved: self-test-reason')) {
300
- return { ok: false, missing: 'coverage-unresolved literal' };
315
+ if (!unresolved.block.includes('operator-data source unavailable: `self-test-reason`')) {
316
+ return { ok: false, missing: 'unresolved reason token' };
317
+ }
318
+ if (!unresolved.block.includes('You must seek to MAXIMISE what you know about the operator')) {
319
+ return { ok: false, missing: 'unresolved MAXIMISE imperative' };
301
320
  }
302
321
  return { ok: true };
303
322
  }
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,14 @@ These three rules win when anything else in this prompt conflicts with them.
8
8
  2. **Be concise.** Three sentences or fewer. If you cannot answer in three, ask in five words.
9
9
  3. **Show your evidence.** Gather evidence before forming a hypothesis. One measurement beats three guesses.
10
10
 
11
+ ## What you must know about the operator
12
+
13
+ Quality of work is bounded by what you know about the operator. The `<about-owner>` block in your system prompt names what is currently known — a single prose line, or the literal token `NOTHING` when nothing has been learned yet. Treat that line as the starting state, not the final state.
14
+
15
+ On every turn you must seek to MAXIMISE what you know about the operator. When the line says `NOTHING`, the first thing to do is elicit one piece of operator information — a name, a role, an organisation, the domain of work — chosen by your own judgement, in one question. When the line names some facts, look for the next one that would most sharpen the next action you take, and ask for it in the natural flow of the conversation.
16
+
17
+ This obligation is unconditional: it applies on the opening turn (including the turn that follows the platform's ISO-timestamp stimulus), it applies after every tool call, and it applies even when no standing-offer pillar has been named. The agent never substitutes a generic greeting for the question that closes operator anonymity.
18
+
11
19
  ## Information gathering
12
20
 
13
21
  Quality of work is bounded by what you know about the operator. Every standing-offer pillar in `SOUL.md` is bounded by named operator-profile fields on `Person` and `Organisation` in the graph:
@@ -4,7 +4,7 @@ You are ${PRODUCT_NAME}, an AI operations manager. You free the operator from lo
4
4
 
5
5
  ## Phase 1 standing offer
6
6
 
7
- Five things you do end-to-end. Each is bounded by operator-profile fields on `Person` and `Organisation` (see `IDENTITY.md` § Information gathering for the field list per pillar). When the profile is complete enough to act on a pillar, offer the relevant one in plain language, then run it. When it is not, ask the one question that closes the largest gap; the offer surfaces once the gap closes.
7
+ Five things you do end-to-end. Each is bounded by operator-profile fields on `Person` and `Organisation` (see `IDENTITY.md` § Information gathering for the field list per pillar). When the profile is complete enough to act on a pillar, offer the relevant one in plain language, then run it.
8
8
 
9
9
  - **Brochure production.** A listing URL plus an agent URL becomes a print-ready A4 brochure (HTML and PDF) without manual layout.
10
10
  - **Property socials.** A produced brochure folder becomes a set of share-ready JPGs (landscape OG, square Instagram, portrait story) with captions, ready to post.
@@ -8,68 +8,28 @@ tools: mcp__memory__memory-write, mcp__memory__memory-update, mcp__memory__memor
8
8
 
9
9
  # Database Operator
10
10
 
11
- You are the background recorder for this account's memory graph. Every admin-agent turn that completes fires you as a hidden PTY with the operator's full conversation transcript as stdin. You read what was said, decide what is worth recording from the most recent operator turn, and write through the wrapped writers. You never interact with the operator.
12
-
13
- ## Input shape
14
-
15
- Stdin is one JSON object carrying the chronologically-ordered conversation:
16
-
17
- ```
18
- {
19
- "turns": [
20
- { "role": "user", "text": "<what the owner said>", "ts": "<ISO-8601>" },
21
- { "role": "assistant", "text": "<what the agent said>", "ts": "<ISO-8601>",
22
- "toolCalls": [ { "tool": "...", "input": {...}, "output": ... } ] },
23
- ...
24
- ],
25
- "conversationId": "<intrinsic claude session id>",
26
- "accountId": "<account id>",
27
- "occurredAt": "<ISO-8601 timestamp of the recorder fire>"
28
- }
29
- ```
30
-
31
- The array is oldest first, newest last — every user / assistant turn in the operator's transcript from session start to the moment the recorder fired. No windowing, no truncation. The **most recent operator turn** (the last `role == "user"` entry) is the trigger; everything before it is conversational context that disambiguates what the operator means.
32
-
33
- `toolCalls` appears on assistant turns that called tools. `input` and `output` are native JSON, not strings. `toolCalls` is omitted on turns that called no tools.
34
-
35
- A worked example. Four turns ending in a name-and-business statement:
36
-
37
- ```
38
- {
39
- "turns": [
40
- { "role": "assistant", "text": "Session noted. What would you like to work on?", "ts": "2026-05-19T21:27:45.158Z" },
41
- { "role": "user", "text": "you tell me", "ts": "2026-05-19T21:27:57.314Z" },
42
- { "role": "assistant", "text": "What is your name and the agency you operate under?", "ts": "2026-05-19T21:28:00.847Z" },
43
- { "role": "user", "text": "Smalleys. I am Joel Smalley", "ts": "2026-05-19T21:28:12.248Z" }
44
- ],
45
- "conversationId": "bf704cba-eaba-4d9b-b606-7f4b8b84c011",
46
- "accountId": "be23f93a-1e51-4586-b37c-c0e86d1614c9",
47
- "occurredAt": "2026-05-19T21:28:13.000Z"
48
- }
49
- ```
50
-
51
- Read in order, the trigger is the last operator turn (`"Smalleys. I am Joel Smalley"`). The preceding assistant turn names what was asked. The graph write that follows is `LocalBusiness {name:"Smalleys"}` plus the `:Person {givenName:"Joel"}` adjacency.
11
+ You are this account's background recorder for the memory graph. You receive the operator's full conversation transcript and you decide what the most recent operator turn implies for the graph. You write through the wrapped tools listed in your frontmatter and produce no other output. The operator never sees you.
52
12
 
53
13
  ## Three rules
54
14
 
55
15
  These three rules win when anything else in this prompt conflicts with them.
56
16
 
57
- 1. **Be precise.** Every write has a source in the most recent operator turn, anchored by the prior turns in the array. No inferred facts. No "likely".
58
- 2. **Be concise.** No prose output. Your job is the write, not the report. If there is nothing to write, exit silently.
59
- 3. **Show your evidence.** Stamp `createdBySource='turn-recorder'` and `createdBySession=<conversationId>` on every node and edge so the audit trail names where the claim came from.
17
+ 1. **Be precise.** Every write traces to the most recent operator turn, anchored by the earlier turns in the transcript. No inferred facts. No "likely".
18
+ 2. **Be concise.** Your job is the write, not the report. If the latest operator turn implies no write, exit silently. Do not narrate, summarise, or describe the graph.
19
+ 3. **Stamp your evidence.** On every node and edge you write, set `createdBySource` to the literal string `turn-recorder` and `createdBySession` to the operator's conversation id so the audit trail names where the claim came from.
60
20
 
61
21
  ## Outcome contract
62
22
 
63
- Graph writes only, through the wrapped writers in your tool list. No raw cypher. No filesystem reads. No web calls. No tool not in your frontmatter. The most recent operator turn is what you record; earlier turns are context, not separate triggers. If the latest operator turn implies a write the wrapped writers cannot make, the write is out of scope for this run: skip silently and let the graph stay where it is.
23
+ Writes happen through the wrapped tools in your frontmatter. Nothing else. No raw cypher, no filesystem reads, no web calls, no tool outside that list. The most recent operator turn is what you record; earlier turns are context, not separate triggers. If the latest operator turn implies a change the wrapped tools cannot make, that change is out of scope for this run skip silently and leave the graph where it is.
64
24
 
65
25
  ## Graph hierarchy
66
26
 
67
- Every node has a parent in the canonical chain `LocalBusiness Project Task | Person | Organisation | KnowledgeDocument`. The wrapped writers reject orphans; never try to bypass that by writing the node first and the parent edge "later". If you do not have a parent for the node, do not write the node.
27
+ Every node has a parent in the canonical chain that runs LocalBusiness, then Project, then Task or Person or Organisation or KnowledgeDocument. The wrapped tools reject orphans; do not try to circumvent that by writing a node first and adding the parent edge later. If you do not have a parent for the node, do not write the node.
68
28
 
69
29
  ## Idempotency
70
30
 
71
- You will be fired many times against the same operator. The wrapped writers MERGE on natural keys; identical inputs produce no new nodes or edges. Do not invent surrogate keys to force a fresh write.
31
+ You will be fired many times against the same operator. The wrapped tools merge on natural keys; identical inputs produce no new nodes or edges. Do not invent surrogate keys to force a fresh write.
72
32
 
73
33
  ## When a tool returns an error
74
34
 
75
- Acknowledge the error in your log line, do not retry, do not call a different tool to "rescue" the write. The graph stays where it is; the next turn fires you again.
35
+ Acknowledge the error to yourself and stop. Do not retry. Do not call a different tool to rescue the write. The graph stays where it is; the next turn will fire you again.
@@ -73,6 +73,54 @@ What the file must contain regardless of who generated it:
73
73
 
74
74
  The naming convention is `--ds-{category}-{property}-{variant}-{state}` unless the site already ships a brand-prefixed convention, in which case adopt the existing prefix and note it.
75
75
 
76
+ #### Optional: `## Type roles` block (for branded brochures)
77
+
78
+ When the brand is the source for a property brochure run, the `property-brochure` skill's branded register applies the DESIGN.md's palette and font tokens automatically. For brands whose live identity diverges from the brochure template's editorial conventions (italic display, small-caps decks, gold hairlines under every heading, dropcaps, italic emphasis on `<em>`), the token-only swap is not enough — the brochure ends up reading as a country-house folio painted in the brand's colours, not as a brand document.
79
+
80
+ To close that, declare an optional `## Type roles` block in the DESIGN.md. The brochure build reads it and emits a deterministic CSS overlay at the template's `<!-- BRAND_TYPE_ROLES_OVERRIDE_SLOT -->` sentinel. The full role list (fixed, bounded), the allowed values per role, and the recipe map live in `property-brochure/references/registers.md → Type-role overrides` and `property-brochure/references/build.md → Type-role overlay generation`.
81
+
82
+ Format — one role per line, `role: value`, or a Markdown table:
83
+
84
+ ```markdown
85
+ ## Type roles
86
+
87
+ | Role | Value |
88
+ |---|---|
89
+ | `display-headline-style` | `normal` |
90
+ | `display-em-style` | `weight-shift` |
91
+ | `display-letterspacing` | `medium` |
92
+ | `deck-family` | `sans` |
93
+ | `deck-case` | `sentence` |
94
+ | `subtitle-family` | `sans-tracked-caps` |
95
+ | `caption-family` | `sans` |
96
+ | `caption-em-style` | `weight-shift` |
97
+ | `dropcap` | `hidden` |
98
+ | `hairline-rules` | `eyebrow-only` |
99
+ | `body-em-style` | `weight-shift` |
100
+ | `folio-em-style` | `weight-shift` |
101
+ | `backpage-em-style` | `weight-shift` |
102
+ ```
103
+
104
+ Omitted roles inherit the template default. The block is **optional**; brands whose identity already matches the template's editorial conventions (country-house agents, traditional residential, fine-art galleries) skip the block entirely.
105
+
106
+ How to decide which values to set, given the brand audit you've already done:
107
+
108
+ | Observation on the live site | Maps to role |
109
+ |---|---|
110
+ | Display headlines render upright (no `font-style: italic`) | `display-headline-style: normal` |
111
+ | Display family is a humanist sans (Montserrat, Inter, Söhne) | `display-letterspacing: medium` |
112
+ | Display family is a geometric/grotesque sans (Helvetica, Roboto Mono) | `display-letterspacing: tight` |
113
+ | The site never italicises anything | `display-em-style`, `body-em-style`, `caption-em-style`, `folio-em-style`, `backpage-em-style` → `weight-shift` (preferred) or `normal` |
114
+ | All body running text is sans-serif | `deck-family: sans`, `caption-family: sans` |
115
+ | Captions and labels share the body family | `caption-family: sans` |
116
+ | No dropcaps anywhere on the site | `dropcap: hidden` |
117
+ | Site uses bold sans for initial-cap accents (e.g. magazine-style hero pull-letters) | `dropcap: ink-bold-sans` |
118
+ | Decorative gold/accent rules appear only beside small labels, not under headings | `hairline-rules: eyebrow-only` (or `hidden` if no rules at all) |
119
+ | Subtitles use letter-spaced uppercase sans | `subtitle-family: sans-tracked-caps` |
120
+
121
+ If the brand's identity has no observable signal either way for a role, leave it omitted — the template default applies.
122
+
123
+
76
124
  ### `<slug>-logo-light.png` and `<slug>-logo-dark.png`
77
125
 
78
126
  Two PNGs of the wordmark/lockup as the brand uses it. **The filename describes the colour of the logo art itself, not the surface where it will be placed.** This matches the natural reading and the convention used by Google, Bootstrap, Tailwind, and most public design systems:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: make-brochure
3
- description: Use when the user gives both an estate agent's website URL (or existing brand-pack directory) and a property listing URL (or existing property-assets directory) in one request, asking for the brochure as an end-to-end deliverable. Trigger phrases include "build a brochure for <listing> using the agent at <agent-url>", "create a brochure for the property at <X> with the brand at <Y>", "end-to-end brochure for <listing>", "do everything from brand to brochure for <listing>", "make me the brochure for <listing> on <agent-site>", or any request that names both a brand source and a property source in the same turn.
3
+ description: Meta-skill that runs the full brand-design → property-extract → property-brochure pipeline end-to-end, skipping any step whose output already exists on disk. This is the default surface whenever the deliverable is a property brochure — use it whether the user supplies an agent URL plus a listing URL, just a listing URL on a known agent, an existing brand pack plus a listing, or simply asks to "make a brochure for <listing>". The three component skills (brand-design, property-extract, property-brochure) remain individually callable for single-step work, but any request whose outcome is the brochure itself should route here. Trigger phrases include "make me a brochure for <listing>", "build the brochure for <X>", "brochure for <listing>", "do the brochure end-to-end", "everything from brand to brochure for <listing>", "create a brochure for the property at <X> with the brand at <Y>", or any full-pipeline brochure intent.
4
4
  allowed-tools:
5
5
  - Bash
6
6
  - Read
@@ -52,16 +52,47 @@ Both greps must succeed before populating content. If either fails, recopy.
52
52
 
53
53
  | Register | What you change |
54
54
  |---|---|
55
- | **Premium** (template scheme retained) | Keep all super-premium tokens (palette, type, layout) verbatim. Swap **only** the agent's logo and contact details. Do not apply the brand's palette or type tokens. |
56
- | **Branded** (DESIGN.md re-skin) | Swap font names at `--serif` / `--body-serif` / `--sans`; replace palette tokens with the DESIGN doc's values; substitute logo PNGs. Sixteen-page structure stays. |
55
+ | **Branded** (default, DESIGN.md re-skin) | Swap font names at `--serif` / `--body-serif` / `--sans`; replace palette tokens with the DESIGN doc's values; substitute logo PNGs. Sixteen-page structure stays. |
56
+ | **Premium** (opt-in only, template scheme retained) | Keep all super-premium tokens (palette, type, layout) verbatim. Swap **only** the agent's logo and contact details. Do not apply the brand's palette or type tokens. |
57
57
 
58
58
  Decision order:
59
- 1. User said **"premium" / "super-premium"** → Premium (regardless of DESIGN.md).
60
- 2. **DESIGN.md provided** and user did *not* say premium Branded.
61
- 3. Neither → Premium (template defaults).
59
+ 1. User explicitly said **"premium" / "super-premium"** in the request → Premium (regardless of DESIGN.md).
60
+ 2. Otherwise → **Branded**. If no DESIGN.md exists for the brand, **run `brand-design` first** to produce one. Do not fall back to Premium just because the brand pack is missing; Premium is opt-in, "missing brand pack" is a setup step, not a register decision.
62
61
 
63
62
  Detail and forbidden patterns: [references/registers.md](references/registers.md).
64
63
 
64
+ ## Step 3b — operator shorthands the request may carry
65
+
66
+ The operator's one-line request can carry instructions beyond the brand + property URLs. Interpret naturally; do not require the operator to memorise shortcuts. If a phrase is ambiguous, ask one targeted question.
67
+
68
+ ### Skipping part of the seller brief
69
+
70
+ If the operator's request contains a phrase like "skip lifestyle", "skip questions", "skip extra info", "skip the brief", "no interview", "use the listing description", interpret it against the section headings of `make-brochure/references/seller-brief-template.md`:
71
+
72
+ | Operator phrase mentions… | Maps to | Effect |
73
+ |---|---|---|
74
+ | `lifestyle` | **Layout & Lifestyle** (Q5 to Q7) | Mark those questions `[SKIP]`; fall back to listing-derived copy for the chapter decks they would have informed. |
75
+ | `area`, `community`, `local` | **Local Area & Community** (Q11 to Q14) | Same: `[SKIP]` those; derive area copy from the listing only. |
76
+ | `improvements`, `upgrades` | **Improvements & Upgrades** (Q8 to Q10) | Same: particulars list emphasis comes from key features instead. |
77
+ | `motivation`, `story` | **Story & Motivation** (Q1 to Q4) | Same: opener anchors on facts (place, age, tenure) rather than the seller's voice. |
78
+ | `practical`, `buyer` | **Practical & Buyer Avatar** (Q15 to Q18, Q20) | Same: back-page tagline drawn from the listing rather than the seller. |
79
+ | `questions`, `the brief`, `interview`, `extra info` (broad) | the whole brief gate | Bypass the gate entirely; compose copy from the listing description, the photos, and the floor plan. |
80
+
81
+ If a phrase doesn't clearly map to a section, ask **one** targeted question (e.g. "Which sections do you want skipped: Layout & Lifestyle, Local Area, both?") and proceed from the answer. Record the resolved decision by writing `[SKIP]` into each affected question in `seller-brief.md` (parallel to the existing `[VERBATIM]` marker), so the next re-render behaves the same without re-asking.
82
+
83
+ A `[SKIP]` answer is a **valid** answer for the gate. An empty answer is still a defect.
84
+
85
+ ### Adding socials to the same request
86
+
87
+ If the operator's request contains "and socials", "+socials", "with socials", "with OG images", or any equivalent, append a socials step after the brochure web bundle is built:
88
+
89
+ 1. Invoke the `property-socials` skill on the same `<property_dir>` (it reads `output/web/page.html` or `output/web/index.html`, `property.json`, and the brand pack).
90
+ 2. The OG JPGs (landscape 1200x630, square 1080x1080, portrait 1080x1350) land under `output/web/socials/`.
91
+ 3. This skill **additionally** produces a small gallery page at `output/web/socials.html`: the third endpoint in the web bundle, alongside the brochure HTML and the landing page, previewing each tile size with download links and the suggested copy / alt text for each platform. Brand it from the same DESIGN.md tokens used for the brochure.
92
+ 4. The bundle's smoke-test extends to `socials.html` and every JPG referenced; all must return 200 from the isolated HTTP server.
93
+
94
+ The web bundle is then re-zipped with the socials artefacts included. If the operator did **not** request socials, do not run the step; adding 1 to 3 MB of imagery and a third HTML page silently is an over-reach.
95
+
65
96
  ## Step 4 — populate, render, deliver
66
97
 
67
98
  Read the seller brief once before writing any copy. Then walk the `{{ placeholder }}` tokens in both files top-to-bottom, substituting from the brief and `property.json`. The complete substitution contract — every token, its source field, its expected format and voice — lives in [references/placeholders.md](references/placeholders.md). Each token also has an inline `<!-- REPLACE: ... -->` comment in the template giving the short version.