@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.
Files changed (86) hide show
  1. package/README.md +256 -0
  2. package/dist/adapters/openclaw.d.ts +42 -0
  3. package/dist/adapters/openclaw.d.ts.map +1 -0
  4. package/dist/adapters/openclaw.js +94 -0
  5. package/dist/adapters/openclaw.js.map +1 -0
  6. package/dist/base.d.ts +26 -0
  7. package/dist/base.d.ts.map +1 -0
  8. package/dist/base.js +97 -0
  9. package/dist/base.js.map +1 -0
  10. package/dist/compose.d.ts +87 -0
  11. package/dist/compose.d.ts.map +1 -0
  12. package/dist/compose.js +119 -0
  13. package/dist/compose.js.map +1 -0
  14. package/dist/index.d.ts +104 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +167 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/jurisdictions/ca-bc/index.d.ts +49 -0
  19. package/dist/jurisdictions/ca-bc/index.d.ts.map +1 -0
  20. package/dist/jurisdictions/ca-bc/index.js +212 -0
  21. package/dist/jurisdictions/ca-bc/index.js.map +1 -0
  22. package/dist/jurisdictions/ca-ns/index.d.ts +27 -0
  23. package/dist/jurisdictions/ca-ns/index.d.ts.map +1 -0
  24. package/dist/jurisdictions/ca-ns/index.js +127 -0
  25. package/dist/jurisdictions/ca-ns/index.js.map +1 -0
  26. package/dist/jurisdictions/ca-on/index.d.ts +26 -0
  27. package/dist/jurisdictions/ca-on/index.d.ts.map +1 -0
  28. package/dist/jurisdictions/ca-on/index.js +109 -0
  29. package/dist/jurisdictions/ca-on/index.js.map +1 -0
  30. package/dist/jurisdictions/ca-qc/index.d.ts +75 -0
  31. package/dist/jurisdictions/ca-qc/index.d.ts.map +1 -0
  32. package/dist/jurisdictions/ca-qc/index.js +232 -0
  33. package/dist/jurisdictions/ca-qc/index.js.map +1 -0
  34. package/dist/jurisdictions/canadian-template.d.ts +49 -0
  35. package/dist/jurisdictions/canadian-template.d.ts.map +1 -0
  36. package/dist/jurisdictions/canadian-template.js +228 -0
  37. package/dist/jurisdictions/canadian-template.js.map +1 -0
  38. package/dist/jurisdictions/lifecycle/active-tenancy.d.ts +55 -0
  39. package/dist/jurisdictions/lifecycle/active-tenancy.d.ts.map +1 -0
  40. package/dist/jurisdictions/lifecycle/active-tenancy.js +227 -0
  41. package/dist/jurisdictions/lifecycle/active-tenancy.js.map +1 -0
  42. package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts +60 -0
  43. package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts.map +1 -0
  44. package/dist/jurisdictions/lifecycle/homeownership-readiness.js +401 -0
  45. package/dist/jurisdictions/lifecycle/homeownership-readiness.js.map +1 -0
  46. package/dist/jurisdictions/us-ca/index.d.ts +65 -0
  47. package/dist/jurisdictions/us-ca/index.d.ts.map +1 -0
  48. package/dist/jurisdictions/us-ca/index.js +265 -0
  49. package/dist/jurisdictions/us-ca/index.js.map +1 -0
  50. package/dist/jurisdictions/us-cftc/index.d.ts +48 -0
  51. package/dist/jurisdictions/us-cftc/index.d.ts.map +1 -0
  52. package/dist/jurisdictions/us-cftc/index.js +192 -0
  53. package/dist/jurisdictions/us-cftc/index.js.map +1 -0
  54. package/dist/jurisdictions/us-fl/index.d.ts +43 -0
  55. package/dist/jurisdictions/us-fl/index.d.ts.map +1 -0
  56. package/dist/jurisdictions/us-fl/index.js +129 -0
  57. package/dist/jurisdictions/us-fl/index.js.map +1 -0
  58. package/dist/jurisdictions/us-ny/index.d.ts +77 -0
  59. package/dist/jurisdictions/us-ny/index.d.ts.map +1 -0
  60. package/dist/jurisdictions/us-ny/index.js +344 -0
  61. package/dist/jurisdictions/us-ny/index.js.map +1 -0
  62. package/dist/jurisdictions/us-state-factory.d.ts +79 -0
  63. package/dist/jurisdictions/us-state-factory.d.ts.map +1 -0
  64. package/dist/jurisdictions/us-state-factory.js +425 -0
  65. package/dist/jurisdictions/us-state-factory.js.map +1 -0
  66. package/dist/jurisdictions/us-tx/index.d.ts +43 -0
  67. package/dist/jurisdictions/us-tx/index.d.ts.map +1 -0
  68. package/dist/jurisdictions/us-tx/index.js +160 -0
  69. package/dist/jurisdictions/us-tx/index.js.map +1 -0
  70. package/dist/mcp/index.d.ts +49 -0
  71. package/dist/mcp/index.d.ts.map +1 -0
  72. package/dist/mcp/index.js +211 -0
  73. package/dist/mcp/index.js.map +1 -0
  74. package/dist/registry/index.d.ts +27 -0
  75. package/dist/registry/index.d.ts.map +1 -0
  76. package/dist/registry/index.js +47 -0
  77. package/dist/registry/index.js.map +1 -0
  78. package/dist/traiga/index.d.ts +24 -0
  79. package/dist/traiga/index.d.ts.map +1 -0
  80. package/dist/traiga/index.js +67 -0
  81. package/dist/traiga/index.js.map +1 -0
  82. package/dist/types/index.d.ts +814 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +150 -0
  85. package/dist/types/index.js.map +1 -0
  86. 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&sectionNum=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"}