@rubytech/create-maxy-code 0.1.485 → 0.1.486

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 (91) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/docs/superpowers/plans/2026-07-21-graph-caption-resolver.md +124 -0
  3. package/payload/platform/docs/superpowers/plans/2026-07-21-task-1877-bash-schema-enforcement.md +107 -0
  4. package/payload/platform/docs/superpowers/plans/2026-07-21-task-1887-reconcile-allowed-top-level.md +205 -0
  5. package/payload/platform/lib/graph-style/dist/index.d.ts +4 -1
  6. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  7. package/payload/platform/lib/graph-style/dist/index.js +109 -1
  8. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  9. package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +117 -0
  10. package/payload/platform/lib/graph-style/src/index.ts +81 -1
  11. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard-bash.test.sh +159 -0
  12. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +18 -6
  13. package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-post.sh +141 -0
  14. package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-pre.sh +66 -0
  15. package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +33 -1
  16. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +3 -3
  17. package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -0
  18. package/payload/platform/plugins/cloudflare/bin/portal-enrol.mjs +23 -2
  19. package/payload/platform/plugins/cloudflare/mcp/__tests__/authorize.test.ts +2 -2
  20. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-directory-listing.test.ts +49 -2
  21. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +57 -3
  22. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-indexed-download.test.ts +44 -2
  23. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-session-grant.test.ts +67 -0
  24. package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +42 -3
  25. package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +10 -1
  26. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/session.ts +19 -5
  27. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/download.ts +19 -2
  28. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/files.ts +8 -2
  29. package/payload/platform/plugins/cloudflare/skills/data-portal/template/index.html +28 -5
  30. package/payload/platform/plugins/cloudflare/skills/data-portal/template/portal.css +195 -6
  31. package/payload/platform/plugins/cloudflare/skills/data-portal/template/portal.js +193 -10
  32. package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +4 -3
  33. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  34. package/payload/platform/plugins/email/PLUGIN.md +5 -1
  35. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.d.ts +2 -0
  36. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.d.ts.map +1 -0
  37. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.js +50 -0
  38. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.js.map +1 -0
  39. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.d.ts +2 -0
  40. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.d.ts.map +1 -0
  41. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.js +51 -0
  42. package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.js.map +1 -0
  43. package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.d.ts +2 -0
  44. package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.d.ts.map +1 -0
  45. package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.js +89 -0
  46. package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.js.map +1 -0
  47. package/payload/platform/plugins/email/mcp/dist/index.js +28 -0
  48. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  49. package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.d.ts +22 -0
  50. package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.d.ts.map +1 -0
  51. package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.js +55 -0
  52. package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.js.map +1 -0
  53. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +32 -0
  54. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  55. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +75 -1
  56. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  57. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.d.ts +19 -0
  58. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.d.ts.map +1 -0
  59. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.js +49 -0
  60. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.js.map +1 -0
  61. package/payload/platform/plugins/email/references/email-reference.md +7 -1
  62. package/payload/platform/plugins/memory/references/schema-construction.md +18 -12
  63. package/payload/platform/plugins/memory/references/schema-estate-agent.md +11 -6
  64. package/payload/platform/scripts/__tests__/account-schema-owned-dirs.test.sh +75 -6
  65. package/payload/platform/scripts/lib/account-schema-owned-dirs.py +111 -22
  66. package/payload/platform/scripts/lib/provision-account-dir.sh +8 -1
  67. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +39 -0
  68. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -0
  69. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +299 -0
  70. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -0
  71. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  72. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  73. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  74. package/payload/platform/services/claude-session-manager/dist/index.js +15 -0
  75. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  77. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +4 -0
  78. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  79. package/payload/platform/templates/account-schema/SCHEMA.md +17 -0
  80. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  81. package/payload/server/{chunk-XGNRSM57.js → chunk-HN4HFTXE.js} +6 -0
  82. package/payload/server/maxy-edge.js +1 -1
  83. package/payload/server/public/assets/{admin-rScqRq-R.js → admin-BoVCP4Mw.js} +1 -1
  84. package/payload/server/public/assets/{data-TOWuhMFb.js → data-CtOxa94P.js} +1 -1
  85. package/payload/server/public/assets/{graph-labels-Axa04w8A.js → graph-labels-C8-sIKuv.js} +1 -1
  86. package/payload/server/public/assets/{graph-BEGs_P2m.js → graph-mJ9ky5dc.js} +1 -1
  87. package/payload/server/public/assets/{page-6CZ8R57f.js → page-Cv0qUwMG.js} +1 -1
  88. package/payload/server/public/data.html +3 -3
  89. package/payload/server/public/graph.html +2 -2
  90. package/payload/server/public/index.html +3 -3
  91. package/payload/server/server.js +84 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { describe, it, expect } from "vitest"
