@bendyline/docblocks 2.7.5 → 2.7.6

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.
@@ -235,7 +235,37 @@ interface AiChatProgress {
235
235
  readonly outputTokens: number | null;
236
236
  readonly tokensPerSecond: number | null;
237
237
  }
238
+ /** One knowledge catalog that contributed reference passages to a request. */
239
+ interface AiChatKnowledgeSource {
240
+ readonly catalogId: string;
241
+ /** The catalog's display name, or its id when the provider did not name it. */
242
+ readonly name: string;
243
+ /** Distinct titles of the cited articles, best first. */
244
+ readonly titles: readonly string[];
245
+ }
246
+ /**
247
+ * What the person's enabled knowledge catalogs added to one request. A
248
+ * provider sends this at most once, before any text, and only when at least
249
+ * one catalog is enabled.
250
+ */
251
+ type AiChatKnowledge = {
252
+ readonly outcome: 'used';
253
+ readonly sources: readonly AiChatKnowledgeSource[];
254
+ /** The passage texts the model was given, so its output can be checked against them. */
255
+ readonly evidence: readonly string[];
256
+ }
257
+ /** The catalogs were searched and nothing relevant came back. */
258
+ | {
259
+ readonly outcome: 'none';
260
+ }
261
+ /** The catalogs could not be consulted: retrieval failed or the prompt left no room. */
262
+ | {
263
+ readonly outcome: 'skipped';
264
+ };
238
265
  type AiChatEvent = {
266
+ readonly kind: 'knowledge';
267
+ readonly knowledge: AiChatKnowledge;
268
+ } | {
239
269
  readonly kind: 'progress';
240
270
  readonly progress: AiChatProgress;
241
271
  } | {
@@ -248,6 +278,32 @@ type AiChatEvent = {
248
278
  readonly kind: 'error';
249
279
  readonly error: AiError;
250
280
  };
281
+ /** Check AI output for specific details that nothing the model was shown supports. */
282
+ interface AiFactCheckRequest {
283
+ /** The output, as Markdown. */
284
+ readonly text: string;
285
+ /** Reference passages the model was given. */
286
+ readonly evidence: readonly string[];
287
+ /** What the person supplied: their instructions and document. Details found here need no source. */
288
+ readonly given: string;
289
+ }
290
+ interface AiFactCheckSentence {
291
+ /** The sentence, possibly shortened. */
292
+ readonly text: string;
293
+ /** The names, dates, numbers or quotations no source shows. */
294
+ readonly missing: readonly string[];
295
+ /**
296
+ * A missing detail is a year, number, month or quotation. Names alone are a
297
+ * weaker signal: capitalized words are the noisiest part of the check.
298
+ */
299
+ readonly strong: boolean;
300
+ }
301
+ interface AiFactCheck {
302
+ /** Sentences that state something checkable. */
303
+ readonly checked: number;
304
+ /** Sentences stating details no source shows, strongest first. */
305
+ readonly unsourced: readonly AiFactCheckSentence[];
306
+ }
251
307
  interface AiChatHandle {
252
308
  readonly done: Promise<AiResult<AiChatCompletion>>;
253
309
  cancel(): void;
@@ -352,6 +408,11 @@ interface DocBlocksHostAiAPI {
352
408
  models(): Promise<AiResult<readonly AiModelInfo[]>>;
353
409
  /** Catalog models this host can download. Optional for older providers. */
354
410
  availableModels?(): Promise<AiResult<readonly AiModelDownloadInfo[]>>;
411
+ /**
412
+ * Find sentences whose names, dates, numbers or quotations appear in none of
413
+ * the evidence or the person's own text. Mechanical: no model call.
414
+ */
415
+ checkFacts?(request: AiFactCheckRequest): Promise<AiResult<AiFactCheck>>;
355
416
  /** Start a model download from an explicit user gesture. */
356
417
  installModel?(modelId: string, onProgress?: (progress: AiProgress) => void): AiModelInstallHandle;
357
418
  /**
@@ -887,7 +948,10 @@ interface DocBlocksHostShellAPI {
887
948
  revealInFolder?(workspaceId: string, workspacePath?: string): Promise<void>;
888
949
  /** Open a registered workspace root in Finder or the platform file manager. */
889
950
  openWorkspaceFolder?(workspaceId: string): Promise<void>;
890
- /** Open a URL in the default browser. */
951
+ /**
952
+ * Open an HTTP(S) URL in the default browser, or a `mailto:` URL to support
953
+ * in the default mail app. See `parseOpenExternalUrl`.
954
+ */
891
955
  openExternal(url: string): Promise<void>;
892
956
  }
893
957
  /** Native clipboard operations exposed through the trusted host boundary. */
@@ -1276,4 +1340,4 @@ declare function parseHostEnvironment(value: unknown): HostEnvironment | null;
1276
1340
  */
1277
1341
  declare function deriveHostCapabilities(host: unknown): HostCapabilities;
1278
1342
 
1279
- export { type ExternalBinaryCommitResult as $, type AiChatCompletion as A, type AiResult as B, type AiReviewMode as C, type AiSearchHit as D, type AiSearchQuery as E, type AiSearchResult as F, type AiSpeechAudio as G, type AiStatus as H, type AiSynthesizeRequest as I, type AiTranscribeRequest as J, type AiTranscript as K, type AiUnavailableReason as L, type DocBlocksHostAPI as M, type DocBlocksHostAiAPI as N, type DocBlocksHostClipboardAPI as O, type DocBlocksHostExportAPI as P, type DocBlocksHostExternalAPI as Q, type DocBlocksHostFfmpegAPI as R, type DocBlocksHostFsAPI as S, type DocBlocksHostGitAPI as T, type DocBlocksHostLifecycleAPI as U, type DocBlocksHostMenuAPI as V, type DocBlocksHostShellAPI as W, type DocBlocksHostSpeechAPI as X, type DocBlocksHostUpdaterAPI as Y, type DocBlocksHostWorkspacesAPI as Z, type ElectronWorkspaceInfo as _, type AiChatEvent as a, type GitBranchInfo as a0, type GitCapabilities as a1, type GitCloneHandle as a2, type GitCloneProgress as a3, type GitError as a4, type GitErrorCode as a5, type GitFileAtRevision as a6, type GitFileChange as a7, type GitFileStatusCode as a8, type GitLogEntry as a9, type SpeechModelInfo as aA, type SpeechModelKind as aB, type SpeechPreferences as aC, type SpeechPreferencesPatch as aD, type SpeechProgress as aE, type SpeechReadiness as aF, type SpeechReadinessState as aG, type SpeechResult as aH, type SpeechSegment as aI, type SpeechStatus as aJ, type SpeechSynthesisHandle as aK, type SpeechSynthesisSummary as aL, type SpeechSynthesizeEvent as aM, type SpeechSynthesizeRequest as aN, type SpeechTranscribeRequest as aO, type SpeechTranscript as aP, type SpeechVoiceInfo as aQ, type SpeechWordTiming as aR, type UpdateCheckResult as aS, type UpdateInstallResult as aT, type UpdaterStatus as aU, deriveHostCapabilities as aV, parseAiKnowledgeAction as aW, parseAiKnowledgeState as aX, parseHostEnvironment as aY, type GitLogOptions as aa, type GitRemoteInfo as ab, type GitRepoDetection as ac, type GitResult as ad, type GitRevision as ae, type GitStatus as af, HOST_PLATFORMS as ag, HOST_SURFACE_KINDS as ah, type HostCapabilities as ai, type HostCloseReason as aj, type HostEnvironment as ak, type HostExportTargetGrant as al, type HostPinnedDocument as am, type HostPlatform as an, type HostPrepareCloseRequest as ao, type HostPrepareCloseResult as ap, type HostSurfaceKind as aq, type MenuCommand as ar, NO_HOST_CAPABILITIES as as, type OpenRequest as at, type SpeechAudioChunk as au, type SpeechCatalog as av, type SpeechError as aw, type SpeechErrorCode as ax, type SpeechInstallEvent as ay, type SpeechInstallHandle as az, type AiChatHandle as b, type AiChatMessage as c, type AiChatProgress as d, type AiChatPurpose as e, type AiChatRequest as f, type AiConnectionStep as g, type AiEnsureWorkspaceHandle as h, type AiError as i, type AiErrorCode as j, type AiImageRequest as k, type AiImageResult as l, type AiKnowledgeAPI as m, type AiKnowledgeAction as n, type AiKnowledgeCatalog as o, type AiKnowledgeState as p, type AiModelDownloadInfo as q, type AiModelFit as r, type AiModelInfo as s, type AiModelInstallEvent as t, type AiModelInstallHandle as u, type AiPreferences as v, type AiPreferencesPatch as w, type AiProgress as x, type AiProviderInfo as y, type AiResponseFormat as z };
1343
+ export { type DocBlocksHostShellAPI as $, type AiChatCompletion as A, type AiPreferences as B, type AiPreferencesPatch as C, type AiProgress as D, type AiProviderInfo as E, type AiResponseFormat as F, type AiResult as G, type AiReviewMode as H, type AiSearchHit as I, type AiSearchQuery as J, type AiSearchResult as K, type AiSpeechAudio as L, type AiStatus as M, type AiSynthesizeRequest as N, type AiTranscribeRequest as O, type AiTranscript as P, type AiUnavailableReason as Q, type DocBlocksHostAPI as R, type DocBlocksHostAiAPI as S, type DocBlocksHostClipboardAPI as T, type DocBlocksHostExportAPI as U, type DocBlocksHostExternalAPI as V, type DocBlocksHostFfmpegAPI as W, type DocBlocksHostFsAPI as X, type DocBlocksHostGitAPI as Y, type DocBlocksHostLifecycleAPI as Z, type DocBlocksHostMenuAPI as _, type AiChatEvent as a, parseAiKnowledgeAction as a$, type DocBlocksHostSpeechAPI as a0, type DocBlocksHostUpdaterAPI as a1, type DocBlocksHostWorkspacesAPI as a2, type ElectronWorkspaceInfo as a3, type ExternalBinaryCommitResult as a4, type GitBranchInfo as a5, type GitCapabilities as a6, type GitCloneHandle as a7, type GitCloneProgress as a8, type GitError as a9, type SpeechCatalog as aA, type SpeechError as aB, type SpeechErrorCode as aC, type SpeechInstallEvent as aD, type SpeechInstallHandle as aE, type SpeechModelInfo as aF, type SpeechModelKind as aG, type SpeechPreferences as aH, type SpeechPreferencesPatch as aI, type SpeechProgress as aJ, type SpeechReadiness as aK, type SpeechReadinessState as aL, type SpeechResult as aM, type SpeechSegment as aN, type SpeechStatus as aO, type SpeechSynthesisHandle as aP, type SpeechSynthesisSummary as aQ, type SpeechSynthesizeEvent as aR, type SpeechSynthesizeRequest as aS, type SpeechTranscribeRequest as aT, type SpeechTranscript as aU, type SpeechVoiceInfo as aV, type SpeechWordTiming as aW, type UpdateCheckResult as aX, type UpdateInstallResult as aY, type UpdaterStatus as aZ, deriveHostCapabilities as a_, type GitErrorCode as aa, type GitFileAtRevision as ab, type GitFileChange as ac, type GitFileStatusCode as ad, type GitLogEntry as ae, type GitLogOptions as af, type GitRemoteInfo as ag, type GitRepoDetection as ah, type GitResult as ai, type GitRevision as aj, type GitStatus as ak, HOST_PLATFORMS as al, HOST_SURFACE_KINDS as am, type HostCapabilities as an, type HostCloseReason as ao, type HostEnvironment as ap, type HostExportTargetGrant as aq, type HostPinnedDocument as ar, type HostPlatform as as, type HostPrepareCloseRequest as at, type HostPrepareCloseResult as au, type HostSurfaceKind as av, type MenuCommand as aw, NO_HOST_CAPABILITIES as ax, type OpenRequest as ay, type SpeechAudioChunk as az, type AiChatHandle as b, parseAiKnowledgeState as b0, parseHostEnvironment as b1, type AiChatKnowledge as c, type AiChatKnowledgeSource as d, type AiChatMessage as e, type AiChatProgress as f, type AiChatPurpose as g, type AiChatRequest as h, type AiConnectionStep as i, type AiEnsureWorkspaceHandle as j, type AiError as k, type AiErrorCode as l, type AiFactCheck as m, type AiFactCheckRequest as n, type AiFactCheckSentence as o, type AiImageRequest as p, type AiImageResult as q, type AiKnowledgeAPI as r, type AiKnowledgeAction as s, type AiKnowledgeCatalog as t, type AiKnowledgeState as u, type AiModelDownloadInfo as v, type AiModelFit as w, type AiModelInfo as x, type AiModelInstallEvent as y, type AiModelInstallHandle as z };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  FILE_SYSTEM_TRANSFER_LIMITS,
3
3
  maybeGetDocBlocksHost
4
- } from "./chunk-64733GFL.js";
4
+ } from "./chunk-P4VIU7MB.js";
5
5
  import {
6
6
  parseFileSystemCapabilities
7
7
  } from "./chunk-245W57QP.js";
