@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.
Files changed (134) hide show
  1. package/dist/cli/bootstrap.d.ts +11 -3
  2. package/dist/cli/bootstrap.d.ts.map +1 -1
  3. package/dist/cli/bootstrap.js +181 -126
  4. package/dist/cli/bootstrap.js.map +1 -1
  5. package/dist/cli/commands/config.d.ts +7 -4
  6. package/dist/cli/commands/config.d.ts.map +1 -1
  7. package/dist/cli/commands/config.js +161 -134
  8. package/dist/cli/commands/config.js.map +1 -1
  9. package/dist/cli/commands/devices.d.ts.map +1 -1
  10. package/dist/cli/commands/devices.js +58 -33
  11. package/dist/cli/commands/devices.js.map +1 -1
  12. package/dist/cli/commands/export.d.ts.map +1 -1
  13. package/dist/cli/commands/export.js +6 -9
  14. package/dist/cli/commands/export.js.map +1 -1
  15. package/dist/cli/commands/import.js +1 -1
  16. package/dist/cli/commands/import.js.map +1 -1
  17. package/dist/cli/commands/projects.d.ts.map +1 -1
  18. package/dist/cli/commands/projects.js +33 -10
  19. package/dist/cli/commands/projects.js.map +1 -1
  20. package/dist/cli/commands/rotate-key.d.ts +3 -3
  21. package/dist/cli/commands/rotate-key.d.ts.map +1 -1
  22. package/dist/cli/commands/rotate-key.js +88 -35
  23. package/dist/cli/commands/rotate-key.js.map +1 -1
  24. package/dist/cli/commands/setup-sync.d.ts.map +1 -1
  25. package/dist/cli/commands/setup-sync.js +22 -4
  26. package/dist/cli/commands/setup-sync.js.map +1 -1
  27. package/dist/cli/mcp-server.d.ts.map +1 -1
  28. package/dist/cli/mcp-server.js +90 -42
  29. package/dist/cli/mcp-server.js.map +1 -1
  30. package/dist/crypto/aad.d.ts +2 -5
  31. package/dist/crypto/aad.d.ts.map +1 -1
  32. package/dist/crypto/aad.js +2 -8
  33. package/dist/crypto/aad.js.map +1 -1
  34. package/dist/crypto/aead.d.ts +8 -16
  35. package/dist/crypto/aead.d.ts.map +1 -1
  36. package/dist/crypto/aead.js +10 -36
  37. package/dist/crypto/aead.js.map +1 -1
  38. package/dist/crypto/blob-id.d.ts +2 -3
  39. package/dist/crypto/blob-id.d.ts.map +1 -1
  40. package/dist/crypto/blob-id.js +2 -30
  41. package/dist/crypto/blob-id.js.map +1 -1
  42. package/dist/crypto/canonical-json.d.ts +5 -3
  43. package/dist/crypto/canonical-json.d.ts.map +1 -1
  44. package/dist/crypto/canonical-json.js +5 -85
  45. package/dist/crypto/canonical-json.js.map +1 -1
  46. package/dist/crypto/commitment.d.ts +3 -9
  47. package/dist/crypto/commitment.d.ts.map +1 -1
  48. package/dist/crypto/commitment.js +3 -27
  49. package/dist/crypto/commitment.js.map +1 -1
  50. package/dist/crypto/encryption-service.d.ts +3 -0
  51. package/dist/crypto/encryption-service.d.ts.map +1 -1
  52. package/dist/crypto/encryption-service.js +10 -6
  53. package/dist/crypto/encryption-service.js.map +1 -1
  54. package/dist/crypto/envelope-cbor.d.ts +4 -34
  55. package/dist/crypto/envelope-cbor.d.ts.map +1 -1
  56. package/dist/crypto/envelope-cbor.js +4 -121
  57. package/dist/crypto/envelope-cbor.js.map +1 -1
  58. package/dist/crypto/envelope.d.ts +1 -31
  59. package/dist/crypto/envelope.d.ts.map +1 -1
  60. package/dist/crypto/envelope.js +31 -137
  61. package/dist/crypto/envelope.js.map +1 -1
  62. package/dist/crypto/hkdf.d.ts +7 -11
  63. package/dist/crypto/hkdf.d.ts.map +1 -1
  64. package/dist/crypto/hkdf.js +9 -18
  65. package/dist/crypto/hkdf.js.map +1 -1
  66. package/dist/crypto/index.d.ts +9 -4
  67. package/dist/crypto/index.d.ts.map +1 -1
  68. package/dist/crypto/index.js +9 -4
  69. package/dist/crypto/index.js.map +1 -1
  70. package/dist/crypto/ssh-keys.d.ts +17 -10
  71. package/dist/crypto/ssh-keys.d.ts.map +1 -1
  72. package/dist/crypto/ssh-keys.js +28 -108
  73. package/dist/crypto/ssh-keys.js.map +1 -1
  74. package/dist/crypto/types.d.ts +18 -88
  75. package/dist/crypto/types.d.ts.map +1 -1
  76. package/dist/crypto/types.js +3 -0
  77. package/dist/crypto/types.js.map +1 -1
  78. package/dist/pipeline/content-pipeline.d.ts.map +1 -1
  79. package/dist/pipeline/content-pipeline.js +26 -3
  80. package/dist/pipeline/content-pipeline.js.map +1 -1
  81. package/dist/pipeline/extract.d.ts +8 -0
  82. package/dist/pipeline/extract.d.ts.map +1 -1
  83. package/dist/pipeline/extract.js +15 -4
  84. package/dist/pipeline/extract.js.map +1 -1
  85. package/dist/pipeline/fetch-browser.d.ts +29 -0
  86. package/dist/pipeline/fetch-browser.d.ts.map +1 -0
  87. package/dist/pipeline/fetch-browser.js +98 -0
  88. package/dist/pipeline/fetch-browser.js.map +1 -0
  89. package/dist/pipeline/safety.d.ts +12 -0
  90. package/dist/pipeline/safety.d.ts.map +1 -0
  91. package/dist/pipeline/safety.js +24 -0
  92. package/dist/pipeline/safety.js.map +1 -0
  93. package/dist/pipeline/types.d.ts +2 -0
  94. package/dist/pipeline/types.d.ts.map +1 -1
  95. package/dist/pipeline/validate.d.ts.map +1 -1
  96. package/dist/pipeline/validate.js +19 -46
  97. package/dist/pipeline/validate.js.map +1 -1
  98. package/package.json +5 -1
  99. package/dist/crypto/argon2.d.ts +0 -11
  100. package/dist/crypto/argon2.d.ts.map +0 -1
  101. package/dist/crypto/argon2.js +0 -33
  102. package/dist/crypto/argon2.js.map +0 -1
  103. package/dist/crypto/invite.d.ts +0 -31
  104. package/dist/crypto/invite.d.ts.map +0 -1
  105. package/dist/crypto/invite.js +0 -139
  106. package/dist/crypto/invite.js.map +0 -1
  107. package/dist/crypto/keyring.d.ts +0 -37
  108. package/dist/crypto/keyring.d.ts.map +0 -1
  109. package/dist/crypto/keyring.js +0 -219
  110. package/dist/crypto/keyring.js.map +0 -1
  111. package/dist/crypto/known-keys.d.ts +0 -34
  112. package/dist/crypto/known-keys.d.ts.map +0 -1
  113. package/dist/crypto/known-keys.js +0 -114
  114. package/dist/crypto/known-keys.js.map +0 -1
  115. package/dist/crypto/project-keys.d.ts +0 -26
  116. package/dist/crypto/project-keys.d.ts.map +0 -1
  117. package/dist/crypto/project-keys.js +0 -69
  118. package/dist/crypto/project-keys.js.map +0 -1
  119. package/dist/crypto/secure-buffer.d.ts +0 -31
  120. package/dist/crypto/secure-buffer.d.ts.map +0 -1
  121. package/dist/crypto/secure-buffer.js +0 -61
  122. package/dist/crypto/secure-buffer.js.map +0 -1
  123. package/dist/crypto/tiers/enhanced.d.ts +0 -25
  124. package/dist/crypto/tiers/enhanced.d.ts.map +0 -1
  125. package/dist/crypto/tiers/enhanced.js +0 -56
  126. package/dist/crypto/tiers/enhanced.js.map +0 -1
  127. package/dist/crypto/tiers/maximum.d.ts +0 -19
  128. package/dist/crypto/tiers/maximum.d.ts.map +0 -1
  129. package/dist/crypto/tiers/maximum.js +0 -25
  130. package/dist/crypto/tiers/maximum.js.map +0 -1
  131. package/dist/crypto/tiers/standard.d.ts +0 -27
  132. package/dist/crypto/tiers/standard.d.ts.map +0 -1
  133. package/dist/crypto/tiers/standard.js +0 -155
  134. 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"}
@@ -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":"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"}
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;AAInD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AA8RD;;;;;;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"}
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
- checkPromptInjection(text, issues);
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
- checkPromptInjection(text, issues);
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 checkPromptInjection(text, issues) {
605
- const matchedPatterns = [];
606
- for (const pattern of PROMPT_INJECTION_PATTERNS) {
607
- if (pattern.test(text)) {
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: `The extracted content matches ${matchedPatterns.length} prompt-injection patterns ` +
618
- '(instruction overrides, role impersonation, or delimiter escapes). ' +
619
- 'This content has a high likelihood of containing adversarial text designed to manipulate an AI agent.',
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
- else {
595
+ const secrets = safetyChecker.checkContentSecrets(text);
596
+ if (secrets.decision !== 'allow') {
623
597
  issues.push({
624
598
  severity: 'warning',
625
- code: 'possible-prompt-injection',
626
- message: 'The extracted content contains text that resembles a prompt-injection attempt ' +
627
- '(e.g. instruction overrides, system impersonation, or delimiter escapes). ' +
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@de-otio/chaoskb-client",
3
- "version": "0.3.4",
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
  },
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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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"}