@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,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&sectionNum=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&sectionNum=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&sectionNum=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":"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"}
@@ -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"}