@rubytech/create-maxy-code 0.1.348 → 0.1.350

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 (102) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/docs/superpowers/plans/2026-06-23-account-filesystem-schema.md +544 -0
  3. package/payload/platform/docs/superpowers/specs/2026-06-23-account-filesystem-schema-design.md +170 -0
  4. package/payload/platform/lib/graph-style/dist/index.d.ts +1 -1
  5. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  6. package/payload/platform/lib/graph-style/dist/index.js +20 -12
  7. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  8. package/payload/platform/lib/graph-style/src/__tests__/parity.test.ts +9 -9
  9. package/payload/platform/lib/graph-style/src/index.ts +20 -12
  10. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  11. package/payload/platform/lib/graph-write/dist/index.js +3 -2
  12. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  13. package/payload/platform/lib/graph-write/src/index.ts +3 -2
  14. package/payload/platform/neo4j/schema.cypher +110 -31
  15. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  16. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +68 -0
  17. package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +108 -0
  18. package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +1 -0
  19. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +36 -3
  20. package/payload/platform/plugins/docs/references/calendar-booking.md +1 -1
  21. package/payload/platform/plugins/docs/references/joblogic.md +28 -0
  22. package/payload/platform/plugins/docs/references/memory-guide.md +1 -1
  23. package/payload/platform/plugins/joblogic/.claude-plugin/plugin.json +21 -0
  24. package/payload/platform/plugins/joblogic/PLUGIN.md +182 -0
  25. package/payload/platform/plugins/joblogic/lib/mcp-spawn-tee/index.js +193 -0
  26. package/payload/platform/plugins/joblogic/lib/mcp-spawn-tee/package.json +3 -0
  27. package/payload/platform/plugins/joblogic/mcp/dist/index.d.ts +2 -0
  28. package/payload/platform/plugins/joblogic/mcp/dist/index.d.ts.map +1 -0
  29. package/payload/platform/plugins/joblogic/mcp/dist/index.js +229 -0
  30. package/payload/platform/plugins/joblogic/mcp/dist/index.js.map +1 -0
  31. package/payload/platform/plugins/joblogic/mcp/dist/lib/auth.d.ts +31 -0
  32. package/payload/platform/plugins/joblogic/mcp/dist/lib/auth.d.ts.map +1 -0
  33. package/payload/platform/plugins/joblogic/mcp/dist/lib/auth.js +78 -0
  34. package/payload/platform/plugins/joblogic/mcp/dist/lib/auth.js.map +1 -0
  35. package/payload/platform/plugins/joblogic/mcp/dist/lib/client.d.ts +35 -0
  36. package/payload/platform/plugins/joblogic/mcp/dist/lib/client.d.ts.map +1 -0
  37. package/payload/platform/plugins/joblogic/mcp/dist/lib/client.js +106 -0
  38. package/payload/platform/plugins/joblogic/mcp/dist/lib/client.js.map +1 -0
  39. package/payload/platform/plugins/joblogic/mcp/dist/lib/idempotency.d.ts +8 -0
  40. package/payload/platform/plugins/joblogic/mcp/dist/lib/idempotency.d.ts.map +1 -0
  41. package/payload/platform/plugins/joblogic/mcp/dist/lib/idempotency.js +41 -0
  42. package/payload/platform/plugins/joblogic/mcp/dist/lib/idempotency.js.map +1 -0
  43. package/payload/platform/plugins/joblogic/mcp/dist/lib/secrets.d.ts +21 -0
  44. package/payload/platform/plugins/joblogic/mcp/dist/lib/secrets.d.ts.map +1 -0
  45. package/payload/platform/plugins/joblogic/mcp/dist/lib/secrets.js +47 -0
  46. package/payload/platform/plugins/joblogic/mcp/dist/lib/secrets.js.map +1 -0
  47. package/payload/platform/plugins/joblogic/mcp/package.json +10 -0
  48. package/payload/platform/plugins/joblogic/skills/joblogic/SKILL.md +32 -0
  49. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +28 -22
  50. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -1
  51. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +8 -4
  52. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -1
  53. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.js +39 -10
  54. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-write-path-task802.test.js.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js +1 -1
  57. package/payload/platform/plugins/memory/references/schema-construction.md +152 -57
  58. package/payload/platform/plugins/memory/references/schema-trades.md +22 -24
  59. package/payload/platform/scripts/lib/provision-account-dir.sh +22 -3
  60. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  61. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +46 -0
  62. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  63. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  64. package/payload/platform/services/claude-session-manager/dist/http-server.js +45 -1
  65. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  66. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +11 -0
  67. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  68. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +18 -0
  69. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  70. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +1 -0
  71. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  72. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +16 -0
  73. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  74. package/payload/platform/templates/account-schema/SCHEMA.md +54 -0
  75. package/payload/server/public/assets/{AdminLoginScreens-B_5wYcR-.js → AdminLoginScreens-BEzoTk56.js} +1 -1
  76. package/payload/server/public/assets/{AdminShell-CMV3XY-s.js → AdminShell-BG7YD4UO.js} +1 -1
  77. package/payload/server/public/assets/{Checkbox-LplFUKpb.js → Checkbox-CvTFOczj.js} +1 -1
  78. package/payload/server/public/assets/{OperatorConversations-C4Cx814-.css → OperatorConversations-CnP9Y6g2.css} +1 -1
  79. package/payload/server/public/assets/{admin-3QQtd7j2.js → admin-Bhxa1HOy.js} +1 -1
  80. package/payload/server/public/assets/{browser-D5q26eZL.js → browser-BAQFuyma.js} +1 -1
  81. package/payload/server/public/assets/calendar-sSr6zUjW.js +1 -0
  82. package/payload/server/public/assets/chat-ZH4Fsyu0.js +1 -0
  83. package/payload/server/public/assets/data-CBrgiyPM.js +1 -0
  84. package/payload/server/public/assets/{graph-DFQbqmi9.js → graph-DbGjFYPS.js} +1 -1
  85. package/payload/server/public/assets/graph-labels-IGIEr-uc.js +1 -0
  86. package/payload/server/public/assets/{operator-BlCyq4q1.js → operator-Ba5afDyM.js} +1 -1
  87. package/payload/server/public/assets/{page-drg1V-yA.js → page-D7uwMUOy.js} +1 -1
  88. package/payload/server/public/assets/{public-BVjeYfsD.js → public-DikYWzOd.js} +1 -1
  89. package/payload/server/public/browser.html +4 -4
  90. package/payload/server/public/calendar.html +4 -4
  91. package/payload/server/public/chat.html +5 -5
  92. package/payload/server/public/data.html +4 -4
  93. package/payload/server/public/graph.html +6 -6
  94. package/payload/server/public/index.html +6 -6
  95. package/payload/server/public/operator.html +7 -7
  96. package/payload/server/public/public.html +5 -5
  97. package/payload/server/server.js +92 -31
  98. package/payload/server/public/assets/calendar-Csbdj7rp.js +0 -1
  99. package/payload/server/public/assets/chat-Ct86qtMI.js +0 -1
  100. package/payload/server/public/assets/data-HwT5wPmj.js +0 -1
  101. package/payload/server/public/assets/graph-labels-kCti2CaC.js +0 -1
  102. /package/payload/server/public/assets/{OperatorConversations-Bp-g80PM.js → OperatorConversations-DU8CqO-z.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schema-cypher-drift.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-cypher-drift.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-cypher-drift.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-cypher-drift.test.ts"],"names":[],"mappings":"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"}
@@ -31,10 +31,10 @@ const CONSTRUCTION = {
31
31
  source: "brand-default",
32
32
  },
33
33
  };
