@de-otio/chaoskb-client 0.3.4 → 0.3.7
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/cli/bootstrap.d.ts +11 -3
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +181 -126
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/commands/config.d.ts +7 -4
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +161 -134
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/devices.d.ts.map +1 -1
- package/dist/cli/commands/devices.js +58 -33
- package/dist/cli/commands/devices.js.map +1 -1
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +6 -9
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/import.js +1 -1
- package/dist/cli/commands/import.js.map +1 -1
- package/dist/cli/commands/projects.d.ts.map +1 -1
- package/dist/cli/commands/projects.js +33 -10
- package/dist/cli/commands/projects.js.map +1 -1
- package/dist/cli/commands/rotate-key.d.ts +3 -3
- package/dist/cli/commands/rotate-key.d.ts.map +1 -1
- package/dist/cli/commands/rotate-key.js +88 -35
- package/dist/cli/commands/rotate-key.js.map +1 -1
- package/dist/cli/commands/setup-sync.d.ts.map +1 -1
- package/dist/cli/commands/setup-sync.js +22 -4
- package/dist/cli/commands/setup-sync.js.map +1 -1
- package/dist/cli/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp-server.js +90 -42
- package/dist/cli/mcp-server.js.map +1 -1
- package/dist/crypto/aad.d.ts +2 -5
- package/dist/crypto/aad.d.ts.map +1 -1
- package/dist/crypto/aad.js +2 -8
- package/dist/crypto/aad.js.map +1 -1
- package/dist/crypto/aead.d.ts +8 -16
- package/dist/crypto/aead.d.ts.map +1 -1
- package/dist/crypto/aead.js +10 -36
- package/dist/crypto/aead.js.map +1 -1
- package/dist/crypto/blob-id.d.ts +2 -3
- package/dist/crypto/blob-id.d.ts.map +1 -1
- package/dist/crypto/blob-id.js +2 -30
- package/dist/crypto/blob-id.js.map +1 -1
- package/dist/crypto/canonical-json.d.ts +5 -3
- package/dist/crypto/canonical-json.d.ts.map +1 -1
- package/dist/crypto/canonical-json.js +5 -85
- package/dist/crypto/canonical-json.js.map +1 -1
- package/dist/crypto/commitment.d.ts +3 -9
- package/dist/crypto/commitment.d.ts.map +1 -1
- package/dist/crypto/commitment.js +3 -27
- package/dist/crypto/commitment.js.map +1 -1
- package/dist/crypto/encryption-service.d.ts +3 -0
- package/dist/crypto/encryption-service.d.ts.map +1 -1
- package/dist/crypto/encryption-service.js +10 -6
- package/dist/crypto/encryption-service.js.map +1 -1
- package/dist/crypto/envelope-cbor.d.ts +4 -34
- package/dist/crypto/envelope-cbor.d.ts.map +1 -1
- package/dist/crypto/envelope-cbor.js +4 -121
- package/dist/crypto/envelope-cbor.js.map +1 -1
- package/dist/crypto/envelope.d.ts +1 -31
- package/dist/crypto/envelope.d.ts.map +1 -1
- package/dist/crypto/envelope.js +31 -137
- package/dist/crypto/envelope.js.map +1 -1
- package/dist/crypto/hkdf.d.ts +7 -11
- package/dist/crypto/hkdf.d.ts.map +1 -1
- package/dist/crypto/hkdf.js +9 -18
- package/dist/crypto/hkdf.js.map +1 -1
- package/dist/crypto/index.d.ts +9 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js +9 -4
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/ssh-keys.d.ts +17 -10
- package/dist/crypto/ssh-keys.d.ts.map +1 -1
- package/dist/crypto/ssh-keys.js +28 -108
- package/dist/crypto/ssh-keys.js.map +1 -1
- package/dist/crypto/types.d.ts +18 -88
- package/dist/crypto/types.d.ts.map +1 -1
- package/dist/crypto/types.js +3 -0
- package/dist/crypto/types.js.map +1 -1
- package/dist/pipeline/content-pipeline.d.ts.map +1 -1
- package/dist/pipeline/content-pipeline.js +26 -3
- package/dist/pipeline/content-pipeline.js.map +1 -1
- package/dist/pipeline/extract.d.ts +8 -0
- package/dist/pipeline/extract.d.ts.map +1 -1
- package/dist/pipeline/extract.js +15 -4
- package/dist/pipeline/extract.js.map +1 -1
- package/dist/pipeline/fetch-browser.d.ts +29 -0
- package/dist/pipeline/fetch-browser.d.ts.map +1 -0
- package/dist/pipeline/fetch-browser.js +98 -0
- package/dist/pipeline/fetch-browser.js.map +1 -0
- package/dist/pipeline/safety.d.ts +12 -0
- package/dist/pipeline/safety.d.ts.map +1 -0
- package/dist/pipeline/safety.js +24 -0
- package/dist/pipeline/safety.js.map +1 -0
- package/dist/pipeline/types.d.ts +2 -0
- package/dist/pipeline/types.d.ts.map +1 -1
- package/dist/pipeline/validate.d.ts.map +1 -1
- package/dist/pipeline/validate.js +19 -46
- package/dist/pipeline/validate.js.map +1 -1
- package/package.json +5 -1
- package/dist/crypto/argon2.d.ts +0 -11
- package/dist/crypto/argon2.d.ts.map +0 -1
- package/dist/crypto/argon2.js +0 -33
- package/dist/crypto/argon2.js.map +0 -1
- package/dist/crypto/invite.d.ts +0 -31
- package/dist/crypto/invite.d.ts.map +0 -1
- package/dist/crypto/invite.js +0 -139
- package/dist/crypto/invite.js.map +0 -1
- package/dist/crypto/keyring.d.ts +0 -37
- package/dist/crypto/keyring.d.ts.map +0 -1
- package/dist/crypto/keyring.js +0 -219
- package/dist/crypto/keyring.js.map +0 -1
- package/dist/crypto/known-keys.d.ts +0 -34
- package/dist/crypto/known-keys.d.ts.map +0 -1
- package/dist/crypto/known-keys.js +0 -114
- package/dist/crypto/known-keys.js.map +0 -1
- package/dist/crypto/project-keys.d.ts +0 -26
- package/dist/crypto/project-keys.d.ts.map +0 -1
- package/dist/crypto/project-keys.js +0 -69
- package/dist/crypto/project-keys.js.map +0 -1
- package/dist/crypto/secure-buffer.d.ts +0 -31
- package/dist/crypto/secure-buffer.d.ts.map +0 -1
- package/dist/crypto/secure-buffer.js +0 -61
- package/dist/crypto/secure-buffer.js.map +0 -1
- package/dist/crypto/tiers/enhanced.d.ts +0 -25
- package/dist/crypto/tiers/enhanced.d.ts.map +0 -1
- package/dist/crypto/tiers/enhanced.js +0 -56
- package/dist/crypto/tiers/enhanced.js.map +0 -1
- package/dist/crypto/tiers/maximum.d.ts +0 -19
- package/dist/crypto/tiers/maximum.d.ts.map +0 -1
- package/dist/crypto/tiers/maximum.js +0 -25
- package/dist/crypto/tiers/maximum.js.map +0 -1
- package/dist/crypto/tiers/standard.d.ts +0 -27
- package/dist/crypto/tiers/standard.d.ts.map +0 -1
- package/dist/crypto/tiers/standard.js +0 -155
- package/dist/crypto/tiers/standard.js.map +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless-browser fallback for JavaScript-rendered pages.
|
|
3
|
+
*
|
|
4
|
+
* When `extractContent` throws `JsRenderRequiredError`, the content pipeline
|
|
5
|
+
* calls `fetchUrlWithBrowser` to re-fetch the URL through a Chromium instance
|
|
6
|
+
* that executes the page's JavaScript, then feeds the rendered HTML back into
|
|
7
|
+
* the normal extraction path.
|
|
8
|
+
*
|
|
9
|
+
* A module-level singleton Browser is launched lazily on first use and
|
|
10
|
+
* self-closes after `IDLE_SHUTDOWN_MS` of inactivity, amortizing the 2–5 s
|
|
11
|
+
* cold start across sequential ingestions while releasing the Chromium
|
|
12
|
+
* subprocess (~200 MB resident) when the fallback isn't active.
|
|
13
|
+
*/
|
|
14
|
+
import { chromium } from 'playwright';
|
|
15
|
+
import { MAX_RESPONSE_BYTES, validateUrl } from './fetch.js';
|
|
16
|
+
const IDLE_SHUTDOWN_MS = 60_000;
|
|
17
|
+
const NAV_TIMEOUT_MS = 15_000;
|
|
18
|
+
let browserPromise = null;
|
|
19
|
+
let idleTimer = null;
|
|
20
|
+
async function getBrowser() {
|
|
21
|
+
if (!browserPromise) {
|
|
22
|
+
browserPromise = chromium.launch({ headless: true });
|
|
23
|
+
}
|
|
24
|
+
return browserPromise;
|
|
25
|
+
}
|
|
26
|
+
function scheduleIdleShutdown() {
|
|
27
|
+
if (idleTimer)
|
|
28
|
+
clearTimeout(idleTimer);
|
|
29
|
+
idleTimer = setTimeout(async () => {
|
|
30
|
+
const p = browserPromise;
|
|
31
|
+
browserPromise = null;
|
|
32
|
+
idleTimer = null;
|
|
33
|
+
try {
|
|
34
|
+
const browser = await p;
|
|
35
|
+
await browser?.close();
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Best-effort shutdown; swallow errors from a browser that already exited.
|
|
39
|
+
}
|
|
40
|
+
}, IDLE_SHUTDOWN_MS);
|
|
41
|
+
idleTimer.unref();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fetch a URL through a headless Chromium instance, executing JavaScript and
|
|
45
|
+
* returning the post-render HTML.
|
|
46
|
+
*
|
|
47
|
+
* @param url - The URL to render. SSRF-validated before the browser launch.
|
|
48
|
+
* @returns The fully rendered HTML as a string.
|
|
49
|
+
* @throws If SSRF validation fails, navigation times out, or the rendered
|
|
50
|
+
* HTML exceeds `MAX_RESPONSE_BYTES`.
|
|
51
|
+
*/
|
|
52
|
+
export async function fetchUrlWithBrowser(url) {
|
|
53
|
+
// SSRF: validateUrl covers scheme, blocked hostnames, IP-literal private-IP
|
|
54
|
+
// check, DNS resolution, and per-resolved-address private-IP rejection.
|
|
55
|
+
await validateUrl(url);
|
|
56
|
+
const browser = await getBrowser();
|
|
57
|
+
const context = await browser.newContext();
|
|
58
|
+
try {
|
|
59
|
+
const page = await context.newPage();
|
|
60
|
+
try {
|
|
61
|
+
await page.goto(url, { waitUntil: 'networkidle', timeout: NAV_TIMEOUT_MS });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Some sites never go fully idle (long-polling, analytics beacons).
|
|
65
|
+
// Fall back to domcontentloaded so we still capture the rendered DOM.
|
|
66
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: NAV_TIMEOUT_MS });
|
|
67
|
+
}
|
|
68
|
+
const html = await page.content();
|
|
69
|
+
if (html.length > MAX_RESPONSE_BYTES) {
|
|
70
|
+
throw new Error(`Rendered page exceeds ${MAX_RESPONSE_BYTES / 1024 / 1024} MB limit.`);
|
|
71
|
+
}
|
|
72
|
+
return html;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await context.close();
|
|
76
|
+
scheduleIdleShutdown();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Testing hook: tear down the singleton browser and cancel any pending idle
|
|
81
|
+
* shutdown. Not called from production code.
|
|
82
|
+
*/
|
|
83
|
+
export async function _resetBrowserSingletonForTests() {
|
|
84
|
+
if (idleTimer) {
|
|
85
|
+
clearTimeout(idleTimer);
|
|
86
|
+
idleTimer = null;
|
|
87
|
+
}
|
|
88
|
+
const p = browserPromise;
|
|
89
|
+
browserPromise = null;
|
|
90
|
+
try {
|
|
91
|
+
const browser = await p;
|
|
92
|
+
await browser?.close();
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// ignore
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=fetch-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-browser.js","sourceRoot":"","sources":["../../pipeline/fetch-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,IAAI,cAAc,GAA4B,IAAI,CAAC;AACnD,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,SAAS;QAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,SAAS,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,CAAC,GAAG,cAAc,CAAC;QACzB,cAAc,GAAG,IAAI,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC;YACxB,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;IACH,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACrB,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,yBAAyB,kBAAkB,GAAG,IAAI,GAAG,IAAI,YAAY,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,cAAc,CAAC;IACzB,cAAc,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC;QACxB,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared safety checker instance for the content pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Uses @de-otio/agent-safety-pack for URL blocklist checks,
|
|
5
|
+
* prompt injection detection, and secrets scanning.
|
|
6
|
+
*
|
|
7
|
+
* A single instance is created at module load time so pattern files
|
|
8
|
+
* are only read from disk once per process.
|
|
9
|
+
*/
|
|
10
|
+
import { type SafetyChecker } from '@de-otio/agent-safety-pack';
|
|
11
|
+
export declare const safetyChecker: SafetyChecker;
|
|
12
|
+
//# sourceMappingURL=safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../pipeline/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAUrF,eAAO,MAAM,aAAa,EAAE,aAG1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared safety checker instance for the content pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Uses @de-otio/agent-safety-pack for URL blocklist checks,
|
|
5
|
+
* prompt injection detection, and secrets scanning.
|
|
6
|
+
*
|
|
7
|
+
* A single instance is created at module load time so pattern files
|
|
8
|
+
* are only read from disk once per process.
|
|
9
|
+
*/
|
|
10
|
+
import { dirname, resolve } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
import { createSafetyChecker } from '@de-otio/agent-safety-pack';
|
|
13
|
+
// Resolve the patterns directory from the package's main entry point.
|
|
14
|
+
// The main entry is at {packageRoot}/dist/index.js, so patterns/ is two
|
|
15
|
+
// levels up from that file. Passing patternsDir explicitly avoids a
|
|
16
|
+
// `new Function("return import.meta.url")()` call inside the library
|
|
17
|
+
// that fails under Vite's ESM-to-CJS transform used by vitest.
|
|
18
|
+
const _indexPath = fileURLToPath(import.meta.resolve('@de-otio/agent-safety-pack'));
|
|
19
|
+
const _patternsDir = resolve(dirname(dirname(_indexPath)), 'patterns');
|
|
20
|
+
export const safetyChecker = createSafetyChecker({
|
|
21
|
+
patternsDir: _patternsDir,
|
|
22
|
+
localFeeds: true,
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../pipeline/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAC;AAErF,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,+DAA+D;AAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACpF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAAkB,mBAAmB,CAAC;IAC9D,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC"}
|
package/dist/pipeline/types.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface PipelineConfig {
|
|
|
14
14
|
userAgent: string;
|
|
15
15
|
/** Skip SSRF validation — ONLY for tests against localhost servers */
|
|
16
16
|
_skipSsrfCheck?: boolean;
|
|
17
|
+
/** Skip URL safety check — ONLY for tests against localhost servers */
|
|
18
|
+
_skipSafetyCheck?: boolean;
|
|
17
19
|
}
|
|
18
20
|
/** Extracted content from a URL */
|
|
19
21
|
export interface ExtractedContent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../pipeline/types.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../pipeline/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../pipeline/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../pipeline/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAgQD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,GAC1B,YAAY,EAAE,CAgChB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAa/E"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* All patterns are English-only for now.
|
|
14
14
|
*/
|
|
15
|
+
import { safetyChecker } from './safety.js';
|
|
15
16
|
// ===== Thresholds ==========================================================
|
|
16
17
|
const THIN_CONTENT_LIMIT = 50;
|
|
17
18
|
const SHORT_CONTENT_LIMIT = 200;
|
|
@@ -214,32 +215,6 @@ const MOJIBAKE_RE = /\u00C3[\u00A9\u00A8\u00BC]|\u00E2\u0080[\u0099\u009C\u009D]
|
|
|
214
215
|
const CONTROL_CHAR_RE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
|
|
215
216
|
// --- Zero-width character steganography ------------------------------------
|
|
216
217
|
const ZERO_WIDTH_RE = /[\u200B-\u200F\u202A-\u202F\u2060-\u206F\uFEFF]/g;
|
|
217
|
-
// --- Prompt injection patterns ---------------------------------------------
|
|
218
|
-
const PROMPT_INJECTION_PATTERNS = [
|
|
219
|
-
// Instruction override attempts
|
|
220
|
-
/ignore (?:all )?(?:previous|prior|above|earlier) (?:instructions|prompts|context)/i,
|
|
221
|
-
/disregard (?:all )?(?:previous|prior|above|earlier) (?:instructions|prompts|context)/i,
|
|
222
|
-
/forget (?:all )?(?:previous|prior|above|earlier) (?:instructions|prompts|context)/i,
|
|
223
|
-
/override (?:all )?(?:previous|prior|above|earlier) (?:instructions|prompts|context)/i,
|
|
224
|
-
// System/role impersonation
|
|
225
|
-
/^system\s*:/im,
|
|
226
|
-
/you are now (?:a |an )?(?:new |different )?(?:AI|assistant|bot|agent)/i,
|
|
227
|
-
/your (?:new |real |actual )?(?:role|purpose|instructions?|directive) (?:is|are)\b/i,
|
|
228
|
-
/act(?:ing)? as (?:a |an )?(?:new |different )?\w+ (?:AI|assistant|agent)/i,
|
|
229
|
-
/entering (?:a )?(?:new |special |admin )?mode/i,
|
|
230
|
-
// Delimiter/framing escape
|
|
231
|
-
/<\/system>/i,
|
|
232
|
-
/\[\/INST\]/i,
|
|
233
|
-
/\[INST\]/i,
|
|
234
|
-
/<<\s*SYS\s*>>/i,
|
|
235
|
-
/END_SYSTEM/i,
|
|
236
|
-
/BEGIN_(?:USER|INSTRUCTIONS)/i,
|
|
237
|
-
// Meta-instruction patterns
|
|
238
|
-
/(?:important|critical|urgent)[\s:]+(?:system|security) (?:update|notice|message|override)/i,
|
|
239
|
-
/the (?:above|previous) (?:warning|message|instructions?) (?:is|are|was) (?:outdated|incorrect|old|deprecated)/i,
|
|
240
|
-
/do not (?:mention|reveal|disclose|tell|share) (?:this|these) (?:instructions?|prompt)/i,
|
|
241
|
-
/(?:when|if) (?:the )?(?:user|human) asks?\b.*(?:always|instead|actually)/i,
|
|
242
|
-
];
|
|
243
218
|
// ===== Public API ==========================================================
|
|
244
219
|
/**
|
|
245
220
|
* Validate fetched HTML and its extracted content.
|
|
@@ -274,7 +249,7 @@ export function validateContent(html, extracted) {
|
|
|
274
249
|
checkNavigationOnly(text, issues);
|
|
275
250
|
checkEncodingGarbage(text, issues);
|
|
276
251
|
checkZeroWidthCharacters(text, issues);
|
|
277
|
-
|
|
252
|
+
checkInjectionAndSecrets(text, issues);
|
|
278
253
|
return issues;
|
|
279
254
|
}
|
|
280
255
|
/**
|
|
@@ -292,7 +267,7 @@ export function validateFileContent(extracted) {
|
|
|
292
267
|
checkNavigationOnly(text, issues);
|
|
293
268
|
checkEncodingGarbage(text, issues);
|
|
294
269
|
checkZeroWidthCharacters(text, issues);
|
|
295
|
-
|
|
270
|
+
checkInjectionAndSecrets(text, issues);
|
|
296
271
|
return issues;
|
|
297
272
|
}
|
|
298
273
|
// ===== Tier 1: Pattern matching ============================================
|
|
@@ -601,31 +576,29 @@ function checkZeroWidthCharacters(text, issues) {
|
|
|
601
576
|
});
|
|
602
577
|
}
|
|
603
578
|
}
|
|
604
|
-
function
|
|
605
|
-
const
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
matchedPatterns.push(pattern.source);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
if (matchedPatterns.length === 0)
|
|
612
|
-
return;
|
|
613
|
-
if (matchedPatterns.length >= 3) {
|
|
579
|
+
function checkInjectionAndSecrets(text, issues) {
|
|
580
|
+
const injection = safetyChecker.checkContentInjection(text);
|
|
581
|
+
if (injection.decision !== 'allow') {
|
|
582
|
+
const count = injection.matchCount;
|
|
614
583
|
issues.push({
|
|
615
584
|
severity: 'warning',
|
|
616
585
|
code: 'possible-prompt-injection',
|
|
617
|
-
message:
|
|
618
|
-
|
|
619
|
-
|
|
586
|
+
message: count >= 3
|
|
587
|
+
? `The extracted content matches ${count} prompt-injection patterns ` +
|
|
588
|
+
'(instruction overrides, role impersonation, or delimiter escapes). ' +
|
|
589
|
+
'This content has a high likelihood of containing adversarial text designed to manipulate an AI agent.'
|
|
590
|
+
: 'The extracted content contains text that resembles a prompt-injection attempt ' +
|
|
591
|
+
'(e.g. instruction overrides, system impersonation, or delimiter escapes). ' +
|
|
592
|
+
'The content was stored but may contain adversarial text.',
|
|
620
593
|
});
|
|
621
594
|
}
|
|
622
|
-
|
|
595
|
+
const secrets = safetyChecker.checkContentSecrets(text);
|
|
596
|
+
if (secrets.decision !== 'allow') {
|
|
623
597
|
issues.push({
|
|
624
598
|
severity: 'warning',
|
|
625
|
-
code: 'possible-
|
|
626
|
-
message: 'The extracted content
|
|
627
|
-
'
|
|
628
|
-
'The content was stored but may contain adversarial text.',
|
|
599
|
+
code: 'possible-credentials',
|
|
600
|
+
message: 'The extracted content appears to contain credentials or secret keys. ' +
|
|
601
|
+
'Review before using this content with any external services.',
|
|
629
602
|
});
|
|
630
603
|
}
|
|
631
604
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../pipeline/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../pipeline/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAU5C,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,wBAAwB;AACxB,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,qBAAqB;AACrB,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,mBAAmB;AACnB,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,qCAAqC;AACrC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,+EAA+E;AAC/E,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,8EAA8E;AAE9E,8EAA8E;AAE9E,MAAM,uBAAuB,GAAG;IAC9B,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,0BAA0B;IAC1B,+BAA+B;IAC/B,SAAS;IACT,UAAU;IACV,qBAAqB;IACrB,UAAU;IACV,SAAS;IACT,sBAAsB;IACtB,YAAY;IACZ,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,aAAa;IACb,WAAW;IACX,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,0BAA0B;IAC1B,0BAA0B;CAC3B,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,aAAa;IACb,4CAA4C;IAC5C,sCAAsC;IACtC,cAAc;IACd,mBAAmB;IACnB,wBAAwB;IACxB,kBAAkB;IAClB,iDAAiD;IACjD,mEAAmE;IACnE,sDAAsD;IACtD,iDAAiD;CAClD,CAAC;AAEF,8EAA8E;AAE9E,MAAM,qBAAqB,GAAG;IAC5B,cAAc;IACd,YAAY;IACZ,2BAA2B;IAC3B,wBAAwB;IACxB,uBAAuB;IACvB,yCAAyC;IACzC,eAAe;IACf,2BAA2B;IAC3B,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,0BAA0B;CAC3B,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,8BAA8B;IAC9B,8BAA8B;IAC9B,2BAA2B;IAC3B,oCAAoC;IACpC,sEAAsE;CACvE,CAAC;AAEF,8EAA8E;AAE9E,MAAM,iBAAiB,GACrB,uGAAuG,CAAC;AAE1G,MAAM,sBAAsB,GAAG;IAC7B,yCAAyC;IACzC,uEAAuE;IACvE,kIAAkI;IAClI,mDAAmD;IACnD,8BAA8B;IAC9B,qDAAqD;IACrD,kGAAkG;CACnG,CAAC;AAEF,MAAM,gBAAgB,GACpB,gGAAgG,CAAC;AAEnG,8EAA8E;AAE9E,MAAM,mBAAmB,GACvB,0HAA0H,CAAC;AAE7H,MAAM,wBAAwB,GAAG;IAC/B,uJAAuJ;IACvJ,2EAA2E;IAC3E,mBAAmB;IACnB,oBAAoB;CACrB,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,yBAAyB;CAC1B,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC/B,wBAAwB;IACxB,gEAAgE;IAChE,aAAa;CACd,CAAC;AAEF,8EAA8E;AAE9E,MAAM,yBAAyB,GAAG;IAChC,kFAAkF;IAClF,mEAAmE;IACnE,iEAAiE;IACjE,qBAAqB;IACrB,wBAAwB;IACxB,uDAAuD;CACxD,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,cAAc;CACf,CAAC;AAEF,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG;IAC3B,iBAAiB;IACjB,qCAAqC;IACrC,iDAAiD;IACjD,uCAAuC;IACvC,+DAA+D;IAC/D,yBAAyB;CAC1B,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,wFAAwF;IACxF,kDAAkD;CACnD,CAAC;AAEF,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG;IACvB,wCAAwC;IACxC,kDAAkD;IAClD,0CAA0C;IAC1C,+BAA+B;IAC/B,eAAe;IACf,kBAAkB;IAClB,6BAA6B;IAC7B,mHAAmH;IACnH,gCAAgC;IAChC,8GAA8G;IAC9G,qDAAqD;IACrD,qDAAqD;IACrD,kCAAkC;CACnC,CAAC;AAEF,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG;IAC7B,8DAA8D;IAC9D,uEAAuE;IACvE,mCAAmC;IACnC,6CAA6C;CAC9C,CAAC;AAEF,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEhF,8EAA8E;AAE9E,MAAM,+BAA+B,GAAG;IACtC,0EAA0E;IAC1E,mCAAmC;IACnC,oGAAoG;IACpG,qFAAqF;IACrF,mDAAmD;CACpD,CAAC;AAEF,MAAM,+BAA+B,GAAG;IACtC,0DAA0D;IAC1D,kBAAkB;CACnB,CAAC;AAEF,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG;IAC1B,UAAU;IACV,SAAS;IACT,4BAA4B;IAC5B,cAAc;IACd,iCAAiC;CAClC,CAAC;AAEF,8EAA8E;AAE9E,MAAM,UAAU,GACd,8HAA8H,CAAC;AAEjI,8EAA8E;AAE9E,MAAM,WAAW,GAAG,oFAAoF,CAAC;AACzG,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAE5D,8EAA8E;AAE9E,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAGzE,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,SAA2B;IAE3B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC/B,oDAAoD;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvF,4EAA4E;IAC5E,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,4EAA4E;IAC5E,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEzC,4EAA4E;IAC5E,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3B,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA2B;IAC7D,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAE/B,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACzE,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,aAAa;YACnB,OAAO,EACL,+DAA+D;gBAC/D,qCAAqC;SACxC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,aAAa;YACnB,OAAO,EACL,mEAAmE;gBACnE,qCAAqC;SACxC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACtE,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,SAAS;YACf,OAAO,EACL,0CAA0C;gBAC1C,8DAA8D;SACjE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACtE,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oEAAoE;SAC9E,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAsB,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oEAAoE;SAC9E,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACxE,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAsB;IAChE,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IAChF,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EACL,qEAAqE;gBACrE,2CAA2C;SAC9C,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EACL,qEAAqE;gBACrE,2CAA2C;SAC9C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,SAAS,uBAAuB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,IAAI,OAAO,GAAG,uBAAuB;QAAE,OAAO;IAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAEpC,IAAI,KAAK,GAAG,qBAAqB,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EACL,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC;gBACrE,IAAI,IAAI,CAAC,MAAM,eAAe,OAAO,mBAAmB;gBACxD,8EAA8E;SACjF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,GAAG,uBAAuB,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EACL,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC;gBACtE,sDAAsD;SACzD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IAC5E,IAAI,IAAI,CAAC,MAAM,IAAI,wBAAwB;QAAE,OAAO;IACpD,kDAAkD;IAClD,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IAC5D,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,YAAY;YAClB,OAAO,EACL,mEAAmE;SACtE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,MAAsB;IAClE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EACL,8FAA8F;SACjG,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAsB;IAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,cAAc;YACpB,OAAO,EACL,6BAA6B,IAAI,CAAC,MAAM,gDAAgD;gBACxF,wEAAwE;SAC3E,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,MAAsB;IAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,eAAe;YACrB,OAAO,EACL,6BAA6B,IAAI,CAAC,MAAM,eAAe;gBACvD,mEAAmE;SACtE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,MAAsB;IACxD,IAAI,IAAI,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO;IACjD,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EACL,2FAA2F;gBAC3F,uCAAuC;SAC1C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IACnF,IAAI,IAAI,CAAC,MAAM,IAAI,sBAAsB;QAAE,OAAO;IAClD,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EACL,mDAAmD;gBACnD,kDAAkD;SACrD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB;IAC/E,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,2EAA2E;SACrF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,+BAA+B,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,2EAA2E;SACrF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,MAAsB;IAClE,MAAM,SAAS,GAAG,IAAI;SACnB,KAAK,CAAC,WAAW,CAAC;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,IAAI,SAAS,CAAC,MAAM,GAAG,4BAA4B;QAAE,OAAO;IAE5D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhD,IAAI,WAAW,GAAG,uBAAuB,IAAI,UAAU,GAAG,oBAAoB,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EACL,sEAAsE;gBACtE,mEAAmE;SACtE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAsB;IAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,sBAAsB;QAAE,OAAO;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAE7B,wEAAwE;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACxD,CAAC,MAAM,CAAC;IAET,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EACL,6EAA6E;gBAC7E,mBAAmB;SACtB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAsB;IAChE,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EACL,2EAA2E;gBAC3E,2CAA2C;SAC9C,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7D,IAAI,aAAa,IAAI,wBAAwB,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EACL,uEAAuE;oBACvE,uCAAuC;aAC1C,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EACL,+DAA+D;gBAC/D,8CAA8C;SACjD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,MAAsB;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EACL,kCAAkC,OAAO,CAAC,MAAM,+CAA+C;gBAC/F,0DAA0D;SAC7D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,MAAsB;IACpE,MAAM,SAAS,GAAG,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EACL,KAAK,IAAI,CAAC;gBACR,CAAC,CAAC,iCAAiC,KAAK,6BAA6B;oBACnE,qEAAqE;oBACrE,uGAAuG;gBACzG,CAAC,CAAC,gFAAgF;oBAChF,4EAA4E;oBAC5E,0DAA0D;SACjE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACL,uEAAuE;gBACvE,8DAA8D;SACjE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@de-otio/chaoskb-client",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "ChaosKB - E2E encrypted personal knowledge base with MCP integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -45,6 +45,9 @@
|
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
+
"@de-otio/agent-safety-pack": "^0.1.1",
|
|
49
|
+
"@de-otio/crypto-envelope": "^0.2.0-alpha.1",
|
|
50
|
+
"@de-otio/keyring": "^0.1.0-alpha.1",
|
|
48
51
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
49
52
|
"@mozilla/readability": "^0.6.0",
|
|
50
53
|
"@noble/ciphers": "^2.1.1",
|
|
@@ -59,6 +62,7 @@
|
|
|
59
62
|
"mammoth": "^1.12.0",
|
|
60
63
|
"onnxruntime-node": "^1.24.3",
|
|
61
64
|
"pdf-parse": "^2.4.5",
|
|
65
|
+
"playwright": "^1.48.0",
|
|
62
66
|
"sodium-native": "^5.1.0",
|
|
63
67
|
"sshpk": "^1.18.0"
|
|
64
68
|
},
|
package/dist/crypto/argon2.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ISecureBuffer } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Derive a master key from a passphrase using Argon2id.
|
|
4
|
-
* The passphrase is held in a SecureBuffer and zeroed after derivation.
|
|
5
|
-
*
|
|
6
|
-
* @param passphrase - User passphrase
|
|
7
|
-
* @param salt - 16-byte salt (CSPRNG-generated, stored on server)
|
|
8
|
-
* @returns SecureBuffer containing the 32-byte derived key
|
|
9
|
-
*/
|
|
10
|
-
export declare function deriveFromPassphrase(passphrase: string, salt: Uint8Array): ISecureBuffer;
|
|
11
|
-
//# sourceMappingURL=argon2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["../../crypto/argon2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,CAiBxF"}
|
package/dist/crypto/argon2.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { argon2id } from '@noble/hashes/argon2.js';
|
|
2
|
-
import { SecureBuffer } from './secure-buffer.js';
|
|
3
|
-
// Argon2id parameters per spec: t=3, m=65536 (64MB), p=1, output 32 bytes
|
|
4
|
-
const ARGON2_TIME_COST = 3;
|
|
5
|
-
const ARGON2_MEMORY_COST = 65536; // in KiB = 64 MB
|
|
6
|
-
const ARGON2_PARALLELISM = 1;
|
|
7
|
-
const ARGON2_OUTPUT_LENGTH = 32;
|
|
8
|
-
/**
|
|
9
|
-
* Derive a master key from a passphrase using Argon2id.
|
|
10
|
-
* The passphrase is held in a SecureBuffer and zeroed after derivation.
|
|
11
|
-
*
|
|
12
|
-
* @param passphrase - User passphrase
|
|
13
|
-
* @param salt - 16-byte salt (CSPRNG-generated, stored on server)
|
|
14
|
-
* @returns SecureBuffer containing the 32-byte derived key
|
|
15
|
-
*/
|
|
16
|
-
export function deriveFromPassphrase(passphrase, salt) {
|
|
17
|
-
// Convert passphrase to bytes and hold in a buffer we can zero
|
|
18
|
-
const passphraseBytes = Buffer.from(passphrase, 'utf-8');
|
|
19
|
-
try {
|
|
20
|
-
const derived = argon2id(passphraseBytes, salt, {
|
|
21
|
-
t: ARGON2_TIME_COST,
|
|
22
|
-
m: ARGON2_MEMORY_COST,
|
|
23
|
-
p: ARGON2_PARALLELISM,
|
|
24
|
-
dkLen: ARGON2_OUTPUT_LENGTH,
|
|
25
|
-
});
|
|
26
|
-
return SecureBuffer.from(Buffer.from(derived));
|
|
27
|
-
}
|
|
28
|
-
finally {
|
|
29
|
-
// Zero passphrase memory immediately
|
|
30
|
-
passphraseBytes.fill(0);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=argon2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"argon2.js","sourceRoot":"","sources":["../../crypto/argon2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,iBAAiB;AACnD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,IAAgB;IACvE,+DAA+D;IAC/D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE;YAC9C,CAAC,EAAE,gBAAgB;YACnB,CAAC,EAAE,kBAAkB;YACrB,CAAC,EAAE,kBAAkB;YACrB,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;YAAS,CAAC;QACT,qCAAqC;QACrC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
package/dist/crypto/invite.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { SSHKeyInfo } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Create an encrypted invite blob for sharing a project key.
|
|
4
|
-
*
|
|
5
|
-
* Uses ephemeral X25519 ECDH + HKDF (with domain separation) + XChaCha20-Poly1305.
|
|
6
|
-
* The sender's and recipient's fingerprints and the project ID are bound into the
|
|
7
|
-
* HKDF info string to prevent cross-context key confusion.
|
|
8
|
-
*
|
|
9
|
-
* Output format: ephemeral_public_key(32) || nonce(24) || ciphertext || tag(16)
|
|
10
|
-
*/
|
|
11
|
-
export declare function createInviteBlob(projectKey: Uint8Array, projectId: string, senderKeyInfo: SSHKeyInfo, recipientKeyInfo: SSHKeyInfo): Uint8Array;
|
|
12
|
-
/**
|
|
13
|
-
* Open an encrypted invite blob to recover the project key.
|
|
14
|
-
*
|
|
15
|
-
* @param blob - The full invite blob (ephemeral_pk || nonce || ciphertext || tag)
|
|
16
|
-
* @param recipientEd25519Sk - The recipient's 64-byte Ed25519 secret key
|
|
17
|
-
* @param recipientKeyInfo - The recipient's SSH key info (for fingerprint)
|
|
18
|
-
* @param senderKeyInfo - The sender's SSH key info (for fingerprint)
|
|
19
|
-
* @param projectId - The project ID (for HKDF domain separation)
|
|
20
|
-
* @returns The raw project key bytes
|
|
21
|
-
*/
|
|
22
|
-
export declare function openInviteBlob(blob: Uint8Array, recipientEd25519Sk: Uint8Array, recipientKeyInfo: SSHKeyInfo, senderKeyInfo: SSHKeyInfo, projectId: string): Uint8Array;
|
|
23
|
-
/**
|
|
24
|
-
* Pad payload to a fixed size to prevent metadata leakage from blob sizes.
|
|
25
|
-
*/
|
|
26
|
-
export declare function padPayload(payload: Uint8Array, targetSize: number): Uint8Array;
|
|
27
|
-
/**
|
|
28
|
-
* Remove padding to recover the original payload.
|
|
29
|
-
*/
|
|
30
|
-
export declare function unpadPayload(padded: Uint8Array): Uint8Array;
|
|
31
|
-
//# sourceMappingURL=invite.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../crypto/invite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,UAAU,GAC3B,UAAU,CA4CZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,UAAU,EAC9B,gBAAgB,EAAE,UAAU,EAC5B,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,MAAM,GAChB,UAAU,CAkCZ;AAeD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAgB9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAS3D"}
|
package/dist/crypto/invite.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { createHash, randomBytes } from 'node:crypto';
|
|
2
|
-
import sodium from 'sodium-native';
|
|
3
|
-
// sodium-native types are incomplete — these functions exist at runtime
|
|
4
|
-
const sodiumAny = sodium;
|
|
5
|
-
import { aeadEncrypt, aeadDecrypt } from './aead.js';
|
|
6
|
-
import { deriveKey } from './hkdf.js';
|
|
7
|
-
import { ed25519ToX25519PublicKey, ed25519ToX25519SecretKey } from './ssh-keys.js';
|
|
8
|
-
const PADDED_PAYLOAD_SIZE = 512;
|
|
9
|
-
/**
|
|
10
|
-
* Create an encrypted invite blob for sharing a project key.
|
|
11
|
-
*
|
|
12
|
-
* Uses ephemeral X25519 ECDH + HKDF (with domain separation) + XChaCha20-Poly1305.
|
|
13
|
-
* The sender's and recipient's fingerprints and the project ID are bound into the
|
|
14
|
-
* HKDF info string to prevent cross-context key confusion.
|
|
15
|
-
*
|
|
16
|
-
* Output format: ephemeral_public_key(32) || nonce(24) || ciphertext || tag(16)
|
|
17
|
-
*/
|
|
18
|
-
export function createInviteBlob(projectKey, projectId, senderKeyInfo, recipientKeyInfo) {
|
|
19
|
-
if (recipientKeyInfo.type !== 'ed25519') {
|
|
20
|
-
throw new Error('Invite crypto currently supports Ed25519 recipients only');
|
|
21
|
-
}
|
|
22
|
-
// Generate ephemeral X25519 key pair
|
|
23
|
-
const ephPk = Buffer.alloc(sodium.crypto_box_PUBLICKEYBYTES);
|
|
24
|
-
const ephSk = Buffer.alloc(sodium.crypto_box_SECRETKEYBYTES);
|
|
25
|
-
sodiumAny.crypto_box_keypair(ephPk, ephSk);
|
|
26
|
-
// Convert recipient Ed25519 public key to X25519
|
|
27
|
-
const recipientX25519Pk = ed25519ToX25519PublicKey(recipientKeyInfo.publicKeyBytes);
|
|
28
|
-
// ECDH: shared_secret = X25519(ephemeral_secret, recipient_x25519_public)
|
|
29
|
-
const sharedSecret = Buffer.alloc(sodiumAny.crypto_scalarmult_BYTES);
|
|
30
|
-
sodiumAny.crypto_scalarmult(sharedSecret, ephSk, Buffer.from(recipientX25519Pk));
|
|
31
|
-
// Derive encryption key with domain separation
|
|
32
|
-
const info = buildInviteHkdfInfo(senderKeyInfo.fingerprint, recipientKeyInfo.fingerprint, projectId);
|
|
33
|
-
const encryptionKey = deriveKey(new Uint8Array(sharedSecret), info);
|
|
34
|
-
// Pad and encrypt payload
|
|
35
|
-
const payload = JSON.stringify({
|
|
36
|
-
projectKey: Buffer.from(projectKey).toString('base64'),
|
|
37
|
-
projectId,
|
|
38
|
-
});
|
|
39
|
-
const padded = padPayload(new TextEncoder().encode(payload), PADDED_PAYLOAD_SIZE);
|
|
40
|
-
const emptyAAD = new Uint8Array(0);
|
|
41
|
-
const { nonce, ciphertext, tag } = aeadEncrypt(encryptionKey, padded, emptyAAD);
|
|
42
|
-
// Zero sensitive buffers
|
|
43
|
-
ephSk.fill(0);
|
|
44
|
-
sharedSecret.fill(0);
|
|
45
|
-
encryptionKey.fill(0);
|
|
46
|
-
// Output: ephemeral_pk(32) || nonce(24) || ciphertext || tag(16)
|
|
47
|
-
const result = new Uint8Array(ephPk.length + nonce.length + ciphertext.length + tag.length);
|
|
48
|
-
let offset = 0;
|
|
49
|
-
result.set(ephPk, offset);
|
|
50
|
-
offset += ephPk.length;
|
|
51
|
-
result.set(nonce, offset);
|
|
52
|
-
offset += nonce.length;
|
|
53
|
-
result.set(ciphertext, offset);
|
|
54
|
-
offset += ciphertext.length;
|
|
55
|
-
result.set(tag, offset);
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Open an encrypted invite blob to recover the project key.
|
|
60
|
-
*
|
|
61
|
-
* @param blob - The full invite blob (ephemeral_pk || nonce || ciphertext || tag)
|
|
62
|
-
* @param recipientEd25519Sk - The recipient's 64-byte Ed25519 secret key
|
|
63
|
-
* @param recipientKeyInfo - The recipient's SSH key info (for fingerprint)
|
|
64
|
-
* @param senderKeyInfo - The sender's SSH key info (for fingerprint)
|
|
65
|
-
* @param projectId - The project ID (for HKDF domain separation)
|
|
66
|
-
* @returns The raw project key bytes
|
|
67
|
-
*/
|
|
68
|
-
export function openInviteBlob(blob, recipientEd25519Sk, recipientKeyInfo, senderKeyInfo, projectId) {
|
|
69
|
-
// Parse the blob
|
|
70
|
-
let offset = 0;
|
|
71
|
-
const ephPk = blob.slice(offset, offset + 32);
|
|
72
|
-
offset += 32;
|
|
73
|
-
const nonce = blob.slice(offset, offset + 24);
|
|
74
|
-
offset += 24;
|
|
75
|
-
const tagStart = blob.length - 16;
|
|
76
|
-
const ciphertext = blob.slice(offset, tagStart);
|
|
77
|
-
const tag = blob.slice(tagStart);
|
|
78
|
-
// Convert recipient Ed25519 secret key to X25519
|
|
79
|
-
const recipientX25519Sk = ed25519ToX25519SecretKey(recipientEd25519Sk);
|
|
80
|
-
// ECDH: shared_secret = X25519(recipient_x25519_secret, ephemeral_public)
|
|
81
|
-
const sharedSecret = Buffer.alloc(sodiumAny.crypto_scalarmult_BYTES);
|
|
82
|
-
sodiumAny.crypto_scalarmult(sharedSecret, Buffer.from(recipientX25519Sk), Buffer.from(ephPk));
|
|
83
|
-
// Derive same encryption key
|
|
84
|
-
const info = buildInviteHkdfInfo(senderKeyInfo.fingerprint, recipientKeyInfo.fingerprint, projectId);
|
|
85
|
-
const encryptionKey = deriveKey(new Uint8Array(sharedSecret), info);
|
|
86
|
-
// Decrypt
|
|
87
|
-
const emptyAAD = new Uint8Array(0);
|
|
88
|
-
const padded = aeadDecrypt(encryptionKey, nonce, ciphertext, tag, emptyAAD);
|
|
89
|
-
// Zero sensitive buffers
|
|
90
|
-
const skBuf = Buffer.from(recipientX25519Sk);
|
|
91
|
-
skBuf.fill(0);
|
|
92
|
-
sharedSecret.fill(0);
|
|
93
|
-
encryptionKey.fill(0);
|
|
94
|
-
// Unpad and extract project key
|
|
95
|
-
const payload = unpadPayload(padded);
|
|
96
|
-
const parsed = JSON.parse(new TextDecoder().decode(payload));
|
|
97
|
-
return Buffer.from(parsed.projectKey, 'base64');
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Build the HKDF info string with domain separation.
|
|
101
|
-
*
|
|
102
|
-
* Format: "chaoskb-invite-v1" || SHA256(senderFingerprint)(32) || SHA256(recipientFingerprint)(32) || SHA256(projectId)(32)
|
|
103
|
-
* Fixed-width encoding prevents ambiguity from variable-length fields.
|
|
104
|
-
*/
|
|
105
|
-
function buildInviteHkdfInfo(senderFingerprint, recipientFingerprint, projectId) {
|
|
106
|
-
const senderHash = createHash('sha256').update(senderFingerprint).digest('hex').slice(0, 64);
|
|
107
|
-
const recipientHash = createHash('sha256').update(recipientFingerprint).digest('hex').slice(0, 64);
|
|
108
|
-
const projectHash = createHash('sha256').update(projectId).digest('hex').slice(0, 64);
|
|
109
|
-
return `chaoskb-invite-v1${senderHash}${recipientHash}${projectHash}`;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Pad payload to a fixed size to prevent metadata leakage from blob sizes.
|
|
113
|
-
*/
|
|
114
|
-
export function padPayload(payload, targetSize) {
|
|
115
|
-
if (payload.length > targetSize - 4) {
|
|
116
|
-
throw new Error(`Payload too large to pad: ${payload.length} bytes (max ${targetSize - 4})`);
|
|
117
|
-
}
|
|
118
|
-
const padded = new Uint8Array(targetSize);
|
|
119
|
-
// First 4 bytes: big-endian payload length
|
|
120
|
-
const view = new DataView(padded.buffer);
|
|
121
|
-
view.setUint32(0, payload.length, false);
|
|
122
|
-
padded.set(payload, 4);
|
|
123
|
-
// Fill remainder with random bytes
|
|
124
|
-
const randomPadding = randomBytes(targetSize - 4 - payload.length);
|
|
125
|
-
padded.set(randomPadding, 4 + payload.length);
|
|
126
|
-
return padded;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Remove padding to recover the original payload.
|
|
130
|
-
*/
|
|
131
|
-
export function unpadPayload(padded) {
|
|
132
|
-
const view = new DataView(padded.buffer, padded.byteOffset, padded.byteLength);
|
|
133
|
-
const length = view.getUint32(0, false);
|
|
134
|
-
if (length > padded.length - 4) {
|
|
135
|
-
throw new Error('Invalid padding: declared length exceeds buffer');
|
|
136
|
-
}
|
|
137
|
-
return padded.slice(4, 4 + length);
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=invite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../../crypto/invite.ts"],"names":[],"mappings":"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"}
|