@mandaitor/taxonomy-realestate 0.1.1
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/LICENSE +21 -0
- package/README.md +25 -0
- package/dist/actions.d.ts +7 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +100 -0
- package/dist/actions.js.map +1 -0
- package/dist/constraints.d.ts +3 -0
- package/dist/constraints.d.ts.map +1 -0
- package/dist/constraints.js +96 -0
- package/dist/constraints.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +184 -0
- package/dist/index.js.map +1 -0
- package/dist/resources.d.ts +7 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +55 -0
- package/dist/resources.js.map +1 -0
- package/dist/templates.d.ts +3 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +84 -0
- package/dist/templates.js.map +1 -0
- package/package.json +64 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 Mandaitor
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @mandaitor/taxonomy-realestate
|
|
2
|
+
|
|
3
|
+
Real estate industry taxonomy for the Mandaitor delegation framework.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
This package defines the delegation vocabulary for real estate management, including property operations, tenant management, and transaction workflows.
|
|
10
|
+
|
|
11
|
+
## Modules
|
|
12
|
+
|
|
13
|
+
| Module | Description |
|
|
14
|
+
|--------|-------------|
|
|
15
|
+
| `actions.ts` | Delegatable actions for real estate operations |
|
|
16
|
+
| `resources.ts` | Resource patterns following property/unit hierarchies |
|
|
17
|
+
| `constraints.ts` | Real estate-specific constraints |
|
|
18
|
+
| `templates.ts` | Pre-configured mandate templates for common real estate delegation patterns |
|
|
19
|
+
|
|
20
|
+
## Development
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pnpm build
|
|
24
|
+
pnpm test:unit
|
|
25
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaxonomyAction } from "@mandaitor/taxonomy-core";
|
|
2
|
+
/**
|
|
3
|
+
* Real estate actions covering property management lifecycle:
|
|
4
|
+
* listing → tenant screening → contracts → maintenance → reporting
|
|
5
|
+
*/
|
|
6
|
+
export declare const REALESTATE_ACTIONS: TaxonomyAction[];
|
|
7
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,EA2G9C,CAAC"}
|
package/dist/actions.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real estate actions covering property management lifecycle:
|
|
3
|
+
* listing → tenant screening → contracts → maintenance → reporting
|
|
4
|
+
*/
|
|
5
|
+
export const REALESTATE_ACTIONS = [
|
|
6
|
+
// ── Listing Management ─────────────────────────────────
|
|
7
|
+
{
|
|
8
|
+
id: "realestate.listing.create",
|
|
9
|
+
label: "Create Property Listing",
|
|
10
|
+
description: "Authorize AI agent to create new property listings from provided data and photos",
|
|
11
|
+
riskLevel: "LOW",
|
|
12
|
+
requiresHumanApproval: false,
|
|
13
|
+
tags: ["listing", "marketing", "automation"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "realestate.listing.update",
|
|
17
|
+
label: "Update Property Listing",
|
|
18
|
+
description: "Authorize AI agent to update existing property listings with new information or pricing",
|
|
19
|
+
riskLevel: "LOW",
|
|
20
|
+
requiresHumanApproval: false,
|
|
21
|
+
tags: ["listing", "marketing", "update"],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "realestate.listing.publish",
|
|
25
|
+
label: "Publish to Portals",
|
|
26
|
+
description: "Authorize AI agent to publish listings to ImmobilienScout24, Immowelt, and other portals",
|
|
27
|
+
riskLevel: "MEDIUM",
|
|
28
|
+
requiresHumanApproval: false,
|
|
29
|
+
tags: ["listing", "portal", "publishing"],
|
|
30
|
+
},
|
|
31
|
+
// ── Tenant Management ──────────────────────────────────
|
|
32
|
+
{
|
|
33
|
+
id: "realestate.tenant.communicate",
|
|
34
|
+
label: "Tenant Communication",
|
|
35
|
+
description: "Authorize AI agent to send pre-approved communications to tenants (maintenance updates, reminders)",
|
|
36
|
+
riskLevel: "MEDIUM",
|
|
37
|
+
requiresHumanApproval: false,
|
|
38
|
+
tags: ["tenant", "communication", "automation"],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "realestate.tenant.screen",
|
|
42
|
+
label: "Screen Tenant Application",
|
|
43
|
+
description: "Authorize AI agent to pre-screen tenant applications against defined criteria (Schufa, income ratio)",
|
|
44
|
+
riskLevel: "HIGH",
|
|
45
|
+
requiresHumanApproval: true,
|
|
46
|
+
tags: ["tenant", "screening", "compliance"],
|
|
47
|
+
},
|
|
48
|
+
// ── Document Processing ────────────────────────────────
|
|
49
|
+
{
|
|
50
|
+
id: "realestate.document.classify",
|
|
51
|
+
label: "Classify Document",
|
|
52
|
+
description: "Authorize AI agent to classify incoming documents (contracts, invoices, correspondence)",
|
|
53
|
+
riskLevel: "LOW",
|
|
54
|
+
requiresHumanApproval: false,
|
|
55
|
+
tags: ["document", "classification", "automation"],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "realestate.document.extract",
|
|
59
|
+
label: "Extract Document Data",
|
|
60
|
+
description: "Authorize AI agent to extract structured data from scanned documents using OCR/AI",
|
|
61
|
+
riskLevel: "LOW",
|
|
62
|
+
requiresHumanApproval: false,
|
|
63
|
+
tags: ["document", "extraction", "ocr"],
|
|
64
|
+
},
|
|
65
|
+
// ── Contracts ──────────────────────────────────────────
|
|
66
|
+
{
|
|
67
|
+
id: "realestate.contract.draft",
|
|
68
|
+
label: "Draft Rental Contract",
|
|
69
|
+
description: "Authorize AI agent to draft rental contracts from templates with property-specific terms",
|
|
70
|
+
riskLevel: "HIGH",
|
|
71
|
+
requiresHumanApproval: true,
|
|
72
|
+
tags: ["contract", "legal", "drafting"],
|
|
73
|
+
},
|
|
74
|
+
// ── Maintenance ────────────────────────────────────────
|
|
75
|
+
{
|
|
76
|
+
id: "realestate.maintenance.create",
|
|
77
|
+
label: "Create Maintenance Ticket",
|
|
78
|
+
description: "Authorize AI agent to create maintenance tickets from tenant reports or sensor data",
|
|
79
|
+
riskLevel: "LOW",
|
|
80
|
+
requiresHumanApproval: false,
|
|
81
|
+
tags: ["maintenance", "facility", "automation"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "realestate.maintenance.assign",
|
|
85
|
+
label: "Assign Contractor",
|
|
86
|
+
description: "Authorize AI agent to assign maintenance tickets to pre-approved contractors based on availability and skill",
|
|
87
|
+
riskLevel: "MEDIUM",
|
|
88
|
+
requiresHumanApproval: false,
|
|
89
|
+
tags: ["maintenance", "contractor", "assignment"],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "realestate.maintenance.approve_cost",
|
|
93
|
+
label: "Approve Repair Cost",
|
|
94
|
+
description: "Authorize AI agent to approve repair costs up to a defined threshold",
|
|
95
|
+
riskLevel: "HIGH",
|
|
96
|
+
requiresHumanApproval: true,
|
|
97
|
+
tags: ["maintenance", "finance", "approval"],
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../src/constraints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,eAAO,MAAM,sBAAsB,EAAE,0BAA0B,EA8F9D,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const REALESTATE_CONSTRAINTS = [
|
|
2
|
+
{
|
|
3
|
+
id: "realestate.time.lease-period",
|
|
4
|
+
name: "Lease Period Constraint",
|
|
5
|
+
description: "Limits mandate validity to a lease or management contract period",
|
|
6
|
+
type: "TIME",
|
|
7
|
+
schema: {
|
|
8
|
+
not_before: {
|
|
9
|
+
type: "string",
|
|
10
|
+
format: "date-time",
|
|
11
|
+
description: "Mandate activation timestamp",
|
|
12
|
+
},
|
|
13
|
+
expires_at: { type: "string", format: "date-time", description: "Mandate expiry timestamp" },
|
|
14
|
+
defaultDuration: { type: "string", format: "duration", default: "P365D" },
|
|
15
|
+
},
|
|
16
|
+
defaults: {
|
|
17
|
+
defaultDuration: "P365D",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "realestate.limits.repair-cost",
|
|
22
|
+
name: "Repair Cost Limits",
|
|
23
|
+
description: "Financial limits for automated repair cost approval",
|
|
24
|
+
type: "TRANSACTION",
|
|
25
|
+
schema: {
|
|
26
|
+
max_repair_cost: {
|
|
27
|
+
type: "object",
|
|
28
|
+
properties: {
|
|
29
|
+
currency: { type: "string", default: "EUR" },
|
|
30
|
+
value: { type: "number", description: "Maximum single repair cost" },
|
|
31
|
+
},
|
|
32
|
+
default: { currency: "EUR", value: 2000 },
|
|
33
|
+
},
|
|
34
|
+
max_tickets_per_week: {
|
|
35
|
+
type: "number",
|
|
36
|
+
description: "Maximum maintenance tickets per week",
|
|
37
|
+
default: 15,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
defaults: {
|
|
41
|
+
max_repair_cost: { currency: "EUR", value: 2000 },
|
|
42
|
+
max_tickets_per_week: 15,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "realestate.escalation.cost-threshold",
|
|
47
|
+
name: "Cost Threshold Escalation",
|
|
48
|
+
description: "Escalation when repair costs exceed threshold",
|
|
49
|
+
type: "ESCALATION",
|
|
50
|
+
schema: {
|
|
51
|
+
cost_above: {
|
|
52
|
+
type: "object",
|
|
53
|
+
properties: { currency: { type: "string", default: "EUR" }, value: { type: "number" } },
|
|
54
|
+
default: { currency: "EUR", value: 1000 },
|
|
55
|
+
},
|
|
56
|
+
escalation_method: {
|
|
57
|
+
type: "string",
|
|
58
|
+
enum: ["APPROVAL_REQUIRED", "IMMEDIATE_NOTIFICATION"],
|
|
59
|
+
default: "APPROVAL_REQUIRED",
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
defaults: {
|
|
63
|
+
cost_above: { currency: "EUR", value: 1000 },
|
|
64
|
+
escalation_method: "APPROVAL_REQUIRED",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "realestate.gdpr.tenant-data",
|
|
69
|
+
name: "GDPR Tenant Data Constraints",
|
|
70
|
+
description: "GDPR compliance constraints for tenant data processing",
|
|
71
|
+
type: "COMPLIANCE",
|
|
72
|
+
schema: {
|
|
73
|
+
gdpr_consent_required: {
|
|
74
|
+
type: "boolean",
|
|
75
|
+
description: "Whether explicit GDPR consent is required before processing",
|
|
76
|
+
default: true,
|
|
77
|
+
},
|
|
78
|
+
data_retention_days: {
|
|
79
|
+
type: "number",
|
|
80
|
+
description: "Maximum days to retain processed tenant data",
|
|
81
|
+
default: 90,
|
|
82
|
+
},
|
|
83
|
+
purpose_limitation: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description: "Specific purpose for data processing (GDPR Art. 5)",
|
|
86
|
+
default: "tenant_screening",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
defaults: {
|
|
90
|
+
gdpr_consent_required: true,
|
|
91
|
+
data_retention_days: 90,
|
|
92
|
+
purpose_limitation: "tenant_screening",
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
//# sourceMappingURL=constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.js","sourceRoot":"","sources":["../src/constraints.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,kEAAkE;QAC/E,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,8BAA8B;aAC5C;YACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;YAC5F,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1E;QACD,QAAQ,EAAE;YACR,eAAe,EAAE,OAAO;SACzB;KACF;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE;YACN,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;iBACrE;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;aAC1C;YACD,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;gBACnD,OAAO,EAAE,EAAE;aACZ;SACF;QACD,QAAQ,EAAE;YACR,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACjD,oBAAoB,EAAE,EAAE;SACzB;KACF;IACD;QACE,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACvF,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;aAC1C;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;gBACrD,OAAO,EAAE,mBAAmB;aAC7B;SACF;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5C,iBAAiB,EAAE,mBAAmB;SACvC;KACF;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,wDAAwD;QACrE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,qBAAqB,EAAE;gBACrB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,6DAA6D;gBAC1E,OAAO,EAAE,IAAI;aACd;YACD,mBAAmB,EAAE;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;gBAC3D,OAAO,EAAE,EAAE;aACZ;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oDAAoD;gBACjE,OAAO,EAAE,kBAAkB;aAC5B;SACF;QACD,QAAQ,EAAE;YACR,qBAAqB,EAAE,IAAI;YAC3B,mBAAmB,EAAE,EAAE;YACvB,kBAAkB,EAAE,kBAAkB;SACvC;KACF;CACF,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IndustryTaxonomy, TaxonomyAction, TaxonomyResourcePattern, TaxonomyMandateTemplate } from "@mandaitor/taxonomy-core";
|
|
2
|
+
export declare const REALESTATE_ACTIONS: TaxonomyAction[];
|
|
3
|
+
export declare const REALESTATE_RESOURCES: TaxonomyResourcePattern[];
|
|
4
|
+
export declare const REALESTATE_TEMPLATES: TaxonomyMandateTemplate[];
|
|
5
|
+
export declare const realestateTaxonomy: IndustryTaxonomy;
|
|
6
|
+
export default realestateTaxonomy;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAsD9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,EA2BzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,EA8EzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBA0BhC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
export const REALESTATE_ACTIONS = [
|
|
2
|
+
{
|
|
3
|
+
id: "realestate.listing.create",
|
|
4
|
+
label: "Create Property Listing",
|
|
5
|
+
description: "Authorize AI agent to create new property listings from provided data and photos",
|
|
6
|
+
riskLevel: "LOW",
|
|
7
|
+
requiresHumanApproval: false,
|
|
8
|
+
tags: ["listing", "marketing", "automation"],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: "realestate.tenant.communicate",
|
|
12
|
+
label: "Tenant Communication",
|
|
13
|
+
description: "Authorize AI agent to send pre-approved communications to tenants (maintenance updates, reminders)",
|
|
14
|
+
riskLevel: "MEDIUM",
|
|
15
|
+
requiresHumanApproval: false,
|
|
16
|
+
tags: ["tenant", "communication", "automation"],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "realestate.tenant.screen",
|
|
20
|
+
label: "Screen Tenant Application",
|
|
21
|
+
description: "Authorize AI agent to pre-screen tenant applications against defined criteria (Schufa, income ratio)",
|
|
22
|
+
riskLevel: "HIGH",
|
|
23
|
+
requiresHumanApproval: true,
|
|
24
|
+
tags: ["tenant", "screening", "compliance"],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "realestate.contract.draft",
|
|
28
|
+
label: "Draft Rental Contract",
|
|
29
|
+
description: "Authorize AI agent to draft rental contracts from templates with property-specific terms",
|
|
30
|
+
riskLevel: "HIGH",
|
|
31
|
+
requiresHumanApproval: true,
|
|
32
|
+
tags: ["contract", "legal", "drafting"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "realestate.maintenance.create",
|
|
36
|
+
label: "Create Maintenance Ticket",
|
|
37
|
+
description: "Authorize AI agent to create maintenance tickets from tenant reports or sensor data",
|
|
38
|
+
riskLevel: "LOW",
|
|
39
|
+
requiresHumanApproval: false,
|
|
40
|
+
tags: ["maintenance", "facility", "automation"],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "realestate.maintenance.approve_cost",
|
|
44
|
+
label: "Approve Repair Cost",
|
|
45
|
+
description: "Authorize AI agent to approve repair costs up to a defined threshold",
|
|
46
|
+
riskLevel: "HIGH",
|
|
47
|
+
requiresHumanApproval: true,
|
|
48
|
+
tags: ["maintenance", "finance", "approval"],
|
|
49
|
+
},
|
|
50
|
+
// ... additional actions defined in full package
|
|
51
|
+
];
|
|
52
|
+
export const REALESTATE_RESOURCES = [
|
|
53
|
+
{
|
|
54
|
+
name: "portfolio-property",
|
|
55
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/property:{propertyId}/*",
|
|
56
|
+
description: "Resources scoped to a specific property in a portfolio",
|
|
57
|
+
parameters: [
|
|
58
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
59
|
+
{ name: "propertyId", type: "string", description: "Individual property ID", required: true },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "portfolio-tenant",
|
|
64
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/tenant:{tenantId}/*",
|
|
65
|
+
description: "Resources scoped to a specific tenant",
|
|
66
|
+
parameters: [
|
|
67
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
68
|
+
{ name: "tenantId", type: "string", description: "Tenant ID", required: true },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "portfolio-maintenance",
|
|
73
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/maintenance:*",
|
|
74
|
+
description: "All maintenance tickets in a portfolio",
|
|
75
|
+
parameters: [
|
|
76
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
export const REALESTATE_TEMPLATES = [
|
|
81
|
+
{
|
|
82
|
+
id: "realestate.automated-listing",
|
|
83
|
+
name: "Automated Listing Management",
|
|
84
|
+
description: "Delegate property listing creation and portal publishing to Mitarbyte's Listing Agent",
|
|
85
|
+
vertical: "realestate",
|
|
86
|
+
scope: {
|
|
87
|
+
actions: [
|
|
88
|
+
"realestate.listing.create",
|
|
89
|
+
"realestate.listing.update",
|
|
90
|
+
"realestate.listing.publish",
|
|
91
|
+
],
|
|
92
|
+
resourcePatterns: ["portfolio-property"],
|
|
93
|
+
effect: "ALLOW",
|
|
94
|
+
},
|
|
95
|
+
constraints: {
|
|
96
|
+
time: { defaultDuration: "P365D" },
|
|
97
|
+
rateLimits: { max_listings_per_day: 20 },
|
|
98
|
+
},
|
|
99
|
+
delegateType: "AGENT",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "realestate.tenant-screening",
|
|
103
|
+
name: "AI-Assisted Tenant Screening",
|
|
104
|
+
description: "Delegate initial tenant screening to Mitarbyte's Screening Agent with human approval for final decision",
|
|
105
|
+
vertical: "realestate",
|
|
106
|
+
scope: {
|
|
107
|
+
actions: [
|
|
108
|
+
"realestate.tenant.screen",
|
|
109
|
+
"realestate.document.classify",
|
|
110
|
+
"realestate.document.extract",
|
|
111
|
+
],
|
|
112
|
+
resourcePatterns: ["portfolio-tenant"],
|
|
113
|
+
effect: "ALLOW",
|
|
114
|
+
conditions: {
|
|
115
|
+
gdpr_consent_required: true,
|
|
116
|
+
data_retention_days: 90,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
constraints: {
|
|
120
|
+
time: { defaultDuration: "P30D" },
|
|
121
|
+
escalationRules: {
|
|
122
|
+
always_escalate_to: "property_manager",
|
|
123
|
+
escalation_method: "APPROVAL_REQUIRED",
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
delegateType: "AGENT",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: "realestate.maintenance-automation",
|
|
130
|
+
name: "Automated Maintenance Coordination",
|
|
131
|
+
description: "Delegate maintenance ticket creation, contractor assignment, and cost approval (up to threshold)",
|
|
132
|
+
vertical: "realestate",
|
|
133
|
+
scope: {
|
|
134
|
+
actions: [
|
|
135
|
+
"realestate.maintenance.create",
|
|
136
|
+
"realestate.maintenance.assign",
|
|
137
|
+
"realestate.maintenance.approve_cost",
|
|
138
|
+
],
|
|
139
|
+
resourcePatterns: ["portfolio-maintenance"],
|
|
140
|
+
effect: "ALLOW",
|
|
141
|
+
},
|
|
142
|
+
constraints: {
|
|
143
|
+
time: { defaultDuration: "P180D" },
|
|
144
|
+
transactionLimits: {
|
|
145
|
+
max_repair_cost: { currency: "EUR", value: 2000 },
|
|
146
|
+
max_tickets_per_week: 15,
|
|
147
|
+
},
|
|
148
|
+
escalationRules: {
|
|
149
|
+
cost_above: { currency: "EUR", value: 1000 },
|
|
150
|
+
escalation_method: "APPROVAL_REQUIRED",
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
delegateType: "AGENT",
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
export const realestateTaxonomy = {
|
|
157
|
+
id: "realestate",
|
|
158
|
+
version: "1.0.0",
|
|
159
|
+
name: "Real Estate & Immobilienverwaltung",
|
|
160
|
+
actions: REALESTATE_ACTIONS,
|
|
161
|
+
resourcePatterns: REALESTATE_RESOURCES,
|
|
162
|
+
constraintTemplates: [],
|
|
163
|
+
mandateTemplates: REALESTATE_TEMPLATES,
|
|
164
|
+
validateScope(scope) {
|
|
165
|
+
const errors = [];
|
|
166
|
+
const validActions = new Set(REALESTATE_ACTIONS.map((a) => a.id));
|
|
167
|
+
const scopeWithActions = scope;
|
|
168
|
+
for (const action of scopeWithActions.actions || []) {
|
|
169
|
+
if (!validActions.has(action)) {
|
|
170
|
+
errors.push({
|
|
171
|
+
path: `scope.actions[${action}]`,
|
|
172
|
+
message: `Unknown action: ${action}`,
|
|
173
|
+
code: "UNKNOWN_ACTION",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return { valid: errors.length === 0, errors };
|
|
178
|
+
},
|
|
179
|
+
validateConstraints(_constraints) {
|
|
180
|
+
return { valid: true, errors: [] };
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
export default realestateTaxonomy;
|
|
184
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,kFAAkF;QAC/F,SAAS,EAAE,KAAK;QAChB,qBAAqB,EAAE,KAAK;QAC5B,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC;KAC7C;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,oGAAoG;QACtG,SAAS,EAAE,QAAQ;QACnB,qBAAqB,EAAE,KAAK;QAC5B,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;KAChD;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,sGAAsG;QACxG,SAAS,EAAE,MAAM;QACjB,qBAAqB,EAAE,IAAI;QAC3B,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC;KAC5C;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,0FAA0F;QAC5F,SAAS,EAAE,MAAM;QACjB,qBAAqB,EAAE,IAAI;QAC3B,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;KACxC;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,qFAAqF;QACvF,SAAS,EAAE,KAAK;QAChB,qBAAqB,EAAE,KAAK;QAC5B,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC;KAChD;IACD;QACE,EAAE,EAAE,qCAAqC;QACzC,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,sEAAsE;QACnF,SAAS,EAAE,MAAM;QACjB,qBAAqB,EAAE,IAAI;QAC3B,IAAI,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC;KAC7C;IACD,iDAAiD;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,2DAA2D;QACpE,WAAW,EAAE,wDAAwD;QACrE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9F;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,uDAAuD;QAChE,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC/E;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,iDAAiD;QAC1D,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9F;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,uFAAuF;QACzF,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,2BAA2B;gBAC3B,2BAA2B;gBAC3B,4BAA4B;aAC7B;YACD,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;YACxC,MAAM,EAAE,OAAO;SAChB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;YAClC,UAAU,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE;SACzC;QACD,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,yGAAyG;QAC3G,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,0BAA0B;gBAC1B,8BAA8B;gBAC9B,6BAA6B;aAC9B;YACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;YACtC,MAAM,EAAE,OAAO;YACf,UAAU,EAAE;gBACV,qBAAqB,EAAE,IAAI;gBAC3B,mBAAmB,EAAE,EAAE;aACxB;SACF;QACD,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;YACjC,eAAe,EAAE;gBACf,kBAAkB,EAAE,kBAAkB;gBACtC,iBAAiB,EAAE,mBAAmB;aACvC;SACF;QACD,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,mCAAmC;QACvC,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EACT,kGAAkG;QACpG,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,+BAA+B;gBAC/B,+BAA+B;gBAC/B,qCAAqC;aACtC;YACD,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;YAC3C,MAAM,EAAE,OAAO;SAChB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;YAClC,iBAAiB,EAAE;gBACjB,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBACjD,oBAAoB,EAAE,EAAE;aACzB;YACD,eAAe,EAAE;gBACf,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC5C,iBAAiB,EAAE,mBAAmB;aACvC;SACF;QACD,YAAY,EAAE,OAAO;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,EAAE,EAAE,YAAY;IAChB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,kBAAkB;IAC3B,gBAAgB,EAAE,oBAAoB;IACtC,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,oBAAoB;IACtC,aAAa,CAAC,KAAc;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,KAA+B,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,iBAAiB,MAAM,GAAG;oBAChC,OAAO,EAAE,mBAAmB,MAAM,EAAE;oBACpC,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,mBAAmB,CAAC,YAAqB;QACvC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;CACF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaxonomyResourcePattern } from "@mandaitor/taxonomy-core";
|
|
2
|
+
/**
|
|
3
|
+
* Resource patterns follow the Mitarbyte portfolio hierarchy:
|
|
4
|
+
* portfolio → property → unit → tenant
|
|
5
|
+
*/
|
|
6
|
+
export declare const REALESTATE_RESOURCES: TaxonomyResourcePattern[];
|
|
7
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,EAiDzD,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource patterns follow the Mitarbyte portfolio hierarchy:
|
|
3
|
+
* portfolio → property → unit → tenant
|
|
4
|
+
*/
|
|
5
|
+
export const REALESTATE_RESOURCES = [
|
|
6
|
+
{
|
|
7
|
+
name: "portfolio-property",
|
|
8
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/property:{propertyId}/*",
|
|
9
|
+
description: "Resources scoped to a specific property in a portfolio",
|
|
10
|
+
parameters: [
|
|
11
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
12
|
+
{ name: "propertyId", type: "string", description: "Individual property ID", required: true },
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "portfolio-tenant",
|
|
17
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/tenant:{tenantId}/*",
|
|
18
|
+
description: "Resources scoped to a specific tenant",
|
|
19
|
+
parameters: [
|
|
20
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
21
|
+
{ name: "tenantId", type: "string", description: "Tenant ID", required: true },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "portfolio-maintenance",
|
|
26
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/maintenance:*",
|
|
27
|
+
description: "All maintenance tickets in a portfolio",
|
|
28
|
+
parameters: [
|
|
29
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "portfolio-wide",
|
|
34
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/*",
|
|
35
|
+
description: "All resources within a portfolio — use with caution",
|
|
36
|
+
parameters: [
|
|
37
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "portfolio-documents",
|
|
42
|
+
pattern: "mitarbyte:portfolio:{portfolioId}/documents:{documentType}/*",
|
|
43
|
+
description: "Documents of a specific type within a portfolio",
|
|
44
|
+
parameters: [
|
|
45
|
+
{ name: "portfolioId", type: "string", description: "Property portfolio ID", required: true },
|
|
46
|
+
{
|
|
47
|
+
name: "documentType",
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Document type (contract, invoice, correspondence)",
|
|
50
|
+
required: true,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,2DAA2D;QACpE,WAAW,EAAE,wDAAwD;QACrE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9F;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,uDAAuD;QAChE,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC/E;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,iDAAiD;QAC1D,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9F;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EAAE,qDAAqD;QAClE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9F;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,iDAAiD;QAC9D,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;gBAChE,QAAQ,EAAE,IAAI;aACf;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,EAsFzD,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export const REALESTATE_TEMPLATES = [
|
|
2
|
+
{
|
|
3
|
+
id: "realestate.automated-listing",
|
|
4
|
+
name: "Automated Listing Management",
|
|
5
|
+
description: "Delegate property listing creation and portal publishing to Mitarbyte's Listing Agent",
|
|
6
|
+
vertical: "realestate",
|
|
7
|
+
scope: {
|
|
8
|
+
actions: [
|
|
9
|
+
"realestate.listing.create",
|
|
10
|
+
"realestate.listing.update",
|
|
11
|
+
"realestate.listing.publish",
|
|
12
|
+
],
|
|
13
|
+
resourcePatterns: ["portfolio-property"],
|
|
14
|
+
effect: "ALLOW",
|
|
15
|
+
},
|
|
16
|
+
constraints: { time: { defaultDuration: "P365D" }, rateLimits: { max_listings_per_day: 20 } },
|
|
17
|
+
delegateType: "AGENT",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "realestate.tenant-screening",
|
|
21
|
+
name: "AI-Assisted Tenant Screening",
|
|
22
|
+
description: "Delegate initial tenant screening to Mitarbyte's Screening Agent with human approval for final decision",
|
|
23
|
+
vertical: "realestate",
|
|
24
|
+
scope: {
|
|
25
|
+
actions: [
|
|
26
|
+
"realestate.tenant.screen",
|
|
27
|
+
"realestate.document.classify",
|
|
28
|
+
"realestate.document.extract",
|
|
29
|
+
],
|
|
30
|
+
resourcePatterns: ["portfolio-tenant"],
|
|
31
|
+
effect: "ALLOW",
|
|
32
|
+
conditions: { gdpr_consent_required: true, data_retention_days: 90 },
|
|
33
|
+
},
|
|
34
|
+
constraints: {
|
|
35
|
+
time: { defaultDuration: "P30D" },
|
|
36
|
+
escalationRules: {
|
|
37
|
+
always_escalate_to: "property_manager",
|
|
38
|
+
escalation_method: "APPROVAL_REQUIRED",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
delegateType: "AGENT",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "realestate.maintenance-automation",
|
|
45
|
+
name: "Automated Maintenance Coordination",
|
|
46
|
+
description: "Delegate maintenance ticket creation, contractor assignment, and cost approval (up to threshold)",
|
|
47
|
+
vertical: "realestate",
|
|
48
|
+
scope: {
|
|
49
|
+
actions: [
|
|
50
|
+
"realestate.maintenance.create",
|
|
51
|
+
"realestate.maintenance.assign",
|
|
52
|
+
"realestate.maintenance.approve_cost",
|
|
53
|
+
],
|
|
54
|
+
resourcePatterns: ["portfolio-maintenance"],
|
|
55
|
+
effect: "ALLOW",
|
|
56
|
+
},
|
|
57
|
+
constraints: {
|
|
58
|
+
time: { defaultDuration: "P180D" },
|
|
59
|
+
transactionLimits: {
|
|
60
|
+
max_repair_cost: { currency: "EUR", value: 2000 },
|
|
61
|
+
max_tickets_per_week: 15,
|
|
62
|
+
},
|
|
63
|
+
escalationRules: {
|
|
64
|
+
cost_above: { currency: "EUR", value: 1000 },
|
|
65
|
+
escalation_method: "APPROVAL_REQUIRED",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
delegateType: "AGENT",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "realestate.document-processing",
|
|
72
|
+
name: "Automated Document Processing",
|
|
73
|
+
description: "Delegate document classification and data extraction to Mitarbyte's Document Agent",
|
|
74
|
+
vertical: "realestate",
|
|
75
|
+
scope: {
|
|
76
|
+
actions: ["realestate.document.classify", "realestate.document.extract"],
|
|
77
|
+
resourcePatterns: ["portfolio-documents"],
|
|
78
|
+
effect: "ALLOW",
|
|
79
|
+
},
|
|
80
|
+
constraints: { time: { defaultDuration: "P365D" }, rateLimits: { max_documents_per_day: 200 } },
|
|
81
|
+
delegateType: "AGENT",
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,uFAAuF;QACzF,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,2BAA2B;gBAC3B,2BAA2B;gBAC3B,4BAA4B;aAC7B;YACD,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;YACxC,MAAM,EAAE,OAAO;SAChB;QACD,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE;QAC7F,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,yGAAyG;QAC3G,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,0BAA0B;gBAC1B,8BAA8B;gBAC9B,6BAA6B;aAC9B;YACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;YACtC,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE;SACrE;QACD,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;YACjC,eAAe,EAAE;gBACf,kBAAkB,EAAE,kBAAkB;gBACtC,iBAAiB,EAAE,mBAAmB;aACvC;SACF;QACD,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,mCAAmC;QACvC,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EACT,kGAAkG;QACpG,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,+BAA+B;gBAC/B,+BAA+B;gBAC/B,qCAAqC;aACtC;YACD,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;YAC3C,MAAM,EAAE,OAAO;SAChB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;YAClC,iBAAiB,EAAE;gBACjB,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBACjD,oBAAoB,EAAE,EAAE;aACzB;YACD,eAAe,EAAE;gBACf,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC5C,iBAAiB,EAAE,mBAAmB;aACvC;SACF;QACD,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,+BAA+B;QACrC,WAAW,EACT,oFAAoF;QACtF,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,8BAA8B,EAAE,6BAA6B,CAAC;YACxE,gBAAgB,EAAE,CAAC,qBAAqB,CAAC;YACzC,MAAM,EAAE,OAAO;SAChB;QACD,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,EAAE;QAC/F,YAAY,EAAE,OAAO;KACtB;CACF,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mandaitor/taxonomy-realestate",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Mandaitor — Real estate industry taxonomy (Mitarbyte)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@mandaitor/taxonomy-core": "0.1.1"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.6.0",
|
|
24
|
+
"vitest": "^4.0.0"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"registry": "https://registry.npmjs.org",
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://github.com/C4RR13P0TT3R/mandaitor.git",
|
|
34
|
+
"directory": "packages/taxonomy-realestate"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"mandaitor",
|
|
38
|
+
"delegation",
|
|
39
|
+
"mandate",
|
|
40
|
+
"ai-governance",
|
|
41
|
+
"trust",
|
|
42
|
+
"verification",
|
|
43
|
+
"proof-of-mandate",
|
|
44
|
+
"sd-jwt",
|
|
45
|
+
"verifiable-credentials",
|
|
46
|
+
"taxonomy",
|
|
47
|
+
"real-estate",
|
|
48
|
+
"mitarbyte"
|
|
49
|
+
],
|
|
50
|
+
"homepage": "https://docs.mandaitor.io/docs/taxonomies/real-estate",
|
|
51
|
+
"bugs": {
|
|
52
|
+
"url": "https://github.com/C4RR13P0TT3R/mandaitor/issues"
|
|
53
|
+
},
|
|
54
|
+
"author": "Mandaitor <support@mandaitor.io> (https://mandaitor.io)",
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc",
|
|
57
|
+
"test": "vitest run",
|
|
58
|
+
"test:unit": "vitest run",
|
|
59
|
+
"typecheck": "tsc -p tsconfig.typecheck.json",
|
|
60
|
+
"lint": "eslint src/",
|
|
61
|
+
"lint:fix": "eslint src/ --fix",
|
|
62
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
63
|
+
}
|
|
64
|
+
}
|