2
+ import { GRAPH_LABEL_COLOURS, pickShortLabel, type GraphNodeLike } from "../index"
3
+
4
+ // ---------------------------------------------------------------------------
5
+ // Caption-coverage reconciliation gate (Task 1879, Part B).
6
+ //
7
+ // GRAPH_LABEL_COLOURS is one of three hand-synced per-label registries (colour,
8
+ // icon, caption). A label given a colour but no caption decision renders as its
9
+ // bare type on the canvas — a silent failure that only a human reading the graph
10
+ // catches. This fixture is the third registry made explicit: every styled label
11
+ // must either resolve to a human caption or be declared an intentional
12
+ // bare-type ("fallback grey") child/annotation label. Adding a colour key
13
+ // without a fixture entry fails the build.
14
+ // ---------------------------------------------------------------------------
15
+
16
+ const node = (label: string, properties: Record<string, unknown>): GraphNodeLike => ({
17
+ id: "n",
18
+ labels: [label],
19
+ properties,
20
+ })
21
+
22
+ type Coverage = { node: GraphNodeLike; expected: string } | { fallbackGrey: true }
23
+
24
+ const CAPTION_COVERAGE: Record<string, Coverage> = {
25
+ // ── Business identity — captioned via the generic `name`/`title` fallback ──
26
+ LocalBusiness: { node: node("LocalBusiness", { name: "Ruby Tech" }), expected: "Ruby Tech" },
27
+ Service: { node: node("Service", { name: "Boiler service" }), expected: "Boiler service" },
28
+ Organization: { node: node("Organization", { name: "BuildCo" }), expected: "BuildCo" },
29
+ Customer: { node: node("Customer", { name: "Acme Ltd" }), expected: "Acme Ltd" },
30
+ Site: { node: node("Site", { name: "North Depot" }), expected: "North Depot" },
31
+ Asset: { node: node("Asset", { name: "Chiller 1" }), expected: "Chiller 1" },
32
+ Part: { node: node("Part", { name: "Filter" }), expected: "Filter" },
33
+ PpmContract: { node: node("PpmContract", { name: "PPM 2024" }), expected: "PPM 2024" },
34
+ DigitalDocument: { node: node("DigitalDocument", { name: "Spec.pdf" }), expected: "Spec.pdf" },
35
+ Question: { node: node("Question", { name: "What time?" }), expected: "What time?" },
36
+ FAQPage: { node: node("FAQPage", { name: "FAQ" }), expected: "FAQ" },
37
+ DefinedTerm: { node: node("DefinedTerm", { name: "SLA" }), expected: "SLA" },
38
+ Task: { node: node("Task", { name: "Call client" }), expected: "Call client" },
39
+ Event: { node: node("Event", { name: "Kickoff" }), expected: "Kickoff" },
40
+ ImageObject: { node: node("ImageObject", { name: "hero.jpg" }), expected: "hero.jpg" },
41
+ CreativeWork: { node: node("CreativeWork", { title: "Summary" }), expected: "Summary" },
42
+ ConversationArchive: { node: node("ConversationArchive", { title: "Re: quote" }), expected: "Re: quote" },
43
+ Objective: { node: node("Objective", { title: "Grow revenue" }), expected: "Grow revenue" },
44
+ KeyResult: { node: node("KeyResult", { title: "10 new clients" }), expected: "10 new clients" },
45
+ Decision: { node: node("Decision", { title: "Adopt X" }), expected: "Adopt X" },
46
+ Source: { node: node("Source", { title: "Market report" }), expected: "Market report" },
47
+ Note: { node: node("Note", { text: "Called back" }), expected: "Called back" },
48
+ KnowledgeDocument: { node: node("KnowledgeDocument", { name: "CV.pdf" }), expected: "CV.pdf" },
49
+ Project: { node: node("Project", { name: "Rebrand" }), expected: "Rebrand" },
50
+ Workflow: { node: node("Workflow", { name: "Viewing follow-up" }), expected: "Viewing follow-up" },
51
+
52
+ // ── Existing per-label branches ──
53
+ ToolCall: { node: node("ToolCall", { toolName: "graph-search" }), expected: "graph-search" },
54
+ WorkflowRun: { node: node("WorkflowRun", { startedAt: "2024-01-15T09:30:00Z" }), expected: "2024-01-15 09:30" },
55
+ WorkflowStep: { node: node("WorkflowStep", { label: "send email" }), expected: "send email" },
56
+ Person: { node: node("Person", { givenName: "Ada", familyName: "Lovelace" }), expected: "Ada Lovelace" },
57
+ Agent: { node: node("Agent", { displayName: "Listing Curator" }), expected: "Listing Curator" },
58
+ Job: { node: node("Job", { client: "Acme", jobId: "42" }), expected: "Acme #42" },
59
+ Quote: { node: node("Quote", { ref: "Q-1001" }), expected: "Q-1001" },
60
+ InboundInvoice: { node: node("InboundInvoice", { supplier: "BuildCo", confirmationNumber: "INV-9" }), expected: "BuildCo #INV-9" },
61
+ WhatsAppGroup: { node: node("WhatsAppGroup", { clientName: "Smith Job" }), expected: "Smith Job" },
62
+ CashEntry: { node: node("CashEntry", { description: "Fuel" }), expected: "Fuel" },
63
+ Message: { node: node("Message", { role: "user", createdAt: "2024-01-15T09:30:45Z" }), expected: "user 09:30:45" },
64
+ Conversation: { node: node("Conversation", { sessionId: "abcdef1234567890" }), expected: "Conv abcdef12" },
65
+
66
+ // ── New branches (Part A) — top-level operator-entry labels that previously
67
+ // fell through to their bare type ──
68
+ Property: { node: node("Property", { slug: "x", address: "18 Rowney Gardens" }), expected: "18 Rowney Gardens" },
69
+ Listing: { node: node("Listing", { slug: "x", displayName: "Griffin House" }), expected: "Griffin House" },
70
+ Viewing: { node: node("Viewing", { date: "2024-02-01" }), expected: "2024-02-01" },
71
+ Offer: { node: node("Offer", { status: "accepted", price: 250000 }), expected: "accepted £250000" },
72
+ Visit: { node: node("Visit", { purpose: "Annual service", status: "scheduled" }), expected: "Annual service" },
73
+ PurchaseOrder: { node: node("PurchaseOrder", { poNumber: "PO-77" }), expected: "PO-77" },
74
+ Invoice: { node: node("Invoice", { confirmationNumber: "INV-100" }), expected: "INV-100" },
75
+ Risk: { node: node("Risk", { statement: "Budget overrun" }), expected: "Budget overrun" },
76
+ Finding: { node: node("Finding", { statement: "Leak in unit 3" }), expected: "Leak in unit 3" },
77
+ Hypothesis: { node: node("Hypothesis", { statement: "Price too high" }), expected: "Price too high" },
78
+
79
+ // ── Intentional bare-type labels — specification, child, or platform-plumbing
80
+ // labels that are not first-class operator-entry entities on the canvas ──
81
+ PriceSpecification: { fallbackGrey: true },
82
+ OpeningHoursSpecification: { fallbackGrey: true },
83
+ Section: { fallbackGrey: true },
84
+ Chunk: { fallbackGrey: true },
85
+ Review: { fallbackGrey: true },
86
+ Preference: { fallbackGrey: true },
87
+ UserProfile: { fallbackGrey: true },
88
+ AdminUser: { fallbackGrey: true },
89
+ AccessGrant: { fallbackGrey: true },
90
+ StepResult: { fallbackGrey: true },
91
+ Email: { fallbackGrey: true }, // retired label (moved to ConversationArchive{source:'email'})
92
+ EmailAccount: { fallbackGrey: true },
93
+ UserMessage: { fallbackGrey: true },
94
+ AssistantMessage: { fallbackGrey: true },
95
+ AdminConversation: { fallbackGrey: true },
96
+ PublicConversation: { fallbackGrey: true },
97
+ }
98
+
99
+ describe("caption coverage reconciles against GRAPH_LABEL_COLOURS", () => {
100
+ it("declares exactly the styled labels — no gaps, no strays", () => {
101
+ const styled = Object.keys(GRAPH_LABEL_COLOURS).sort()
102
+ const declared = Object.keys(CAPTION_COVERAGE).sort()
103
+ const missing = styled.filter((l) => !(l in CAPTION_COVERAGE))
104
+ const stray = declared.filter((l) => !(l in GRAPH_LABEL_COLOURS))
105
+ expect(missing, "styled labels with no caption decision").toEqual([])
106
+ expect(stray, "caption entries for unstyled labels").toEqual([])
107
+ })
108
+
109
+ for (const [label, cov] of Object.entries(CAPTION_COVERAGE)) {
110
+ if ("fallbackGrey" in cov) continue
111
+ it(`captions ${label} to a non-type label`, () => {
112
+ const got = pickShortLabel(cov.node)
113
+ expect(got).toBe(cov.expected)
114
+ expect(got).not.toBe(label)
115
+ })
116
+ }
117
+ })
@@ -398,13 +398,41 @@ export function formatMessageTimestamp(iso: string): string | null {
398
398
  return m[1]
399
399
  }
