@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.
- package/package.json +1 -1
- package/payload/platform/docs/superpowers/plans/2026-07-21-graph-caption-resolver.md +124 -0
- package/payload/platform/docs/superpowers/plans/2026-07-21-task-1877-bash-schema-enforcement.md +107 -0
- package/payload/platform/docs/superpowers/plans/2026-07-21-task-1887-reconcile-allowed-top-level.md +205 -0
- package/payload/platform/lib/graph-style/dist/index.d.ts +4 -1
- package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-style/dist/index.js +109 -1
- package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +117 -0
- package/payload/platform/lib/graph-style/src/index.ts +81 -1
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard-bash.test.sh +159 -0
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +18 -6
- package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-post.sh +141 -0
- package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-pre.sh +66 -0
- package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +33 -1
- package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +3 -3
- package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -0
- package/payload/platform/plugins/cloudflare/bin/portal-enrol.mjs +23 -2
- package/payload/platform/plugins/cloudflare/mcp/__tests__/authorize.test.ts +2 -2
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-directory-listing.test.ts +49 -2
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +57 -3
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-indexed-download.test.ts +44 -2
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-session-grant.test.ts +67 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +42 -3
- package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +10 -1
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/session.ts +19 -5
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/download.ts +19 -2
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/files.ts +8 -2
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/index.html +28 -5
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/portal.css +195 -6
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/portal.js +193 -10
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +4 -3
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/email/PLUGIN.md +5 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.js +50 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-select.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.js +51 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-text.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.js +89 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-fetch-attachment.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/index.js +28 -0
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.d.ts +22 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.js +55 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-text.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +32 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js +75 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.d.ts +19 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.js +49 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-attachment.js.map +1 -0
- package/payload/platform/plugins/email/references/email-reference.md +7 -1
- package/payload/platform/plugins/memory/references/schema-construction.md +18 -12
- package/payload/platform/plugins/memory/references/schema-estate-agent.md +11 -6
- package/payload/platform/scripts/__tests__/account-schema-owned-dirs.test.sh +75 -6
- package/payload/platform/scripts/lib/account-schema-owned-dirs.py +111 -22
- package/payload/platform/scripts/lib/provision-account-dir.sh +8 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +39 -0
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +299 -0
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +15 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +4 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/templates/account-schema/SCHEMA.md +17 -0
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/{chunk-XGNRSM57.js → chunk-HN4HFTXE.js} +6 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/assets/{admin-rScqRq-R.js → admin-BoVCP4Mw.js} +1 -1
- package/payload/server/public/assets/{data-TOWuhMFb.js → data-CtOxa94P.js} +1 -1
- package/payload/server/public/assets/{graph-labels-Axa04w8A.js → graph-labels-C8-sIKuv.js} +1 -1
- package/payload/server/public/assets/{graph-BEGs_P2m.js → graph-mJ9ky5dc.js} +1 -1
- package/payload/server/public/assets/{page-6CZ8R57f.js → page-Cv0qUwMG.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +2 -2
- package/payload/server/public/index.html +3 -3
- 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
|
|
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/
|
|
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/
|
|
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/
|
|
63
|
-
run_case "over-deep one block" "$(mkenv Write file_path 'projects/
|
|
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/
|
|
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
|