34
- test("QuoteDocument with totalPaymentDue is accepted", () => {
35
- const env = makeEnv(["QuoteDocument"]);
34
+ test("Quote with totalPaymentDue is accepted", () => {
35
+ const env = makeEnv(["Quote"]);
36
36
  expect(() => validateWrite({
37
- labels: ["QuoteDocument"],
37
+ labels: ["Quote"],
38
38
  properties: {
39
39
  jobId: "1840",
40
40
  ref: "Q-1840",
@@ -45,10 +45,10 @@ test("QuoteDocument with totalPaymentDue is accepted", () => {
45
45
  accountId: ACCT,
46
46
  }, env, CONSTRUCTION)).not.toThrow();
47
47
  });
48
- test("QuoteDocument with amount is rejected with the synonym message", () => {
49
- const env = makeEnv(["QuoteDocument"]);
48
+ test("Quote with amount is rejected with the synonym message", () => {
49
+ const env = makeEnv(["Quote"]);
50
50
  expect(() => validateWrite({
51
- labels: ["QuoteDocument"],
51
+ labels: ["Quote"],
52
52
  properties: {
53
53
  jobId: "1840",
54
54
  ref: "Q-1840",
@@ -102,10 +102,39 @@ test("Job with empty-string required property is still rejected (isPresent bound
102
102
  labels: ["Job"],
103
103
  properties: {
104
104
  jobId: "1809",
105
- client: "",
106
- address: "12 The Avenue",
107
- status: "quoting",
108
- contractValue: 3700,
105
+ status: "",
106
+ jobType: "Maintenance",
107
+ },
108
+ accountId: ACCT,
109
+ }, env, CONSTRUCTION)).toThrow(/missing required property/);
110
+ });
111
+ // Task 1084 — a logged labour day is a :JobCost {costType:'labour'}. Its
112
+ // required set is the stable identity (accountId, costType) so the timesheet
113
+ // worker-day shape validates; the JobLogic cost attributes are optional.
114
+ test("JobCost labour day with costType is accepted (timesheet roll-up write)", () => {
115
+ const env = makeEnv(["JobCost"]);
116
+ expect(() => validateWrite({
117
+ labels: ["JobCost"],
118
+ properties: {
119
+ costId: "p123-2026-06-22",
120
+ costType: "labour",
121
+ personId: "p123",
122
+ date: "2026-06-22",
123
+ site: "12 The Avenue",
124
+ description: "Full day groundworks",
125
+ dayHundredths: 100,
126
+ },
127
+ accountId: ACCT,
128
+ }, env, CONSTRUCTION)).not.toThrow();
129
+ });
130
+ test("JobCost without costType is rejected (isPresent boundary)", () => {
131
+ const env = makeEnv(["JobCost"]);
132
+ expect(() => validateWrite({
133
+ labels: ["JobCost"],
134
+ properties: {
135
+ costId: "p123-2026-06-22",
136
+ personId: "p123",
137
+ date: "2026-06-22",
109
138
  },
110
139
  accountId: ACCT,
111
140
  }, env, CONSTRUCTION)).toThrow(/missing required property/);
@@ -1 +1 @@
1
- {"version":3,"file":"schema-write-path-task802.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-write-path-task802.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-write-path-task802.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/schema-write-path-task802.test.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ```
10
10
  * (:Job)-[:HAS_VALUATION]->(:Valuation)
11
- * (:QuoteDocument)-[:HAS_LINE_ITEM]->(:LineItem)
11
+ * (:Quote)-[:HAS_LINE]->(:QuoteLine)
12
12
  * ```
13
13
  *
14
14
  * `schema-loader.ts` parses the markdown TABLES (required-properties, naming
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ```
10
10
  * (:Job)-[:HAS_VALUATION]->(:Valuation)
11
- * (:QuoteDocument)-[:HAS_LINE_ITEM]->(:LineItem)
11
+ * (:Quote)-[:HAS_LINE]->(:QuoteLine)
12
12
  * ```
13
13
  *
14
14
  * `schema-loader.ts` parses the markdown TABLES (required-properties, naming
@@ -1,39 +1,86 @@
1
- # Schema Reference — Construction
1
+ # Schema Reference — Construction / Field Service
2
2
 
3
- Vertical schema for `businessType: "construction"` — small building firms and independent building contractors (the SiteDesk brand).
3
+ Vertical schema for `businessType: "construction"` — building firms, contractors, and
4
+ field-service operators (the SiteDesk brand). This is the **canonical, opinionated** SiteDesk
5
+ service-delivery ontology, authored from JobLogic's proven field-service domain so that an
6
+ operator's job maps onto shipped labels without inventing the model. JobLogic's term is the
7
+ canonical label name for each concept.
4
8
 
5
- This reference extends the base schema. All base node types (Person, Organization, Invoice, PostalAddress, Event, etc.) remain valid. Load `schema-base.md` first.
9
+ This reference extends the base schema. All base node types (Person, Organization, Invoice,
10
+ PostalAddress, Event, etc.) remain valid. Load `schema-base.md` first.
6
11
 
7
12
  When loading this reference, confirm: "Using schema-base + schema-construction".
8
13
 
9
- ---
10
-
11
- ## Additional Node Types
12
-
13
- | Entity | Neo4j Label | Schema.org Type | Required Properties |
14
- |--------|-------------|-----------------|---------------------|
15
- | Job | `Job` | `schema:Project` | `accountId`, `jobId`, `client`, `address`, `status` (quoting/active/complete), `contractValue` |
16
- | LineItem | `LineItem` | `cdm:LineItem` | `accountId`, `jobId`, `trade`, `description`, `contractValue` |
17
- | Valuation | `Valuation` | `schema:MonetaryAmount` | `accountId`, `jobId`, `valuationNumber`, `date`, `totalValue` |
18
- | Milestone | `Milestone` | `schema:Event` (subtype) | `accountId`, `jobId`, `name`, `completedDate` |
19
- | QuoteDocument | `QuoteDocument` | `schema:DigitalDocument` | `accountId`, `jobId`, `ref`, `totalPaymentDue`, `date`, `status` (draft/sent/accepted) |
20
- | VariationNote | `VariationNote` | `schema:DigitalDocument` | `accountId`, `jobId`, `variationNumber`, `description`, `totalPaymentDue`, `status` |
21
- | InboundInvoice | `InboundInvoice` | `schema:Invoice` | `accountId`, `supplier`, `confirmationNumber`, `totalPaymentDue`, `status` (pending/approved/processed) |
22
- | Worker | `Worker` (label on `Person`) | `schema:Person` (config) | `accountId`, `personId`, `name`, `engagement` (employee/cis), `dayRatePence`, `showCisDeduction`, `invoiceEmail` |
23
- | CheckIn | `CheckIn` | `schema:Action` | `accountId`, `personId`, `source`, `date`, `site`, `description`, `dayHundredths` |
24
- | WhatsAppGroup | `WhatsAppGroup` | `cdm:Channel` | `accountId`, `groupId`, `jobId`, `clientName` |
25
-
26
- `awardedDate` on `Job` is expected once `status` is `active` or `complete` — a job still `quoting` has no award date. Never write a sentinel value (`"pending"`, `""`) to stand in for an unknown date; omit the property until the real date is known.
27
-
28
- These entities model a general builder job folder: a `Job` has a generated client `QuoteDocument` that carries many `LineItem` rows organised by trade stage, supplier and sub-contractor invoices, and per-trade structure. A residential building job's line items typically span stages such as groundworks, sub-structure, superstructure, roof, structural alterations & envelope, first fix, drylining & plastering, floor screed, second fixing, knock-throughs, windows & doors, completion items and preliminaries, plus sub-contractor trades (scaffolding, roofing, electrical, plumbing, plastering, tiling, decorations). The schema carries no client, job, or pricing data of its own — those are per-account runtime values.
29
-
30
- ### Distinctions from schema-trades
31
-
32
- `QuoteDocument` is the generated client quote artefact (the `Q-XXXX` document), distinct from schema-trades' `Quote` (a pre-acceptance Order estimate). `InboundInvoice` is a received/payable invoice with job + trade assignment, distinct from the base `Invoice`. A subcontractor company's received invoices use the same `InboundInvoice` model as any other supplier.
14
+ Property fidelity: properties marked **(JobLogic-exact)** are taken from JobLogic's API field
15
+ model; properties marked **(authored)** are modelled from JobLogic's vocabulary plus the
16
+ field-service domain where the captured reference does not document the entity at field level.
33
17
 
34
- ### Field-worker time and pay
18
+ ---
35
19
 
36
- A field worker's time and pay is the `:Worker`/`:CheckIn` model. `:Worker` is an operator-config label on the worker's `:Person` (engagement, day rate, whether the CIS deduction shows, the office invoice address); `:CheckIn` is one record per working day, linked to the worker by `(:Worker)-[:LOGGED]->(:CheckIn)` and unified for roll-up by the shared `personId`. The timesheet skill rolls the check-ins for a period into a per-worker timesheet, and for a CIS worker an invoice that is rendered and emailed, not stored as a node.
20
+ ## Top-level node types (operator-entry, natural key)
21
+
22
+ | Entity | Neo4j Label | Schema.org Type | Required Properties | Fidelity |
23
+ |--------|-------------|-----------------|---------------------|----------|
24
+ | Job | `Job` | `schema:Project` | `accountId`, `jobId`, `status` | JobLogic-exact |
25
+ | Customer | `Customer` | `schema:Organization` | `accountId`, `customerId`, `name`, `customerType` | JobLogic-exact |
26
+ | Site | `Site` | `schema:Place` | `accountId`, `siteId`, `name`, `region` | JobLogic-exact |
27
+ | Asset | `Asset` | `schema:Product` | `accountId`, `assetId`, `name`, `assetType`, `assetClass`, `condition` | authored |
28
+ | Visit | `Visit` | `schema:Event` (subtype) | `accountId`, `visitId`, `status`, `startDate`, `purpose` | authored |
29
+ | Quote | `Quote` | `schema:Order` (estimate) | `accountId`, `ref`, `status`, `totalPaymentDue`, `date` | authored |
30
+ | Supplier invoice | `InboundInvoice` | `schema:Invoice` | `accountId`, `supplier`, `confirmationNumber`, `totalPaymentDue` | JobLogic-exact |
31
+ | Part | `Part` | `schema:Product` | `accountId`, `partId`, `name`, `sku`, `partCategory` | authored |
32
+ | Purchase Order | `PurchaseOrder` | `schema:Order` | `accountId`, `poNumber`, `status`, `completionStatus`, `dateRaised` | JobLogic-exact |
33
+ | PPM Contract | `PpmContract` | `schema:Service` (contract) | `accountId`, `contractId`, `name`, `startDate`, `endDate` | authored |
34
+ | WhatsApp Group | `WhatsAppGroup` | `cdm:Channel` | `accountId`, `groupId`, `jobId`, `clientName` | n/a (transport) |
35
+
36
+ `Job.status` is one of JobLogic's job statuses: `New Job`, `Allocated`, `Attended`,
37
+ `Parts To Fit`, `Awaiting Parts`, `Completed`, `Costed`, `Reqs. Invoice`, `Invoiced`, `Paid`,
38
+ `Cancelled`, `Recall`. `Job.jobType` is the highest categorisation (Call out, Installation,
39
+ Maintenance, Out of Hours, Reactive, Non-Productive); `Job.jobCategory` is the finer trade
40
+ detail. `Site.region` is one of `East`, `North`, `South`, `West`. `PurchaseOrder.status` is one
41
+ of `InProgress`, `Sent`, `Cancelled`, `NeedsApproval`; `PurchaseOrder.completionStatus` one of
42
+ `NotApplicable`, `NotCompleted`, `PartiallyCompleted`, `FullyCompleted`. Never write a sentinel
43
+ value for an unknown date — omit the property until the real value is known.
44
+
45
+ Two distinct invoice documents. The received supplier invoice is `InboundInvoice` (keyed
46
+ `(accountId, supplier, confirmationNumber)`), now linked to the `PurchaseOrder` it pays — a
47
+ subcontractor company's received invoice uses the same model as any other supplier. The
48
+ customer-facing outbound bill is the base `Invoice` (`schema-base.md`), whose billing chain is
49
+ the child `InvoiceLine`, `InvoicePayment`, and `Credit`. The two labels carry different required
50
+ fields (supplier vs customer), so they stay distinct rather than one label with a direction flag.
51
+
52
+ ## Child node types (write-time MERGE; reached via parent neighbourhood)
53
+
54
+ | Entity | Neo4j Label | Required Properties | Fidelity |
55
+ |--------|-------------|---------------------|----------|
56
+ | Quote line | `QuoteLine` | `accountId`, `jobId`, `trade`, `description`, `contractValue` | authored |
57
+ | Valuation | `Valuation` | `accountId`, `jobId`, `valuationNumber`, `date`, `totalValue` | authored |
58
+ | Milestone | `Milestone` | `accountId`, `jobId`, `name`, `completedDate` | authored |
59
+ | Variation | `VariationNote` | `accountId`, `jobId`, `variationNumber`, `description`, `totalPaymentDue`, `status` | authored |
60
+ | Job cost | `JobCost` | `accountId`, `costType` | JobLogic-exact |
61
+ | Contact | `Contact` | `accountId`, `contactId`, `name` | JobLogic-exact |
62
+ | PO line | `PurchaseOrderLine` | `accountId`, `poNumber`, `lineId`, `description`, `quantity`, `pricePerUnit` | JobLogic-exact |
63
+ | Invoice line | `InvoiceLine` | `accountId`, `invoiceId`, `lineId`, `description`, `quantity`, `amount` | authored |
64
+ | Invoice payment | `InvoicePayment` | `accountId`, `invoiceId`, `paymentId`, `amount`, `date`, `paymentType` | JobLogic-exact |
65
+ | Credit | `Credit` | `accountId`, `creditId`, `amount`, `date` | authored |
66
+
67
+ `JobCost.costType` is one of `labour`, `material`, `travel`, `mileage`, `expense`,
68
+ `subcontractor`, `scheduleOfRates` — the JobLogic cost-line taxonomy. A logged labour day (the
69
+ old check-in) is a `JobCost` with `costType:'labour'`. `JobCost.priceCalculationType` is `0`
70
+ (Non-Chargeable), `1` (Calculated Price), or `2` (Fixed Price), JobLogic's enum.
71
+
72
+ `QuoteLine` is one priced row of the `Quote` contract schedule — the line a `Valuation` measures
73
+ percent-complete against. It is **not** a `JobCost`: the quote line is the priced contract value,
74
+ the job cost is the incurred cost. Per-line percent-complete a valuation records is carried
75
+ valuation state, not a property of the line or the edge.
76
+
77
+ ## Additional labels on a base node
78
+
79
+ `Engineer` is an additional label on the field engineer's `:Person` (`accountId`, `engineerId`,
80
+ `name`, `engagement` (employee/cis), `dayRatePence`, `showCisDeduction`, `invoiceEmail`); there
81
+ is no standalone `:Engineer`. `Supplier` is an additional label on a supplier's `:Organization`
82
+ (`accountId`, `supplierId`, `accountNumber`); there is no standalone `:Supplier`. Both are set
83
+ via `memory-update`, mirroring how the field worker was modelled before the JobLogic adoption.
37
84
 
38
85
  ---
39
86
 
@@ -42,55 +89,103 @@ A field worker's time and pay is the `:Worker`/`:CheckIn` model. `:Worker` is an
42
89
  MERGE keys per label:
43
90
 
44
91
  - `:Job` — `(accountId, jobId)`
92
+ - `:Customer` — `(accountId, customerId)`
93
+ - `:Site` — `(accountId, siteId)`
94
+ - `:Asset` — `(accountId, assetId)`
95
+ - `:Visit` — `(accountId, visitId)`
96
+ - `:Quote` — `(accountId, ref)`
97
+ - `:InboundInvoice` — `(accountId, supplier, confirmationNumber)` — the received supplier invoice
98
+ - `:Invoice` — `(accountId, confirmationNumber)` — the base outbound customer invoice (schema-base.md)
99
+ - `:Part` — `(accountId, partId)`
100
+ - `:PurchaseOrder` — `(accountId, poNumber)`
101
+ - `:PpmContract` — `(accountId, contractId)`
102
+ - `:WhatsAppGroup` — `(accountId, groupId)`
103
+ - `:QuoteLine` — `(accountId, jobId, trade, description)` — child of `:Quote`, write-time MERGE
45
104
  - `:Valuation` — `(accountId, jobId, valuationNumber)`
46
- - `:QuoteDocument` — `(accountId, ref)`
105
+ - `:Milestone` — `(accountId, jobId, name)` — child of `:Job`, write-time MERGE
47
106
  - `:VariationNote` — `(accountId, jobId, variationNumber)`
48
- - `:InboundInvoice` — `(accountId, supplier, confirmationNumber)`
49
- - `:WhatsAppGroup` — `(accountId, groupId)`
50
- - `:LineItem` — `(accountId, jobId, trade, description)` — child of the `:QuoteDocument`, write-time MERGE only
51
- - `:Milestone` — `(accountId, jobId, name)` — child of `:Job`, write-time MERGE only
52
- - `:Worker` — `(accountId, personId)` — an additional label on the worker's `:Person`, set via `memory-update`
53
- - `:CheckIn` — `(accountId, personId, date)` — child of the worker's `:Person`, write-time MERGE only
107
+ - `:JobCost` — `(accountId, costId)` — write-time MERGE; `jobId` is set when the cost is job-scoped, omitted for a worker-day labour roll-up
108
+ - `:Contact` — `(accountId, contactId)` — write-time MERGE
109
+ - `:PurchaseOrderLine` — `(accountId, poNumber, lineId)` — child of `:PurchaseOrder`
110
+ - `:InvoiceLine` — `(accountId, invoiceId, lineId)` — child of `:Invoice`
111
+ - `:InvoicePayment` — `(accountId, invoiceId, paymentId)` — child of `:Invoice`
112
+ - `:Credit` — `(accountId, creditId)` — child of `:Invoice`
113
+ - `:Engineer` — `(accountId, personId)` — additional label on `:Person`, set via `memory-update`
114
+ - `:Supplier` — `(accountId, organizationId)` — additional label on `:Organization`
54
115
 
55
116
  ---
56
117
 
57
118
  ## Relationship Patterns
58
119
 
59
120
  ```
121
+ (:Job)-[:FOR_CUSTOMER]->(:Customer)
122
+ (:Customer)-[:HAS_SITE]->(:Site)
123
+ (:Job)-[:AT_SITE]->(:Site)
124
+ (:Site)-[:HAS_ASSET]->(:Asset)
125
+ (:Job)-[:HAS_VISIT]->(:Visit)
126
+ (:Visit)-[:ATTENDED_BY]->(:Engineer)
127
+ (:Job)-[:HAS_QUOTE]->(:Quote)
128
+ (:Quote)-[:HAS_LINE]->(:QuoteLine)
60
129
  (:Job)-[:HAS_VALUATION]->(:Valuation)
61
- (:Job)-[:HAS_MILESTONE]->(:Milestone)
62
- (:Job)-[:HAS_QUOTE]->(:QuoteDocument)
63
- (:QuoteDocument)-[:HAS_LINE_ITEM]->(:LineItem)
64
- (:Valuation)-[:VALUES]->(:LineItem)
130
+ (:Valuation)-[:VALUES]->(:QuoteLine)
65
131
  (:Job)-[:HAS_VARIATION]->(:VariationNote)
66
- (:Job)-[:FOR_CLIENT]->(:Person)
67
- (:Job)-[:AT_ADDRESS]->(:PostalAddress)
68
- (:InboundInvoice)-[:ASSIGNED_TO]->(:Job)
69
- (:InboundInvoice)-[:FROM_SUPPLIER]->(:Organization)
70
- (:Worker)-[:LOGGED]->(:CheckIn)
132
+ (:Job)-[:HAS_MILESTONE]->(:Milestone)
133
+ (:Job)-[:HAS_COST]->(:JobCost)
134
+ (:JobCost)-[:INCURRED_BY]->(:Engineer)
135
+ (:PurchaseOrder)-[:HAS_PO_LINE]->(:PurchaseOrderLine)
136
+ (:PurchaseOrderLine)-[:FOR_PART]->(:Part)
137
+ (:PurchaseOrder)-[:FROM_SUPPLIER]->(:Supplier)
138
+ (:InboundInvoice)-[:ON_PURCHASE_ORDER]->(:PurchaseOrder)
139
+ (:Invoice)-[:HAS_INVOICE_LINE]->(:InvoiceLine)
140
+ (:Invoice)-[:HAS_PAYMENT]->(:InvoicePayment)
141
+ (:Invoice)-[:HAS_CREDIT]->(:Credit)
142
+ (:PpmContract)-[:FOR_CUSTOMER]->(:Customer)
143
+ (:PpmContract)-[:COVERS_SITE]->(:Site)
144
+ (:Contact)-[:CONTACT_FOR]->(:Customer)
71
145
  (:WhatsAppGroup)-[:MAPPED_TO]->(:Job)
72
146
  ```
73
147
 
74
- Every `:Job` is the parent node for its valuations, milestones, quotes, and variations, satisfying the ≥1-adjacency write-gate doctrine. Line items are **not** a direct child of the `:Job`: a `:LineItem` is one row of the priced contract schedule, owned by the `:QuoteDocument` that priced it, and reached from the job through the quote — `(:Job)-[:HAS_QUOTE]->(:QuoteDocument)-[:HAS_LINE_ITEM]->(:LineItem)`. Each valuation links the lines it measures with `(:Valuation)-[:VALUES]->(:LineItem)`; the per-line percent-complete a valuation records is carried valuation state, not a property of the edge or the line. A `:Job` links to its client (`:Person`) and site (`:PostalAddress`); inbound supplier invoices link to the `:Job` they are assigned to and the `:Organization` that issued them.
148
+ Every `:Job` is the hub for its visits, quotes, valuations, variations, milestones, and costs,
149
+ satisfying the ≥1-adjacency write-gate doctrine. Quote lines are reached from the job through
150
+ the quote — `(:Job)-[:HAS_QUOTE]->(:Quote)-[:HAS_LINE]->(:QuoteLine)` — and each valuation links
151
+ the lines it measures with `(:Valuation)-[:VALUES]->(:QuoteLine)`. A job links to its customer
152
+ and site; an asset hangs off the site it lives at. Costs link to the engineer who incurred them.
153
+ Procurement is a `:PurchaseOrder` of `:PurchaseOrderLine`s for `:Part`s from a `:Supplier`; the
154
+ received supplier invoice is an `:InboundInvoice` on that PO. A `:PpmContract` is a
155
+ planned-maintenance agreement for a customer/site, distinct from a reactive `:Job`.
75
156
 
76
157
  ---
77
158
 
78
159
  ## Filesystem ↔ graph (base template)
79
160
 
80
- The graph is a disciplined projection of the operator's job folder: every node corresponds to a filesystem artefact, and the edges follow the folder containment. This mapping is the **base template** — the default a standard building-contractor job folder projects into. It is shipped-generic; the folder names, sheet names and trade list below are the common default, not any operator's data.
161
+ The graph is the canonical ontology; the operator's job folder is a conforming projection of it.
162
+ Every node corresponds to a filesystem artefact, and the edges follow the folder containment.
163
+ This mapping is the **base template** — the default a standard field-service job folder projects
164
+ into. It is shipped-generic; the folder names below are the common default, not any operator's
165
+ data. On any divergence, the graph is canonical.
81
166
 
82
167
  A standard job folder, `{jobId} - {name}, {address} ({client})/`, projects as:
83
168
 
84
169
  | Folder / artefact | Node | Edge from the job |
85
170
  |---|---|---|
86
- | the job folder itself | `:Job` | — (the hub); `(:Job)-[:FOR_CLIENT]->(:Person)`, `(:Job)-[:AT_ADDRESS]->(:PostalAddress)` |
87
- | `Quotations/` — the client quote (`Q {jobId}`) and its priced schedule | `:QuoteDocument`; its priced rows → `:LineItem` | `(:Job)-[:HAS_QUOTE]->(:QuoteDocument)-[:HAS_LINE_ITEM]->(:LineItem)` |
88
- | `Finances/Valuations/` — one interim valuation per cycle | `:Valuation`; each measures the priced lines | `(:Job)-[:HAS_VALUATION]->(:Valuation)-[:VALUES]->(:LineItem)` |
171
+ | the job folder itself | `:Job` | — (the hub); `(:Job)-[:FOR_CUSTOMER]->(:Customer)`, `(:Job)-[:AT_SITE]->(:Site)` |
172
+ | `Quotations/` — the client quote and its priced schedule | `:Quote`; its priced rows → `:QuoteLine` | `(:Job)-[:HAS_QUOTE]->(:Quote)-[:HAS_LINE]->(:QuoteLine)` |
173
+ | `Finances/Valuations/` — one interim valuation per cycle | `:Valuation`; each measures the priced lines | `(:Job)-[:HAS_VALUATION]->(:Valuation)-[:VALUES]->(:QuoteLine)` |
89
174
  | the variations register | `:VariationNote` | `(:Job)-[:HAS_VARIATION]->(:VariationNote)` |
90
- | `Contractors/<Trade>/{Enquiries,Quotes,Invoices,Superseded}` | `:Organization`; invoices `:InboundInvoice` | `(:InboundInvoice)-[:ASSIGNED_TO]->(:Job)`, `(:InboundInvoice)-[:FROM_SUPPLIER]->(:Organization)` |
91
- | `Suppliers/<Supplier>/{Enquiries,Quotes,Invoices,Superseded}` | `:Organization`; invoices `:InboundInvoice` | `(:InboundInvoice)-[:ASSIGNED_TO]->(:Job)`, `(:InboundInvoice)-[:FROM_SUPPLIER]->(:Organization)` |
92
- | `Drawings/`, `Health & Safety/`, `Emails/`, `Snagging/`, `Meetings/`, `Programs/`, `Materials/`, `Admin/` | ingested documents (`:KnowledgeDocument` + `:Section`) | linked to the `:Job` |
93
-
94
- A contractor who keeps the whole job in one master workbook holds the same model in sheets rather than folders: a cover/calculation sheet is the priced schedule (`:QuoteDocument` + `:LineItem`s), one sheet per valuation cycle is a `:Valuation` measuring those lines, a variations sheet is the `:VariationNote` register, and per-trade sheets are the sub-contractor packages. Folder and workbook are two views of one job; both project into this same graph.
95
-
96
- Operators vary this template — they rename folders, add trades, restructure their workbook. This template is the shipped-generic default the agent projects against; the graph follows this one canonical ontology, not a per-operator schema. Where a real folder does not fit the default, the agent maps it to the nearest canonical node rather than inventing a node or edge type absent from this reference.
175
+ | `Costs/` — labour days, materials, travel, mileage, expenses, subcontractor | `:JobCost` (by `costType`) | `(:Job)-[:HAS_COST]->(:JobCost)-[:INCURRED_BY]->(:Engineer)` |
176
+ | `Visits/` attendance records | `:Visit` | `(:Job)-[:HAS_VISIT]->(:Visit)-[:ATTENDED_BY]->(:Engineer)` |
177
+ | `Suppliers/<Supplier>/{Quotes,POs,Invoices}` | `:Organization:Supplier`; POs `:PurchaseOrder`+`:PurchaseOrderLine`; received invoices `:InboundInvoice` | `(:PurchaseOrder)-[:FROM_SUPPLIER]->(:Supplier)`, `(:InboundInvoice)-[:ON_PURCHASE_ORDER]->(:PurchaseOrder)` |
178
+ | `Assets/` — serviced plant on the site | `:Asset` | `(:Site)-[:HAS_ASSET]->(:Asset)` |
179
+ | `Drawings/`, `Health & Safety/`, `Emails/`, `Snagging/`, `Admin/` | ingested documents (`:KnowledgeDocument` + `:Section`) | linked to the `:Job` |
180
+
181
+ A contractor who keeps the whole job in one master workbook holds the same model in sheets
182
+ rather than folders: a cover/calculation sheet is the priced schedule (`:Quote` + `:QuoteLine`s),
183
+ one sheet per valuation cycle is a `:Valuation`, a variations sheet is the `:VariationNote`
184
+ register, a costs sheet is the `:JobCost` lines, and per-supplier sheets are the procurement
185
+ packages. Folder and workbook are two views of one job; both project into this same graph.
186
+
187
+ Operators vary this template — they rename folders, add trades, restructure their workbook. This
188
+ template is the shipped-generic default the agent projects against; the graph follows this one
189
+ canonical ontology, not a per-operator schema. Where a real folder does not fit the default, the
190
+ agent maps it to the nearest canonical node rather than inventing a node or edge type absent from
191
+ this reference.
@@ -1,36 +1,34 @@
1
1
  # Schema Reference — Trades
2
2
 
3
- Vertical schema for `businessType: "trades"` — home services, construction, and tradespeople (plumber, electrician, builder, decorator).
3
+ Vertical schema for `businessType: "trades"` — home services and tradespeople (plumber,
4
+ electrician, builder, decorator). Trades and construction share the **one canonical SiteDesk
5
+ service-delivery ontology** authored from JobLogic (see `schema-construction.md` for the full
6
+ label set, properties, idempotency keys, relationships, and the filesystem↔graph template).
7
+ There are no trades-specific labels that diverge from the canonical model.
4
8
 
5
- This reference extends the base schema. All base node types (Person, Organization, Order, Event, Invoice, Service, etc.) remain valid. Load `schema-base.md` first.
9
+ This reference extends the base schema. All base node types (Person, Organization, Order, Event,
10
+ Invoice, Service, etc.) remain valid. Load `schema-base.md` first.
6
11
 
7
12
  When loading this reference, confirm: "Using schema-base + schema-trades".
8
13
 
9
14
  ---
10
15
 
11
- ## Additional Node Types
16
+ ## Canonical labels for the trades case
12
17
 
13
- | Entity | Neo4j Label | Schema.org Type | Required Properties |
14
- |--------|-------------|-----------------|---------------------|
15
- | Quote | `Quote` | `schema:Order` + `cdm:Opportunity` | `accountId`, `quoteNumber`, `customer` (id), `lineItems`, `validUntil`, `totalPrice` |
16
- | SiteVisit | `SiteVisit` | `schema:Event` (subtype) | `accountId`, `address` (id), `engineer` (id), `startDate`, `purpose` |
17
- | Inspection | `Inspection` | `cdm:Case` (subtype) | `accountId`, `address` (id), `findings`, `recommendations`, `photos` |
18
- | Certification | `Certification` | `schema:DigitalDocument` | `accountId`, `type` (gas safe, NICEIC, etc.), `issuedDate`, `expiryDate` |
19
- | Material | `Material` | `schema:Product` | `accountId`, `name`, `sku`, `unitCost`, `supplier` (id) |
18
+ A tradesperson's work maps onto the same canonical labels as a contractor's:
20
19
 
21
- ### Quote vs base Order
20
+ | Trades concept | Canonical label | Notes |
21
+ |----------------|-----------------|-------|
22
+ | The job / call-out | Job | `jobType` distinguishes Call out / Installation / Maintenance / Reactive |
23
+ | Customer and the work address | Customer, Site | site is the work location, distinct from the customer |
24
+ | An attendance / site visit | Visit | the lifecycle attendance record on a job (was the homegrown SiteVisit) |
25
+ | The estimate / quote | Quote, QuoteLine | priced estimate and its lines |
26
+ | Parts and materials used | Part, JobCost (costType material) | catalogue part vs the incurred material cost on a job |
27
+ | Serviced equipment on site | Asset | boiler, AC unit, alarm panel, etc. |
28
+ | A planned-maintenance agreement | PpmContract | recurring service contract, distinct from a reactive Job |
22
29
 
23
- `Quote` is the trades-specific label for estimates and quotes before acceptance. Use `Quote` (not `Order`) when the work is proposed but not yet confirmed. Once a quote is accepted, create a base `Order` node linked to it, or update the Quote's `orderStatus` to reflect acceptance.
30
+ Trade certifications (Gas Safe, NICEIC, Part P) a person holds are recorded as a credential on
31
+ that person's `:Person` node via the base credential model, not as a separate construction label.
32
+ Inspection findings are recorded as notes/documents on the `:Visit` or `:Asset` they concern.
24
33
 
25
- ---
26
-
27
- ## Relationship Patterns
28
-
29
- ```
30
- (:Order)-[:REQUIRES_VISIT]->(:SiteVisit)
31
- (:Order)-[:USES_MATERIAL]->(:Material)
32
- (:SiteVisit)-[:AT_ADDRESS]->(:PostalAddress)
33
- (:Certification)-[:HELD_BY]->(:Person)
34
- ```
35
-
36
- The `(:Certification)-[:HELD_BY]->(:Person)` relationship tracks which staff member holds a trade certification (e.g., Gas Safe, NICEIC, Part P).
34
+ See `schema-construction.md` for the authoritative definition of every label above.
@@ -22,6 +22,22 @@ provision_account_dir() {
22
22
 
23
23
  mkdir -p "$ACCOUNT_DIR/agents/admin" "$ACCOUNT_DIR/.claude" "$ACCOUNT_DIR/specialists/.claude-plugin" "$ACCOUNT_DIR/specialists/agents"
24
24
 
25
+ # --- Account filesystem schema seed (idempotent) ---------------------------
26
+ # Operator-data buckets (entity-anchored, flat) + tool-owned dirs. agents/ and
27
+ # specialists/ are created above. The seeded SCHEMA.md is the single source of
28
+ # the allowed top-level set, parsed at runtime by the fs-schema write guard.
29
+ local _seed_dirs=(projects contacts documents url-get output generated extracted uploads)
30
+ local _d _seeded=0
31
+ for _d in "${_seed_dirs[@]}"; do
32
+ [ -d "$ACCOUNT_DIR/$_d" ] || { mkdir -p "$ACCOUNT_DIR/$_d" && _seeded=$((_seeded+1)); }
33
+ done
34
+ if [ -f "$TEMPLATES_DIR/account-schema/SCHEMA.md" ]; then
35
+ cp "$TEMPLATES_DIR/account-schema/SCHEMA.md" "$ACCOUNT_DIR/SCHEMA.md"
36
+ else
37
+ echo " [acct-schema] WARNING: template missing at $TEMPLATES_DIR/account-schema/SCHEMA.md — SCHEMA.md not seeded" >&2
38
+ fi
39
+ echo " [acct-schema] seeded dirs=$_seeded"
40
+
25
41
  # Claude Code discovers project-level .claude/ relative to the nearest .git
26
42
  # root. Without a .git in the account dir it traverses up to ~/maxy/.git and
27
43
  # misses accountDir/.claude/. Initialise a repo so the account dir IS the root.
@@ -42,19 +58,22 @@ provision_account_dir() {
42
58
  {
43
59
  "matcher": "Write",
44
60
  "hooks": [
45
- { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
61
+ { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" },
62
+ { "type": "command", "command": "bash $HOOKS_PATH/fs-schema-guard.sh" }
46
63
  ]
47
64
  },
48
65
  {
49
66
  "matcher": "Edit",
50
67
  "hooks": [
51
- { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
68
+ { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" },
69
+ { "type": "command", "command": "bash $HOOKS_PATH/fs-schema-guard.sh" }
52
70
  ]
53
71
  },
54
72
  {
55
73
  "matcher": "NotebookEdit",
56
74
  "hooks": [
57
- { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
75
+ { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" },
76
+ { "type": "command", "command": "bash $HOOKS_PATH/fs-schema-guard.sh" }
58
77
  ]
59
78
  },
60
79
  {
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAkB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAqMtD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAmB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAkPtD,CAAA"}
@@ -14,6 +14,7 @@ export const MAXY_MCP_PLUGINS = [
14
14
  "email",
15
15
  "graph",
16
16
  "graph-viewer",
17
+ "joblogic",
17
18
  "memory",
18
19
  "outlook",
19
20
  "quickbooks",
@@ -109,6 +110,51 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
109
110
  "mcp__plugin_graph_graph__maxy-graph-get_neo4j_schema",
110
111
  "mcp__plugin_graph_graph__maxy-graph-read_neo4j_cypher",
111
112
  "mcp__plugin_graph_graph__maxy-graph-write_neo4j_cypher",
113
+ "mcp__plugin_joblogic_joblogic__joblogic-asset-create",
114
+ "mcp__plugin_joblogic_joblogic__joblogic-asset-get",
115
+ "mcp__plugin_joblogic_joblogic__joblogic-asset-list",
116
+ "mcp__plugin_joblogic_joblogic__joblogic-asset-update",
117
+ "mcp__plugin_joblogic_joblogic__joblogic-attachment-url-generate",
118
+ "mcp__plugin_joblogic_joblogic__joblogic-connection-status",
119
+ "mcp__plugin_joblogic_joblogic__joblogic-credentials-set",
120
+ "mcp__plugin_joblogic_joblogic__joblogic-customer-create",
121
+ "mcp__plugin_joblogic_joblogic__joblogic-customer-get",
122
+ "mcp__plugin_joblogic_joblogic__joblogic-customer-list",
123
+ "mcp__plugin_joblogic_joblogic__joblogic-customer-update",
124
+ "mcp__plugin_joblogic_joblogic__joblogic-engineer-get",
125
+ "mcp__plugin_joblogic_joblogic__joblogic-engineer-list",
126
+ "mcp__plugin_joblogic_joblogic__joblogic-engineer-map-list",
127
+ "mcp__plugin_joblogic_joblogic__joblogic-engineer-map-set",
128
+ "mcp__plugin_joblogic_joblogic__joblogic-invoice-create",
129
+ "mcp__plugin_joblogic_joblogic__joblogic-invoice-get",
130
+ "mcp__plugin_joblogic_joblogic__joblogic-invoice-list",
131
+ "mcp__plugin_joblogic_joblogic__joblogic-invoice-payment-create",
132
+ "mcp__plugin_joblogic_joblogic__joblogic-job-approve",
133
+ "mcp__plugin_joblogic_joblogic__joblogic-job-create",
134
+ "mcp__plugin_joblogic_joblogic__joblogic-job-get",
135
+ "mcp__plugin_joblogic_joblogic__joblogic-job-list",
136
+ "mcp__plugin_joblogic_joblogic__joblogic-job-set-status",
137
+ "mcp__plugin_joblogic_joblogic__joblogic-job-update",
138
+ "mcp__plugin_joblogic_joblogic__joblogic-jobcost-create",
139
+ "mcp__plugin_joblogic_joblogic__joblogic-jobcost-update",
140
+ "mcp__plugin_joblogic_joblogic__joblogic-note-create",
141
+ "mcp__plugin_joblogic_joblogic__joblogic-quote-approve",
142
+ "mcp__plugin_joblogic_joblogic__joblogic-quote-create",
143
+ "mcp__plugin_joblogic_joblogic__joblogic-quote-get",
144
+ "mcp__plugin_joblogic_joblogic__joblogic-quote-list",
145
+ "mcp__plugin_joblogic_joblogic__joblogic-site-create",
146
+ "mcp__plugin_joblogic_joblogic__joblogic-site-get",
147
+ "mcp__plugin_joblogic_joblogic__joblogic-site-list",
148
+ "mcp__plugin_joblogic_joblogic__joblogic-site-update",
149
+ "mcp__plugin_joblogic_joblogic__joblogic-timesheet-create",
150
+ "mcp__plugin_joblogic_joblogic__joblogic-timesheet-list",
151
+ "mcp__plugin_joblogic_joblogic__joblogic-timesheet-update",
152
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-cancel",
153
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-create",
154
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-deploy",
155
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-get",
156
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-search-planner",
157
+ "mcp__plugin_joblogic_joblogic__joblogic-visit-update",
112
158
  "mcp__plugin_memory_memory__conversation-archive-derive-insights",
113
159
  "mcp__plugin_memory_memory__conversation-archive-enrich-rejection",
114
160
  "mcp__plugin_memory_memory__conversation-archive-list-chunks",
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAa3B,OAAO,EAiBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAuBzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAgFhE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAgHD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAs7EpD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAa3B,OAAO,EAmBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAuBzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAgFhE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAgHD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAk+EpD"}