400
400
 
401
+ // Estate-agent caption sources. :Property and :Listing carry no `name`; their
402
+ // identity lives in address/displayName with slug as the always-present natural
403
+ // key. Shared by pickShortLabel (truncated) and pickDisplayName (untruncated).
404
+ function estateAddress(props: Record<string, unknown>): string {
405
+ const address = typeof props.address === 'string' ? props.address : ''
406
+ const slug = typeof props.slug === 'string' ? props.slug : ''
407
+ return address.length > 0 ? address : slug
408
+ }
409
+
410
+ function estateListingName(props: Record<string, unknown>): string {
411
+ const displayName = typeof props.displayName === 'string' ? props.displayName : ''
412
+ const slug = typeof props.slug === 'string' ? props.slug : ''
413
+ return displayName.length > 0 ? displayName : slug
414
+ }
415
+
416
+ // :Offer carries no single human label; compose status with the offered price.
417
+ function offerCaption(props: Record<string, unknown>): string {
418
+ const status = typeof props.status === 'string' ? props.status : ''
419
+ const price =
420
+ typeof props.price === 'number' ? `£${props.price}`
421
+ : typeof props.price === 'string' && props.price.length > 0 ? `£${props.price}`
422
+ : ''
423
+ return [status, price].filter((s) => s.length > 0).join(' ')
424
+ }
425
+
401
426
  /**
402
427
  * 24-char canvas label for a node. Label precedence per label family
403
428
  * (ToolCall.toolName, WorkflowRun startedAt formatted, WorkflowStep.label,
404
429
  * Person givenName+familyName compose, Agent displayName/slug, Job
405
430
  * client+#jobId compose, Quote ref, InboundInvoice
406
431
  * supplier+#confirmationNumber compose, WhatsAppGroup clientName,
407
- * Message role+timestamp), then a generic
432
+ * Message role+timestamp, Property address/slug, Listing displayName/slug,
433
+ * Viewing date, Offer status+price, Visit purpose/status, PurchaseOrder
434
+ * poNumber, Invoice confirmationNumber, Risk/Finding/Hypothesis statement),
435
+ * then a generic
408
436
  * fallthrough across curated keys
409
437
  * (name, title, summary, givenName, subject, text) — :ConversationArchive
410
438
  * rows (Task 397) carry a stable `title` written by the writer so they pick
@@ -491,6 +519,32 @@ export function pickShortLabel(node: GraphNodeLike): string {
491
519
  const ts = formatMessageTimestamp(createdAt)
492
520
  if (ts) return `${roleShort} ${ts}`
493
521
  }
522
+ } else if (primaryLabel === 'Property') {
523
+ const v = estateAddress(props)
524
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
525
+ } else if (primaryLabel === 'Listing') {
526
+ const v = estateListingName(props)
527
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
528
+ } else if (primaryLabel === 'Viewing') {
529
+ const v = typeof props.date === 'string' ? props.date : ''
530
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
531
+ } else if (primaryLabel === 'Offer') {
532
+ const v = offerCaption(props)
533
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
534
+ } else if (primaryLabel === 'Visit') {
535
+ const purpose = typeof props.purpose === 'string' ? props.purpose : ''
536
+ const status = typeof props.status === 'string' ? props.status : ''
537
+ const v = purpose.length > 0 ? purpose : status
538
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
539
+ } else if (primaryLabel === 'PurchaseOrder') {
540
+ const v = typeof props.poNumber === 'string' ? props.poNumber : ''
541
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
542
+ } else if (primaryLabel === 'Invoice') {
543
+ const v = typeof props.confirmationNumber === 'string' ? props.confirmationNumber : ''
544
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
545
+ } else if (primaryLabel === 'Risk' || primaryLabel === 'Finding' || primaryLabel === 'Hypothesis') {
546
+ const v = typeof props.statement === 'string' ? props.statement : ''
547
+ if (v.length > 0) return v.length > 24 ? v.slice(0, 24) + '…' : v
494
548
  }
495
549
  for (const k of ['name', 'title', 'summary', 'givenName', 'subject', 'text']) {
496
550
  const v = props[k]
@@ -557,6 +611,32 @@ export function pickDisplayName(node: GraphNodeLike): string {
557
611
  } else if (primaryLabel === 'CashEntry') {
558
612
  const desc = typeof props.description === 'string' ? props.description : ''
559
613
  if (desc.length > 0) return desc
614
+ } else if (primaryLabel === 'Property') {
615
+ const v = estateAddress(props)
616
+ if (v.length > 0) return v
617
+ } else if (primaryLabel === 'Listing') {
618
+ const v = estateListingName(props)
619
+ if (v.length > 0) return v
620
+ } else if (primaryLabel === 'Viewing') {
621
+ const v = typeof props.date === 'string' ? props.date : ''
622
+ if (v.length > 0) return v
623
+ } else if (primaryLabel === 'Offer') {
624
+ const v = offerCaption(props)
625
+ if (v.length > 0) return v
626
+ } else if (primaryLabel === 'Visit') {
627
+ const purpose = typeof props.purpose === 'string' ? props.purpose : ''
628
+ const status = typeof props.status === 'string' ? props.status : ''
629
+ const v = purpose.length > 0 ? purpose : status
630
+ if (v.length > 0) return v
631
+ } else if (primaryLabel === 'PurchaseOrder') {
632
+ const v = typeof props.poNumber === 'string' ? props.poNumber : ''
633
+ if (v.length > 0) return v
634
+ } else if (primaryLabel === 'Invoice') {
635
+ const v = typeof props.confirmationNumber === 'string' ? props.confirmationNumber : ''
636
+ if (v.length > 0) return v
637
+ } else if (primaryLabel === 'Risk' || primaryLabel === 'Finding' || primaryLabel === 'Hypothesis') {
638
+ const v = typeof props.statement === 'string' ? props.statement : ''
639
+ if (v.length > 0) return v
560
640
  }
561
641
  for (const k of ['name', 'title', 'summary', 'givenName', 'subject', 'text']) {
562
642
  const v = props[k]
@@ -0,0 +1,159 @@
1
+ #!/usr/bin/env bash
2
+ # Regression test for the Bash-channel schema hooks:
3
+ # fs-schema-guard-bash-pre.sh (PreToolUse snapshot)
4
+ # fs-schema-guard-bash-post.sh (PostToolUse diff + block)
5
+ #
6
+ # Covers:
7
+ # 1. Non-Bash tool (pre + post) -> ALLOW (early exit)
8
+ # 2. Pre takes a snapshot of the current top-level set -> snapshot file exists
9
+ # 3. mkdir <root>/whim then post -> BLOCK top-level + log
10
+ # 4. mkdir <root>/output/x (allowed top-level) then post -> ALLOW
11
+ # 5. mkdir inside an existing allowed dir then post -> ALLOW
12
+ # 6. Bash creating no new top-level entry then post -> ALLOW (silent)
13
+ # 7. Pre-existing stray present before the command -> NOT re-flagged
14
+ # 8. Post with allowed set empty (no SCHEMA.md) -> ALLOW (fail open)
15
+ # 9. Post with pre-snapshot missing -> ALLOW (fail open)
16
+ set -u
17
+
18
+ HOOKS_DIR="$(cd "$(dirname "$0")/.." && pwd)"
19
+ PRE="$HOOKS_DIR/fs-schema-guard-bash-pre.sh"
20
+ POST="$HOOKS_DIR/fs-schema-guard-bash-post.sh"
21
+ [ -x "$PRE" ] || { echo "FAIL: $PRE not executable" >&2; exit 1; }
22
+ [ -x "$POST" ] || { echo "FAIL: $POST not executable" >&2; exit 1; }
23
+
24
+ REPO_ROOT="$(cd "$(dirname "$0")/../../../.." && pwd)"
25
+ TEMPLATE="$REPO_ROOT/templates/account-schema/SCHEMA.md"
26
+ [ -f "$TEMPLATE" ] || { echo "FAIL: template missing at $TEMPLATE" >&2; exit 1; }
27
+
28
+ # Isolated tmp for snapshots so the run never collides with a live session.
29
+ SNAP_TMP=$(mktemp -d)
30
+ export FS_GUARD_BASH_TMPDIR="$SNAP_TMP"
31
+ trap 'rm -rf "$SNAP_TMP"' EXIT
32
+
33
+ PASS=0; FAIL=0
34
+ SID="test-session-1877"
35
+
36
+ # Build a stdin envelope for a given tool + session id.
37
+ env_json() { printf '{"hook_event_name":"%s","tool_name":"%s","session_id":"%s","tool_input":{}}' "$1" "$2" "$3"; }
38
+
39
+ # Fresh seeded account dir.
40
+ new_acct() {
41
+ local d; d=$(mktemp -d)
42
+ cp "$TEMPLATE" "$d/SCHEMA.md"
43
+ mkdir -p "$d/projects/Acme" "$d/documents" "$d/output"
44
+ printf '%s' "$d"
45
+ }
46
+
47
+ check() { # name expected_exit actual_exit expected_log_re actual_err
48
+ local name="$1" exp="$2" act="$3" re="$4" err="$5" ok=1
49
+ [ "$act" -eq "$exp" ] || ok=0
50
+ if [ -n "$re" ] && ! printf '%s' "$err" | grep -Eq "$re"; then ok=0; fi
51
+ if [ $ok -eq 1 ]; then echo "PASS: $name (exit=$act)"; PASS=$((PASS+1));
52
+ else echo "FAIL: $name (exit=$act want $exp; log want /$re/; got: $err)" >&2; FAIL=$((FAIL+1)); fi
53
+ }
54
+
55
+ run_pre() { ( cd "$1" && printf '%s' "$2" | bash "$PRE" >/dev/null 2>"$3" ); return $?; }
56
+ run_post() { ( cd "$1" && printf '%s' "$2" | bash "$POST" >/dev/null 2>"$3" ); return $?; }
57
+
58
+ # --- 1. Non-Bash tool: both hooks early-exit allow -------------------------
59
+ A=$(new_acct)
60
+ ef=$(mktemp)
61
+ run_pre "$A" "$(env_json PreToolUse Write "$SID")" "$ef"; check "pre non-bash allow" 0 $? "" "$(cat "$ef")"
62
+ run_post "$A" "$(env_json PostToolUse Write "$SID")" "$ef"; check "post non-bash allow" 0 $? "" "$(cat "$ef")"
63
+
64
+ # --- 2. Pre snapshot is written -------------------------------------------
65
+ run_pre "$A" "$(env_json PreToolUse Bash "$SID")" "$ef"; rc=$?
66
+ SNAP="$SNAP_TMP/maxy-fsguard-snapshot-${SID}.txt"
67
+ if [ $rc -eq 0 ] && [ -f "$SNAP" ] && grep -qx "SCHEMA.md" "$SNAP"; then
68
+ echo "PASS: pre writes snapshot (exit=$rc)"; PASS=$((PASS+1));
69
+ else echo "FAIL: pre snapshot missing/incomplete (exit=$rc, snap=$SNAP)" >&2; FAIL=$((FAIL+1)); fi
70
+
71
+ # --- 3. mkdir whim -> post blocks top-level with log -----------------------
72
+ # Snapshot from step 2 is the "before". Create the stray, then run post.
73
+ mkdir "$A/whim"
74
+ run_post "$A" "$(env_json PostToolUse Bash "$SID")" "$ef"
75
+ check "post blocks whim" 2 $? "\[fs-guard-bash\] stray path=whim reason=top-level" "$(cat "$ef")"
76
+
77
+ # --- 4. allowed top-level dir created via Bash -> no block ------------------
78
+ B=$(new_acct)
79
+ run_pre "$B" "$(env_json PreToolUse Bash "$SID")" "$ef"
80
+ # `output` already exists in new_acct, so create a different allowed one: uploads
81
+ mkdir "$B/uploads"
82
+ run_post "$B" "$(env_json PostToolUse Bash "$SID")" "$ef"
83
+ check "post allows allowed top-level" 0 $? "" "$(cat "$ef")"
84
+
85
+ # --- 5. mkdir inside an existing allowed dir -> no new top-level, no block --
86
+ C=$(new_acct)
87
+ run_pre "$C" "$(env_json PreToolUse Bash "$SID")" "$ef"
88
+ mkdir -p "$C/projects/NewCo"
89
+ run_post "$C" "$(env_json PostToolUse Bash "$SID")" "$ef"
90
+ check "post allows nested-in-allowed" 0 $? "" "$(cat "$ef")"
91
+
92
+ # --- 6. Bash creating no new top-level entry -> silent allow ---------------
93
+ D=$(new_acct)
94
+ run_pre "$D" "$(env_json PreToolUse Bash "$SID")" "$ef"
95
+ # no fs change
96
+ run_post "$D" "$(env_json PostToolUse Bash "$SID")" "$ef"
97
+ check "post silent no-op" 0 $? "" "$(cat "$ef")"
98
+
99
+ # --- 7. Pre-existing stray is NOT re-flagged -------------------------------
100
+ E=$(new_acct)
101
+ mkdir "$E/_attic" # legacy stray present BEFORE the command
102
+ run_pre "$E" "$(env_json PreToolUse Bash "$SID")" "$ef" # snapshot includes _attic
103
+ mkdir "$E/fresh_whim" # a new stray this command creates
104
+ run_post "$E" "$(env_json PostToolUse Bash "$SID")" "$ef"; rc=$?
105
+ err="$(cat "$ef")"
106
+ if [ $rc -eq 2 ] && printf '%s' "$err" | grep -q "path=fresh_whim" && ! printf '%s' "$err" | grep -q "path=_attic"; then
107
+ echo "PASS: pre-existing stray not re-flagged (only fresh_whim)"; PASS=$((PASS+1));
108
+ else echo "FAIL: legacy backlog re-flagged (exit=$rc): $err" >&2; FAIL=$((FAIL+1)); fi
109
+
110
+ # --- 8. Empty allowed set (no SCHEMA.md) -> fail open ----------------------
111
+ F=$(mktemp -d); trap 'rm -rf "$SNAP_TMP" "$F"' EXIT
112
+ run_pre "$F" "$(env_json PreToolUse Bash "$SID")" "$ef"
113
+ mkdir "$F/anything"
114
+ run_post "$F" "$(env_json PostToolUse Bash "$SID")" "$ef"
115
+ check "post fail-open no-schema" 0 $? "" "$(cat "$ef")"
116
+
117
+ # --- 9. Missing pre-snapshot -> fail open ----------------------------------
118
+ G=$(new_acct)
119
+ rm -f "$SNAP_TMP/maxy-fsguard-snapshot-missing_sid.txt"
120
+ mkdir "$G/whimtoo"
121
+ run_post "$G" "$(env_json PostToolUse Bash "missing sid")" "$ef"
122
+ check "post fail-open no-snapshot" 0 $? "" "$(cat "$ef")"
123
+
124
+ # --- 10. bad-named child of a bucket created THIS command -> block bad-name --
125
+ # contacts/ is absent from new_acct, so it is new this command; all its children
126
+ # are therefore this command's doing and a bad-named one is soundly flagged.
127
+ H=$(new_acct)
128
+ run_pre "$H" "$(env_json PreToolUse Bash "$SID")" "$ef"
129
+ mkdir -p "$H/contacts/Bad Name"
130
+ run_post "$H" "$(env_json PostToolUse Bash "$SID")" "$ef"
131
+ check "post blocks bad-name in new bucket" 2 $? "\[fs-guard-bash\] stray path=Bad Name reason=bad-name" "$(cat "$ef")"
132
+
133
+ # --- 11. conforming child of a new bucket -> no block -----------------------
134
+ I=$(new_acct)
135
+ run_pre "$I" "$(env_json PreToolUse Bash "$SID")" "$ef"
136
+ mkdir -p "$I/contacts/acme-corp"
137
+ run_post "$I" "$(env_json PostToolUse Bash "$SID")" "$ef"
138
+ check "post allows conforming new-bucket child" 0 $? "" "$(cat "$ef")"
139
+
140
+ # --- 12. bad name under a PRE-EXISTING bucket -> not flagged here ------------
141
+ # projects/ is in the pre-snapshot, so bash-post cannot tell a new child from the
142
+ # legacy backlog; flagging every one would re-spam the backlog. The reconcile is
143
+ # the net for this case. No block.
144
+ J=$(new_acct)
145
+ run_pre "$J" "$(env_json PreToolUse Bash "$SID")" "$ef"
146
+ mkdir -p "$J/projects/Bad Name"
147
+ run_post "$J" "$(env_json PostToolUse Bash "$SID")" "$ef"
148
+ check "post ignores bad-name in pre-existing bucket" 0 $? "" "$(cat "$ef")"
149
+
150
+ # --- 13. dot-prefixed child of a new bucket -> not flagged (system-wide skip) --
151
+ K=$(new_acct)
152
+ run_pre "$K" "$(env_json PreToolUse Bash "$SID")" "$ef"
153
+ mkdir -p "$K/contacts/acme"; : > "$K/contacts/.DS_Store"
154
+ run_post "$K" "$(env_json PostToolUse Bash "$SID")" "$ef"
155
+ check "post ignores dot-prefixed new-bucket child" 0 $? "" "$(cat "$ef")"
156
+
157
+ rm -f "$ef"
158
+ echo "----- $PASS passed, $FAIL failed -----"
159
+ [ $FAIL -eq 0 ]
@@ -25,7 +25,7 @@ TEMPLATE="$REPO_ROOT/templates/account-schema/SCHEMA.md"
25
25
  ACCT=$(mktemp -d)
26
26
  trap 'rm -rf "$ACCT"' EXIT
27
27
  cp "$TEMPLATE" "$ACCT/SCHEMA.md"
28
- mkdir -p "$ACCT/projects/Acme" "$ACCT/documents" "$ACCT/output"
28
+ mkdir -p "$ACCT/projects/acme" "$ACCT/documents" "$ACCT/output"
29
29
 
30
30
  # A second account modelling a provisioned construction account: jobs/ is a
31
31
  # derived domain bucket (the generator appends it to the allowed block, like a
@@ -56,15 +56,27 @@ run_case() {
56
56
  mkenv() { printf '{"hook_event_name":"PreToolUse","tool_name":"%s","tool_input":{"%s":"%s"}}' "$1" "$2" "$3"; }
57
57
 
58
58
  run_case "non-write allow" "$(mkenv Bash command 'ls')" 0 ""
59
- run_case "flat project allow" "$(mkenv Write file_path 'projects/Acme/a.txt')" 0 ""
59
+ run_case "flat project allow" "$(mkenv Write file_path 'projects/acme/a.txt')" 0 ""
60
60
  run_case "loose document allow" "$(mkenv Write file_path 'documents/a.pdf')" 0 ""
61
61
  run_case "tool-owned deep allow" "$(mkenv Write file_path 'output/deep/nested/x.png')" 0 ""
62
- run_case "over-deep block" "$(mkenv Write file_path 'projects/Acme/deploy/sources/a.txt')" 2 "fs-guard. blocked path=projects/Acme/deploy/sources/a.txt reason=over-deep"
63
- run_case "over-deep one block" "$(mkenv Write file_path 'projects/Acme/deploy/a.txt')" 2 "reason=over-deep"
62
+ run_case "over-deep block" "$(mkenv Write file_path 'projects/acme/deploy/sources/a.txt')" 2 "fs-guard. blocked path=projects/acme/deploy/sources/a.txt reason=over-deep"
63
+ run_case "over-deep one block" "$(mkenv Write file_path 'projects/acme/deploy/a.txt')" 2 "reason=over-deep"
64
64
  run_case "top-level block" "$(mkenv Write file_path 'whim/x.txt')" 2 "fs-guard. blocked path=whim/x.txt reason=top-level"
65
65
  run_case "outside acct allow" "$(mkenv Write file_path '/etc/passwd')" 0 ""
66
- run_case "notebook over-deep" "$(mkenv NotebookEdit notebook_path 'projects/Acme/deploy/n.ipynb')" 2 "reason=over-deep"
66
+ run_case "notebook over-deep" "$(mkenv NotebookEdit notebook_path 'projects/acme/deploy/n.ipynb')" 2 "reason=over-deep"
67
67
  run_case "empty stdin block" "" 2 "no stdin"
68
+
69
+ # Name convention (Task 1886): operator-authored segments under projects/contacts/
70
+ # documents must be [a-z0-9-] (folders) or lowercase dot-segments (files). Checked
71
+ # AFTER top-level and depth, so an over-deep path still reports over-deep first.
72
+ run_case "bad folder space block" "$(mkenv Write file_path 'projects/Bad Name/x.txt')" 2 "fs-guard. blocked path=projects/Bad Name/x.txt reason=bad-name"
73
+ run_case "bad folder underscore" "$(mkenv Write file_path 'contacts/ACME_Corp/x.txt')" 2 "reason=bad-name"
74
+ run_case "bad folder parens" "$(mkenv Write file_path 'documents/Draft (v2)/x.txt')" 2 "reason=bad-name"
75
+ run_case "bad file basename" "$(mkenv Write file_path 'projects/acme/Final DRAFT.md')" 2 "reason=bad-name"
76
+ run_case "conforming name allow" "$(mkenv Write file_path 'projects/acme/quote-2024.pdf')" 0 ""
77
+ run_case "conforming doc folder" "$(mkenv Write file_path 'documents/site-survey/notes.md')" 0 ""
78
+ # Dot-prefixed segments are skipped at every level system-wide (.gitkeep etc.).
79
+ run_case "dotfile segment allow" "$(mkenv Write file_path 'documents/.gitkeep')" 0 ""
68
80
  # JSON null file_path must coerce to empty (allow), not the literal string "None".
69
81
  run_case "null path allow" '{"hook_event_name":"PreToolUse","tool_name":"Write","tool_input":{"file_path":null}}' 0 ""
70
82
 
@@ -76,7 +88,7 @@ run_case "domain bucket file allow" "$(mkenv Write file_path 'jobs/5-oaktree/no
76
88
  run_case "undeclared still blocks" "$(mkenv Write file_path 'invoices/x.pdf')" 2 "reason=top-level" "$ACCT_D"
77
89
 
78
90
  # Allowed-set parse == documented set.
79
- EXPECT="projects contacts documents url-get output generated extracted uploads agents specialists sites public cache secrets state logs tmp SCHEMA.md account.json AGENTS.md .claude .git"
91
+ EXPECT="projects contacts documents url-get output generated extracted uploads agents specialists sites public cache secrets state logs tmp .quarantine SCHEMA.md account.json AGENTS.md .claude .git"
80
92
  GOT=$(awk '/^```allowed-top-level$/{f=1;next} /^```$/{f=0} f' "$ACCT/SCHEMA.md" | tr '\n' ' ' | sed 's/ *$//')
81
93
  if [ "$GOT" = "$EXPECT" ]; then echo "PASS: allowed-set parse"; PASS=$((PASS+1));
82
94
  else echo "FAIL: allowed-set parse: got [$GOT]" >&2; FAIL=$((FAIL+1)); fi