@jinn-network/core 0.1.0-canary.3afae198
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/canonical-json.d.ts +1 -0
- package/dist/canonical-json.js +67 -0
- package/dist/captured-task.d.ts +140 -0
- package/dist/captured-task.js +122 -0
- package/dist/contribution-store.d.ts +97 -0
- package/dist/contribution-store.js +770 -0
- package/dist/corpus-read/acquire.d.ts +39 -0
- package/dist/corpus-read/acquire.js +212 -0
- package/dist/corpus-read/cache.d.ts +14 -0
- package/dist/corpus-read/cache.js +17 -0
- package/dist/corpus-read/capture-meta.d.ts +16 -0
- package/dist/corpus-read/capture-meta.js +18 -0
- package/dist/corpus-read/create-corpus.d.ts +2 -0
- package/dist/corpus-read/create-corpus.js +97 -0
- package/dist/corpus-read/fetch-artifact.d.ts +21 -0
- package/dist/corpus-read/fetch-artifact.js +32 -0
- package/dist/corpus-read/fetch.d.ts +12 -0
- package/dist/corpus-read/fetch.js +24 -0
- package/dist/corpus-read/http-discovery.d.ts +9 -0
- package/dist/corpus-read/http-discovery.js +128 -0
- package/dist/corpus-read/index.d.ts +10 -0
- package/dist/corpus-read/index.js +10 -0
- package/dist/corpus-read/ipfs.d.ts +14 -0
- package/dist/corpus-read/ipfs.js +81 -0
- package/dist/corpus-read/route-resolver.d.ts +16 -0
- package/dist/corpus-read/route-resolver.js +19 -0
- package/dist/corpus-read/types.d.ts +177 -0
- package/dist/corpus-read/types.js +42 -0
- package/dist/envelope.d.ts +134 -0
- package/dist/envelope.js +162 -0
- package/dist/evidence-adapter.d.ts +26 -0
- package/dist/evidence-adapter.js +321 -0
- package/dist/evidence-filesystem.d.ts +40 -0
- package/dist/evidence-filesystem.js +267 -0
- package/dist/evidence-index.d.ts +117 -0
- package/dist/evidence-index.js +1083 -0
- package/dist/evidence-store-lock.d.ts +2 -0
- package/dist/evidence-store-lock.js +208 -0
- package/dist/execution-envelope.d.ts +3142 -0
- package/dist/execution-envelope.js +203 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/manifest.d.ts +75 -0
- package/dist/manifest.js +184 -0
- package/dist/paired.d.ts +68 -0
- package/dist/paired.js +92 -0
- package/dist/scrub/apply-dispositions.d.ts +74 -0
- package/dist/scrub/apply-dispositions.js +309 -0
- package/dist/scrub/build.d.ts +75 -0
- package/dist/scrub/build.js +143 -0
- package/dist/scrub/checksummed-instruments-detector.d.ts +13 -0
- package/dist/scrub/checksummed-instruments-detector.js +119 -0
- package/dist/scrub/data/bip39-english.d.ts +2 -0
- package/dist/scrub/data/bip39-english.js +2051 -0
- package/dist/scrub/data/gitleaks-rules.d.ts +56 -0
- package/dist/scrub/data/gitleaks-rules.js +67 -0
- package/dist/scrub/emit-scrub.d.ts +52 -0
- package/dist/scrub/emit-scrub.js +122 -0
- package/dist/scrub/eval/findings-from-scrub.d.ts +18 -0
- package/dist/scrub/eval/findings-from-scrub.js +99 -0
- package/dist/scrub/eval/fixtures.d.ts +14 -0
- package/dist/scrub/eval/fixtures.js +159 -0
- package/dist/scrub/eval/index.d.ts +6 -0
- package/dist/scrub/eval/index.js +6 -0
- package/dist/scrub/eval/local-corpus.d.ts +15 -0
- package/dist/scrub/eval/local-corpus.js +29 -0
- package/dist/scrub/eval/metrics.d.ts +19 -0
- package/dist/scrub/eval/metrics.js +77 -0
- package/dist/scrub/eval/run-bench.d.ts +8 -0
- package/dist/scrub/eval/run-bench.js +125 -0
- package/dist/scrub/eval/types.d.ts +69 -0
- package/dist/scrub/eval/types.js +7 -0
- package/dist/scrub/finding.d.ts +38 -0
- package/dist/scrub/finding.js +7 -0
- package/dist/scrub/git-identity-detector.d.ts +16 -0
- package/dist/scrub/git-identity-detector.js +116 -0
- package/dist/scrub/gitleaks-detector.d.ts +13 -0
- package/dist/scrub/gitleaks-detector.js +45 -0
- package/dist/scrub/gliner-detector.d.ts +65 -0
- package/dist/scrub/gliner-detector.js +129 -0
- package/dist/scrub/index.d.ts +26 -0
- package/dist/scrub/index.js +26 -0
- package/dist/scrub/ip-address-detector.d.ts +12 -0
- package/dist/scrub/ip-address-detector.js +81 -0
- package/dist/scrub/key-policy.d.ts +30 -0
- package/dist/scrub/key-policy.js +72 -0
- package/dist/scrub/known-identity-detector.d.ts +66 -0
- package/dist/scrub/known-identity-detector.js +284 -0
- package/dist/scrub/layer2.d.ts +18 -0
- package/dist/scrub/layer2.js +28 -0
- package/dist/scrub/ml-pii-stage.d.ts +42 -0
- package/dist/scrub/ml-pii-stage.js +119 -0
- package/dist/scrub/pii-build.d.ts +47 -0
- package/dist/scrub/pii-build.js +67 -0
- package/dist/scrub/pipeline.d.ts +77 -0
- package/dist/scrub/pipeline.js +225 -0
- package/dist/scrub/plain-patterns-stage.d.ts +33 -0
- package/dist/scrub/plain-patterns-stage.js +88 -0
- package/dist/scrub/policy.d.ts +28 -0
- package/dist/scrub/policy.js +156 -0
- package/dist/scrub/provenance.d.ts +53 -0
- package/dist/scrub/provenance.js +83 -0
- package/dist/scrub/reject-classes-detector.d.ts +11 -0
- package/dist/scrub/reject-classes-detector.js +195 -0
- package/dist/scrub/reject-publish-error.d.ts +30 -0
- package/dist/scrub/reject-publish-error.js +47 -0
- package/dist/scrub/review-queue.d.ts +90 -0
- package/dist/scrub/review-queue.js +259 -0
- package/dist/scrub/secretlint-stage.d.ts +21 -0
- package/dist/scrub/secretlint-stage.js +264 -0
- package/dist/scrub/transformers-detector.d.ts +41 -0
- package/dist/scrub/transformers-detector.js +77 -0
- package/dist/scrub/types.d.ts +36 -0
- package/dist/scrub/types.js +1 -0
- package/dist/scrub/url-credentials-detector.d.ts +9 -0
- package/dist/scrub/url-credentials-detector.js +66 -0
- package/dist/session-provenance.d.ts +75 -0
- package/dist/session-provenance.js +20 -0
- package/dist/skill-artifact.d.ts +442 -0
- package/dist/skill-artifact.js +136 -0
- package/dist/trajectory/hash-chain.d.ts +18 -0
- package/dist/trajectory/hash-chain.js +47 -0
- package/dist/trajectory/index.d.ts +4 -0
- package/dist/trajectory/index.js +4 -0
- package/dist/trajectory/schema.d.ts +681 -0
- package/dist/trajectory/schema.js +119 -0
- package/dist/trajectory/transcript-parsers/aider-history.d.ts +42 -0
- package/dist/trajectory/transcript-parsers/aider-history.js +181 -0
- package/dist/trajectory/transcript-parsers/claude-code-jsonl.d.ts +37 -0
- package/dist/trajectory/transcript-parsers/claude-code-jsonl.js +142 -0
- package/dist/trajectory/transcript-parsers/codex-session.d.ts +42 -0
- package/dist/trajectory/transcript-parsers/codex-session.js +235 -0
- package/dist/trajectory/transcript-parsers/continue-devdata.d.ts +41 -0
- package/dist/trajectory/transcript-parsers/continue-devdata.js +190 -0
- package/dist/trajectory/transcript-parsers/cursor-sqlite.d.ts +38 -0
- package/dist/trajectory/transcript-parsers/cursor-sqlite.js +118 -0
- package/dist/trajectory/transcript-parsers/gemini-session.d.ts +35 -0
- package/dist/trajectory/transcript-parsers/gemini-session.js +137 -0
- package/dist/trajectory/transcript-parsers/index.d.ts +7 -0
- package/dist/trajectory/transcript-parsers/index.js +7 -0
- package/dist/trajectory/transcript-parsers/types.d.ts +101 -0
- package/dist/trajectory/transcript-parsers/types.js +32 -0
- package/dist/trajectory/transcript-to-spans/attrs.d.ts +4 -0
- package/dist/trajectory/transcript-to-spans/attrs.js +30 -0
- package/dist/trajectory/transcript-to-spans/claude-code-stream-json.d.ts +8 -0
- package/dist/trajectory/transcript-to-spans/claude-code-stream-json.js +162 -0
- package/dist/trajectory/transcript-to-spans/codex-exec-json.d.ts +8 -0
- package/dist/trajectory/transcript-to-spans/codex-exec-json.js +253 -0
- package/dist/trajectory/transcript-to-spans/index.d.ts +4 -0
- package/dist/trajectory/transcript-to-spans/index.js +4 -0
- package/dist/trajectory/transcript-to-spans/types.d.ts +18 -0
- package/dist/trajectory/transcript-to-spans/types.js +1 -0
- package/dist/window.d.ts +12 -0
- package/dist/window.js +5 -0
- package/package.json +72 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B7 — checksummed payment instruments (#1972 / design §6.2).
|
|
3
|
+
*
|
|
4
|
+
* Card numbers (Luhn) and IBANs (mod-97). SSN-shape stays context-gated and is
|
|
5
|
+
* not emitted here.
|
|
6
|
+
*/
|
|
7
|
+
import { classifyKey } from './key-policy.js';
|
|
8
|
+
const VERSION = '1.0.0';
|
|
9
|
+
/** 13–19 digit runs, optional spaces/dashes between digit groups. */
|
|
10
|
+
const CARD_CANDIDATE = /\b(?:\d[ -]*?){13,19}\b/g;
|
|
11
|
+
/** IBAN: country + check digits + BBAN (no internal spaces in the candidate). */
|
|
12
|
+
const IBAN_CANDIDATE = /\b[A-Z]{2}\d{2}[A-Z0-9]{11,30}\b/gi;
|
|
13
|
+
/** Spaced IBAN groups (e.g. GB82 WEST 1234 5698 7654 32). */
|
|
14
|
+
const IBAN_SPACED = /\b[A-Z]{2}\d{2}(?:[ ][A-Z0-9]{4}){2,7}(?:[ ][A-Z0-9]{1,4})?\b/gi;
|
|
15
|
+
export function checksummedInstrumentsDetector(policy) {
|
|
16
|
+
const meta = { name: 'checksummed-instruments', version: VERSION };
|
|
17
|
+
return {
|
|
18
|
+
...meta,
|
|
19
|
+
detect(attributes) {
|
|
20
|
+
const findings = [];
|
|
21
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
22
|
+
if (typeof value !== 'string' || classifyKey(key, policy) !== 'content')
|
|
23
|
+
continue;
|
|
24
|
+
findings.push(...scanCards(value, key, meta));
|
|
25
|
+
findings.push(...scanIbans(value, key, meta));
|
|
26
|
+
}
|
|
27
|
+
return findings;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function scanCards(text, key, detector) {
|
|
32
|
+
const findings = [];
|
|
33
|
+
const re = new RegExp(CARD_CANDIDATE.source, CARD_CANDIDATE.flags);
|
|
34
|
+
let m;
|
|
35
|
+
while ((m = re.exec(text)) !== null) {
|
|
36
|
+
const raw = m[0];
|
|
37
|
+
const digits = raw.replace(/\D/g, '');
|
|
38
|
+
if (digits.length < 13 || digits.length > 19)
|
|
39
|
+
continue;
|
|
40
|
+
// Skip obvious non-cards (all same digit, leading zeros-only short ids).
|
|
41
|
+
if (/^(\d)\1+$/.test(digits))
|
|
42
|
+
continue;
|
|
43
|
+
if (!luhnOk(digits))
|
|
44
|
+
continue;
|
|
45
|
+
findings.push({
|
|
46
|
+
class: 'B7',
|
|
47
|
+
span: { key, start: m.index, end: m.index + raw.length },
|
|
48
|
+
confidence: 'VERY_HIGH',
|
|
49
|
+
evidence: ['card-luhn'],
|
|
50
|
+
detector,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return findings;
|
|
54
|
+
}
|
|
55
|
+
function scanIbans(text, key, detector) {
|
|
56
|
+
const findings = [];
|
|
57
|
+
const seen = new Set();
|
|
58
|
+
for (const pattern of [IBAN_CANDIDATE, IBAN_SPACED]) {
|
|
59
|
+
const re = new RegExp(pattern.source, pattern.flags);
|
|
60
|
+
let m;
|
|
61
|
+
while ((m = re.exec(text)) !== null) {
|
|
62
|
+
const raw = m[0];
|
|
63
|
+
const compact = raw.replace(/\s+/g, '').toUpperCase();
|
|
64
|
+
if (compact.length < 15 || compact.length > 34)
|
|
65
|
+
continue;
|
|
66
|
+
if (!ibanMod97Ok(compact))
|
|
67
|
+
continue;
|
|
68
|
+
const spanKey = `${m.index}:${m.index + raw.length}`;
|
|
69
|
+
if (seen.has(spanKey))
|
|
70
|
+
continue;
|
|
71
|
+
seen.add(spanKey);
|
|
72
|
+
findings.push({
|
|
73
|
+
class: 'B7',
|
|
74
|
+
span: { key, start: m.index, end: m.index + raw.length },
|
|
75
|
+
confidence: 'VERY_HIGH',
|
|
76
|
+
evidence: ['iban-mod97'],
|
|
77
|
+
detector,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return findings;
|
|
82
|
+
}
|
|
83
|
+
/** ISO/IEC 7812 Luhn checksum. */
|
|
84
|
+
export function luhnOk(digits) {
|
|
85
|
+
let sum = 0;
|
|
86
|
+
let alt = false;
|
|
87
|
+
for (let i = digits.length - 1; i >= 0; i -= 1) {
|
|
88
|
+
let n = digits.charCodeAt(i) - 48;
|
|
89
|
+
if (n < 0 || n > 9)
|
|
90
|
+
return false;
|
|
91
|
+
if (alt) {
|
|
92
|
+
n *= 2;
|
|
93
|
+
if (n > 9)
|
|
94
|
+
n -= 9;
|
|
95
|
+
}
|
|
96
|
+
sum += n;
|
|
97
|
+
alt = !alt;
|
|
98
|
+
}
|
|
99
|
+
return sum % 10 === 0;
|
|
100
|
+
}
|
|
101
|
+
/** ISO 13616 IBAN mod-97 check. */
|
|
102
|
+
export function ibanMod97Ok(iban) {
|
|
103
|
+
const rearranged = iban.slice(4) + iban.slice(0, 4);
|
|
104
|
+
let expanded = '';
|
|
105
|
+
for (const ch of rearranged) {
|
|
106
|
+
if (ch >= '0' && ch <= '9')
|
|
107
|
+
expanded += ch;
|
|
108
|
+
else if (ch >= 'A' && ch <= 'Z')
|
|
109
|
+
expanded += String(ch.charCodeAt(0) - 55);
|
|
110
|
+
else
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
// Progressive mod to avoid BigInt dependency for typical IBAN lengths.
|
|
114
|
+
let rest = 0;
|
|
115
|
+
for (const ch of expanded) {
|
|
116
|
+
rest = (rest * 10 + (ch.charCodeAt(0) - 48)) % 97;
|
|
117
|
+
}
|
|
118
|
+
return rest === 1;
|
|
119
|
+
}
|