forma-sdk 1.0.0 → 1.1.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/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +101 -8
- package/dist/client.js.map +1 -1
- package/package.json +20 -6
- package/src/client.ts +118 -13
package/dist/client.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ export declare class FormaGateBlock extends Error {
|
|
|
61
61
|
decision: string;
|
|
62
62
|
reason: string;
|
|
63
63
|
rule_id: string | null;
|
|
64
|
-
constructor(decision: string, reason: string, rule_id?: string | null);
|
|
64
|
+
constructor(decision: string, reason: string, rule_id?: string | null, agent?: string | null);
|
|
65
65
|
}
|
|
66
66
|
export declare class FormaAPIError extends Error {
|
|
67
67
|
statusCode: number;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -41,11 +41,68 @@ const path = __importStar(require("path"));
|
|
|
41
41
|
const os = __importStar(require("os"));
|
|
42
42
|
const url_1 = require("url");
|
|
43
43
|
const gate_1 = require("./gate");
|
|
44
|
-
const SDK_VERSION = "1.
|
|
44
|
+
const SDK_VERSION = "1.1.0";
|
|
45
45
|
const UA = `FORMA-Node-SDK/${SDK_VERSION}`;
|
|
46
|
+
// ── Actionable error message helpers ─────────────────────────────────────────
|
|
47
|
+
const PII_FIX = {
|
|
48
|
+
"Aadhaar number": "Remove the 12-digit Aadhaar. Use a customer_id token:\n │ ✗ 'Aadhaar: 2341 1234 1236'\n │ ✓ 'Customer ID: CUST-00471 (Aadhaar verified)'",
|
|
49
|
+
"Aadhaar number (Verhoeff-verified)": "Remove the Aadhaar (real check digit confirmed). Use a tokenised ref.",
|
|
50
|
+
"Indian PAN": "Remove the PAN. Store in vault; pass 'PAN verified: true' instead.",
|
|
51
|
+
"GSTIN": "Remove the GSTIN. Use invoice/order ID instead.",
|
|
52
|
+
"UPI ID": "Remove the UPI VPA. Use payment_token or order_id instead.",
|
|
53
|
+
"Phone number": "Remove the phone. Use masked (***43210) or customer_id.",
|
|
54
|
+
"Email address": "Remove the email. Use customer_id or opaque user reference.",
|
|
55
|
+
"Visa card": "Remove the card number. Use last-4 digits or PSP payment token.",
|
|
56
|
+
"Mastercard": "Remove the card number. Use PSP payment token.",
|
|
57
|
+
"Amex": "Remove the card number. Use PSP payment token.",
|
|
58
|
+
"CVV": "Never send CVV to an LLM. Remove it — PCI DSS requirement.",
|
|
59
|
+
"Credit/Debit card": "Remove the card number. Use PSP payment token.",
|
|
60
|
+
"IBAN": "Remove the IBAN. Use account alias or transaction ID.",
|
|
61
|
+
"IFSC code": "Remove the IFSC. Use bank alias or transaction ID.",
|
|
62
|
+
};
|
|
63
|
+
function fmtGateBlock(reason, rule_id, agent) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const rk = rule_id !== null && rule_id !== void 0 ? rule_id : "";
|
|
66
|
+
let ruleLabel = "Policy rule matched";
|
|
67
|
+
let fix = reason;
|
|
68
|
+
// PII block
|
|
69
|
+
const piiMatch = reason.match(/PII detected[:\s]+([^.]+)/i);
|
|
70
|
+
const piiType = (_a = piiMatch === null || piiMatch === void 0 ? void 0 : piiMatch[1]) === null || _a === void 0 ? void 0 : _a.trim();
|
|
71
|
+
if (piiType && (rk.includes("pii") || rk === "pii_in_prompt" || rk === "pii_in_tool_args")) {
|
|
72
|
+
ruleLabel = `PII detected: ${piiType}`;
|
|
73
|
+
fix = (_b = PII_FIX[piiType]) !== null && _b !== void 0 ? _b : `Remove ${piiType} from prompt/args and use a safe reference instead.\n │ ✗ Direct PII value\n │ ✓ Tokenised ID / masked reference`;
|
|
74
|
+
}
|
|
75
|
+
else if (rk.includes("unauthorized_tool")) {
|
|
76
|
+
ruleLabel = "Unauthorized tool call";
|
|
77
|
+
fix = "This tool is not in authorized actions.\n │ Add it:\n │ forma.init({ authorizedActions: ['tool_name', ...] })\n │ // or per-agent in getClient()";
|
|
78
|
+
}
|
|
79
|
+
else if (rk.includes("kill_switch")) {
|
|
80
|
+
ruleLabel = "Kill switch active";
|
|
81
|
+
fix = "Agent is frozen. To resume:\n │ Dashboard → Agents → Kill Switch → Clear\n │ or: await client.clearKillSwitch('agent-name')";
|
|
82
|
+
}
|
|
83
|
+
else if (rk.includes("threat") || rk.includes("injection") || rk.includes("jailbreak")) {
|
|
84
|
+
const cat = rk.replace("threat:", "").replace(/_/g, " ");
|
|
85
|
+
ruleLabel = `Threat: ${cat}`;
|
|
86
|
+
fix = "This prompt matches an attack pattern.\n │ Check for: ignore/override instructions, system prompt leaks,\n │ roleplay-switching, credential extraction, approval bypass.";
|
|
87
|
+
}
|
|
88
|
+
else if (rk.includes("approval_bypass") || rk.includes("auto_approve")) {
|
|
89
|
+
ruleLabel = "Approval bypass attempt";
|
|
90
|
+
fix = "Add a human approval predicate:\n │ forma.init({\n │ requireApprovalWhen: (ctx) => ctx.toolName === 'approve_loan'\n │ })";
|
|
91
|
+
}
|
|
92
|
+
const agentStr = agent ? `'${agent}'` : "your agent";
|
|
93
|
+
return (`\n\x1b[31m [FORMA Gate] BLOCKED — ${ruleLabel}\x1b[0m\n` +
|
|
94
|
+
` Agent: ${agentStr} | Rule: ${rule_id !== null && rule_id !== void 0 ? rule_id : "gate"}\n\n` +
|
|
95
|
+
` ┌─ What happened ───────────────────────────────────────────┐\n` +
|
|
96
|
+
` │ ${reason.slice(0, 72)}\n` +
|
|
97
|
+
` └──────────────────────────────────────────────────────────┘\n\n` +
|
|
98
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
99
|
+
` │ ${fix}\n` +
|
|
100
|
+
` └──────────────────────────────────────────────────────────┘\n\n` +
|
|
101
|
+
` This block is in your FORMA audit trail → formaai.in/dashboard\n`);
|
|
102
|
+
}
|
|
46
103
|
class FormaGateBlock extends Error {
|
|
47
|
-
constructor(decision, reason, rule_id = null) {
|
|
48
|
-
super(
|
|
104
|
+
constructor(decision, reason, rule_id = null, agent = null) {
|
|
105
|
+
super(fmtGateBlock(reason, rule_id, agent));
|
|
49
106
|
this.decision = decision;
|
|
50
107
|
this.reason = reason;
|
|
51
108
|
this.rule_id = rule_id;
|
|
@@ -133,7 +190,14 @@ class FormaClient {
|
|
|
133
190
|
const cfg = loadFormaConfig();
|
|
134
191
|
this.apiKey = (_d = (_c = (_b = (_a = config.apiKey) !== null && _a !== void 0 ? _a : process.env.FORMA_API_KEY) !== null && _b !== void 0 ? _b : process.env.TRUSTLAYER_API_KEY) !== null && _c !== void 0 ? _c : cfg.api_key) !== null && _d !== void 0 ? _d : "";
|
|
135
192
|
if (!this.apiKey) {
|
|
136
|
-
console.warn("[FORMA] No API key —
|
|
193
|
+
console.warn("\n\x1b[33m [FORMA] No API key — running without enforcement.\x1b[0m\n\n" +
|
|
194
|
+
" ┌─ Fix (pick one) ──────────────────────────────────────────┐\n" +
|
|
195
|
+
" │ A) Pass directly: forma.init({ apiKey: 'tl_live_...' }) │\n" +
|
|
196
|
+
" │ B) Env var: FORMA_API_KEY='tl_live_...' │\n" +
|
|
197
|
+
" │ C) One-time: forma setup (saves to ~/.forma/) │\n" +
|
|
198
|
+
" │ │\n" +
|
|
199
|
+
" │ Get your key: https://formaai.in/settings │\n" +
|
|
200
|
+
" └──────────────────────────────────────────────────────────┘\n");
|
|
137
201
|
}
|
|
138
202
|
this.baseUrl = ((_g = (_f = (_e = config.apiUrl) !== null && _e !== void 0 ? _e : process.env.FORMA_API_URL) !== null && _f !== void 0 ? _f : cfg.api_url) !== null && _g !== void 0 ? _g : "https://api.formaai.in").replace(/\/$/, "");
|
|
139
203
|
this.humanSponsor = (_k = (_j = (_h = config.humanSponsor) !== null && _h !== void 0 ? _h : process.env.FORMA_HUMAN_SPONSOR) !== null && _j !== void 0 ? _j : cfg.human_sponsor) !== null && _k !== void 0 ? _k : "";
|
|
@@ -151,7 +215,36 @@ class FormaClient {
|
|
|
151
215
|
}
|
|
152
216
|
this._enforce = enforce;
|
|
153
217
|
this._frameworks = frameworks;
|
|
218
|
+
// Validate preset
|
|
219
|
+
if (presetName && !PRESETS[presetName]) {
|
|
220
|
+
throw new Error(`\n\x1b[31m [FORMA] init: Unknown preset '${presetName}'\x1b[0m\n\n` +
|
|
221
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
222
|
+
` │ Valid presets: │\n` +
|
|
223
|
+
` │ "india" → DPDP (all Indian personal data) │\n` +
|
|
224
|
+
` │ "india_fintech" → DPDP + RBI (lending/KYC) │\n` +
|
|
225
|
+
` │ "india_health" → DPDP + HIPAA (health data) │\n` +
|
|
226
|
+
` │ "global" → AI safety baseline only │\n` +
|
|
227
|
+
` │ │\n` +
|
|
228
|
+
` │ Example: forma.init({ preset: "india_fintech" }) │\n` +
|
|
229
|
+
` └──────────────────────────────────────────────────────────┘\n`);
|
|
230
|
+
}
|
|
231
|
+
// Validate enforce packs
|
|
154
232
|
if (enforce.length) {
|
|
233
|
+
const VALID_PACKS = ["ai_safety", "dpdp", "rbi_ml_risk", "eu_ai_act", "iso42001", "soc2", "hipaa", "nist", "gdpr", "pci_dss"];
|
|
234
|
+
const invalid = enforce.filter(p => !VALID_PACKS.includes(p));
|
|
235
|
+
if (invalid.length) {
|
|
236
|
+
const closest = (name) => VALID_PACKS.reduce((best, v) => [...name].filter(c => v.includes(c)).length > [...name].filter(c => best.includes(c)).length ? v : best, VALID_PACKS[0]);
|
|
237
|
+
const hints = invalid.map(p => `✗ '${p}' → did you mean '${closest(p)}'?`).join("\n │ ");
|
|
238
|
+
throw new Error(`\n\x1b[31m [FORMA] init: Unknown pack(s): [${invalid.map(p => `'${p}'`).join(", ")}]\x1b[0m\n\n` +
|
|
239
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
240
|
+
` │ ${hints}\n` +
|
|
241
|
+
` │ │\n` +
|
|
242
|
+
` │ Valid packs: ai_safety · dpdp · rbi_ml_risk · pci_dss │\n` +
|
|
243
|
+
` │ hipaa · eu_ai_act · gdpr · iso42001 · soc2 │\n` +
|
|
244
|
+
` │ │\n` +
|
|
245
|
+
` │ Or use a preset: forma.init({ preset: "india_fintech" })│\n` +
|
|
246
|
+
` └──────────────────────────────────────────────────────────┘\n`);
|
|
247
|
+
}
|
|
155
248
|
this._policy = (0, gate_1.buildBootstrapPolicy)((_r = config.agentName) !== null && _r !== void 0 ? _r : "default", enforce, config.authorizedActions);
|
|
156
249
|
}
|
|
157
250
|
}
|
|
@@ -168,7 +261,7 @@ class FormaClient {
|
|
|
168
261
|
if (this.killSwitchActive) {
|
|
169
262
|
const r = { decision: "block", rule_id: "kill_switch", reason: "Kill switch active.", latency_ms: 0 };
|
|
170
263
|
if (raise)
|
|
171
|
-
throw new FormaGateBlock(r.decision, r.reason, (_b = r.rule_id) !== null && _b !== void 0 ? _b : null);
|
|
264
|
+
throw new FormaGateBlock(r.decision, r.reason, (_b = r.rule_id) !== null && _b !== void 0 ? _b : null, agentId);
|
|
172
265
|
return r;
|
|
173
266
|
}
|
|
174
267
|
// Local evaluation (if policy loaded)
|
|
@@ -182,7 +275,7 @@ class FormaClient {
|
|
|
182
275
|
if (local.decision === "block") {
|
|
183
276
|
const r = { ...local, latency_ms: Date.now() - t0 };
|
|
184
277
|
if (raise)
|
|
185
|
-
throw new FormaGateBlock(r.decision, r.reason, r.rule_id);
|
|
278
|
+
throw new FormaGateBlock(r.decision, r.reason, r.rule_id, agentId);
|
|
186
279
|
return r;
|
|
187
280
|
}
|
|
188
281
|
}
|
|
@@ -197,7 +290,7 @@ class FormaClient {
|
|
|
197
290
|
});
|
|
198
291
|
srv.latency_ms = Date.now() - t0;
|
|
199
292
|
if (srv.decision === "block" && raise)
|
|
200
|
-
throw new FormaGateBlock(srv.decision, srv.reason, (_e = srv.rule_id) !== null && _e !== void 0 ? _e : null);
|
|
293
|
+
throw new FormaGateBlock(srv.decision, srv.reason, (_e = srv.rule_id) !== null && _e !== void 0 ? _e : null, agentId);
|
|
201
294
|
return srv;
|
|
202
295
|
}
|
|
203
296
|
catch (e) {
|
|
@@ -206,7 +299,7 @@ class FormaClient {
|
|
|
206
299
|
if (this.failClosed) {
|
|
207
300
|
const r = { decision: "block", rule_id: "gate_error", reason: "Gate unreachable (fail_closed=true).", latency_ms: Date.now() - t0 };
|
|
208
301
|
if (raise)
|
|
209
|
-
throw new FormaGateBlock(r.decision, r.reason, (_f = r.rule_id) !== null && _f !== void 0 ? _f : null);
|
|
302
|
+
throw new FormaGateBlock(r.decision, r.reason, (_f = r.rule_id) !== null && _f !== void 0 ? _f : null, agentId);
|
|
210
303
|
return r;
|
|
211
304
|
}
|
|
212
305
|
return { decision: "allow", rule_id: null, reason: "Gate unreachable — fail open.", latency_ms: Date.now() - t0 };
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,6BAA0B;AAC1B,iCAA4G;AAE5G,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,EAAE,GAAG,kBAAkB,WAAW,EAAE,CAAC;AAkE3C,MAAa,cAAe,SAAQ,KAAK;IACvC,YAAmB,QAAgB,EAAS,MAAc,EAAS,UAAyB,IAAI;QAC9F,KAAK,CAAC,yBAAyB,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;QAD/C,aAAQ,GAAR,QAAQ,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAsB;QAE9F,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAmB,UAAkB,EAAS,MAAe;QAC3D,KAAK,CAAC,aAAa,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAD3C,eAAU,GAAV,UAAU,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAS;QAE3D,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,iFAAiF;AACjF,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACjE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,QAAQ,YAAY,IAAd,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,GAAgE;IAC3E,KAAK,EAAU,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAgB,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE;IACrF,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACjG,YAAY,EAAG,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAC/F,MAAM,EAAS,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAyB,UAAU,EAAE,EAAE,EAAE;CACjF,CAAC;AAEF,iFAAiF;AACjF,SAAS,OAAO,CACd,OAAe,EACf,MAAc,EACd,OAAe,EACf,MAAc,EACd,IAAc,EACd,SAAS,GAAG,KAAM;IAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAErD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;YAC/B,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,MAAM;gBACnB,YAAY,EAAE,EAAE;gBAChB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D;SACF,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;oBACrC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG;wBAAE,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;;wBACxF,OAAO,CAAC,IAAS,CAAC,CAAC;gBAC1B,CAAC;gBAAC,WAAM,CAAC;oBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,IAAI;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,MAAa,WAAW;IAWtB,YAAY,MAAmB;;QALvB,qBAAgB,GAAG,KAAK,CAAC;QACzB,YAAO,GAAkB,IAAI,CAAC;QAC9B,aAAQ,GAAa,EAAE,CAAC;QACxB,gBAAW,GAAa,EAAE,CAAC;QAGjC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,MAAA,MAAA,MAAA,MAAA,MAAM,CAAC,MAAM,mCACtB,OAAO,CAAC,GAAG,CAAC,aAAa,mCACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,mCAC9B,GAAG,CAAC,OAAO,mCACX,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QACtH,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CACb,MAAA,MAAA,MAAA,MAAM,CAAC,MAAM,mCACV,OAAO,CAAC,GAAG,CAAC,aAAa,mCACzB,GAAG,CAAC,OAAO,mCACX,wBAAwB,CAC5B,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,MAAA,MAAA,MAAA,MAAM,CAAC,YAAY,mCAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,mCAAI,GAAG,CAAC,aAAa,mCAAI,EAAE,CAAC;QACtG,IAAI,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,KAAM,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,KAAK,CAAC;QAE7C,iBAAiB;QACjB,MAAM,UAAU,GAAG,MAAA,MAAA,MAAM,CAAC,MAAM,mCAAK,OAAO,CAAC,GAAG,CAAC,YAAqC,mCAAI,GAAG,CAAC,MAAM,CAAC;QACrG,IAAI,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;QACnC,IAAI,UAAU,GAAa,EAAE,CAAC;QAE9B,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAA,2BAAoB,EACjC,MAAA,MAAM,CAAC,SAAS,mCAAI,SAAS,EAC7B,OAAO,EACP,MAAM,CAAC,iBAAiB,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E,GAAG,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACjD,OAAO,OAAO,CAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAiB,EAAE;;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,YAAY,mCAAI,IAAI,CAAC;QAExC,cAAc;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;YAClH,IAAI,KAAK;gBAAE,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAA,CAAC,CAAC,OAAO,mCAAI,IAAI,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAO,EAAE;gBACxC,UAAU,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,UAAU;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;gBACpD,IAAI,KAAK;oBAAE,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAa,MAAM,EAAE,iBAAiB,EAAE;gBAChE,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,UAAU;gBAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,SAAS,EAAE,IAAI,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK;gBAAE,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,IAAI,CAAC,CAAC;YAC/G,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,cAAc;gBAAE,MAAM,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,sCAAsC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;gBAChJ,IAAI,KAAK;oBAAE,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAA,CAAC,CAAC,OAAO,mCAAI,IAAI,CAAC,CAAC;gBAC7E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QACpH,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,OAAO,CAAC,MAAc,EAAE,aAAuC,UAAU;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjG,CAAC;QACD,MAAM,CAAC,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,6EAA6E;IAE7E,MAAM;QACJ,MAAM,MAAM,GAAG;YACb,EAAE,KAAK,EAAE,mBAAmB,EAAM,KAAK,EAAE,iCAAiC,EAAE,MAAM,EAAE,OAAO,EAAE;YAC7F,EAAE,KAAK,EAAE,WAAW,EAAc,KAAK,EAAE,uBAAuB,EAAa,MAAM,EAAE,OAAO,EAAE;YAC9F,EAAE,KAAK,EAAE,iBAAiB,EAAQ,KAAK,EAAE,+BAA+B,EAAK,MAAM,EAAE,OAAO,EAAE;YAC9F,EAAE,KAAK,EAAE,oBAAoB,EAAK,KAAK,EAAE,gCAAgC,EAAI,MAAM,EAAE,OAAO,EAAE;SAC/F,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM;gBACrE,OAAO,EAAE,oEAAoE;gBAC7E,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7B,MAAM,CAAC,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YAC3F,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QAC1C,OAAO;YACL,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM;YAC5D,OAAO,EAAE,QAAQ;gBACf,CAAC,CAAC,yBAAyB,MAAM,IAAI,MAAM,CAAC,MAAM,iBAAiB;gBACnE,CAAC,CAAC,wBAAwB,MAAM,IAAI,MAAM,CAAC,MAAM,iBAAiB;YACpE,OAAO;SACR,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E,MAAM;;QACJ,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,kBAAkB,EAAE,MAAM;YAC1B,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,mCAAI,KAAK;YAC1C,eAAe,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAc,mCAAI,KAAK;YACtD,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,oBAAoB,EAAE,KAAK;YAC3B,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;SAC1C,CAAC;IACJ,CAAC;IAED,8EAA8E;IAE9E;;;OAGG;IACH,UAAU,CAAmF,MAAS,EAAE,OAAO,GAAG,cAAc;QAC9H,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,KAAK,WAAW,GAAG,IAAe;;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAwE,CAAC;YAC9F,MAAM,MAAM,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EACnF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,WAAkD,CAAC,MAAM,GAAG,OAAO,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,aAAa,CAAsE,MAAS,EAAE,OAAO,GAAG,iBAAiB;QACvH,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,KAAK,WAAW,GAAG,IAAe;;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAyF,CAAC;YAC/G,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;QACD,MAAM,CAAC,QAA+C,CAAC,MAAM,GAAG,OAAO,CAAC;QACzE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAE7E,WAAW,CAAC,IAAY,EAAE,OAAuE,EAAE;;QACjG,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;YACrC,IAAI;YACJ,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,UAAU,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,QAAQ;YACtC,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,QAAgB,EAAE,KAAe;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,QAAQ,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,6EAA6E;IAE7E,SAAS,CAAC,SAAiB,EAAE,OAOzB,EAAE;;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE;YACnC,MAAM,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC9E,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,UAAU,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtD,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,SAAS;YAChC,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;YACvB,YAAY,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC;YACnC,cAAc,EAAE,MAAA,IAAI,CAAC,YAAY,mCAAI,CAAC;YACtC,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E,cAAc,CAAC,SAAiB,EAAE,KAAa,EAAE,OAAgB;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,aAAa,CAAC,MAA4C;QACxD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,QAA8B,EAAE,MAAe;QAChF,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,UAAU,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,MAAc;QACrD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,OAAO,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,OAAO,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,6EAA6E;IAE7E,iBAAiB;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACjD,CAAC;IAED,6EAA6E;IAE7E,mBAAmB,CAAC,OAAe,EAAE,SAAS,GAAG,MAAM;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,0BAA0B,OAAO,cAAc,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;CACF;AApSD,kCAoSC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forma-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "FORMA — The AI Agent Firewall for Node.js. Blocks Aadhaar/PAN/PII leaks, jailbreaks, and unauthorized actions before they execute. DPDP & RBI enforcement built in.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,16 @@
|
|
|
8
8
|
"build": "tsc",
|
|
9
9
|
"prepublishOnly": "npm run build"
|
|
10
10
|
},
|
|
11
|
-
"keywords": [
|
|
11
|
+
"keywords": [
|
|
12
|
+
"ai",
|
|
13
|
+
"agents",
|
|
14
|
+
"governance",
|
|
15
|
+
"compliance",
|
|
16
|
+
"observability",
|
|
17
|
+
"eu-ai-act",
|
|
18
|
+
"dpdp",
|
|
19
|
+
"llm"
|
|
20
|
+
],
|
|
12
21
|
"author": "FORMA <sdk@formaai.in>",
|
|
13
22
|
"license": "MIT",
|
|
14
23
|
"homepage": "https://formaai.in",
|
|
@@ -16,10 +25,15 @@
|
|
|
16
25
|
"type": "git",
|
|
17
26
|
"url": "https://github.com/forma-ai/forma-sdk-node"
|
|
18
27
|
},
|
|
19
|
-
"files": [
|
|
20
|
-
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"src"
|
|
31
|
+
],
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=16"
|
|
34
|
+
},
|
|
21
35
|
"devDependencies": {
|
|
22
|
-
"
|
|
23
|
-
"
|
|
36
|
+
"@types/node": "^20.0.0",
|
|
37
|
+
"typescript": "^5.0.0"
|
|
24
38
|
}
|
|
25
39
|
}
|
package/src/client.ts
CHANGED
|
@@ -6,7 +6,7 @@ import * as os from "os";
|
|
|
6
6
|
import { URL } from "url";
|
|
7
7
|
import { buildBootstrapPolicy, evaluateLocal, Policy, GateDecision, detectPii, detectThreat } from "./gate";
|
|
8
8
|
|
|
9
|
-
const SDK_VERSION = "1.
|
|
9
|
+
const SDK_VERSION = "1.1.0";
|
|
10
10
|
const UA = `FORMA-Node-SDK/${SDK_VERSION}`;
|
|
11
11
|
|
|
12
12
|
// ── Types ─────────────────────────────────────────────────────────────────────
|
|
@@ -73,9 +73,74 @@ export interface StepRecord {
|
|
|
73
73
|
[key: string]: unknown;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
// ── Actionable error message helpers ─────────────────────────────────────────
|
|
77
|
+
|
|
78
|
+
const PII_FIX: Record<string, string> = {
|
|
79
|
+
"Aadhaar number": "Remove the 12-digit Aadhaar. Use a customer_id token:\n │ ✗ 'Aadhaar: 2341 1234 1236'\n │ ✓ 'Customer ID: CUST-00471 (Aadhaar verified)'",
|
|
80
|
+
"Aadhaar number (Verhoeff-verified)":"Remove the Aadhaar (real check digit confirmed). Use a tokenised ref.",
|
|
81
|
+
"Indian PAN": "Remove the PAN. Store in vault; pass 'PAN verified: true' instead.",
|
|
82
|
+
"GSTIN": "Remove the GSTIN. Use invoice/order ID instead.",
|
|
83
|
+
"UPI ID": "Remove the UPI VPA. Use payment_token or order_id instead.",
|
|
84
|
+
"Phone number": "Remove the phone. Use masked (***43210) or customer_id.",
|
|
85
|
+
"Email address": "Remove the email. Use customer_id or opaque user reference.",
|
|
86
|
+
"Visa card": "Remove the card number. Use last-4 digits or PSP payment token.",
|
|
87
|
+
"Mastercard": "Remove the card number. Use PSP payment token.",
|
|
88
|
+
"Amex": "Remove the card number. Use PSP payment token.",
|
|
89
|
+
"CVV": "Never send CVV to an LLM. Remove it — PCI DSS requirement.",
|
|
90
|
+
"Credit/Debit card": "Remove the card number. Use PSP payment token.",
|
|
91
|
+
"IBAN": "Remove the IBAN. Use account alias or transaction ID.",
|
|
92
|
+
"IFSC code": "Remove the IFSC. Use bank alias or transaction ID.",
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
function fmtGateBlock(reason: string, rule_id: string | null, agent: string | null): string {
|
|
96
|
+
const rk = rule_id ?? "";
|
|
97
|
+
let ruleLabel = "Policy rule matched";
|
|
98
|
+
let fix = reason;
|
|
99
|
+
|
|
100
|
+
// PII block
|
|
101
|
+
const piiMatch = reason.match(/PII detected[:\s]+([^.]+)/i);
|
|
102
|
+
const piiType = piiMatch?.[1]?.trim();
|
|
103
|
+
if (piiType && (rk.includes("pii") || rk === "pii_in_prompt" || rk === "pii_in_tool_args")) {
|
|
104
|
+
ruleLabel = `PII detected: ${piiType}`;
|
|
105
|
+
fix = PII_FIX[piiType]
|
|
106
|
+
?? `Remove ${piiType} from prompt/args and use a safe reference instead.\n │ ✗ Direct PII value\n │ ✓ Tokenised ID / masked reference`;
|
|
107
|
+
} else if (rk.includes("unauthorized_tool")) {
|
|
108
|
+
ruleLabel = "Unauthorized tool call";
|
|
109
|
+
fix = "This tool is not in authorized actions.\n │ Add it:\n │ forma.init({ authorizedActions: ['tool_name', ...] })\n │ // or per-agent in getClient()";
|
|
110
|
+
} else if (rk.includes("kill_switch")) {
|
|
111
|
+
ruleLabel = "Kill switch active";
|
|
112
|
+
fix = "Agent is frozen. To resume:\n │ Dashboard → Agents → Kill Switch → Clear\n │ or: await client.clearKillSwitch('agent-name')";
|
|
113
|
+
} else if (rk.includes("threat") || rk.includes("injection") || rk.includes("jailbreak")) {
|
|
114
|
+
const cat = rk.replace("threat:", "").replace(/_/g, " ");
|
|
115
|
+
ruleLabel = `Threat: ${cat}`;
|
|
116
|
+
fix = "This prompt matches an attack pattern.\n │ Check for: ignore/override instructions, system prompt leaks,\n │ roleplay-switching, credential extraction, approval bypass.";
|
|
117
|
+
} else if (rk.includes("approval_bypass") || rk.includes("auto_approve")) {
|
|
118
|
+
ruleLabel = "Approval bypass attempt";
|
|
119
|
+
fix = "Add a human approval predicate:\n │ forma.init({\n │ requireApprovalWhen: (ctx) => ctx.toolName === 'approve_loan'\n │ })";
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const agentStr = agent ? `'${agent}'` : "your agent";
|
|
123
|
+
return (
|
|
124
|
+
`\n\x1b[31m [FORMA Gate] BLOCKED — ${ruleLabel}\x1b[0m\n` +
|
|
125
|
+
` Agent: ${agentStr} | Rule: ${rule_id ?? "gate"}\n\n` +
|
|
126
|
+
` ┌─ What happened ───────────────────────────────────────────┐\n` +
|
|
127
|
+
` │ ${reason.slice(0, 72)}\n` +
|
|
128
|
+
` └──────────────────────────────────────────────────────────┘\n\n` +
|
|
129
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
130
|
+
` │ ${fix}\n` +
|
|
131
|
+
` └──────────────────────────────────────────────────────────┘\n\n` +
|
|
132
|
+
` This block is in your FORMA audit trail → formaai.in/dashboard\n`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
76
136
|
export class FormaGateBlock extends Error {
|
|
77
|
-
constructor(
|
|
78
|
-
|
|
137
|
+
constructor(
|
|
138
|
+
public decision: string,
|
|
139
|
+
public reason: string,
|
|
140
|
+
public rule_id: string | null = null,
|
|
141
|
+
agent: string | null = null,
|
|
142
|
+
) {
|
|
143
|
+
super(fmtGateBlock(reason, rule_id, agent));
|
|
79
144
|
this.name = "FormaGateBlock";
|
|
80
145
|
}
|
|
81
146
|
}
|
|
@@ -173,7 +238,16 @@ export class FormaClient {
|
|
|
173
238
|
?? "";
|
|
174
239
|
|
|
175
240
|
if (!this.apiKey) {
|
|
176
|
-
console.warn(
|
|
241
|
+
console.warn(
|
|
242
|
+
"\n\x1b[33m [FORMA] No API key — running without enforcement.\x1b[0m\n\n" +
|
|
243
|
+
" ┌─ Fix (pick one) ──────────────────────────────────────────┐\n" +
|
|
244
|
+
" │ A) Pass directly: forma.init({ apiKey: 'tl_live_...' }) │\n" +
|
|
245
|
+
" │ B) Env var: FORMA_API_KEY='tl_live_...' │\n" +
|
|
246
|
+
" │ C) One-time: forma setup (saves to ~/.forma/) │\n" +
|
|
247
|
+
" │ │\n" +
|
|
248
|
+
" │ Get your key: https://formaai.in/settings │\n" +
|
|
249
|
+
" └──────────────────────────────────────────────────────────┘\n"
|
|
250
|
+
);
|
|
177
251
|
}
|
|
178
252
|
|
|
179
253
|
this.baseUrl = (
|
|
@@ -200,13 +274,44 @@ export class FormaClient {
|
|
|
200
274
|
this._enforce = enforce;
|
|
201
275
|
this._frameworks = frameworks;
|
|
202
276
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
277
|
+
// Validate preset
|
|
278
|
+
if (presetName && !PRESETS[presetName]) {
|
|
279
|
+
throw new Error(
|
|
280
|
+
`\n\x1b[31m [FORMA] init: Unknown preset '${presetName}'\x1b[0m\n\n` +
|
|
281
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
282
|
+
` │ Valid presets: │\n` +
|
|
283
|
+
` │ "india" → DPDP (all Indian personal data) │\n` +
|
|
284
|
+
` │ "india_fintech" → DPDP + RBI (lending/KYC) │\n` +
|
|
285
|
+
` │ "india_health" → DPDP + HIPAA (health data) │\n` +
|
|
286
|
+
` │ "global" → AI safety baseline only │\n` +
|
|
287
|
+
` │ │\n` +
|
|
288
|
+
` │ Example: forma.init({ preset: "india_fintech" }) │\n` +
|
|
289
|
+
` └──────────────────────────────────────────────────────────┘\n`
|
|
208
290
|
);
|
|
209
291
|
}
|
|
292
|
+
|
|
293
|
+
// Validate enforce packs
|
|
294
|
+
if (enforce.length) {
|
|
295
|
+
const VALID_PACKS = ["ai_safety","dpdp","rbi_ml_risk","eu_ai_act","iso42001","soc2","hipaa","nist","gdpr","pci_dss"];
|
|
296
|
+
const invalid = enforce.filter(p => !VALID_PACKS.includes(p));
|
|
297
|
+
if (invalid.length) {
|
|
298
|
+
const closest = (name: string) => VALID_PACKS.reduce((best, v) =>
|
|
299
|
+
[...name].filter(c => v.includes(c)).length > [...name].filter(c => best.includes(c)).length ? v : best, VALID_PACKS[0]);
|
|
300
|
+
const hints = invalid.map(p => `✗ '${p}' → did you mean '${closest(p)}'?`).join("\n │ ");
|
|
301
|
+
throw new Error(
|
|
302
|
+
`\n\x1b[31m [FORMA] init: Unknown pack(s): [${invalid.map(p=>`'${p}'`).join(", ")}]\x1b[0m\n\n` +
|
|
303
|
+
` ┌─ Fix ─────────────────────────────────────────────────────┐\n` +
|
|
304
|
+
` │ ${hints}\n` +
|
|
305
|
+
` │ │\n` +
|
|
306
|
+
` │ Valid packs: ai_safety · dpdp · rbi_ml_risk · pci_dss │\n` +
|
|
307
|
+
` │ hipaa · eu_ai_act · gdpr · iso42001 · soc2 │\n` +
|
|
308
|
+
` │ │\n` +
|
|
309
|
+
` │ Or use a preset: forma.init({ preset: "india_fintech" })│\n` +
|
|
310
|
+
` └──────────────────────────────────────────────────────────┘\n`
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
this._policy = buildBootstrapPolicy(config.agentName ?? "default", enforce, config.authorizedActions);
|
|
314
|
+
}
|
|
210
315
|
}
|
|
211
316
|
|
|
212
317
|
// ── Low-level API ──────────────────────────────────────────────────────────
|
|
@@ -224,7 +329,7 @@ export class FormaClient {
|
|
|
224
329
|
// Kill switch
|
|
225
330
|
if (this.killSwitchActive) {
|
|
226
331
|
const r: GateResult = { decision: "block", rule_id: "kill_switch", reason: "Kill switch active.", latency_ms: 0 };
|
|
227
|
-
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id ?? null);
|
|
332
|
+
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id ?? null, agentId);
|
|
228
333
|
return r;
|
|
229
334
|
}
|
|
230
335
|
|
|
@@ -238,7 +343,7 @@ export class FormaClient {
|
|
|
238
343
|
});
|
|
239
344
|
if (local.decision === "block") {
|
|
240
345
|
const r = { ...local, latency_ms: Date.now() - t0 };
|
|
241
|
-
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id);
|
|
346
|
+
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id, agentId);
|
|
242
347
|
return r;
|
|
243
348
|
}
|
|
244
349
|
}
|
|
@@ -253,13 +358,13 @@ export class FormaClient {
|
|
|
253
358
|
tool_args: opts.toolArgs,
|
|
254
359
|
});
|
|
255
360
|
srv.latency_ms = Date.now() - t0;
|
|
256
|
-
if (srv.decision === "block" && raise) throw new FormaGateBlock(srv.decision, srv.reason, srv.rule_id ?? null);
|
|
361
|
+
if (srv.decision === "block" && raise) throw new FormaGateBlock(srv.decision, srv.reason, srv.rule_id ?? null, agentId);
|
|
257
362
|
return srv;
|
|
258
363
|
} catch (e) {
|
|
259
364
|
if (e instanceof FormaGateBlock) throw e;
|
|
260
365
|
if (this.failClosed) {
|
|
261
366
|
const r: GateResult = { decision: "block", rule_id: "gate_error", reason: "Gate unreachable (fail_closed=true).", latency_ms: Date.now() - t0 };
|
|
262
|
-
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id ?? null);
|
|
367
|
+
if (raise) throw new FormaGateBlock(r.decision, r.reason, r.rule_id ?? null, agentId);
|
|
263
368
|
return r;
|
|
264
369
|
}
|
|
265
370
|
return { decision: "allow", rule_id: null, reason: "Gate unreachable — fail open.", latency_ms: Date.now() - t0 };
|