@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,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US State Factory
|
|
3
|
+
*
|
|
4
|
+
* The 48 US states (excluding TX and FL which have custom skills) operate under
|
|
5
|
+
* CFTC 9180-26 federal preemption. Each state gets a typed skill that wraps
|
|
6
|
+
* the federal baseline with state-specific metadata.
|
|
7
|
+
*
|
|
8
|
+
* States with notable state-level rules have higher confidence and additional
|
|
9
|
+
* context in their notes. States with minimal state-level additions have
|
|
10
|
+
* lower confidence and a note to verify locally.
|
|
11
|
+
*/
|
|
12
|
+
import { BaseSkill } from "../base.js";
|
|
13
|
+
export class USStateSkill extends BaseSkill {
|
|
14
|
+
id;
|
|
15
|
+
name;
|
|
16
|
+
jurisdiction;
|
|
17
|
+
version = "1.0.0";
|
|
18
|
+
capabilities = [
|
|
19
|
+
"deposit-validation",
|
|
20
|
+
"payment-compliance",
|
|
21
|
+
"deposit-return",
|
|
22
|
+
"deposit-interest",
|
|
23
|
+
"federal-preemption",
|
|
24
|
+
];
|
|
25
|
+
config;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
super();
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.id = `huddle-compliance-${config.code.toLowerCase()}`;
|
|
30
|
+
this.name = `${config.name} Deposit Compliance`;
|
|
31
|
+
this.jurisdiction = config.code;
|
|
32
|
+
}
|
|
33
|
+
async validate(input) {
|
|
34
|
+
if (input.type === "deposit-validation") {
|
|
35
|
+
const deposit = input;
|
|
36
|
+
const checks = [
|
|
37
|
+
this.checkDepositLimit(deposit),
|
|
38
|
+
this.checkFederalPreemption(deposit),
|
|
39
|
+
this.checkPrincipalProtection(deposit),
|
|
40
|
+
];
|
|
41
|
+
if (this.config.interestRequired) {
|
|
42
|
+
checks.push(this.checkDepositInterestRequirement(deposit));
|
|
43
|
+
}
|
|
44
|
+
return this.buildResult(checks, input);
|
|
45
|
+
}
|
|
46
|
+
if (input.type === "payment-compliance") {
|
|
47
|
+
const payment = input;
|
|
48
|
+
const checks = [
|
|
49
|
+
this.checkPaymentTimeliness(payment),
|
|
50
|
+
this.checkLateFee(payment),
|
|
51
|
+
];
|
|
52
|
+
return this.buildResult(checks, input);
|
|
53
|
+
}
|
|
54
|
+
if (input.type === "deposit-return") {
|
|
55
|
+
const ret = input;
|
|
56
|
+
return this.buildResult([this.checkDepositReturn(ret)], input);
|
|
57
|
+
}
|
|
58
|
+
return this.buildResult([{
|
|
59
|
+
name: "input-type",
|
|
60
|
+
passed: false,
|
|
61
|
+
confidence: 1.0,
|
|
62
|
+
note: `${this.config.code} skill does not support input type: ${input.type}`,
|
|
63
|
+
}], input);
|
|
64
|
+
}
|
|
65
|
+
checkDepositLimit(input) {
|
|
66
|
+
const depositAmount = input.depositAmountCents;
|
|
67
|
+
const monthlyRent = input.monthlyRentCents;
|
|
68
|
+
if (this.config.depositLimitMonths === null) {
|
|
69
|
+
// No statutory limit
|
|
70
|
+
const monthsEquivalent = monthlyRent > 0 ? depositAmount / monthlyRent : 0;
|
|
71
|
+
return {
|
|
72
|
+
name: "deposit-limit",
|
|
73
|
+
passed: true,
|
|
74
|
+
confidence: this.config.ruleConfidence,
|
|
75
|
+
note: `${this.config.name} has no statutory deposit cap. Deposit is ${monthsEquivalent.toFixed(1)}x monthly rent.`,
|
|
76
|
+
citation: {
|
|
77
|
+
statute: this.config.depositStatute,
|
|
78
|
+
section: this.config.depositSection,
|
|
79
|
+
summary: "No statutory cap on security deposit amount",
|
|
80
|
+
url: this.config.statuteUrl,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const maxAllowed = Math.floor(monthlyRent * this.config.depositLimitMonths);
|
|
85
|
+
const withinLimit = depositAmount <= maxAllowed;
|
|
86
|
+
return {
|
|
87
|
+
name: "deposit-limit",
|
|
88
|
+
passed: withinLimit,
|
|
89
|
+
confidence: this.config.ruleConfidence,
|
|
90
|
+
note: withinLimit
|
|
91
|
+
? `Deposit within ${this.config.depositLimitMonths}-month limit ($${(maxAllowed / 100).toFixed(2)})`
|
|
92
|
+
: `Deposit exceeds ${this.config.depositLimitMonths}-month limit of $${(maxAllowed / 100).toFixed(2)}`,
|
|
93
|
+
citation: {
|
|
94
|
+
statute: this.config.depositStatute,
|
|
95
|
+
section: this.config.depositSection,
|
|
96
|
+
summary: `Security deposit limited to ${this.config.depositLimitMonths} month(s) of rent`,
|
|
97
|
+
url: this.config.statuteUrl,
|
|
98
|
+
},
|
|
99
|
+
details: {
|
|
100
|
+
depositAmountCents: depositAmount,
|
|
101
|
+
maxAllowedCents: maxAllowed,
|
|
102
|
+
limitMonths: this.config.depositLimitMonths,
|
|
103
|
+
returnDays: this.config.returnDays,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
checkFederalPreemption(input) {
|
|
108
|
+
const isLeaseGuarantee = input.instrumentType === "collateralized_lease_guarantee";
|
|
109
|
+
const hasCommodityBacking = input.collateralType === "wbtc" || input.collateralType === "bitcoin";
|
|
110
|
+
return {
|
|
111
|
+
name: "federal-preemption",
|
|
112
|
+
passed: isLeaseGuarantee && hasCommodityBacking,
|
|
113
|
+
confidence: 1.0,
|
|
114
|
+
note: isLeaseGuarantee && hasCommodityBacking
|
|
115
|
+
? "Qualifies for CFTC 9180-26 federal preemption"
|
|
116
|
+
: "Must be structured as Collateralized Lease Guarantee with commodity backing for federal preemption",
|
|
117
|
+
citation: {
|
|
118
|
+
statute: "CFTC Release 9180-26",
|
|
119
|
+
section: "Section 1",
|
|
120
|
+
summary: "Federal preemption of state money transmission licensing for Collateralized Lease Guarantees",
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
checkPrincipalProtection(input) {
|
|
125
|
+
const currentValue = input.collateralValueCents ?? 0;
|
|
126
|
+
const originalValue = input.originalDepositValueCents ?? 0;
|
|
127
|
+
const passed = originalValue === 0 || currentValue >= originalValue;
|
|
128
|
+
return {
|
|
129
|
+
name: "principal-protection",
|
|
130
|
+
passed,
|
|
131
|
+
confidence: 1.0,
|
|
132
|
+
note: passed
|
|
133
|
+
? "Principal protection confirmed"
|
|
134
|
+
: "Collateral value below original deposit — principal protection violated",
|
|
135
|
+
citation: {
|
|
136
|
+
statute: "CFTC Release 9180-26",
|
|
137
|
+
section: "Section 6",
|
|
138
|
+
summary: "Current collateral value must equal or exceed original deposit at all times",
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check: Landlord must pay interest on held deposit (required in some states)
|
|
144
|
+
*/
|
|
145
|
+
checkDepositInterestRequirement(input) {
|
|
146
|
+
const rate = this.config.interestRatePercent ?? 0;
|
|
147
|
+
const rateType = this.config.interestRateType ?? "fixed";
|
|
148
|
+
const statute = this.config.interestStatute ?? this.config.depositStatute;
|
|
149
|
+
// Web3 path: wBTC bond appreciation via HuddleDepositVaultV3 satisfies — and historically
|
|
150
|
+
// far exceeds — the statutory interest requirement. The Golden Rule enforces principal
|
|
151
|
+
// protection on-chain; appreciation above principal IS the interest vehicle.
|
|
152
|
+
const isWbtcBond = input.collateralType === "wbtc" || input.collateralType === "bitcoin";
|
|
153
|
+
if (isWbtcBond) {
|
|
154
|
+
return {
|
|
155
|
+
name: "deposit-interest-requirement",
|
|
156
|
+
passed: true,
|
|
157
|
+
confidence: 0.98, // Higher confidence: on-chain enforcement is stronger than statutory advisory
|
|
158
|
+
note: `${this.config.name} requires ${rateType === "passbook" ? "passbook savings rate" : `${rate}% annual`} interest on deposit. SATISFIED: wBTC bond appreciation via HuddleDepositVaultV3 structurally exceeds this rate. Principal protection and appreciation enforced by Solidity — stronger than any statutory obligation.`,
|
|
159
|
+
citation: {
|
|
160
|
+
statute,
|
|
161
|
+
section: this.config.depositSection,
|
|
162
|
+
summary: `${this.config.name} interest requirement satisfied by on-chain wBTC bond appreciation (typically far exceeds statutory ${rate}% rate)`,
|
|
163
|
+
url: this.config.statuteUrl,
|
|
164
|
+
},
|
|
165
|
+
details: {
|
|
166
|
+
satisfiedBy: "wbtc-bond-appreciation",
|
|
167
|
+
statutoryRatePercent: rate,
|
|
168
|
+
statutoryRateType: rateType,
|
|
169
|
+
enforcement: "HuddleDepositVaultV3 Golden Rule (on-chain)",
|
|
170
|
+
note: "wBTC appreciation is distributed at lease settlement via settleTenancy(); tenant receives their configured share",
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Non-wBTC path: advisory reminder for legacy deposit structures
|
|
175
|
+
return {
|
|
176
|
+
name: "deposit-interest-requirement",
|
|
177
|
+
passed: true, // Advisory: landlord must pay interest at return time
|
|
178
|
+
confidence: this.config.ruleConfidence,
|
|
179
|
+
note: `${this.config.name} requires landlord to pay ${rateType === "passbook" ? "passbook savings rate" : `${rate}% annual`} interest on security deposit. Interest owed at time of return. Consider migrating to wBTC bond structure to satisfy this automatically.`,
|
|
180
|
+
citation: {
|
|
181
|
+
statute,
|
|
182
|
+
section: this.config.depositSection,
|
|
183
|
+
summary: `Landlord must pay ${rateType === "passbook" ? "passbook savings" : `${rate}% annual`} interest on deposits held for more than one year`,
|
|
184
|
+
url: this.config.statuteUrl,
|
|
185
|
+
},
|
|
186
|
+
details: {
|
|
187
|
+
interestRatePercent: rate,
|
|
188
|
+
interestRateType: rateType,
|
|
189
|
+
note: "Interest accrues annually and must be returned with deposit. Migrate to Huddle wBTC bond to satisfy this on-chain.",
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check: Payment timeliness relative to due date and grace period
|
|
195
|
+
*/
|
|
196
|
+
checkPaymentTimeliness(input) {
|
|
197
|
+
const dueDate = new Date(input.dueDate);
|
|
198
|
+
const paymentDate = new Date(input.paymentDate);
|
|
199
|
+
const gracePeriod = input.gracePeriodDays ?? this.config.gracePeriodDays ?? 0;
|
|
200
|
+
const graceCutoff = new Date(dueDate);
|
|
201
|
+
graceCutoff.setDate(graceCutoff.getDate() + gracePeriod);
|
|
202
|
+
const isOnTime = paymentDate <= graceCutoff;
|
|
203
|
+
const daysLate = isOnTime
|
|
204
|
+
? 0
|
|
205
|
+
: Math.floor((paymentDate.getTime() - graceCutoff.getTime()) / 86400000);
|
|
206
|
+
return {
|
|
207
|
+
name: "payment-timeliness",
|
|
208
|
+
passed: isOnTime,
|
|
209
|
+
confidence: 1.0,
|
|
210
|
+
note: isOnTime
|
|
211
|
+
? `Payment received within ${gracePeriod}-day grace period`
|
|
212
|
+
: `Payment is ${daysLate} day(s) late (${gracePeriod}-day grace period in ${this.config.name})`,
|
|
213
|
+
citation: {
|
|
214
|
+
statute: this.config.depositStatute,
|
|
215
|
+
section: this.config.depositSection,
|
|
216
|
+
summary: `${this.config.name}: ${gracePeriod}-day grace period before late fees apply`,
|
|
217
|
+
},
|
|
218
|
+
details: { daysLate, gracePeriodDays: gracePeriod },
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Check: Late fee does not exceed state cap
|
|
223
|
+
*/
|
|
224
|
+
checkLateFee(input) {
|
|
225
|
+
const fee = input.lateFeeAmountCents ?? 0;
|
|
226
|
+
const monthlyRent = input.monthlyRentCents;
|
|
227
|
+
const capCents = this.config.lateFeeCapCents;
|
|
228
|
+
const capPercent = this.config.lateFeeCapPercent;
|
|
229
|
+
if (!capCents && !capPercent) {
|
|
230
|
+
return {
|
|
231
|
+
name: "late-fee-cap",
|
|
232
|
+
passed: true,
|
|
233
|
+
confidence: this.config.ruleConfidence,
|
|
234
|
+
note: `${this.config.name} has no statutory late fee cap`,
|
|
235
|
+
citation: {
|
|
236
|
+
statute: this.config.depositStatute,
|
|
237
|
+
section: this.config.depositSection,
|
|
238
|
+
summary: "No statutory cap on late fees",
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
let maxFee = Infinity;
|
|
243
|
+
if (capCents !== null && capCents !== undefined)
|
|
244
|
+
maxFee = Math.min(maxFee, capCents);
|
|
245
|
+
if (capPercent !== null && capPercent !== undefined) {
|
|
246
|
+
maxFee = Math.min(maxFee, Math.floor(monthlyRent * capPercent / 100));
|
|
247
|
+
}
|
|
248
|
+
const passed = fee <= maxFee;
|
|
249
|
+
return {
|
|
250
|
+
name: "late-fee-cap",
|
|
251
|
+
passed,
|
|
252
|
+
confidence: this.config.ruleConfidence,
|
|
253
|
+
note: passed
|
|
254
|
+
? `Late fee $${(fee / 100).toFixed(2)} within ${this.config.name} cap ($${(maxFee / 100).toFixed(2)})`
|
|
255
|
+
: `Late fee $${(fee / 100).toFixed(2)} exceeds ${this.config.name} cap of $${(maxFee / 100).toFixed(2)}`,
|
|
256
|
+
citation: {
|
|
257
|
+
statute: this.config.depositStatute,
|
|
258
|
+
section: this.config.depositSection,
|
|
259
|
+
summary: `Late fee cap: ${capCents ? `$${(capCents / 100).toFixed(0)}` : ""}${capPercent ? `${capPercent}% of monthly rent` : ""}`,
|
|
260
|
+
},
|
|
261
|
+
details: { feeCents: fee, maxFeeCents: maxFee === Infinity ? null : maxFee },
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Check: Deposit returned within state statutory deadline
|
|
266
|
+
*/
|
|
267
|
+
checkDepositReturn(input) {
|
|
268
|
+
const leaseEnd = new Date(input.leaseEndDate);
|
|
269
|
+
const returnDate = new Date(input.returnDate);
|
|
270
|
+
const deadlineDate = new Date(leaseEnd);
|
|
271
|
+
deadlineDate.setDate(deadlineDate.getDate() + this.config.returnDays);
|
|
272
|
+
const isOnTime = returnDate <= deadlineDate;
|
|
273
|
+
const daysLate = isOnTime
|
|
274
|
+
? 0
|
|
275
|
+
: Math.floor((returnDate.getTime() - deadlineDate.getTime()) / 86400000);
|
|
276
|
+
return {
|
|
277
|
+
name: "deposit-return-timeline",
|
|
278
|
+
passed: isOnTime,
|
|
279
|
+
confidence: this.config.ruleConfidence,
|
|
280
|
+
note: isOnTime
|
|
281
|
+
? `Deposit returned within ${this.config.returnDays}-day deadline`
|
|
282
|
+
: `Deposit returned ${daysLate} day(s) after ${this.config.returnDays}-day deadline — ${this.config.name} may allow bad faith claim`,
|
|
283
|
+
citation: {
|
|
284
|
+
statute: this.config.depositStatute,
|
|
285
|
+
section: this.config.depositSection,
|
|
286
|
+
summary: `${this.config.name}: deposit must be returned within ${this.config.returnDays} days of lease termination`,
|
|
287
|
+
url: this.config.statuteUrl,
|
|
288
|
+
},
|
|
289
|
+
details: {
|
|
290
|
+
returnDays: this.config.returnDays,
|
|
291
|
+
deadlineDate: deadlineDate.toISOString().split("T")[0],
|
|
292
|
+
daysLate,
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
getMetadata() {
|
|
297
|
+
return {
|
|
298
|
+
...super.getMetadata(),
|
|
299
|
+
federalPreemption: true,
|
|
300
|
+
description: `${this.config.name} deposit compliance under CFTC 9180-26 federal preemption. Deposit limit: ${this.config.depositLimitMonths === null ? "no statutory cap" : `${this.config.depositLimitMonths} month(s)`}. Return: ${this.config.returnDays} days.`,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// State Configurations — 48 states (TX and FL have custom skills)
|
|
306
|
+
// ============================================================================
|
|
307
|
+
const US_STATE_CONFIGS = [
|
|
308
|
+
{ code: "US-AL", name: "Alabama", depositLimitMonths: null, returnDays: 60, depositStatute: "Alabama Code", depositSection: "§ 35-9A-201", ruleConfidence: 0.8 },
|
|
309
|
+
{ code: "US-AK", name: "Alaska", depositLimitMonths: 2, returnDays: 14, depositStatute: "Alaska Statutes", depositSection: "§ 34.03.070", ruleConfidence: 0.9 },
|
|
310
|
+
{ code: "US-AZ", name: "Arizona", depositLimitMonths: 1.5, returnDays: 14, depositStatute: "Arizona Revised Statutes", depositSection: "§ 33-1321", ruleConfidence: 0.9 },
|
|
311
|
+
{ code: "US-AR", name: "Arkansas", depositLimitMonths: 2, returnDays: 60, depositStatute: "Arkansas Code", depositSection: "§ 18-16-304", ruleConfidence: 0.8 },
|
|
312
|
+
{ code: "US-CA", name: "California", depositLimitMonths: 2, returnDays: 21, depositStatute: "California Civil Code", depositSection: "§ 1950.5", ruleConfidence: 0.9, statuteUrl: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV§ionNum=1950.5" },
|
|
313
|
+
// COLORADO — HB 23-1120 / SB 23-184 stronger tenant protections
|
|
314
|
+
{ code: "US-CO", name: "Colorado", depositLimitMonths: null, returnDays: 60,
|
|
315
|
+
depositStatute: "Colorado Revised Statutes", depositSection: "§ 38-12-103",
|
|
316
|
+
ruleConfidence: 0.9,
|
|
317
|
+
statuteUrl: "https://leg.colorado.gov/laws/2023/sl/HB23-1120",
|
|
318
|
+
gracePeriodDays: 7 },
|
|
319
|
+
{ code: "US-CT", name: "Connecticut", depositLimitMonths: 2, returnDays: 30, depositStatute: "Connecticut General Statutes", depositSection: "§ 47a-21", ruleConfidence: 0.9 },
|
|
320
|
+
{ code: "US-DE", name: "Delaware", depositLimitMonths: 1, returnDays: 20, depositStatute: "Delaware Code", depositSection: "Title 25 § 5514", ruleConfidence: 0.9 },
|
|
321
|
+
// GEORGIA — No deposit cap; 30-day return; specific bad faith rule
|
|
322
|
+
{ code: "US-GA", name: "Georgia", depositLimitMonths: null, returnDays: 30,
|
|
323
|
+
depositStatute: "Georgia Code", depositSection: "§ 44-7-30",
|
|
324
|
+
ruleConfidence: 0.85,
|
|
325
|
+
gracePeriodDays: 5,
|
|
326
|
+
badFaithMultiplier: 3 },
|
|
327
|
+
{ code: "US-HI", name: "Hawaii", depositLimitMonths: 1, returnDays: 14, depositStatute: "Hawaii Revised Statutes", depositSection: "§ 521-44", ruleConfidence: 0.9 },
|
|
328
|
+
{ code: "US-ID", name: "Idaho", depositLimitMonths: null, returnDays: 21, depositStatute: "Idaho Code", depositSection: "§ 6-321", ruleConfidence: 0.7 },
|
|
329
|
+
// ILLINOIS — Updated with CRLTO interest + grace period
|
|
330
|
+
{ code: "US-IL", name: "Illinois", depositLimitMonths: 1.5, returnDays: 45,
|
|
331
|
+
depositStatute: "Illinois Compiled Statutes", depositSection: "765 ILCS 710/710-5",
|
|
332
|
+
ruleConfidence: 0.95,
|
|
333
|
+
statuteUrl: "https://www.ilga.gov/legislation/ilcs/ilcs3.asp?ActID=2328",
|
|
334
|
+
gracePeriodDays: 5,
|
|
335
|
+
interestRequired: true, interestRatePercent: 5.0, interestRateType: "fixed",
|
|
336
|
+
interestStatute: "Chicago Residential Landlord and Tenant Ordinance §5-12-082",
|
|
337
|
+
badFaithMultiplier: 2 },
|
|
338
|
+
{ code: "US-IN", name: "Indiana", depositLimitMonths: null, returnDays: 45, depositStatute: "Indiana Code", depositSection: "§ 32-31-3", ruleConfidence: 0.7 },
|
|
339
|
+
{ code: "US-IA", name: "Iowa", depositLimitMonths: 2, returnDays: 30, depositStatute: "Iowa Code", depositSection: "§ 562A.12", ruleConfidence: 0.8 },
|
|
340
|
+
{ code: "US-KS", name: "Kansas", depositLimitMonths: 1, returnDays: 30, depositStatute: "Kansas Statutes", depositSection: "§ 58-2550", ruleConfidence: 0.9 },
|
|
341
|
+
{ code: "US-KY", name: "Kentucky", depositLimitMonths: null, returnDays: 30, depositStatute: "Kentucky Revised Statutes", depositSection: "§ 383.580", ruleConfidence: 0.7 },
|
|
342
|
+
{ code: "US-LA", name: "Louisiana", depositLimitMonths: null, returnDays: 30, depositStatute: "Louisiana Civil Code", depositSection: "RS 9:3251", ruleConfidence: 0.7 },
|
|
343
|
+
{ code: "US-ME", name: "Maine", depositLimitMonths: 2, returnDays: 30, depositStatute: "Maine Revised Statutes", depositSection: "Title 14 § 6032", ruleConfidence: 0.8 },
|
|
344
|
+
{ code: "US-MD", name: "Maryland", depositLimitMonths: 2, returnDays: 45, depositStatute: "Maryland Code Real Property", depositSection: "§ 8-203", ruleConfidence: 0.9 },
|
|
345
|
+
// MASSACHUSETTS — Interest on deposit required (5% or passbook)
|
|
346
|
+
{ code: "US-MA", name: "Massachusetts", depositLimitMonths: 1, returnDays: 30,
|
|
347
|
+
depositStatute: "Massachusetts General Laws", depositSection: "Ch. 186 § 15B",
|
|
348
|
+
ruleConfidence: 0.95,
|
|
349
|
+
statuteUrl: "https://malegislature.gov/Laws/GeneralLaws/PartII/TitleI/Chapter186/Section15B",
|
|
350
|
+
gracePeriodDays: 7,
|
|
351
|
+
interestRequired: true, interestRatePercent: 5.0, interestRateType: "passbook",
|
|
352
|
+
badFaithMultiplier: 3 },
|
|
353
|
+
// MICHIGAN — 1.5-month cap; interest in some jurisdictions
|
|
354
|
+
{ code: "US-MI", name: "Michigan", depositLimitMonths: 1.5, returnDays: 30,
|
|
355
|
+
depositStatute: "Michigan Compiled Laws", depositSection: "§ 554.602",
|
|
356
|
+
ruleConfidence: 0.9,
|
|
357
|
+
gracePeriodDays: 7,
|
|
358
|
+
badFaithMultiplier: 2 },
|
|
359
|
+
{ code: "US-MN", name: "Minnesota", depositLimitMonths: null, returnDays: 21, depositStatute: "Minnesota Statutes", depositSection: "§ 504B.178", ruleConfidence: 0.8 },
|
|
360
|
+
{ code: "US-MS", name: "Mississippi", depositLimitMonths: null, returnDays: 45, depositStatute: "Mississippi Code", depositSection: "§ 89-8-21", ruleConfidence: 0.7 },
|
|
361
|
+
{ code: "US-MO", name: "Missouri", depositLimitMonths: 2, returnDays: 30, depositStatute: "Missouri Revised Statutes", depositSection: "§ 535.300", ruleConfidence: 0.8 },
|
|
362
|
+
{ code: "US-MT", name: "Montana", depositLimitMonths: null, returnDays: 30, depositStatute: "Montana Code", depositSection: "§ 70-25-201", ruleConfidence: 0.7 },
|
|
363
|
+
{ code: "US-NE", name: "Nebraska", depositLimitMonths: 1, returnDays: 14, depositStatute: "Nebraska Revised Statutes", depositSection: "§ 76-1416", ruleConfidence: 0.9 },
|
|
364
|
+
{ code: "US-NV", name: "Nevada", depositLimitMonths: 3, returnDays: 30, depositStatute: "Nevada Revised Statutes", depositSection: "§ 118A.242", ruleConfidence: 0.9 },
|
|
365
|
+
{ code: "US-NH", name: "New Hampshire", depositLimitMonths: 1, returnDays: 30, depositStatute: "New Hampshire Revised Statutes", depositSection: "§ 540-A:6", ruleConfidence: 0.9 },
|
|
366
|
+
{ code: "US-NJ", name: "New Jersey", depositLimitMonths: 1.5, returnDays: 30, depositStatute: "New Jersey Statutes", depositSection: "§ 46:8-21.2", ruleConfidence: 0.9 },
|
|
367
|
+
{ code: "US-NM", name: "New Mexico", depositLimitMonths: 1, returnDays: 30, depositStatute: "New Mexico Statutes", depositSection: "§ 47-8-18", ruleConfidence: 0.8 },
|
|
368
|
+
{ code: "US-NY", name: "New York", depositLimitMonths: 1, returnDays: 14, depositStatute: "New York General Obligations Law", depositSection: "§ 7-103 to 7-108", ruleConfidence: 0.9, statuteUrl: "https://www.nysenate.gov/legislation/laws/GOB/7-103" },
|
|
369
|
+
// NORTH CAROLINA — 2-month cap; 5% late fee cap (NC §42-46)
|
|
370
|
+
{ code: "US-NC", name: "North Carolina", depositLimitMonths: 2, returnDays: 30,
|
|
371
|
+
depositStatute: "North Carolina General Statutes", depositSection: "§ 42-51",
|
|
372
|
+
ruleConfidence: 0.9,
|
|
373
|
+
gracePeriodDays: 5,
|
|
374
|
+
lateFeeCapPercent: 5 },
|
|
375
|
+
{ code: "US-ND", name: "North Dakota", depositLimitMonths: 1, returnDays: 30, depositStatute: "North Dakota Century Code", depositSection: "§ 47-16-07.1", ruleConfidence: 0.8 },
|
|
376
|
+
// OHIO — No statutory deposit cap; 30-day return; 5% late fee cap
|
|
377
|
+
{ code: "US-OH", name: "Ohio", depositLimitMonths: null, returnDays: 30,
|
|
378
|
+
depositStatute: "Ohio Revised Code", depositSection: "§ 5321.16",
|
|
379
|
+
ruleConfidence: 0.9,
|
|
380
|
+
gracePeriodDays: 5,
|
|
381
|
+
lateFeeCapPercent: 5 },
|
|
382
|
+
{ code: "US-OK", name: "Oklahoma", depositLimitMonths: null, returnDays: 45, depositStatute: "Oklahoma Statutes", depositSection: "Title 41 § 115", ruleConfidence: 0.7 },
|
|
383
|
+
{ code: "US-OR", name: "Oregon", depositLimitMonths: null, returnDays: 31, depositStatute: "Oregon Revised Statutes", depositSection: "§ 90.300", ruleConfidence: 0.8 },
|
|
384
|
+
// PENNSYLVANIA — Note: 2 months year 1, then 1 month year 2+
|
|
385
|
+
{ code: "US-PA", name: "Pennsylvania", depositLimitMonths: 2, returnDays: 30,
|
|
386
|
+
depositStatute: "Pennsylvania Statutes", depositSection: "68 PS § 250.511a",
|
|
387
|
+
ruleConfidence: 0.95,
|
|
388
|
+
gracePeriodDays: 5 },
|
|
389
|
+
{ code: "US-RI", name: "Rhode Island", depositLimitMonths: 1, returnDays: 20, depositStatute: "Rhode Island General Laws", depositSection: "§ 34-18-19", ruleConfidence: 0.8 },
|
|
390
|
+
{ code: "US-SC", name: "South Carolina", depositLimitMonths: null, returnDays: 30, depositStatute: "South Carolina Code", depositSection: "§ 27-40-410", ruleConfidence: 0.7 },
|
|
391
|
+
{ code: "US-SD", name: "South Dakota", depositLimitMonths: 1, returnDays: 14, depositStatute: "South Dakota Codified Laws", depositSection: "§ 43-32-6.1", ruleConfidence: 0.8 },
|
|
392
|
+
{ code: "US-TN", name: "Tennessee", depositLimitMonths: null, returnDays: 30, depositStatute: "Tennessee Code", depositSection: "§ 66-28-301", ruleConfidence: 0.7 },
|
|
393
|
+
{ code: "US-UT", name: "Utah", depositLimitMonths: null, returnDays: 30, depositStatute: "Utah Code", depositSection: "§ 57-17-3", ruleConfidence: 0.7 },
|
|
394
|
+
{ code: "US-VT", name: "Vermont", depositLimitMonths: null, returnDays: 14, depositStatute: "Vermont Statutes", depositSection: "Title 9 § 4461", ruleConfidence: 0.8 },
|
|
395
|
+
// VIRGINIA — 2-month cap; 10% late fee cap; 45-day return
|
|
396
|
+
{ code: "US-VA", name: "Virginia", depositLimitMonths: 2, returnDays: 45,
|
|
397
|
+
depositStatute: "Virginia Code", depositSection: "§ 55.1-1226",
|
|
398
|
+
ruleConfidence: 0.95,
|
|
399
|
+
statuteUrl: "https://law.lis.virginia.gov/vacode/title55.1/chapter12/section55.1-1226/",
|
|
400
|
+
gracePeriodDays: 5,
|
|
401
|
+
lateFeeCapPercent: 10 },
|
|
402
|
+
// WASHINGTON — Updated with detailed return rules
|
|
403
|
+
{ code: "US-WA", name: "Washington", depositLimitMonths: null, returnDays: 21,
|
|
404
|
+
depositStatute: "Revised Code of Washington", depositSection: "§ 59.18.280",
|
|
405
|
+
ruleConfidence: 0.95,
|
|
406
|
+
statuteUrl: "https://app.leg.wa.gov/rcw/default.aspx?cite=59.18.280",
|
|
407
|
+
gracePeriodDays: 5 },
|
|
408
|
+
{ code: "US-WV", name: "West Virginia", depositLimitMonths: null, returnDays: 60, depositStatute: "West Virginia Code", depositSection: "§ 37-6A-1", ruleConfidence: 0.7 },
|
|
409
|
+
{ code: "US-WI", name: "Wisconsin", depositLimitMonths: null, returnDays: 21, depositStatute: "Wisconsin Statutes", depositSection: "§ 704.28", ruleConfidence: 0.8 },
|
|
410
|
+
{ code: "US-WY", name: "Wyoming", depositLimitMonths: null, returnDays: 30, depositStatute: "Wyoming Statutes", depositSection: "§ 1-21-1207", ruleConfidence: 0.7 },
|
|
411
|
+
];
|
|
412
|
+
// ============================================================================
|
|
413
|
+
// Generate skill instances
|
|
414
|
+
// ============================================================================
|
|
415
|
+
export const usStateSkills = new Map();
|
|
416
|
+
for (const config of US_STATE_CONFIGS) {
|
|
417
|
+
usStateSkills.set(config.code, new USStateSkill(config));
|
|
418
|
+
}
|
|
419
|
+
/** Get a US state skill by code */
|
|
420
|
+
export function getUSStateSkill(code) {
|
|
421
|
+
return usStateSkills.get(code);
|
|
422
|
+
}
|
|
423
|
+
/** All factory-generated US state skills as an array */
|
|
424
|
+
export const usStateSkillsArray = Array.from(usStateSkills.values());
|
|
425
|
+
//# sourceMappingURL=us-state-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"us-state-factory.js","sourceRoot":"","sources":["../../src/jurisdictions/us-state-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-TX — Texas SB-38 Virtual Currency Safe Harbor + Property Code §92
|
|
3
|
+
*
|
|
4
|
+
* Texas Senate Bill 38 provides safe harbor for virtual currency custodians
|
|
5
|
+
* under federal preemption. Property Code §92 covers security deposit rules:
|
|
6
|
+
* - No statutory cap on deposit amount (but must be reasonable)
|
|
7
|
+
* - Deposit must be returned within 30 days of lease termination
|
|
8
|
+
* - Landlord must provide itemized list of deductions
|
|
9
|
+
* - Bad faith retention: tenant can recover 3x wrongfully withheld amount + $100 + attorney fees
|
|
10
|
+
*/
|
|
11
|
+
import { BaseSkill } from "../../base.js";
|
|
12
|
+
import type { SkillInput, SkillResult, SkillCheck, SkillCapability, RemediationStep } from "../../types/index.js";
|
|
13
|
+
export declare class USTXSkill extends BaseSkill {
|
|
14
|
+
readonly id = "huddle-compliance-us-tx";
|
|
15
|
+
readonly name = "Texas SB-38 & Property Code \u00A792";
|
|
16
|
+
readonly jurisdiction: "US-TX";
|
|
17
|
+
readonly version = "1.0.0";
|
|
18
|
+
readonly capabilities: SkillCapability[];
|
|
19
|
+
validate(input: SkillInput): Promise<SkillResult>;
|
|
20
|
+
/**
|
|
21
|
+
* SB-38 Section 3: Reserve Ratio Requirement
|
|
22
|
+
* Virtual currency custodians must maintain 1:1 reserve
|
|
23
|
+
*/
|
|
24
|
+
private checkReserveRatio;
|
|
25
|
+
/**
|
|
26
|
+
* TX Property Code §92.102: Deposit Reasonableness
|
|
27
|
+
* Texas has no statutory cap, but deposits must be reasonable.
|
|
28
|
+
* Common practice: 1-2 months' rent. We flag > 2 months as potentially unreasonable.
|
|
29
|
+
*/
|
|
30
|
+
private checkDepositReasonableness;
|
|
31
|
+
/**
|
|
32
|
+
* SB-38 Section 4: Custodial Compliance
|
|
33
|
+
*/
|
|
34
|
+
private checkCustodialCompliance;
|
|
35
|
+
/**
|
|
36
|
+
* TX Property Code §92.104: Disclosure Requirements
|
|
37
|
+
* Landlord must disclose deposit terms in writing
|
|
38
|
+
*/
|
|
39
|
+
private checkDisclosureRequirements;
|
|
40
|
+
protected checkToRemediation(check: SkillCheck): RemediationStep;
|
|
41
|
+
}
|
|
42
|
+
export declare const usTxSkill: USTXSkill;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jurisdictions/us-tx/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,0CAAqC;IAClD,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAU;IACzC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAGtC;IAEI,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBvD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;cAoBhB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe;CAW1E;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|