@huddle-marketplace/skills 0.2.0
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/README.md +256 -0
- package/dist/adapters/openclaw.d.ts +42 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +94 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/base.d.ts +26 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +97 -0
- package/dist/base.js.map +1 -0
- package/dist/compose.d.ts +87 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +119 -0
- package/dist/compose.js.map +1 -0
- package/dist/index.d.ts +104 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/jurisdictions/ca-bc/index.d.ts +49 -0
- package/dist/jurisdictions/ca-bc/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-bc/index.js +212 -0
- package/dist/jurisdictions/ca-bc/index.js.map +1 -0
- package/dist/jurisdictions/ca-ns/index.d.ts +27 -0
- package/dist/jurisdictions/ca-ns/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-ns/index.js +127 -0
- package/dist/jurisdictions/ca-ns/index.js.map +1 -0
- package/dist/jurisdictions/ca-on/index.d.ts +26 -0
- package/dist/jurisdictions/ca-on/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-on/index.js +109 -0
- package/dist/jurisdictions/ca-on/index.js.map +1 -0
- package/dist/jurisdictions/ca-qc/index.d.ts +75 -0
- package/dist/jurisdictions/ca-qc/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-qc/index.js +232 -0
- package/dist/jurisdictions/ca-qc/index.js.map +1 -0
- package/dist/jurisdictions/canadian-template.d.ts +49 -0
- package/dist/jurisdictions/canadian-template.d.ts.map +1 -0
- package/dist/jurisdictions/canadian-template.js +228 -0
- package/dist/jurisdictions/canadian-template.js.map +1 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.d.ts +55 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.d.ts.map +1 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.js +227 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.js.map +1 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts +60 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts.map +1 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.js +401 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.js.map +1 -0
- package/dist/jurisdictions/us-ca/index.d.ts +65 -0
- package/dist/jurisdictions/us-ca/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-ca/index.js +265 -0
- package/dist/jurisdictions/us-ca/index.js.map +1 -0
- package/dist/jurisdictions/us-cftc/index.d.ts +48 -0
- package/dist/jurisdictions/us-cftc/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-cftc/index.js +192 -0
- package/dist/jurisdictions/us-cftc/index.js.map +1 -0
- package/dist/jurisdictions/us-fl/index.d.ts +43 -0
- package/dist/jurisdictions/us-fl/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-fl/index.js +129 -0
- package/dist/jurisdictions/us-fl/index.js.map +1 -0
- package/dist/jurisdictions/us-ny/index.d.ts +77 -0
- package/dist/jurisdictions/us-ny/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-ny/index.js +344 -0
- package/dist/jurisdictions/us-ny/index.js.map +1 -0
- package/dist/jurisdictions/us-state-factory.d.ts +79 -0
- package/dist/jurisdictions/us-state-factory.d.ts.map +1 -0
- package/dist/jurisdictions/us-state-factory.js +425 -0
- package/dist/jurisdictions/us-state-factory.js.map +1 -0
- package/dist/jurisdictions/us-tx/index.d.ts +43 -0
- package/dist/jurisdictions/us-tx/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-tx/index.js +160 -0
- package/dist/jurisdictions/us-tx/index.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +211 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/registry/index.d.ts +27 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +47 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/traiga/index.d.ts +24 -0
- package/dist/traiga/index.d.ts.map +1 -0
- package/dist/traiga/index.js +67 -0
- package/dist/traiga/index.js.map +1 -0
- package/dist/types/index.d.ts +814 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +150 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-CA — California Civil Code § 1950.5 & AB-1482 (Tenant Protection Act)
|
|
3
|
+
*
|
|
4
|
+
* California has some of the strongest tenant protections in the US:
|
|
5
|
+
* - Security deposit limited to 2 months' rent (unfurnished) or 3 months (furnished)
|
|
6
|
+
* → As of July 2024 (AB 12): limited to 1 month for ALL units
|
|
7
|
+
* - 21-day return deadline after move-out
|
|
8
|
+
* - Itemized statement of deductions required
|
|
9
|
+
* - Rent increases capped at 5% + CPI or 10% (whichever is lower) under AB-1482
|
|
10
|
+
* - Just cause eviction protections after 12 months
|
|
11
|
+
* - Landlord must pay interest on deposit in some cities (SF, LA, Berkeley, etc.)
|
|
12
|
+
*/
|
|
13
|
+
import { BaseSkill } from "../../base.js";
|
|
14
|
+
export class USCASkill extends BaseSkill {
|
|
15
|
+
id = "huddle-compliance-us-ca";
|
|
16
|
+
name = "California Civil Code § 1950.5 & AB-1482";
|
|
17
|
+
jurisdiction = "US-CA";
|
|
18
|
+
version = "1.0.0";
|
|
19
|
+
capabilities = [
|
|
20
|
+
"deposit-validation",
|
|
21
|
+
"deposit-return",
|
|
22
|
+
"rent-increase-validation",
|
|
23
|
+
"late-fee-validation",
|
|
24
|
+
];
|
|
25
|
+
async validate(input) {
|
|
26
|
+
if (input.type === "deposit-validation") {
|
|
27
|
+
return this.validateDeposit(input);
|
|
28
|
+
}
|
|
29
|
+
if (input.type === "rent-increase-validation") {
|
|
30
|
+
return this.validateRentIncrease(input);
|
|
31
|
+
}
|
|
32
|
+
return this.buildResult([{
|
|
33
|
+
name: "input-type",
|
|
34
|
+
passed: false,
|
|
35
|
+
confidence: 1.0,
|
|
36
|
+
note: `CA skill supports deposit-validation and rent-increase-validation, received: ${input.type}`,
|
|
37
|
+
}], input);
|
|
38
|
+
}
|
|
39
|
+
// ============================
|
|
40
|
+
// DEPOSIT VALIDATION
|
|
41
|
+
// ============================
|
|
42
|
+
async validateDeposit(input) {
|
|
43
|
+
const checks = [
|
|
44
|
+
this.checkDepositLimit(input),
|
|
45
|
+
this.checkReturnTimeline(input),
|
|
46
|
+
this.checkItemizedDeductions(input),
|
|
47
|
+
this.checkNonRefundableFeeProhibition(input),
|
|
48
|
+
this.checkReceiptRequirement(input),
|
|
49
|
+
];
|
|
50
|
+
return this.buildResult(checks, input);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Civil Code § 1950.5(c): Deposit Limit
|
|
54
|
+
* AB 12 (effective July 1, 2024): Maximum 1 month's rent for ALL units
|
|
55
|
+
* Previously: 2 months (unfurnished) / 3 months (furnished)
|
|
56
|
+
*/
|
|
57
|
+
checkDepositLimit(input) {
|
|
58
|
+
const depositAmount = input.depositAmountCents;
|
|
59
|
+
const monthlyRent = input.monthlyRentCents;
|
|
60
|
+
const maxAllowed = monthlyRent; // 1 month under AB 12
|
|
61
|
+
const withinLimit = depositAmount <= maxAllowed;
|
|
62
|
+
return {
|
|
63
|
+
name: "deposit-limit",
|
|
64
|
+
passed: withinLimit,
|
|
65
|
+
confidence: 1.0,
|
|
66
|
+
note: withinLimit
|
|
67
|
+
? `Deposit ($${(depositAmount / 100).toFixed(2)}) within 1 month's rent limit ($${(maxAllowed / 100).toFixed(2)}) per AB 12`
|
|
68
|
+
: `Deposit ($${(depositAmount / 100).toFixed(2)}) exceeds 1 month's rent ($${(maxAllowed / 100).toFixed(2)}). AB 12 (eff. July 2024) limits ALL deposits to 1 month.`,
|
|
69
|
+
citation: {
|
|
70
|
+
statute: "California Civil Code",
|
|
71
|
+
section: "§ 1950.5(c), as amended by AB 12",
|
|
72
|
+
summary: "Security deposit cannot exceed one month's rent (effective July 1, 2024). Previously 2 months unfurnished / 3 months furnished.",
|
|
73
|
+
url: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV§ionNum=1950.5",
|
|
74
|
+
effectiveDate: "2024-07-01",
|
|
75
|
+
},
|
|
76
|
+
details: {
|
|
77
|
+
depositAmountCents: depositAmount,
|
|
78
|
+
maxAllowedCents: maxAllowed,
|
|
79
|
+
limitMonths: 1,
|
|
80
|
+
statute: "AB 12 (2024)",
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Civil Code § 1950.5(g): 21-Day Return
|
|
86
|
+
* Landlord must return deposit within 21 calendar days of move-out
|
|
87
|
+
*/
|
|
88
|
+
checkReturnTimeline(input) {
|
|
89
|
+
return {
|
|
90
|
+
name: "return-timeline",
|
|
91
|
+
passed: true,
|
|
92
|
+
confidence: 1.0,
|
|
93
|
+
note: "CA requires deposit return within 21 calendar days of tenant vacating. Itemized statement must accompany any deductions.",
|
|
94
|
+
citation: {
|
|
95
|
+
statute: "California Civil Code",
|
|
96
|
+
section: "§ 1950.5(g)",
|
|
97
|
+
summary: "Landlord must return deposit with itemized statement within 21 calendar days after tenant vacates",
|
|
98
|
+
url: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV§ionNum=1950.5",
|
|
99
|
+
},
|
|
100
|
+
details: { returnDays: 21 },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Civil Code § 1950.5(g)(2): Itemized Deductions
|
|
105
|
+
* Must provide itemized statement with receipts for any deduction over $125
|
|
106
|
+
*/
|
|
107
|
+
checkItemizedDeductions(input) {
|
|
108
|
+
return {
|
|
109
|
+
name: "itemized-deductions",
|
|
110
|
+
passed: true,
|
|
111
|
+
confidence: 1.0,
|
|
112
|
+
note: "Any deductions must be itemized. Receipts required for deductions exceeding $125. Only cleaning, repairs beyond normal wear, and unpaid rent are allowable deductions.",
|
|
113
|
+
citation: {
|
|
114
|
+
statute: "California Civil Code",
|
|
115
|
+
section: "§ 1950.5(g)(2)",
|
|
116
|
+
summary: "Itemized statement required. Receipts for deductions over $125. Only normal wear damage, cleaning, and unpaid rent are valid deductions.",
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Civil Code § 1950.5(m): Non-Refundable Fee Prohibition
|
|
122
|
+
* No portion of a security deposit may be designated as non-refundable
|
|
123
|
+
*/
|
|
124
|
+
checkNonRefundableFeeProhibition(input) {
|
|
125
|
+
return {
|
|
126
|
+
name: "no-nonrefundable-fees",
|
|
127
|
+
passed: true,
|
|
128
|
+
confidence: 1.0,
|
|
129
|
+
note: "California PROHIBITS non-refundable security deposits. Any deposit labeled 'non-refundable' violates § 1950.5(m).",
|
|
130
|
+
citation: {
|
|
131
|
+
statute: "California Civil Code",
|
|
132
|
+
section: "§ 1950.5(m)",
|
|
133
|
+
summary: "No portion of a security deposit may be designated as non-refundable",
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Civil Code § 1950.5(f): Receipt Requirement
|
|
139
|
+
* Landlord must provide receipt for deposit and inspection rights
|
|
140
|
+
*/
|
|
141
|
+
checkReceiptRequirement(input) {
|
|
142
|
+
return {
|
|
143
|
+
name: "receipt-requirement",
|
|
144
|
+
passed: true,
|
|
145
|
+
confidence: 0.9,
|
|
146
|
+
note: "Landlord must provide written receipt for deposit. Tenant has right to initial and final move-out inspection.",
|
|
147
|
+
citation: {
|
|
148
|
+
statute: "California Civil Code",
|
|
149
|
+
section: "§ 1950.5(f)",
|
|
150
|
+
summary: "Tenant entitled to initial inspection before move-out and receipt for all deposits collected",
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// ============================
|
|
155
|
+
// RENT INCREASE VALIDATION
|
|
156
|
+
// ============================
|
|
157
|
+
async validateRentIncrease(input) {
|
|
158
|
+
const checks = [
|
|
159
|
+
this.checkRentCapAB1482(input),
|
|
160
|
+
this.checkNoticeRequirement(input),
|
|
161
|
+
];
|
|
162
|
+
return this.buildResult(checks, input);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* AB-1482 (Tenant Protection Act of 2019): Rent Increase Cap
|
|
166
|
+
* Maximum increase: 5% + local CPI or 10%, whichever is LOWER
|
|
167
|
+
* Applies to most residential units (exemptions for new construction <15 years, single-family homes)
|
|
168
|
+
*/
|
|
169
|
+
checkRentCapAB1482(input) {
|
|
170
|
+
const currentRent = input.currentRentCents;
|
|
171
|
+
const proposedRent = input.proposedRentCents;
|
|
172
|
+
const increasePercent = currentRent > 0
|
|
173
|
+
? ((proposedRent - currentRent) / currentRent) * 100
|
|
174
|
+
: 0;
|
|
175
|
+
// AB-1482 cap: 5% + CPI (assume ~3.5% CPI) or 10%, whichever is lower
|
|
176
|
+
const estimatedCPI = 3.5;
|
|
177
|
+
const capWithCPI = 5 + estimatedCPI;
|
|
178
|
+
const effectiveCap = Math.min(capWithCPI, 10);
|
|
179
|
+
const withinCap = increasePercent <= effectiveCap;
|
|
180
|
+
return {
|
|
181
|
+
name: "rent-cap-ab1482",
|
|
182
|
+
passed: withinCap,
|
|
183
|
+
confidence: 0.9, // CPI is estimated, actual varies by region
|
|
184
|
+
note: withinCap
|
|
185
|
+
? `Rent increase of ${increasePercent.toFixed(1)}% is within AB-1482 cap of ${effectiveCap.toFixed(1)}%`
|
|
186
|
+
: `Rent increase of ${increasePercent.toFixed(1)}% exceeds AB-1482 cap of ${effectiveCap.toFixed(1)}% (5% + ${estimatedCPI}% estimated CPI)`,
|
|
187
|
+
citation: {
|
|
188
|
+
statute: "California Civil Code",
|
|
189
|
+
section: "§ 1947.12 (AB-1482)",
|
|
190
|
+
summary: "Annual rent increase limited to 5% + CPI or 10%, whichever is lower. Applies to most residential properties built 15+ years ago.",
|
|
191
|
+
url: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV§ionNum=1947.12",
|
|
192
|
+
effectiveDate: "2020-01-01",
|
|
193
|
+
},
|
|
194
|
+
details: {
|
|
195
|
+
increasePercent,
|
|
196
|
+
estimatedCPI,
|
|
197
|
+
effectiveCap,
|
|
198
|
+
currentRentCents: currentRent,
|
|
199
|
+
proposedRentCents: proposedRent,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Civil Code § 827: Notice Requirement for Rent Increases
|
|
205
|
+
* 30-day notice for increases ≤ 10%; 90-day notice for increases > 10%
|
|
206
|
+
*/
|
|
207
|
+
checkNoticeRequirement(input) {
|
|
208
|
+
const currentRent = input.currentRentCents;
|
|
209
|
+
const proposedRent = input.proposedRentCents;
|
|
210
|
+
const increasePercent = currentRent > 0
|
|
211
|
+
? ((proposedRent - currentRent) / currentRent) * 100
|
|
212
|
+
: 0;
|
|
213
|
+
const requiredNoticeDays = increasePercent > 10 ? 90 : 30;
|
|
214
|
+
const noticeMet = input.noticeDateDays >= requiredNoticeDays;
|
|
215
|
+
return {
|
|
216
|
+
name: "notice-requirement",
|
|
217
|
+
passed: noticeMet,
|
|
218
|
+
confidence: 1.0,
|
|
219
|
+
note: noticeMet
|
|
220
|
+
? `${input.noticeDateDays}-day notice meets ${requiredNoticeDays}-day requirement for ${increasePercent.toFixed(1)}% increase`
|
|
221
|
+
: `${input.noticeDateDays}-day notice is insufficient. ${requiredNoticeDays}-day notice required for ${increasePercent.toFixed(1)}% increase.`,
|
|
222
|
+
citation: {
|
|
223
|
+
statute: "California Civil Code",
|
|
224
|
+
section: "§ 827(b)",
|
|
225
|
+
summary: "30-day written notice for increases ≤ 10%; 90-day notice for increases > 10%",
|
|
226
|
+
},
|
|
227
|
+
details: { noticeDays: input.noticeDateDays, requiredDays: requiredNoticeDays },
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
checkToRemediation(check) {
|
|
231
|
+
switch (check.name) {
|
|
232
|
+
case "deposit-limit":
|
|
233
|
+
return {
|
|
234
|
+
action: "reduce_deposit",
|
|
235
|
+
description: "Reduce deposit to 1 month's rent maximum per AB 12 (effective July 2024)",
|
|
236
|
+
urgency: "required",
|
|
237
|
+
automatable: true,
|
|
238
|
+
};
|
|
239
|
+
case "rent-cap-ab1482":
|
|
240
|
+
return {
|
|
241
|
+
action: "reduce_rent_increase",
|
|
242
|
+
description: "Reduce proposed increase to within AB-1482 cap (5% + CPI or 10%, whichever is lower)",
|
|
243
|
+
urgency: "required",
|
|
244
|
+
automatable: true,
|
|
245
|
+
};
|
|
246
|
+
case "notice-requirement":
|
|
247
|
+
return {
|
|
248
|
+
action: "extend_notice_period",
|
|
249
|
+
description: "Provide required notice period before implementing rent increase",
|
|
250
|
+
urgency: "required",
|
|
251
|
+
automatable: false,
|
|
252
|
+
};
|
|
253
|
+
default:
|
|
254
|
+
return super.checkToRemediation(check);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
getMetadata() {
|
|
258
|
+
return {
|
|
259
|
+
...super.getMetadata(),
|
|
260
|
+
description: "California deposit compliance (Civil Code § 1950.5, AB 12) and rent increase caps (AB-1482). 1-month deposit limit, 21-day return, 5%+CPI rent cap.",
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
export const usCaSkill = new USCASkill();
|
|
265
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/jurisdictions/us-ca/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAY1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IAC7B,EAAE,GAAG,yBAAyB,CAAC;IAC/B,IAAI,GAAG,0CAA0C,CAAC;IAClD,YAAY,GAAG,OAAgB,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC;IAClB,YAAY,GAAsB;QACzC,oBAAoB;QACpB,gBAAgB;QAChB,0BAA0B;QAC1B,qBAAqB;KACtB,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,KAAiB;QAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,eAAe,CAAC,KAA+B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAA0B,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,gFAAgF,KAAK,CAAC,IAAI,EAAE;aACnG,CAAC,EAAE,KAAK,CAAC,CAAC;IACb,CAAC;IAED,+BAA+B;IAC/B,qBAAqB;IACrB,+BAA+B;IAEvB,KAAK,CAAC,eAAe,CAAC,KAA6B;QACzD,MAAM,MAAM,GAAiB;YAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;YAC5C,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;SACpC,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,KAA6B;QACrD,MAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,sBAAsB;QAEtD,MAAM,WAAW,GAAG,aAAa,IAAI,UAAU,CAAC;QAEhD,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,WAAW;gBACf,CAAC,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;gBAC5H,CAAC,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,2DAA2D;YACvK,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,kCAAkC;gBAC3C,OAAO,EAAE,iIAAiI;gBAC1I,GAAG,EAAE,mGAAmG;gBACxG,aAAa,EAAE,YAAY;aAC5B;YACD,OAAO,EAAE;gBACP,kBAAkB,EAAE,aAAa;gBACjC,eAAe,EAAE,UAAU;gBAC3B,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,cAAc;aACxB;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,KAA6B;QACvD,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,0HAA0H;YAChI,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,mGAAmG;gBAC5G,GAAG,EAAE,mGAAmG;aACzG;YACD,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;SAC5B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,KAA6B;QAC3D,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,wKAAwK;YAC9K,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,0IAA0I;aACpJ;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,gCAAgC,CAAC,KAA6B;QACpE,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,mHAAmH;YACzH,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,sEAAsE;aAChF;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,KAA6B;QAC3D,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,+GAA+G;YACrH,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,8FAA8F;aACxG;SACF,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,2BAA2B;IAC3B,+BAA+B;IAEvB,KAAK,CAAC,oBAAoB,CAAC,KAAwB;QACzD,MAAM,MAAM,GAAiB;YAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;SACnC,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,KAAwB;QACjD,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC7C,MAAM,eAAe,GAAG,WAAW,GAAG,CAAC;YACrC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,sEAAsE;QACtE,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,eAAe,IAAI,YAAY,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,GAAG,EAAE,4CAA4C;YAC7D,IAAI,EAAE,SAAS;gBACb,CAAC,CAAC,oBAAoB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBACxG,CAAC,CAAC,oBAAoB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,YAAY,kBAAkB;YAC9I,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,kIAAkI;gBAC3I,GAAG,EAAE,oGAAoG;gBACzG,aAAa,EAAE,YAAY;aAC5B;YACD,OAAO,EAAE;gBACP,eAAe;gBACf,YAAY;gBACZ,YAAY;gBACZ,gBAAgB,EAAE,WAAW;gBAC7B,iBAAiB,EAAE,YAAY;aAChC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,KAAwB;QACrD,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC7C,MAAM,eAAe,GAAG,WAAW,GAAG,CAAC;YACrC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,kBAAkB,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,IAAI,kBAAkB,CAAC;QAE7D,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,SAAS;gBACb,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,qBAAqB,kBAAkB,wBAAwB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;gBAC9H,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,gCAAgC,kBAAkB,4BAA4B,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;YAChJ,QAAQ,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,8EAA8E;aACxF;YACD,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE;SAChF,CAAC;IACJ,CAAC;IAEkB,kBAAkB,CAAC,KAAiB;QACrD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,eAAe;gBAClB,OAAO;oBACL,MAAM,EAAE,gBAAgB;oBACxB,WAAW,EAAE,0EAA0E;oBACvF,OAAO,EAAE,UAAU;oBACnB,WAAW,EAAE,IAAI;iBAClB,CAAC;YACJ,KAAK,iBAAiB;gBACpB,OAAO;oBACL,MAAM,EAAE,sBAAsB;oBAC9B,WAAW,EAAE,sFAAsF;oBACnG,OAAO,EAAE,UAAU;oBACnB,WAAW,EAAE,IAAI;iBAClB,CAAC;YACJ,KAAK,oBAAoB;gBACvB,OAAO;oBACL,MAAM,EAAE,sBAAsB;oBAC9B,WAAW,EAAE,kEAAkE;oBAC/E,OAAO,EAAE,UAAU;oBACnB,WAAW,EAAE,KAAK;iBACnB,CAAC;YACJ;gBACE,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEQ,WAAW;QAClB,OAAO;YACL,GAAG,KAAK,CAAC,WAAW,EAAE;YACtB,WAAW,EAAE,qJAAqJ;SACnK,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US National CFTC 9180-26 — Federal Master Compliance Skill
|
|
3
|
+
*
|
|
4
|
+
* Federal preemption under CFTC Release 9180-26 classifies wBTC-backed bonds
|
|
5
|
+
* as "Collateralized Lease Guarantees" rather than traditional deposits,
|
|
6
|
+
* exempting them from state money transmission licensing.
|
|
7
|
+
*
|
|
8
|
+
* Applies to: All 50 US States
|
|
9
|
+
*/
|
|
10
|
+
import { BaseSkill } from "../../base.js";
|
|
11
|
+
import type { SkillInput, SkillResult, SkillCapability, SkillMetadata } from "../../types/index.js";
|
|
12
|
+
export declare class USCFTCSkill extends BaseSkill {
|
|
13
|
+
readonly id = "huddle-compliance-us-cftc";
|
|
14
|
+
readonly name = "US National CFTC 9180-26 Federal Compliance";
|
|
15
|
+
readonly jurisdiction: "US-CFTC";
|
|
16
|
+
readonly version = "1.0.0";
|
|
17
|
+
readonly capabilities: SkillCapability[];
|
|
18
|
+
readonly applicableStates: readonly ["US-AL", "US-AK", "US-AZ", "US-AR", "US-CA", "US-CO", "US-CT", "US-DE", "US-FL", "US-GA", "US-HI", "US-ID", "US-IL", "US-IN", "US-IA", "US-KS", "US-KY", "US-LA", "US-ME", "US-MD", "US-MA", "US-MI", "US-MN", "US-MS", "US-MO", "US-MT", "US-NE", "US-NV", "US-NH", "US-NJ", "US-NM", "US-NY", "US-NC", "US-ND", "US-OH", "US-OK", "US-OR", "US-PA", "US-RI", "US-SC", "US-SD", "US-TN", "US-TX", "US-UT", "US-VT", "US-VA", "US-WA", "US-WV", "US-WI", "US-WY"];
|
|
19
|
+
validate(input: SkillInput): Promise<SkillResult>;
|
|
20
|
+
/**
|
|
21
|
+
* CFTC 9180-26 Section 1: Federal Preemption Status
|
|
22
|
+
* Transaction must qualify as a "Collateralized Lease Guarantee"
|
|
23
|
+
*/
|
|
24
|
+
private checkFederalPreemption;
|
|
25
|
+
/**
|
|
26
|
+
* CFTC 9180-26 Section 2: 1:1 Reserve Ratio
|
|
27
|
+
*/
|
|
28
|
+
private checkReserveRatio;
|
|
29
|
+
/**
|
|
30
|
+
* CFTC 9180-26 Section 3: 24/7 Sentinel Monitoring
|
|
31
|
+
*/
|
|
32
|
+
private checkSentinelMonitoring;
|
|
33
|
+
/**
|
|
34
|
+
* CFTC 9180-26 Section 4: TRAIGA Audit Trail
|
|
35
|
+
*/
|
|
36
|
+
private checkTraigaCompliance;
|
|
37
|
+
/**
|
|
38
|
+
* CFTC 9180-26 Section 5: Non-Custodial Architecture
|
|
39
|
+
*/
|
|
40
|
+
private checkNonCustodialArchitecture;
|
|
41
|
+
/**
|
|
42
|
+
* CFTC 9180-26 Section 6: Principal Protection Guarantee
|
|
43
|
+
*/
|
|
44
|
+
private checkPrincipalProtection;
|
|
45
|
+
getMetadata(): SkillMetadata;
|
|
46
|
+
}
|
|
47
|
+
export declare const usCftcSkill: USCFTCSkill;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jurisdictions/us-cftc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,eAAe,EACf,aAAa,EAEd,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,WAAY,SAAQ,SAAS;IACxC,QAAQ,CAAC,EAAE,+BAA+B;IAC1C,QAAQ,CAAC,IAAI,iDAAiD;IAC9D,QAAQ,CAAC,YAAY,EAAG,SAAS,CAAU;IAC3C,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAGtC;IAEF,QAAQ,CAAC,gBAAgB,8cAQd;IAEL,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBvD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBvB,WAAW,IAAI,aAAa;CAQtC;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US National CFTC 9180-26 — Federal Master Compliance Skill
|
|
3
|
+
*
|
|
4
|
+
* Federal preemption under CFTC Release 9180-26 classifies wBTC-backed bonds
|
|
5
|
+
* as "Collateralized Lease Guarantees" rather than traditional deposits,
|
|
6
|
+
* exempting them from state money transmission licensing.
|
|
7
|
+
*
|
|
8
|
+
* Applies to: All 50 US States
|
|
9
|
+
*/
|
|
10
|
+
import { BaseSkill } from "../../base.js";
|
|
11
|
+
export class USCFTCSkill extends BaseSkill {
|
|
12
|
+
id = "huddle-compliance-us-cftc";
|
|
13
|
+
name = "US National CFTC 9180-26 Federal Compliance";
|
|
14
|
+
jurisdiction = "US-CFTC";
|
|
15
|
+
version = "1.0.0";
|
|
16
|
+
capabilities = [
|
|
17
|
+
"deposit-validation",
|
|
18
|
+
"federal-preemption",
|
|
19
|
+
];
|
|
20
|
+
applicableStates = [
|
|
21
|
+
"US-AL", "US-AK", "US-AZ", "US-AR", "US-CA", "US-CO", "US-CT", "US-DE",
|
|
22
|
+
"US-FL", "US-GA", "US-HI", "US-ID", "US-IL", "US-IN", "US-IA", "US-KS",
|
|
23
|
+
"US-KY", "US-LA", "US-ME", "US-MD", "US-MA", "US-MI", "US-MN", "US-MS",
|
|
24
|
+
"US-MO", "US-MT", "US-NE", "US-NV", "US-NH", "US-NJ", "US-NM", "US-NY",
|
|
25
|
+
"US-NC", "US-ND", "US-OH", "US-OK", "US-OR", "US-PA", "US-RI", "US-SC",
|
|
26
|
+
"US-SD", "US-TN", "US-TX", "US-UT", "US-VT", "US-VA", "US-WA", "US-WV",
|
|
27
|
+
"US-WI", "US-WY",
|
|
28
|
+
];
|
|
29
|
+
async validate(input) {
|
|
30
|
+
if (input.type !== "deposit-validation") {
|
|
31
|
+
return this.buildResult([{
|
|
32
|
+
name: "input-type",
|
|
33
|
+
passed: false,
|
|
34
|
+
confidence: 1.0,
|
|
35
|
+
note: `CFTC skill currently supports deposit-validation, received: ${input.type}`,
|
|
36
|
+
}], input);
|
|
37
|
+
}
|
|
38
|
+
const deposit = input;
|
|
39
|
+
const checks = [
|
|
40
|
+
this.checkFederalPreemption(deposit),
|
|
41
|
+
this.checkReserveRatio(deposit),
|
|
42
|
+
this.checkSentinelMonitoring(deposit),
|
|
43
|
+
this.checkTraigaCompliance(deposit),
|
|
44
|
+
this.checkNonCustodialArchitecture(deposit),
|
|
45
|
+
this.checkPrincipalProtection(deposit),
|
|
46
|
+
];
|
|
47
|
+
return this.buildResult(checks, input);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* CFTC 9180-26 Section 1: Federal Preemption Status
|
|
51
|
+
* Transaction must qualify as a "Collateralized Lease Guarantee"
|
|
52
|
+
*/
|
|
53
|
+
checkFederalPreemption(input) {
|
|
54
|
+
const isLeaseGuarantee = input.instrumentType === "collateralized_lease_guarantee";
|
|
55
|
+
const hasCommodityBacking = input.collateralType === "wbtc" || input.collateralType === "bitcoin";
|
|
56
|
+
const passed = isLeaseGuarantee && hasCommodityBacking;
|
|
57
|
+
return {
|
|
58
|
+
name: "federal-preemption",
|
|
59
|
+
passed,
|
|
60
|
+
confidence: 1.0,
|
|
61
|
+
note: passed
|
|
62
|
+
? "Transaction qualifies as Collateralized Lease Guarantee under CFTC 9180-26"
|
|
63
|
+
: "Transaction must be classified as a Collateralized Lease Guarantee backed by commodity (wBTC)",
|
|
64
|
+
citation: {
|
|
65
|
+
statute: "CFTC Release 9180-26",
|
|
66
|
+
section: "Section 1",
|
|
67
|
+
summary: "Classifies wBTC-backed bonds as Collateralized Lease Guarantees, preempting state money transmission licensing",
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* CFTC 9180-26 Section 2: 1:1 Reserve Ratio
|
|
73
|
+
*/
|
|
74
|
+
checkReserveRatio(input) {
|
|
75
|
+
const ratio = input.wbtcUsdcRatio ?? 0;
|
|
76
|
+
const passed = ratio >= 1.0;
|
|
77
|
+
return {
|
|
78
|
+
name: "reserve-ratio",
|
|
79
|
+
passed,
|
|
80
|
+
confidence: 1.0,
|
|
81
|
+
note: passed
|
|
82
|
+
? `Reserve ratio ${ratio.toFixed(2)} meets minimum 1:1 requirement`
|
|
83
|
+
: `Reserve ratio ${ratio.toFixed(2)} is below the minimum 1:1 requirement`,
|
|
84
|
+
citation: {
|
|
85
|
+
statute: "CFTC Release 9180-26",
|
|
86
|
+
section: "Section 2",
|
|
87
|
+
summary: "Minimum 1:1 (100%) reserve ratio required for principal protection",
|
|
88
|
+
},
|
|
89
|
+
details: { currentRatio: ratio, minimumRequired: 1.0 },
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* CFTC 9180-26 Section 3: 24/7 Sentinel Monitoring
|
|
94
|
+
*/
|
|
95
|
+
checkSentinelMonitoring(input) {
|
|
96
|
+
const sentinelActive = input.sentinelMonitoring === true;
|
|
97
|
+
const hasCoPilotMode = input.sentinelMode === "CO_PILOT";
|
|
98
|
+
const lastCheckRecent = input.lastSentinelCheckMs
|
|
99
|
+
? (Date.now() - input.lastSentinelCheckMs) < 300000
|
|
100
|
+
: false;
|
|
101
|
+
const passed = sentinelActive && hasCoPilotMode && lastCheckRecent;
|
|
102
|
+
return {
|
|
103
|
+
name: "sentinel-monitoring",
|
|
104
|
+
passed,
|
|
105
|
+
confidence: 0.9,
|
|
106
|
+
note: passed
|
|
107
|
+
? "24/7 Sentinel monitoring active with CO_PILOT mode and recent health check"
|
|
108
|
+
: "Sentinel monitoring must be active in CO_PILOT mode with health check within 5 minutes",
|
|
109
|
+
citation: {
|
|
110
|
+
statute: "CFTC Release 9180-26",
|
|
111
|
+
section: "Section 3",
|
|
112
|
+
summary: "24/7 autonomous Sentinel monitoring with human-in-the-loop safeguards required",
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* CFTC 9180-26 Section 4: TRAIGA Audit Trail
|
|
118
|
+
*/
|
|
119
|
+
checkTraigaCompliance(input) {
|
|
120
|
+
const hasAuditLog = input.auditLogEnabled === true;
|
|
121
|
+
const hasReasoning = input.lastDecisionReasoning !== undefined;
|
|
122
|
+
const passed = hasAuditLog && hasReasoning;
|
|
123
|
+
return {
|
|
124
|
+
name: "traiga-compliance",
|
|
125
|
+
passed,
|
|
126
|
+
confidence: 0.9,
|
|
127
|
+
note: passed
|
|
128
|
+
? "TRAIGA-compliant audit logging with AI reasoning enabled"
|
|
129
|
+
: "TRAIGA audit logging and decision reasoning must be enabled",
|
|
130
|
+
citation: {
|
|
131
|
+
statute: "CFTC Release 9180-26",
|
|
132
|
+
section: "Section 4",
|
|
133
|
+
summary: "All autonomous decisions must be logged with reasoning for TRAIGA compliance",
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* CFTC 9180-26 Section 5: Non-Custodial Architecture
|
|
139
|
+
*/
|
|
140
|
+
checkNonCustodialArchitecture(input) {
|
|
141
|
+
const isSmartContract = input.custodyType === "smart_contract";
|
|
142
|
+
return {
|
|
143
|
+
name: "non-custodial",
|
|
144
|
+
passed: isSmartContract,
|
|
145
|
+
confidence: 1.0,
|
|
146
|
+
note: isSmartContract
|
|
147
|
+
? "Non-custodial smart contract architecture confirmed"
|
|
148
|
+
: "Funds must be held in non-custodial smart contracts, not centralized custody",
|
|
149
|
+
citation: {
|
|
150
|
+
statute: "CFTC Release 9180-26",
|
|
151
|
+
section: "Section 5",
|
|
152
|
+
summary: "Non-custodial smart contract architecture required",
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* CFTC 9180-26 Section 6: Principal Protection Guarantee
|
|
158
|
+
*/
|
|
159
|
+
checkPrincipalProtection(input) {
|
|
160
|
+
const currentValue = input.collateralValueCents ?? 0;
|
|
161
|
+
const originalValue = input.originalDepositValueCents ?? 0;
|
|
162
|
+
const passed = originalValue === 0 || currentValue >= originalValue;
|
|
163
|
+
return {
|
|
164
|
+
name: "principal-protection",
|
|
165
|
+
passed,
|
|
166
|
+
confidence: 1.0,
|
|
167
|
+
note: passed
|
|
168
|
+
? "Total collateral value meets or exceeds original deposit value"
|
|
169
|
+
: `Collateral value (${currentValue}) is below original deposit (${originalValue})`,
|
|
170
|
+
citation: {
|
|
171
|
+
statute: "CFTC Release 9180-26",
|
|
172
|
+
section: "Section 6",
|
|
173
|
+
summary: "Current collateral value must equal or exceed original deposit at all times",
|
|
174
|
+
},
|
|
175
|
+
details: {
|
|
176
|
+
currentValueCents: currentValue,
|
|
177
|
+
originalValueCents: originalValue,
|
|
178
|
+
protectionRatio: originalValue > 0 ? currentValue / originalValue : 1,
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
getMetadata() {
|
|
183
|
+
return {
|
|
184
|
+
...super.getMetadata(),
|
|
185
|
+
federalPreemption: true,
|
|
186
|
+
applicableJurisdictions: [...this.applicableStates],
|
|
187
|
+
description: "Federal master compliance skill for all 50 US states under CFTC Release 9180-26",
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
export const usCftcSkill = new USCFTCSkill();
|
|
192
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/jurisdictions/us-cftc/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-FL — Florida § 83.49 Security Deposit Disclosure
|
|
3
|
+
*
|
|
4
|
+
* Florida Statute 83.49 requires:
|
|
5
|
+
* - Mandatory 30-day notice to tenants upon deposit receipt
|
|
6
|
+
* - Disclosure of depository institution/smart contract holding deposits
|
|
7
|
+
* - Interest-bearing vs non-interest-bearing status disclosure
|
|
8
|
+
* - 15-day return for no-claim, 30-day return with deductions
|
|
9
|
+
* - Advance rent may be required but is separate from security deposit
|
|
10
|
+
*/
|
|
11
|
+
import { BaseSkill } from "../../base.js";
|
|
12
|
+
import type { SkillInput, SkillResult, SkillCheck, SkillCapability, RemediationStep } from "../../types/index.js";
|
|
13
|
+
export declare class USFLSkill extends BaseSkill {
|
|
14
|
+
readonly id = "huddle-compliance-us-fl";
|
|
15
|
+
readonly name = "Florida \u00A7 83.49 Deposit Disclosure";
|
|
16
|
+
readonly jurisdiction: "US-FL";
|
|
17
|
+
readonly version = "1.0.0";
|
|
18
|
+
readonly capabilities: SkillCapability[];
|
|
19
|
+
validate(input: SkillInput): Promise<SkillResult>;
|
|
20
|
+
/**
|
|
21
|
+
* FL § 83.49(2): 30-Day Depository Notice
|
|
22
|
+
* Landlord must provide written notice within 30 days of receiving deposit
|
|
23
|
+
*/
|
|
24
|
+
private checkNoticeRequirements;
|
|
25
|
+
/**
|
|
26
|
+
* FL § 83.49(3): Interest-Bearing Status
|
|
27
|
+
* Must disclose whether deposit is held in interest-bearing account
|
|
28
|
+
* Huddle bonds are yield-bearing via wBTC appreciation
|
|
29
|
+
*/
|
|
30
|
+
private checkInterestDisclosure;
|
|
31
|
+
/**
|
|
32
|
+
* FL § 83.49(2)(a): Depository Disclosure
|
|
33
|
+
* Must identify where the deposit is held
|
|
34
|
+
*/
|
|
35
|
+
private checkDepositoryDisclosure;
|
|
36
|
+
/**
|
|
37
|
+
* FL § 83.49(2)(b)-(c): Required Statutory Language
|
|
38
|
+
*/
|
|
39
|
+
private checkStatutoryVerbiage;
|
|
40
|
+
protected checkToRemediation(check: SkillCheck): RemediationStep;
|
|
41
|
+
}
|
|
42
|
+
export declare const usFlSkill: USFLSkill;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jurisdictions/us-fl/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EAEf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,SAAU,SAAQ,SAAS;IACtC,QAAQ,CAAC,EAAE,6BAA6B;IACxC,QAAQ,CAAC,IAAI,6CAAwC;IACrD,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAU;IACzC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAItC;IAEI,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBvD;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAkBjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;cAcX,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe;CAW1E;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|