@@ -9,7 +9,7 @@ import {
9
9
  HOST_WIRE_LIMITS,
10
10
  isBoundedBytePayload,
11
11
  isBoundedString
12
- } from "./chunk-46AGYHDY.js";
12
+ } from "./chunk-V5SWLUZY.js";
13
13
  import {
14
14
  isRecord
15
15
  } from "./chunk-73OOROXH.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HostFileSystemProviderV2
3
- } from "./chunk-EFGQUOTL.js";
3
+ } from "./chunk-45XD424D.js";
4
4
  import {
5
5
  ELECTRON_FILE_SYSTEM_V2_CAPABILITIES,
6
6
  maybeGetDocBlocksHost
7
- } from "./chunk-64733GFL.js";
7
+ } from "./chunk-P4VIU7MB.js";
8
8
 
9
9
  // src/filesystem/electron-provider-v2.ts
10
10
  var ElectronFileSystemProviderV2 = class extends HostFileSystemProviderV2 {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOST_WIRE_LIMITS,
3
3
  isBoundedString
4
- } from "./chunk-46AGYHDY.js";
4
+ } from "./chunk-V5SWLUZY.js";
5
5
 
6
6
  // src/host/capabilities.ts
7
7
  var HOST_SURFACE_KINDS = Object.freeze([
@@ -149,6 +149,24 @@ var AI_WIRE_LIMITS = Object.freeze({
149
149
  responseSchemaCharacters: 16 * 1024,
150
150
  verificationCodeCharacters: 16,
151
151
  progressPhaseCharacters: 64,
152
+ /** Catalogs, and titles per catalog, one request can cite; Gezel sends at most 8 passages. */
153
+ knowledgeSources: 8,
154
+ knowledgeTitles: 8,
155
+ knowledgeTitleCharacters: 256,
156
+ /** Passage texts sent with a knowledge report; Gezel caps a retrieval at 24,000 characters. */
157
+ knowledgeEvidence: 8,
158
+ knowledgeEvidenceCharacters: 24 * 1024,
159
+ /**
160
+ * A fact check reads one draft against every passage its run was given. It
161
+ * runs synchronously in the host; at these bounds it takes tens of ms.
162
+ */
163
+ factCheckTextCharacters: 64 * 1024,
164
+ factCheckEvidence: 64,
165
+ factCheckEvidenceCharacters: 128 * 1024,
166
+ factCheckGivenCharacters: 128 * 1024,
167
+ factCheckSentences: 50,
168
+ factCheckSentenceCharacters: 1e3,
169
+ factCheckDetails: 16,
152
170
  modelEntries: 200,
153
171
  contextWindowCeiling: 8e6,
154
172
  downloadBytesCeiling: Number.MAX_SAFE_INTEGER
@@ -449,8 +467,105 @@ function parseAiChatProgress(value) {
449
467
  tokensPerSecond: value.tokensPerSecond
450
468
  };
451
469
  }
470
+ function parseAiChatKnowledgeSource(value) {
471
+ if (!isRecord2(value) || !hasExactKeys(value, ["catalogId", "name", "titles"])) return null;
472
+ if (!isBoundedString(value.catalogId, HOST_WIRE_LIMITS.identifierCharacters, 1)) return null;
473
+ if (!isBoundedString(value.name, HOST_WIRE_LIMITS.labelCharacters, 1)) return null;
474
+ if (!Array.isArray(value.titles) || value.titles.length > AI_WIRE_LIMITS.knowledgeTitles) {
475
+ return null;
476
+ }
477
+ const titles = [];
478
+ for (const title of value.titles) {
479
+ if (!isBoundedString(title, AI_WIRE_LIMITS.knowledgeTitleCharacters, 1)) return null;
480
+ titles.push(title);
481
+ }
482
+ return { catalogId: value.catalogId, name: value.name, titles };
483
+ }
484
+ function parseAiChatKnowledge(value) {
485
+ if (!isRecord2(value)) return null;
486
+ if (value.outcome === "none" || value.outcome === "skipped") {
487
+ return hasExactKeys(value, ["outcome"]) ? { outcome: value.outcome } : null;
488
+ }
489
+ if (value.outcome !== "used" || !hasExactKeys(value, ["outcome", "sources", "evidence"])) {
490
+ return null;
491
+ }
492
+ const evidence = parseTextList(
493
+ value.evidence,
494
+ AI_WIRE_LIMITS.knowledgeEvidence,
495
+ AI_WIRE_LIMITS.knowledgeEvidenceCharacters
496
+ );
497
+ if (!evidence || evidence.length === 0) return null;
498
+ if (!Array.isArray(value.sources) || value.sources.length === 0 || value.sources.length > AI_WIRE_LIMITS.knowledgeSources) {
499
+ return null;
500
+ }
501
+ const sources = [];
502
+ const ids = /* @__PURE__ */ new Set();
503
+ for (const entry of value.sources) {
504
+ const source = parseAiChatKnowledgeSource(entry);
505
+ if (!source || ids.has(source.catalogId)) return null;
506
+ ids.add(source.catalogId);
507
+ sources.push(source);
508
+ }
509
+ return { outcome: "used", sources, evidence };
510
+ }
511
+ function parseTextList(value, entries, characters) {
512
+ if (!Array.isArray(value) || value.length > entries) return null;
513
+ let total = 0;
514
+ const texts = [];
515
+ for (const text of value) {
516
+ if (!isBoundedString(text, characters, 1)) return null;
517
+ total += text.length;
518
+ if (total > characters) return null;
519
+ texts.push(text);
520
+ }
521
+ return texts;
522
+ }
523
+ function parseAiFactCheckRequest(value) {
524
+ if (!isRecord2(value) || !hasExactKeys(value, ["text", "evidence", "given"])) return null;
525
+ if (!isBoundedString(value.text, AI_WIRE_LIMITS.factCheckTextCharacters)) return null;
526
+ if (!isBoundedString(value.given, AI_WIRE_LIMITS.factCheckGivenCharacters)) return null;
527
+ const evidence = parseTextList(
528
+ value.evidence,
529
+ AI_WIRE_LIMITS.factCheckEvidence,
530
+ AI_WIRE_LIMITS.factCheckEvidenceCharacters
531
+ );
532
+ return evidence ? { text: value.text, evidence, given: value.given } : null;
533
+ }
534
+ function parseAiFactCheckSentence(value) {
535
+ if (!isRecord2(value) || !hasExactKeys(value, ["text", "missing", "strong"])) return null;
536
+ if (!isBoundedString(value.text, AI_WIRE_LIMITS.factCheckSentenceCharacters, 1)) return null;
537
+ if (typeof value.strong !== "boolean") return null;
538
+ if (!Array.isArray(value.missing) || value.missing.length > AI_WIRE_LIMITS.factCheckDetails) {
539
+ return null;
540
+ }
541
+ const missing = [];
542
+ for (const detail of value.missing) {
543
+ if (!isBoundedString(detail, AI_WIRE_LIMITS.knowledgeTitleCharacters, 1)) return null;
544
+ missing.push(detail);
545
+ }
546
+ return { text: value.text, missing, strong: value.strong };
547
+ }
548
+ function parseAiFactCheck(value) {
549
+ if (!isRecord2(value) || !hasExactKeys(value, ["checked", "unsourced"])) return null;
550
+ if (!isNonNegativeInteger(value.checked, Number.MAX_SAFE_INTEGER)) return null;
551
+ if (!Array.isArray(value.unsourced) || value.unsourced.length > AI_WIRE_LIMITS.factCheckSentences) {
552
+ return null;
553
+ }
554
+ const unsourced = [];
555
+ for (const entry of value.unsourced) {
556
+ const sentence = parseAiFactCheckSentence(entry);
557
+ if (!sentence) return null;
558
+ unsourced.push(sentence);
559
+ }
560
+ return { checked: value.checked, unsourced };
561
+ }
452
562
  function parseAiChatEvent(value) {
453
563
  if (!isRecord2(value)) return null;
564
+ if (value.kind === "knowledge") {
565
+ if (!hasExactKeys(value, ["kind", "knowledge"])) return null;
566
+ const knowledge = parseAiChatKnowledge(value.knowledge);
567
+ return knowledge ? { kind: "knowledge", knowledge } : null;
568
+ }
454
569
  if (value.kind === "progress") {
455
570
  if (!hasExactKeys(value, ["kind", "progress"])) return null;
456
571
  const progress = parseAiChatProgress(value.progress);
@@ -1197,6 +1312,9 @@ export {
1197
1312
  parseAiModelInstallEvent,
1198
1313
  parseAiChatRequest,
1199
1314
  parseAiChatProgress,
1315
+ parseAiChatKnowledge,
1316
+ parseAiFactCheckRequest,
1317
+ parseAiFactCheck,
1200
1318
  parseAiChatEvent,
1201
1319
  parseAiStatus,
1202
1320
  parseAiPreferences,
@@ -80,6 +80,27 @@ function parseExternalHttpUrl(value) {
80
80
  return null;
81
81
  }
82
82
  }
83
+ var SUPPORT_EMAIL_ADDRESS = "support@bendyline.com";
84
+ var SUPPORT_EMAIL_FIELDS = /* @__PURE__ */ new Set(["subject", "body"]);
85
+ function parseSupportMailtoUrl(value) {
86
+ if (!isBoundedString(value, HOST_WIRE_LIMITS.urlCharacters, 1)) return null;
87
+ try {
88
+ const url = new URL(value);
89
+ if (url.protocol !== "mailto:" || url.pathname !== SUPPORT_EMAIL_ADDRESS || url.hash) {
90
+ return null;
91
+ }
92
+ const fields = [...url.searchParams.keys()];
93
+ if (fields.some((field) => !SUPPORT_EMAIL_FIELDS.has(field))) return null;
94
+ if (new Set(fields).size !== fields.length) return null;
95
+ const canonical = url.href;
96
+ return canonical.length <= HOST_WIRE_LIMITS.urlCharacters ? canonical : null;
97
+ } catch {
98
+ return null;
99
+ }
100
+ }
101
+ function parseOpenExternalUrl(value) {
102
+ return parseExternalHttpUrl(value) ?? parseSupportMailtoUrl(value);
103
+ }
83
104
  function isTrustedRendererUrl(value, developmentOrigin) {
84
105
  if (!isBoundedString(value, HOST_WIRE_LIMITS.urlCharacters, 1)) return false;
85
106
  try {
@@ -104,5 +125,8 @@ export {
104
125
  parseOpenRequest,
105
126
  parsePinnedMenuDocuments,
106
127
  parseExternalHttpUrl,
128
+ SUPPORT_EMAIL_ADDRESS,
129
+ parseSupportMailtoUrl,
130
+ parseOpenExternalUrl,
107
131
  isTrustedRendererUrl
108
132
  };
@@ -4,7 +4,7 @@ export { isElectronHost } from '../host/index.js';
4
4
  import '../v2-DwxWjFC0.js';
5
5
  import '../workspace-path-CWVrcuPL.js';
6
6
  import '../filesystem-v2-CXdAPR27.js';
7
- import '../capabilities-DHwh4P4D.js';
7
+ import '../capabilities-DJ7X9EOt.js';
8
8
 
9
9
  /** Compatibility entry point retaining the Electron backend's exact guarantees. */
10
10
  declare class ElectronFileSystemProviderV2 extends HostFileSystemProviderV2 {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ElectronFileSystemProvider,
3
3
  ElectronFileSystemProviderV2
4
- } from "../chunk-P32NVUQL.js";
5
- import "../chunk-EFGQUOTL.js";
4
+ } from "../chunk-56QRV45P.js";
5
+ import "../chunk-45XD424D.js";
6
6
  import {
7
7
  isElectronHost
8
- } from "../chunk-64733GFL.js";
8
+ } from "../chunk-P4VIU7MB.js";
9
9
  import "../chunk-245W57QP.js";
10
- import "../chunk-46AGYHDY.js";
10
+ import "../chunk-V5SWLUZY.js";
11
11
  import "../chunk-73OOROXH.js";
12
12
  import "../chunk-HABG2JM3.js";
13
13
  import "../chunk-LPIJ6HKL.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  HostFileSystemProviderV2
3
- } from "../chunk-EFGQUOTL.js";
3
+ } from "../chunk-45XD424D.js";
4
4
  import {
5
5
  ELECTRON_FILE_SYSTEM_V2_CAPABILITIES,
6
6
  maybeGetDocBlocksHost
7
- } from "../chunk-64733GFL.js";
7
+ } from "../chunk-P4VIU7MB.js";
8
8
  import "../chunk-245W57QP.js";
9
- import "../chunk-46AGYHDY.js";
9
+ import "../chunk-V5SWLUZY.js";
10
10
  import "../chunk-73OOROXH.js";
11
11
  import "../chunk-HABG2JM3.js";
12
12
  import "../chunk-LPIJ6HKL.js";
@@ -15,7 +15,7 @@ export { ElectronFileSystemProvider, ElectronFileSystemProviderV2 } from './elec
15
15
  export { isElectronHost } from '../host/index.js';
16
16
  import '../host-provider-v2-DEWMPiRD.js';
17
17
  import '../filesystem-v2-CXdAPR27.js';
18
- import '../capabilities-DHwh4P4D.js';
18
+ import '../capabilities-DJ7X9EOt.js';
19
19
 
20
20
  /** Immediate article/folder suggestions from an already bounded listing. */
21
21
  declare function suggestWikiArticles(files: readonly {
@@ -48,13 +48,13 @@ import "../chunk-3GSMJ4MQ.js";
48
48
  import {
49
49
  ElectronFileSystemProvider,
50
50
  ElectronFileSystemProviderV2
51
- } from "../chunk-P32NVUQL.js";
52
- import "../chunk-EFGQUOTL.js";
51
+ } from "../chunk-56QRV45P.js";
52
+ import "../chunk-45XD424D.js";
53
53
  import {
54
54
  isElectronHost
55
- } from "../chunk-64733GFL.js";
55
+ } from "../chunk-P4VIU7MB.js";
56
56
  import "../chunk-245W57QP.js";
57
- import "../chunk-46AGYHDY.js";
57
+ import "../chunk-V5SWLUZY.js";
58
58
  import "../chunk-73OOROXH.js";
59
59
  import "../chunk-HABG2JM3.js";
60
60
  import {
@@ -1,5 +1,5 @@
1
- import { a as AiChatEvent, d as AiChatProgress, f as AiChatRequest, i as AiError, q as AiModelDownloadInfo, s as AiModelInfo, t as AiModelInstallEvent, v as AiPreferences, w as AiPreferencesPatch, x as AiProgress, H as AiStatus, au as SpeechAudioChunk, av as SpeechCatalog, aw as SpeechError, ay as SpeechInstallEvent, aA as SpeechModelInfo, aB as SpeechModelKind, aH as SpeechResult, aC as SpeechPreferences, aD as SpeechPreferencesPatch, aE as SpeechProgress, aF as SpeechReadiness, aJ as SpeechStatus, aL as SpeechSynthesisSummary, aM as SpeechSynthesizeEvent, aN as SpeechSynthesizeRequest, aO as SpeechTranscribeRequest, aP as SpeechTranscript, aQ as SpeechVoiceInfo, at as OpenRequest, am as HostPinnedDocument, M as DocBlocksHostAPI, ai as HostCapabilities, ak as HostEnvironment } from '../capabilities-DHwh4P4D.js';
2
- export { A as AiChatCompletion, b as AiChatHandle, c as AiChatMessage, e as AiChatPurpose, g as AiConnectionStep, h as AiEnsureWorkspaceHandle, j as AiErrorCode, k as AiImageRequest, l as AiImageResult, m as AiKnowledgeAPI, n as AiKnowledgeAction, o as AiKnowledgeCatalog, p as AiKnowledgeState, r as AiModelFit, u as AiModelInstallHandle, y as AiProviderInfo, z as AiResponseFormat, B as AiResult, C as AiReviewMode, D as AiSearchHit, E as AiSearchQuery, F as AiSearchResult, G as AiSpeechAudio, I as AiSynthesizeRequest, J as AiTranscribeRequest, K as AiTranscript, L as AiUnavailableReason, N as DocBlocksHostAiAPI, O as DocBlocksHostClipboardAPI, P as DocBlocksHostExportAPI, Q as DocBlocksHostExternalAPI, R as DocBlocksHostFfmpegAPI, S as DocBlocksHostFsAPI, T as DocBlocksHostGitAPI, U as DocBlocksHostLifecycleAPI, V as DocBlocksHostMenuAPI, W as DocBlocksHostShellAPI, X as DocBlocksHostSpeechAPI, Y as DocBlocksHostUpdaterAPI, Z as DocBlocksHostWorkspacesAPI, _ as ElectronWorkspaceInfo, $ as ExternalBinaryCommitResult, a0 as GitBranchInfo, a1 as GitCapabilities, a2 as GitCloneHandle, a3 as GitCloneProgress, a4 as GitError, a5 as GitErrorCode, a6 as GitFileAtRevision, a7 as GitFileChange, a8 as GitFileStatusCode, a9 as GitLogEntry, aa as GitLogOptions, ab as GitRemoteInfo, ac as GitRepoDetection, ad as GitResult, ae as GitRevision, af as GitStatus, ag as HOST_PLATFORMS, ah as HOST_SURFACE_KINDS, aj as HostCloseReason, al as HostExportTargetGrant, an as HostPlatform, ao as HostPrepareCloseRequest, ap as HostPrepareCloseResult, aq as HostSurfaceKind, ar as MenuCommand, as as NO_HOST_CAPABILITIES, ax as SpeechErrorCode, az as SpeechInstallHandle, aG as SpeechReadinessState, aI as SpeechSegment, aK as SpeechSynthesisHandle, aR as SpeechWordTiming, aS as UpdateCheckResult, aT as UpdateInstallResult, aU as UpdaterStatus, aV as deriveHostCapabilities, aW as parseAiKnowledgeAction, aX as parseAiKnowledgeState, aY as parseHostEnvironment } from '../capabilities-DHwh4P4D.js';
1
+ import { a as AiChatEvent, c as AiChatKnowledge, f as AiChatProgress, h as AiChatRequest, k as AiError, m as AiFactCheck, n as AiFactCheckRequest, v as AiModelDownloadInfo, x as AiModelInfo, y as AiModelInstallEvent, B as AiPreferences, C as AiPreferencesPatch, D as AiProgress, M as AiStatus, az as SpeechAudioChunk, aA as SpeechCatalog, aB as SpeechError, aD as SpeechInstallEvent, aF as SpeechModelInfo, aG as SpeechModelKind, aM as SpeechResult, aH as SpeechPreferences, aI as SpeechPreferencesPatch, aJ as SpeechProgress, aK as SpeechReadiness, aO as SpeechStatus, aQ as SpeechSynthesisSummary, aR as SpeechSynthesizeEvent, aS as SpeechSynthesizeRequest, aT as SpeechTranscribeRequest, aU as SpeechTranscript, aV as SpeechVoiceInfo, ay as OpenRequest, ar as HostPinnedDocument, R as DocBlocksHostAPI, an as HostCapabilities, ap as HostEnvironment } from '../capabilities-DJ7X9EOt.js';
2
+ export { A as AiChatCompletion, b as AiChatHandle, d as AiChatKnowledgeSource, e as AiChatMessage, g as AiChatPurpose, i as AiConnectionStep, j as AiEnsureWorkspaceHandle, l as AiErrorCode, o as AiFactCheckSentence, p as AiImageRequest, q as AiImageResult, r as AiKnowledgeAPI, s as AiKnowledgeAction, t as AiKnowledgeCatalog, u as AiKnowledgeState, w as AiModelFit, z as AiModelInstallHandle, E as AiProviderInfo, F as AiResponseFormat, G as AiResult, H as AiReviewMode, I as AiSearchHit, J as AiSearchQuery, K as AiSearchResult, L as AiSpeechAudio, N as AiSynthesizeRequest, O as AiTranscribeRequest, P as AiTranscript, Q as AiUnavailableReason, S as DocBlocksHostAiAPI, T as DocBlocksHostClipboardAPI, U as DocBlocksHostExportAPI, V as DocBlocksHostExternalAPI, W as DocBlocksHostFfmpegAPI, X as DocBlocksHostFsAPI, Y as DocBlocksHostGitAPI, Z as DocBlocksHostLifecycleAPI, _ as DocBlocksHostMenuAPI, $ as DocBlocksHostShellAPI, a0 as DocBlocksHostSpeechAPI, a1 as DocBlocksHostUpdaterAPI, a2 as DocBlocksHostWorkspacesAPI, a3 as ElectronWorkspaceInfo, a4 as ExternalBinaryCommitResult, a5 as GitBranchInfo, a6 as GitCapabilities, a7 as GitCloneHandle, a8 as GitCloneProgress, a9 as GitError, aa as GitErrorCode, ab as GitFileAtRevision, ac as GitFileChange, ad as GitFileStatusCode, ae as GitLogEntry, af as GitLogOptions, ag as GitRemoteInfo, ah as GitRepoDetection, ai as GitResult, aj as GitRevision, ak as GitStatus, al as HOST_PLATFORMS, am as HOST_SURFACE_KINDS, ao as HostCloseReason, aq as HostExportTargetGrant, as as HostPlatform, at as HostPrepareCloseRequest, au as HostPrepareCloseResult, av as HostSurfaceKind, aw as MenuCommand, ax as NO_HOST_CAPABILITIES, aC as SpeechErrorCode, aE as SpeechInstallHandle, aL as SpeechReadinessState, aN as SpeechSegment, aP as SpeechSynthesisHandle, aW as SpeechWordTiming, aX as UpdateCheckResult, aY as UpdateInstallResult, aZ as UpdaterStatus, a_ as deriveHostCapabilities, a$ as parseAiKnowledgeAction, b0 as parseAiKnowledgeState, b1 as parseHostEnvironment } from '../capabilities-DJ7X9EOt.js';
3
3
  export { D as DocBlocksHostFsV2API, E as ELECTRON_FILE_SYSTEM_V2_CAPABILITIES, F as FILE_SYSTEM_TRANSFER_LIMITS, H as HostFileSystemReadTransfer, a as HostFileSystemV2OpenRequest, b as HostFileSystemV2Result, c as HostFileSystemV2WatchMessage } from '../filesystem-v2-CXdAPR27.js';
4
4
  import '../types-DLteNrK0.js';
5
5
  import '../v2-DwxWjFC0.js';
@@ -25,6 +25,24 @@ declare const AI_WIRE_LIMITS: Readonly<{
25
25
  responseSchemaCharacters: number;
26
26
  verificationCodeCharacters: 16;
27
27
  progressPhaseCharacters: 64;
28
+ /** Catalogs, and titles per catalog, one request can cite; Gezel sends at most 8 passages. */
29
+ knowledgeSources: 8;
30
+ knowledgeTitles: 8;
31
+ knowledgeTitleCharacters: 256;
32
+ /** Passage texts sent with a knowledge report; Gezel caps a retrieval at 24,000 characters. */
33
+ knowledgeEvidence: 8;
34
+ knowledgeEvidenceCharacters: number;
35
+ /**
36
+ * A fact check reads one draft against every passage its run was given. It
37
+ * runs synchronously in the host; at these bounds it takes tens of ms.
38
+ */
39
+ factCheckTextCharacters: number;
40
+ factCheckEvidence: 64;
41
+ factCheckEvidenceCharacters: number;
42
+ factCheckGivenCharacters: number;
43
+ factCheckSentences: 50;
44
+ factCheckSentenceCharacters: 1000;
45
+ factCheckDetails: 16;
28
46
  modelEntries: 200;
29
47
  contextWindowCeiling: 8000000;
30
48
  downloadBytesCeiling: number;
@@ -45,6 +63,9 @@ declare function parseAiModelInstallEvent(value: unknown): AiModelInstallEvent |
45
63
  */
46
64
  declare function parseAiChatRequest(value: unknown): AiChatRequest | null;
47
65
  declare function parseAiChatProgress(value: unknown): AiChatProgress | null;
66
+ declare function parseAiChatKnowledge(value: unknown): AiChatKnowledge | null;
67
+ declare function parseAiFactCheckRequest(value: unknown): AiFactCheckRequest | null;
68
+ declare function parseAiFactCheck(value: unknown): AiFactCheck | null;
48
69
  declare function parseAiChatEvent(value: unknown): AiChatEvent | null;
49
70
  declare function parseAiStatus(value: unknown): AiStatus | null;
50
71
  declare function parseAiPreferences(value: unknown): AiPreferences | null;
@@ -138,6 +159,15 @@ declare function parseOpenRequest(value: unknown): OpenRequest | null;
138
159
  declare function parsePinnedMenuDocuments(value: unknown): HostPinnedDocument[];
139
160
  /** Return one canonical HTTP(S) URL, or null when external navigation is unsafe. */
140
161
  declare function parseExternalHttpUrl(value: unknown): string | null;
162
+ /** The one address a host will open an email to. */
163
+ declare const SUPPORT_EMAIL_ADDRESS = "support@bendyline.com";
164
+ /**
165
+ * Return one canonical `mailto:` URL to support, or null. Only a subject and
166
+ * body may be prefilled, so a renderer cannot add or redirect recipients.
167
+ */
168
+ declare function parseSupportMailtoUrl(value: unknown): string | null;
169
+ /** The `shell.openExternal` policy: a canonical HTTP(S) URL or an email to support. */
170
+ declare function parseOpenExternalUrl(value: unknown): string | null;
141
171
  /** True only for the packaged renderer origin or the exact configured dev origin. */
142
172
  declare function isTrustedRendererUrl(value: unknown, developmentOrigin?: string): boolean;
143
173
 
@@ -169,4 +199,4 @@ declare function getDocBlocksHost(): DocBlocksHostAPI;
169
199
  /** Return the host API, or null if not running under Electron. */
170
200
  declare function maybeGetDocBlocksHost(): DocBlocksHostAPI | null;
171
201
 
172
- export { AI_WIRE_LIMITS, AiChatEvent, AiChatProgress, AiChatRequest, AiError, AiModelDownloadInfo, AiModelInfo, AiModelInstallEvent, AiPreferences, AiPreferencesPatch, AiProgress, AiStatus, DocBlocksHostAPI, EXPORT_TRANSFER_LIMITS, HOST_WIRE_LIMITS, HostCapabilities, HostEnvironment, HostPinnedDocument, MAX_HOST_PINNED_DOCUMENTS, OpenRequest, SPEECH_WIRE_LIMITS, SpeechAudioChunk, SpeechCatalog, SpeechError, SpeechInstallEvent, SpeechModelInfo, SpeechModelKind, SpeechPreferences, SpeechPreferencesPatch, SpeechProgress, SpeechReadiness, SpeechResult, SpeechStatus, SpeechSynthesisSummary, SpeechSynthesizeEvent, SpeechSynthesizeRequest, SpeechTranscribeRequest, SpeechTranscript, SpeechVoiceInfo, getDocBlocksHost, getHostCapabilities, getHostEnvironment, hasDocBlocksHost, hostSupports, isBoundedBytePayload, isBoundedString, isElectronHost, isSpeechModelId, isTrustedRendererUrl, maybeGetDocBlocksHost, parseAiChatEvent, parseAiChatProgress, parseAiChatRequest, parseAiError, parseAiModelDownloadInfo, parseAiModelDownloadInfoList, parseAiModelInfo, parseAiModelInfoList, parseAiModelInstallEvent, parseAiPreferences, parseAiPreferencesPatch, parseAiProgress, parseAiStatus, parseExternalHttpUrl, parseOpenRequest, parsePinnedMenuDocuments, parseSpeechAudioChunk, parseSpeechCatalog, parseSpeechError, parseSpeechInstallEvent, parseSpeechModelInfo, parseSpeechModelKind, parseSpeechNullResult, parseSpeechPreferences, parseSpeechPreferencesPatch, parseSpeechProgress, parseSpeechReadiness, parseSpeechResult, parseSpeechStatus, parseSpeechSynthesisSummary, parseSpeechSynthesizeEvent, parseSpeechSynthesizeRequest, parseSpeechTranscribeRequest, parseSpeechTranscript, parseSpeechVoiceInfo };
202
+ export { AI_WIRE_LIMITS, AiChatEvent, AiChatKnowledge, AiChatProgress, AiChatRequest, AiError, AiFactCheck, AiFactCheckRequest, AiModelDownloadInfo, AiModelInfo, AiModelInstallEvent, AiPreferences, AiPreferencesPatch, AiProgress, AiStatus, DocBlocksHostAPI, EXPORT_TRANSFER_LIMITS, HOST_WIRE_LIMITS, HostCapabilities, HostEnvironment, HostPinnedDocument, MAX_HOST_PINNED_DOCUMENTS, OpenRequest, SPEECH_WIRE_LIMITS, SUPPORT_EMAIL_ADDRESS, SpeechAudioChunk, SpeechCatalog, SpeechError, SpeechInstallEvent, SpeechModelInfo, SpeechModelKind, SpeechPreferences, SpeechPreferencesPatch, SpeechProgress, SpeechReadiness, SpeechResult, SpeechStatus, SpeechSynthesisSummary, SpeechSynthesizeEvent, SpeechSynthesizeRequest, SpeechTranscribeRequest, SpeechTranscript, SpeechVoiceInfo, getDocBlocksHost, getHostCapabilities, getHostEnvironment, hasDocBlocksHost, hostSupports, isBoundedBytePayload, isBoundedString, isElectronHost, isSpeechModelId, isTrustedRendererUrl, maybeGetDocBlocksHost, parseAiChatEvent, parseAiChatKnowledge, parseAiChatProgress, parseAiChatRequest, parseAiError, parseAiFactCheck, parseAiFactCheckRequest, parseAiModelDownloadInfo, parseAiModelDownloadInfoList, parseAiModelInfo, parseAiModelInfoList, parseAiModelInstallEvent, parseAiPreferences, parseAiPreferencesPatch, parseAiProgress, parseAiStatus, parseExternalHttpUrl, parseOpenExternalUrl, parseOpenRequest, parsePinnedMenuDocuments, parseSpeechAudioChunk, parseSpeechCatalog, parseSpeechError, parseSpeechInstallEvent, parseSpeechModelInfo, parseSpeechModelKind, parseSpeechNullResult, parseSpeechPreferences, parseSpeechPreferencesPatch, parseSpeechProgress, parseSpeechReadiness, parseSpeechResult, parseSpeechStatus, parseSpeechSynthesisSummary, parseSpeechSynthesizeEvent, parseSpeechSynthesizeRequest, parseSpeechTranscribeRequest, parseSpeechTranscript, parseSpeechVoiceInfo, parseSupportMailtoUrl };
@@ -16,9 +16,12 @@ import {
16
16
  isSpeechModelId,
17
17
  maybeGetDocBlocksHost,
18
18
  parseAiChatEvent,
19
+ parseAiChatKnowledge,
19
20
  parseAiChatProgress,
20
21
  parseAiChatRequest,
21
22
  parseAiError,
23
+ parseAiFactCheck,
24
+ parseAiFactCheckRequest,
22
25
  parseAiKnowledgeAction,
23
26
  parseAiKnowledgeState,
24
27
  parseAiModelDownloadInfo,
@@ -50,18 +53,21 @@ import {
50
53
  parseSpeechTranscribeRequest,
51
54
  parseSpeechTranscript,
52
55
  parseSpeechVoiceInfo
53
- } from "../chunk-64733GFL.js";
56
+ } from "../chunk-P4VIU7MB.js";
54
57
  import {
55
58
  EXPORT_TRANSFER_LIMITS,
56
59
  HOST_WIRE_LIMITS,
57
60
  MAX_HOST_PINNED_DOCUMENTS,
61
+ SUPPORT_EMAIL_ADDRESS,
58
62
  isBoundedBytePayload,
59
63
  isBoundedString,
60
64
  isTrustedRendererUrl,
61
65
  parseExternalHttpUrl,
66
+ parseOpenExternalUrl,
62
67
  parseOpenRequest,
63
- parsePinnedMenuDocuments
64
- } from "../chunk-46AGYHDY.js";
68
+ parsePinnedMenuDocuments,
69
+ parseSupportMailtoUrl
70
+ } from "../chunk-V5SWLUZY.js";
65
71
  export {
66
72
  AI_WIRE_LIMITS,
67
73
  ELECTRON_FILE_SYSTEM_V2_CAPABILITIES,
@@ -73,6 +79,7 @@ export {
73
79
  MAX_HOST_PINNED_DOCUMENTS,
74
80
  NO_HOST_CAPABILITIES,
75
81
  SPEECH_WIRE_LIMITS,
82
+ SUPPORT_EMAIL_ADDRESS,
76
83
  deriveHostCapabilities,
77
84
  getDocBlocksHost,
78
85
  getHostCapabilities,
@@ -86,9 +93,12 @@ export {
86
93
  isTrustedRendererUrl,
87
94
  maybeGetDocBlocksHost,
88
95
  parseAiChatEvent,
96
+ parseAiChatKnowledge,
89
97
  parseAiChatProgress,
90
98
  parseAiChatRequest,
91
99
  parseAiError,
100
+ parseAiFactCheck,
101
+ parseAiFactCheckRequest,
92
102
  parseAiKnowledgeAction,
93
103
  parseAiKnowledgeState,
94
104
  parseAiModelDownloadInfo,
@@ -102,6 +112,7 @@ export {
102
112
  parseAiStatus,
103
113
  parseExternalHttpUrl,
104
114
  parseHostEnvironment,
115
+ parseOpenExternalUrl,
105
116
  parseOpenRequest,
106
117
  parsePinnedMenuDocuments,
107
118
  parseSpeechAudioChunk,
@@ -122,5 +133,6 @@ export {
122
133
  parseSpeechSynthesizeRequest,
123
134
  parseSpeechTranscribeRequest,
124
135
  parseSpeechTranscript,
125
- parseSpeechVoiceInfo
136
+ parseSpeechVoiceInfo,
137
+ parseSupportMailtoUrl
126
138
  };
package/dist/index.d.ts CHANGED
@@ -7,10 +7,10 @@ export { IndexedDBContentContainer, IndexedDBFileSystemProvider, IndexedDBFileSy
7
7
  export { NativeFileSystemMovePathState, NativeFileSystemMoveRecoveryError, NativeFileSystemMoveRecoveryState, NativeFileSystemProvider, NativeFileSystemProviderV2, isNativeFileSystemSupported, loadDirectoryHandle, openNativeFolder, removeDirectoryHandle, restoreNativeFolder, storeDirectoryHandle } from './filesystem/native.js';
8
8
  export { ElectronFileSystemProvider, ElectronFileSystemProviderV2 } from './filesystem/electron.js';
9
9
  export { DOCUMENT_RECOVERY_JOURNAL_SCHEMA_VERSION, DOCUMENT_RECOVERY_JOURNAL_STORAGE_KEY, DocumentCommitConflictError, DocumentCommitRequest, DocumentCommitResult, DocumentCommitTarget, DocumentConflictStrategy, DocumentExternalChangeResult, DocumentExternalSnapshot, DocumentExternalVersion, DocumentRecoveryAcknowledgement, DocumentRecoveryJournal, DocumentRecoveryJournalOptions, DocumentRecoveryRecord, DocumentRecoveryStorage, DocumentRecoveryWrite, DocumentRecoveryWriteFailure, DocumentRecoveryWriteResult, DocumentSaveReason, DocumentSession, DocumentSessionConflict, DocumentSessionConflictError, DocumentSessionEditScope, DocumentSessionLifecycle, DocumentSessionOptions, DocumentSessionSnapshot, DocumentSessionStatus, DocumentSessionTransition, FileSystemDocumentTargetOptions, createFileSystemDocumentTarget, getDefaultDocumentRecoveryStorage } from './document/index.js';
10
- export { D as DEFAULT_WORKSPACE_ID, E as ElectronWorkspaceReconciliation, T as TransientOrigin, W as WorkspaceDescriptor, e as ensureDefaultWorkspace, g as getTransientWorkspace, a as getWorkspace, l as listWorkspaces, p as parsePersistedWorkspaceList, r as reconcileElectronWorkspaceDescriptors, b as registerTransientWorkspace, c as removeWorkspace, s as saveWorkspace, t as touchWorkspace, u as unregisterTransientWorkspace } from './reconcile-electron-Ci2lhAdW.js';
11
- export { AI_WIRE_LIMITS, EXPORT_TRANSFER_LIMITS, HOST_WIRE_LIMITS, MAX_HOST_PINNED_DOCUMENTS, SPEECH_WIRE_LIMITS, getDocBlocksHost, getHostCapabilities, getHostEnvironment, hasDocBlocksHost, hostSupports, isBoundedBytePayload, isBoundedString, isElectronHost, isSpeechModelId, isTrustedRendererUrl, maybeGetDocBlocksHost, parseAiChatEvent, parseAiChatProgress, parseAiChatRequest, parseAiError, parseAiModelDownloadInfo, parseAiModelDownloadInfoList, parseAiModelInfo, parseAiModelInfoList, parseAiModelInstallEvent, parseAiPreferences, parseAiPreferencesPatch, parseAiProgress, parseAiStatus, parseExternalHttpUrl, parseOpenRequest, parsePinnedMenuDocuments, parseSpeechAudioChunk, parseSpeechCatalog, parseSpeechError, parseSpeechInstallEvent, parseSpeechModelInfo, parseSpeechModelKind, parseSpeechNullResult, parseSpeechPreferences, parseSpeechPreferencesPatch, parseSpeechProgress, parseSpeechReadiness, parseSpeechResult, parseSpeechStatus, parseSpeechSynthesisSummary, parseSpeechSynthesizeEvent, parseSpeechSynthesizeRequest, parseSpeechTranscribeRequest, parseSpeechTranscript, parseSpeechVoiceInfo } from './host/index.js';
10
+ export { D as DEFAULT_WORKSPACE_ID, E as ElectronWorkspaceReconciliation, T as TransientOrigin, W as WorkspaceDescriptor, e as ensureDefaultWorkspace, g as getTransientWorkspace, a as getWorkspace, l as listWorkspaces, p as parsePersistedWorkspaceList, r as reconcileElectronWorkspaceDescriptors, b as registerTransientWorkspace, c as removeWorkspace, s as saveWorkspace, t as touchWorkspace, u as unregisterTransientWorkspace } from './reconcile-electron-CwPGhW5-.js';
11
+ export { AI_WIRE_LIMITS, EXPORT_TRANSFER_LIMITS, HOST_WIRE_LIMITS, MAX_HOST_PINNED_DOCUMENTS, SPEECH_WIRE_LIMITS, SUPPORT_EMAIL_ADDRESS, getDocBlocksHost, getHostCapabilities, getHostEnvironment, hasDocBlocksHost, hostSupports, isBoundedBytePayload, isBoundedString, isElectronHost, isSpeechModelId, isTrustedRendererUrl, maybeGetDocBlocksHost, parseAiChatEvent, parseAiChatKnowledge, parseAiChatProgress, parseAiChatRequest, parseAiError, parseAiFactCheck, parseAiFactCheckRequest, parseAiModelDownloadInfo, parseAiModelDownloadInfoList, parseAiModelInfo, parseAiModelInfoList, parseAiModelInstallEvent, parseAiPreferences, parseAiPreferencesPatch, parseAiProgress, parseAiStatus, parseExternalHttpUrl, parseOpenExternalUrl, parseOpenRequest, parsePinnedMenuDocuments, parseSpeechAudioChunk, parseSpeechCatalog, parseSpeechError, parseSpeechInstallEvent, parseSpeechModelInfo, parseSpeechModelKind, parseSpeechNullResult, parseSpeechPreferences, parseSpeechPreferencesPatch, parseSpeechProgress, parseSpeechReadiness, parseSpeechResult, parseSpeechStatus, parseSpeechSynthesisSummary, parseSpeechSynthesizeEvent, parseSpeechSynthesizeRequest, parseSpeechTranscribeRequest, parseSpeechTranscript, parseSpeechVoiceInfo, parseSupportMailtoUrl } from './host/index.js';
12
12
  export { SHARED_DOCUMENT_LIMITS, SharedDocumentHashParseResult, SharedDocumentMode, SharedDocumentPayload, createSharedDocumentHash, createSharedDocumentUrl, parseSharedDocumentHash } from './share/index.js';
13
- export { A as AiChatCompletion, a as AiChatEvent, b as AiChatHandle, c as AiChatMessage, d as AiChatProgress, e as AiChatPurpose, f as AiChatRequest, g as AiConnectionStep, h as AiEnsureWorkspaceHandle, i as AiError, j as AiErrorCode, k as AiImageRequest, l as AiImageResult, m as AiKnowledgeAPI, n as AiKnowledgeAction, o as AiKnowledgeCatalog, p as AiKnowledgeState, q as AiModelDownloadInfo, r as AiModelFit, s as AiModelInfo, t as AiModelInstallEvent, u as AiModelInstallHandle, v as AiPreferences, w as AiPreferencesPatch, x as AiProgress, y as AiProviderInfo, z as AiResponseFormat, B as AiResult, C as AiReviewMode, D as AiSearchHit, E as AiSearchQuery, F as AiSearchResult, G as AiSpeechAudio, H as AiStatus, I as AiSynthesizeRequest, J as AiTranscribeRequest, K as AiTranscript, L as AiUnavailableReason, M as DocBlocksHostAPI, N as DocBlocksHostAiAPI, O as DocBlocksHostClipboardAPI, P as DocBlocksHostExportAPI, Q as DocBlocksHostExternalAPI, R as DocBlocksHostFfmpegAPI, S as DocBlocksHostFsAPI, T as DocBlocksHostGitAPI, U as DocBlocksHostLifecycleAPI, V as DocBlocksHostMenuAPI, W as DocBlocksHostShellAPI, X as DocBlocksHostSpeechAPI, Y as DocBlocksHostUpdaterAPI, Z as DocBlocksHostWorkspacesAPI, _ as ElectronWorkspaceInfo, $ as ExternalBinaryCommitResult, a0 as GitBranchInfo, a1 as GitCapabilities, a2 as GitCloneHandle, a3 as GitCloneProgress, a4 as GitError, a5 as GitErrorCode, a6 as GitFileAtRevision, a7 as GitFileChange, a8 as GitFileStatusCode, a9 as GitLogEntry, aa as GitLogOptions, ab as GitRemoteInfo, ac as GitRepoDetection, ad as GitResult, ae as GitRevision, af as GitStatus, ag as HOST_PLATFORMS, ah as HOST_SURFACE_KINDS, ai as HostCapabilities, aj as HostCloseReason, ak as HostEnvironment, al as HostExportTargetGrant, am as HostPinnedDocument, an as HostPlatform, ao as HostPrepareCloseRequest, ap as HostPrepareCloseResult, aq as HostSurfaceKind, ar as MenuCommand, as as NO_HOST_CAPABILITIES, at as OpenRequest, au as SpeechAudioChunk, av as SpeechCatalog, aw as SpeechError, ax as SpeechErrorCode, ay as SpeechInstallEvent, az as SpeechInstallHandle, aA as SpeechModelInfo, aB as SpeechModelKind, aC as SpeechPreferences, aD as SpeechPreferencesPatch, aE as SpeechProgress, aF as SpeechReadiness, aG as SpeechReadinessState, aH as SpeechResult, aI as SpeechSegment, aJ as SpeechStatus, aK as SpeechSynthesisHandle, aL as SpeechSynthesisSummary, aM as SpeechSynthesizeEvent, aN as SpeechSynthesizeRequest, aO as SpeechTranscribeRequest, aP as SpeechTranscript, aQ as SpeechVoiceInfo, aR as SpeechWordTiming, aS as UpdateCheckResult, aT as UpdateInstallResult, aU as UpdaterStatus, aV as deriveHostCapabilities, aW as parseAiKnowledgeAction, aX as parseAiKnowledgeState, aY as parseHostEnvironment } from './capabilities-DHwh4P4D.js';
13
+ export { A as AiChatCompletion, a as AiChatEvent, b as AiChatHandle, c as AiChatKnowledge, d as AiChatKnowledgeSource, e as AiChatMessage, f as AiChatProgress, g as AiChatPurpose, h as AiChatRequest, i as AiConnectionStep, j as AiEnsureWorkspaceHandle, k as AiError, l as AiErrorCode, m as AiFactCheck, n as AiFactCheckRequest, o as AiFactCheckSentence, p as AiImageRequest, q as AiImageResult, r as AiKnowledgeAPI, s as AiKnowledgeAction, t as AiKnowledgeCatalog, u as AiKnowledgeState, v as AiModelDownloadInfo, w as AiModelFit, x as AiModelInfo, y as AiModelInstallEvent, z as AiModelInstallHandle, B as AiPreferences, C as AiPreferencesPatch, D as AiProgress, E as AiProviderInfo, F as AiResponseFormat, G as AiResult, H as AiReviewMode, I as AiSearchHit, J as AiSearchQuery, K as AiSearchResult, L as AiSpeechAudio, M as AiStatus, N as AiSynthesizeRequest, O as AiTranscribeRequest, P as AiTranscript, Q as AiUnavailableReason, R as DocBlocksHostAPI, S as DocBlocksHostAiAPI, T as DocBlocksHostClipboardAPI, U as DocBlocksHostExportAPI, V as DocBlocksHostExternalAPI, W as DocBlocksHostFfmpegAPI, X as DocBlocksHostFsAPI, Y as DocBlocksHostGitAPI, Z as DocBlocksHostLifecycleAPI, _ as DocBlocksHostMenuAPI, $ as DocBlocksHostShellAPI, a0 as DocBlocksHostSpeechAPI, a1 as DocBlocksHostUpdaterAPI, a2 as DocBlocksHostWorkspacesAPI, a3 as ElectronWorkspaceInfo, a4 as ExternalBinaryCommitResult, a5 as GitBranchInfo, a6 as GitCapabilities, a7 as GitCloneHandle, a8 as GitCloneProgress, a9 as GitError, aa as GitErrorCode, ab as GitFileAtRevision, ac as GitFileChange, ad as GitFileStatusCode, ae as GitLogEntry, af as GitLogOptions, ag as GitRemoteInfo, ah as GitRepoDetection, ai as GitResult, aj as GitRevision, ak as GitStatus, al as HOST_PLATFORMS, am as HOST_SURFACE_KINDS, an as HostCapabilities, ao as HostCloseReason, ap as HostEnvironment, aq as HostExportTargetGrant, ar as HostPinnedDocument, as as HostPlatform, at as HostPrepareCloseRequest, au as HostPrepareCloseResult, av as HostSurfaceKind, aw as MenuCommand, ax as NO_HOST_CAPABILITIES, ay as OpenRequest, az as SpeechAudioChunk, aA as SpeechCatalog, aB as SpeechError, aC as SpeechErrorCode, aD as SpeechInstallEvent, aE as SpeechInstallHandle, aF as SpeechModelInfo, aG as SpeechModelKind, aH as SpeechPreferences, aI as SpeechPreferencesPatch, aJ as SpeechProgress, aK as SpeechReadiness, aL as SpeechReadinessState, aM as SpeechResult, aN as SpeechSegment, aO as SpeechStatus, aP as SpeechSynthesisHandle, aQ as SpeechSynthesisSummary, aR as SpeechSynthesizeEvent, aS as SpeechSynthesizeRequest, aT as SpeechTranscribeRequest, aU as SpeechTranscript, aV as SpeechVoiceInfo, aW as SpeechWordTiming, aX as UpdateCheckResult, aY as UpdateInstallResult, aZ as UpdaterStatus, a_ as deriveHostCapabilities, a$ as parseAiKnowledgeAction, b0 as parseAiKnowledgeState, b1 as parseHostEnvironment } from './capabilities-DJ7X9EOt.js';
14
14
  export { D as DocBlocksHostFsV2API, E as ELECTRON_FILE_SYSTEM_V2_CAPABILITIES, F as FILE_SYSTEM_TRANSFER_LIMITS, H as HostFileSystemReadTransfer, a as HostFileSystemV2OpenRequest, b as HostFileSystemV2Result, c as HostFileSystemV2WatchMessage } from './filesystem-v2-CXdAPR27.js';
15
15
  import '@bendyline/squisq/markdown';
16
16
  import '@bendyline/squisq/storage';
package/dist/index.js CHANGED
@@ -68,8 +68,8 @@ import "./chunk-3GSMJ4MQ.js";
68
68
  import {
69
69
  ElectronFileSystemProvider,
70
70
  ElectronFileSystemProviderV2
71
- } from "./chunk-P32NVUQL.js";
72
- import "./chunk-EFGQUOTL.js";
71
+ } from "./chunk-56QRV45P.js";
72
+ import "./chunk-45XD424D.js";
73
73
  import {
74
74
  AI_WIRE_LIMITS,
75
75
  ELECTRON_FILE_SYSTEM_V2_CAPABILITIES,
@@ -88,9 +88,12 @@ import {
88
88
  isSpeechModelId,
89
89
  maybeGetDocBlocksHost,
90
90
  parseAiChatEvent,
91
+ parseAiChatKnowledge,
91
92
  parseAiChatProgress,
92
93
  parseAiChatRequest,
93
94
  parseAiError,
95
+ parseAiFactCheck,
96
+ parseAiFactCheckRequest,
94
97
  parseAiKnowledgeAction,
95
98
  parseAiKnowledgeState,
96
99
  parseAiModelDownloadInfo,
@@ -122,19 +125,22 @@ import {
122
125
  parseSpeechTranscribeRequest,
123
126
  parseSpeechTranscript,
124
127
  parseSpeechVoiceInfo
125
- } from "./chunk-64733GFL.js";
128
+ } from "./chunk-P4VIU7MB.js";
126
129
  import "./chunk-245W57QP.js";
127
130
  import {
128
131
  EXPORT_TRANSFER_LIMITS,
129
132
  HOST_WIRE_LIMITS,
130
133
  MAX_HOST_PINNED_DOCUMENTS,
134
+ SUPPORT_EMAIL_ADDRESS,
131
135
  isBoundedBytePayload,
132
136
  isBoundedString,
133
137
  isTrustedRendererUrl,
134
138
  parseExternalHttpUrl,
139
+ parseOpenExternalUrl,
135
140
  parseOpenRequest,
136
- parsePinnedMenuDocuments
137
- } from "./chunk-46AGYHDY.js";
141
+ parsePinnedMenuDocuments,
142
+ parseSupportMailtoUrl
143
+ } from "./chunk-V5SWLUZY.js";
138
144
  import "./chunk-73OOROXH.js";
139
145
  import "./chunk-HABG2JM3.js";
140
146
  import {
@@ -221,6 +227,7 @@ export {
221
227
  SHARED_DOCUMENT_LIMITS,
222
228
  SPEECH_WIRE_LIMITS,
223
229
  SQUISQ_RUNTIME_DIRECTORY_NAME,
230
+ SUPPORT_EMAIL_ADDRESS,
224
231
  WORKSPACE_ROOT,
225
232
  createDbkWorkspaceSnapshot,
226
233
  createFileMediaProvider,
@@ -271,9 +278,12 @@ export {
271
278
  moveFileSystemEntry,
272
279
  openNativeFolder,
273
280
  parseAiChatEvent,
281
+ parseAiChatKnowledge,
274
282
  parseAiChatProgress,
275
283
  parseAiChatRequest,
276
284
  parseAiError,
285
+ parseAiFactCheck,
286
+ parseAiFactCheckRequest,
277
287
  parseAiKnowledgeAction,
278
288
  parseAiKnowledgeState,
279
289
  parseAiModelDownloadInfo,
@@ -288,6 +298,7 @@ export {
288
298
  parseExternalHttpUrl,
289
299
  parseFileSystemVersion,
290
300
  parseHostEnvironment,
301
+ parseOpenExternalUrl,
291
302
  parseOpenRequest,
292
303
  parsePersistedWorkspaceList,
293
304
  parsePinnedMenuDocuments,
@@ -311,6 +322,7 @@ export {
311
322
  parseSpeechTranscribeRequest,
312
323
  parseSpeechTranscript,
313
324
  parseSpeechVoiceInfo,
325
+ parseSupportMailtoUrl,
314
326
  parseWorkspacePath,
315
327
  reconcileElectronWorkspaceDescriptors,
316
328
  registerTransientWorkspace,
@@ -1,5 +1,5 @@
1
1
  import { d as FileSystemProvider } from './types-DLteNrK0.js';
2
- import { _ as ElectronWorkspaceInfo, ak as HostEnvironment } from './capabilities-DHwh4P4D.js';
2
+ import { a3 as ElectronWorkspaceInfo, ap as HostEnvironment } from './capabilities-DJ7X9EOt.js';
3
3
 
4
4
  /**
5
5
  * Origin of a transient workspace — records where its contents came from and
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  HOST_WIRE_LIMITS,
7
7
  isBoundedString
8
- } from "../chunk-46AGYHDY.js";
8
+ } from "../chunk-V5SWLUZY.js";
9
9
  import "../chunk-UTH3HYCZ.js";
10
10
 
11
11
  // src/vscode/messages.ts
@@ -1,9 +1,9 @@
1
- export { D as DEFAULT_WORKSPACE_ID, E as ElectronWorkspaceReconciliation, T as TransientOrigin, W as WorkspaceDescriptor, e as ensureDefaultWorkspace, g as getTransientWorkspace, a as getWorkspace, l as listWorkspaces, p as parsePersistedWorkspaceList, r as reconcileElectronWorkspaceDescriptors, b as registerTransientWorkspace, c as removeWorkspace, s as saveWorkspace, t as touchWorkspace, u as unregisterTransientWorkspace } from '../reconcile-electron-Ci2lhAdW.js';
1
+ export { D as DEFAULT_WORKSPACE_ID, E as ElectronWorkspaceReconciliation, T as TransientOrigin, W as WorkspaceDescriptor, e as ensureDefaultWorkspace, g as getTransientWorkspace, a as getWorkspace, l as listWorkspaces, p as parsePersistedWorkspaceList, r as reconcileElectronWorkspaceDescriptors, b as registerTransientWorkspace, c as removeWorkspace, s as saveWorkspace, t as touchWorkspace, u as unregisterTransientWorkspace } from '../reconcile-electron-CwPGhW5-.js';
2
2
  import { ContentContainer } from '@bendyline/squisq/storage';
3
3
  import { o as FileSystemProviderV2 } from '../v2-DwxWjFC0.js';
4
4
  import { a as WorkspacePath } from '../workspace-path-CWVrcuPL.js';
5
5
  import '../types-DLteNrK0.js';
6
- import '../capabilities-DHwh4P4D.js';
6
+ import '../capabilities-DJ7X9EOt.js';
7
7
  import '../filesystem-v2-CXdAPR27.js';
8
8
 
9
9
  declare const WORKSPACE_BACKUP_MANIFEST = "docblocks-backup.json";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/docblocks",
3
- "version": "2.7.5",
3
+ "version": "2.7.6",
4
4
  "description": "Core data structures and filesystem abstractions for DocBlocks",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",