@panguard-ai/threat-cloud 1.5.5 → 1.6.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/admin-dashboard.d.ts +1 -1
- package/dist/admin-dashboard.d.ts.map +1 -1
- package/dist/admin-dashboard.js +123 -24
- package/dist/admin-dashboard.js.map +1 -1
- package/dist/audit-logger.d.ts +1 -1
- package/dist/audit-logger.d.ts.map +1 -1
- package/dist/audit-logger.js.map +1 -1
- package/dist/auth/tier-resolver.d.ts +46 -0
- package/dist/auth/tier-resolver.d.ts.map +1 -0
- package/dist/auth/tier-resolver.js +57 -0
- package/dist/auth/tier-resolver.js.map +1 -0
- package/dist/cli.js +50 -10
- package/dist/cli.js.map +1 -1
- package/dist/database.d.ts +72 -5
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +193 -19
- package/dist/database.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +90 -0
- package/dist/migrations.js.map +1 -1
- package/dist/server.d.ts +55 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +510 -36
- package/dist/server.js.map +1 -1
- package/package.json +4 -3
package/dist/migrations.js
CHANGED
|
@@ -342,6 +342,96 @@ export const migrations = [
|
|
|
342
342
|
ON migrator_telemetry(condition_hash, install_id, created_at)`);
|
|
343
343
|
},
|
|
344
344
|
},
|
|
345
|
+
{
|
|
346
|
+
version: 14,
|
|
347
|
+
name: 'add_client_key_tier_column',
|
|
348
|
+
up: (db) => {
|
|
349
|
+
// Workspace tier per client key. Drives the per-token rate limiter:
|
|
350
|
+
// community = 120 req/min, pilot = 1200, enterprise = 12000.
|
|
351
|
+
// Existing rows backfill to 'community' (the safest default — anything
|
|
352
|
+
// already in production keeps the baseline budget until an admin
|
|
353
|
+
// explicitly upgrades it via POST /api/admin/client-keys/:clientId/tier).
|
|
354
|
+
const cols = db.prepare('PRAGMA table_info(client_keys)').all();
|
|
355
|
+
if (!cols.some((c) => c.name === 'tier')) {
|
|
356
|
+
db.exec("ALTER TABLE client_keys ADD COLUMN tier TEXT NOT NULL DEFAULT 'community'");
|
|
357
|
+
}
|
|
358
|
+
// Backfill any pre-existing NULL/empty values to 'community' to be safe.
|
|
359
|
+
// Cheap full-table update — client_keys is bounded by Guard install count.
|
|
360
|
+
db.exec("UPDATE client_keys SET tier = 'community' WHERE tier IS NULL OR tier = ''");
|
|
361
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_client_keys_tier ON client_keys(tier);`);
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
version: 15,
|
|
366
|
+
name: 'add_github_identity_and_weighted_confirmations',
|
|
367
|
+
up: (db) => {
|
|
368
|
+
// ATR proposal corpus integrity: a Sybil attacker can register N anonymous
|
|
369
|
+
// client keys from rotating IPv6 addresses and self-confirm a malicious
|
|
370
|
+
// proposal past the 3-confirmation promotion threshold. This migration
|
|
371
|
+
// ties the trust tier of each confirmation vote to a verified GitHub
|
|
372
|
+
// identity. Anonymous votes count as zero weight; verified GitHub
|
|
373
|
+
// contributors count for 0.5 (new) or 1.0 (>=30 days since registration).
|
|
374
|
+
// Promotion now requires `confirmation_weight >= 3.0` rather than the
|
|
375
|
+
// raw `confirmations >= 3` count.
|
|
376
|
+
// client_keys: add github identity + trust tier
|
|
377
|
+
const ckCols = db.prepare('PRAGMA table_info(client_keys)').all();
|
|
378
|
+
if (!ckCols.some((c) => c.name === 'github_user_id')) {
|
|
379
|
+
db.exec('ALTER TABLE client_keys ADD COLUMN github_user_id INTEGER');
|
|
380
|
+
}
|
|
381
|
+
if (!ckCols.some((c) => c.name === 'github_login')) {
|
|
382
|
+
db.exec('ALTER TABLE client_keys ADD COLUMN github_login TEXT');
|
|
383
|
+
}
|
|
384
|
+
if (!ckCols.some((c) => c.name === 'trust_tier')) {
|
|
385
|
+
// Values: 'anonymous_legacy' | 'anonymous' | 'github_new' | 'github_verified'
|
|
386
|
+
// - anonymous_legacy: pre-existing key registered before v15.
|
|
387
|
+
// Receives a non-zero vote weight (0.25) during a 90-day grace
|
|
388
|
+
// window so ongoing community proposals do not all stall the
|
|
389
|
+
// moment the operator deploys the Sybil-defence migration. After
|
|
390
|
+
// the grace window ends, anonymous_legacy and anonymous behave
|
|
391
|
+
// identically (weight 0). server.ts owns the grace-end date
|
|
392
|
+
// constant; see LEGACY_ANONYMOUS_GRACE_END_ISO.
|
|
393
|
+
// - anonymous: registered after v15 via /api/clients/register
|
|
394
|
+
// (no GitHub binding). Vote weight is 0 — these keys cannot
|
|
395
|
+
// single-handedly promote a proposal. They CAN still submit;
|
|
396
|
+
// GitHub-verified contributors must co-sign for promotion.
|
|
397
|
+
// - github_new: GitHub-verified, < 30 days since registration
|
|
398
|
+
// - github_verified: GitHub-verified, >= 30 days since registration
|
|
399
|
+
//
|
|
400
|
+
// The DEFAULT below applies to NEW rows inserted after migration.
|
|
401
|
+
// The follow-up UPDATE retroactively tags every pre-existing row
|
|
402
|
+
// as 'anonymous_legacy' so the grace window only ever benefits
|
|
403
|
+
// keys that pre-date the trust model — never future attackers.
|
|
404
|
+
db.exec("ALTER TABLE client_keys ADD COLUMN trust_tier TEXT NOT NULL DEFAULT 'anonymous'");
|
|
405
|
+
db.exec("UPDATE client_keys SET trust_tier = 'anonymous_legacy'");
|
|
406
|
+
}
|
|
407
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_client_keys_github_user ON client_keys(github_user_id)`);
|
|
408
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_client_keys_trust ON client_keys(trust_tier)`);
|
|
409
|
+
// atr_proposals: add weighted confirmation tracking
|
|
410
|
+
const apCols = db.prepare('PRAGMA table_info(atr_proposals)').all();
|
|
411
|
+
if (!apCols.some((c) => c.name === 'confirmation_weight')) {
|
|
412
|
+
// First submission counts as the initial vote — backfill to match
|
|
413
|
+
// the existing `confirmations` integer so legacy proposals keep the
|
|
414
|
+
// same promotion behaviour during the transition window.
|
|
415
|
+
db.exec('ALTER TABLE atr_proposals ADD COLUMN confirmation_weight REAL NOT NULL DEFAULT 0');
|
|
416
|
+
db.exec('UPDATE atr_proposals SET confirmation_weight = CAST(confirmations AS REAL)');
|
|
417
|
+
}
|
|
418
|
+
// Per-github_user_id daily proposal submission cap is enforced via a
|
|
419
|
+
// separate table to keep the constraint cheap to check (single SELECT
|
|
420
|
+
// by user_id + date). Limit defaults to 10/day in code.
|
|
421
|
+
db.exec(`
|
|
422
|
+
CREATE TABLE IF NOT EXISTS github_proposal_submissions (
|
|
423
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
424
|
+
github_user_id INTEGER NOT NULL,
|
|
425
|
+
submission_date TEXT NOT NULL,
|
|
426
|
+
count INTEGER NOT NULL DEFAULT 1,
|
|
427
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
428
|
+
UNIQUE(github_user_id, submission_date)
|
|
429
|
+
);
|
|
430
|
+
CREATE INDEX IF NOT EXISTS idx_github_proposals_user_date
|
|
431
|
+
ON github_proposal_submissions(github_user_id, submission_date);
|
|
432
|
+
`);
|
|
433
|
+
},
|
|
434
|
+
},
|
|
345
435
|
];
|
|
346
436
|
/**
|
|
347
437
|
* Ensure the schema_version tracking table exists.
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,kCAAkC;QACxC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,kEAAkE;YAClE,8DAA8D;YAC9D,sDAAsD;YACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAA6B,CAAC;YAC3F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzD,MAAM,YAAY,GAA0C;gBAC1D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;gBAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;gBAClC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;aAC/B,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,EAAE,CAAC,IAAI,CAAC,gCAAgC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,wBAAwB;QAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,qDAAqD;YACrD,iEAAiE;YACjE,mDAAmD;YACnD,MAAM,QAAQ,GAAG,EAAE;iBAChB,OAAO,CAAC,wEAAwE,CAAC;iBACjF,GAAG,EAAkC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAA6B,CAAC;gBAC3F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzD,wDAAwD;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;SAWP,CAAC,CAAC;YACL,CAAC;YAED,EAAE,CAAC,IAAI,CAAC;;;;;OAKP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,6BAA6B;QACnC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,iEAAiE;YACjE,+DAA+D;YAC/D,oCAAoC;YACpC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;OAkBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,0BAA0B;QAChC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;OAiBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,4BAA4B;QAClC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAEnE,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC1C,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YACzE,CAAC;YAED,qCAAqC;YACrC,EAAE,CAAC,IAAI,CACL,iGAAiG,CAClG,CAAC;QACJ,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,4BAA4B;QAClC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;OAYP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,iCAAiC;QACvC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;OAgBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,qCAAqC;QAC3C,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,0BAA0B;QAChC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;OAaP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,4BAA4B;QAClC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,wEAAwE;YACxE,qEAAqE;YACrE,+DAA+D;YAC/D,2BAA2B;YAC3B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAA6B,CAAC;YAC3F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACvF,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACvF,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,gCAAgC;QACtC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,kEAAkE;YAClE,kEAAkE;YAClE,gEAAgE;YAChE,kEAAkE;YAClE,EAAE;YACF,iBAAiB;YACjB,wEAAwE;YACxE,oEAAoE;YACpE,4DAA4D;YAC5D,EAAE;YACF,iEAAiE;YACjE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;OAUP,CAAC,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YAC5F,EAAE,CAAC,IAAI,CACL,wHAAwH,CACzH,CAAC;QACJ,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,8BAA8B;QACpC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,mEAAmE;YACnE,iEAAiE;YACjE,mEAAmE;YACnE,sEAAsE;YACtE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;OAkBP,CAAC,CAAC;YACH,EAAE,CAAC,IAAI,CACL,wFAAwF,CACzF,CAAC;YACF,EAAE,CAAC,IAAI,CACL,uFAAuF,CACxF,CAAC;YACF,EAAE,CAAC,IAAI,CACL,uFAAuF,CACxF,CAAC;YACF,EAAE,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC3F,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,8CAA8C;QACpD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,qCAAqC;YACrC,2DAA2D;YAC3D,4BAA4B;YAC5B,yBAAyB;YACzB,qDAAqD;YACrD,EAAE;YACF,0EAA0E;YAC1E,yEAAyE;YACzE,sEAAsE;YACtE,wEAAwE;YACxE,mDAAmD;YACnD,EAAE,CAAC,IAAI,CACL;uEAC+D,CAChE,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,EAAE,CAAC,IAAI,CAAC;;;;GAIP,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAEnD,CAAC;IACd,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,EAAqB;IAC9C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAE/D,CAAC;IACF,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,qCAAqC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,CAAC,OAAO,uBAAuB,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,CAAC,GAAG,CACT,sCAAsC,iBAAiB,CAAC,EAAE,CAAC,KAAK,OAAO,wBAAwB,CAChG,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -108,8 +108,28 @@ export declare class ThreatCloudServer {
|
|
|
108
108
|
* payload and returns the generated ATR YAML. Admin or static key only.
|
|
109
109
|
*/
|
|
110
110
|
private handleDraftProposalFromPayload;
|
|
111
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* POST /api/atr-proposals - Submit or confirm an ATR rule proposal.
|
|
113
|
+
*
|
|
114
|
+
* Vote weighting (defends the corpus against Sybil promotion attacks):
|
|
115
|
+
* - anonymous client (legacy /api/clients/register) → weight 0.0
|
|
116
|
+
* - github_new (< 30 days since OAuth registration) → weight 0.5
|
|
117
|
+
* - github_verified (>= 30 days) → weight 1.0
|
|
118
|
+
*
|
|
119
|
+
* Promotion threshold: cumulative `confirmation_weight >= 3.0`. Anonymous
|
|
120
|
+
* submissions are still accepted (the corpus stays community-friendly) but
|
|
121
|
+
* they cannot single-handedly promote a proposal.
|
|
122
|
+
*
|
|
123
|
+
* GitHub-bound clients additionally face a per-user daily submission cap
|
|
124
|
+
* (default 10) so a single compromised contributor account cannot flood
|
|
125
|
+
* the queue.
|
|
126
|
+
*/
|
|
112
127
|
private handlePostATRProposal;
|
|
128
|
+
/**
|
|
129
|
+
* Extract the raw client key from the Authorization header. Returns null
|
|
130
|
+
* when no bearer token is present.
|
|
131
|
+
*/
|
|
132
|
+
private extractClientKey;
|
|
113
133
|
/** POST /api/atr-feedback - Submit feedback on an ATR rule */
|
|
114
134
|
private handlePostATRFeedback;
|
|
115
135
|
/** POST /api/rule-feedback - Submit negative feedback on a canary/active rule, auto-quarantine at threshold */
|
|
@@ -117,6 +137,28 @@ export declare class ThreatCloudServer {
|
|
|
117
137
|
/** POST /api/skill-threats - Submit skill threat from audit */
|
|
118
138
|
/** POST /api/clients/register — auto-provision client API key */
|
|
119
139
|
private handleClientRegister;
|
|
140
|
+
/**
|
|
141
|
+
* POST /api/clients/register-github — issue a client key bound to a verified
|
|
142
|
+
* GitHub identity. Used to defend the ATR proposal corpus against Sybil
|
|
143
|
+
* attacks via anonymous registration spam.
|
|
144
|
+
*
|
|
145
|
+
* Flow:
|
|
146
|
+
* 1. Client sends `{ githubToken: "ghp_..." | "gho_..." }` in body
|
|
147
|
+
* 2. Server calls GitHub API `GET /user` with that token to verify
|
|
148
|
+
* 3. On success, issues a client key tied to the numeric GitHub user ID
|
|
149
|
+
*
|
|
150
|
+
* The github_user_id is GitHub's stable numeric identifier — `login` can be
|
|
151
|
+
* renamed, so we key trust off the ID. Trust tier starts at 'github_new'
|
|
152
|
+
* and matures to 'github_verified' 30 days after first registration (see
|
|
153
|
+
* promoteMatureGitHubClients).
|
|
154
|
+
*
|
|
155
|
+
* Vote weighting at ATR proposal time:
|
|
156
|
+
* - anonymous (legacy /api/clients/register key) → 0 (can submit, can't promote)
|
|
157
|
+
* - github_new (< 30 days) → 0.5
|
|
158
|
+
* - github_verified (>= 30 days) → 1.0
|
|
159
|
+
* Promotion threshold: cumulative weight >= 3.0
|
|
160
|
+
*/
|
|
161
|
+
private handleClientRegisterGitHub;
|
|
120
162
|
/** POST /api/admin/client-keys/revoke — revoke client keys */
|
|
121
163
|
private handleClientKeyRevoke;
|
|
122
164
|
/**
|
|
@@ -199,7 +241,18 @@ export declare class ThreatCloudServer {
|
|
|
199
241
|
private serveAdminDashboard;
|
|
200
242
|
/** Check admin API key for write-protected endpoints / 檢查管理員 API 金鑰 */
|
|
201
243
|
private checkAdminAuth;
|
|
202
|
-
/**
|
|
244
|
+
/**
|
|
245
|
+
* Tier-aware rate-limit check / 階層感知的速率限制檢查
|
|
246
|
+
*
|
|
247
|
+
* @param key Bucket key — `token:<bearer>` for authenticated requests
|
|
248
|
+
* or `ip:<addr>` for anonymous/public reads.
|
|
249
|
+
* @param tier Workspace tier resolved from the auth gate. Drives the
|
|
250
|
+
* requests-per-minute budget via TIER_LIMITS.
|
|
251
|
+
*
|
|
252
|
+
* Returns the bucket state for header emission + allow/deny decision.
|
|
253
|
+
* `limit` is captured at window-init time; mid-window tier changes only
|
|
254
|
+
* take effect on the next window.
|
|
255
|
+
*/
|
|
203
256
|
private checkRateLimit;
|
|
204
257
|
/**
|
|
205
258
|
* Parse JSON body and validate against a Zod schema.
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|