@askalf/deepdive 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +136 -1
  2. package/dist/agent.d.ts +3 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +48 -13
  5. package/dist/agent.js.map +1 -1
  6. package/dist/browser.d.ts.map +1 -1
  7. package/dist/browser.js.map +1 -1
  8. package/dist/cache.d.ts.map +1 -1
  9. package/dist/cache.js +22 -2
  10. package/dist/cache.js.map +1 -1
  11. package/dist/citations.d.ts +1 -0
  12. package/dist/citations.d.ts.map +1 -1
  13. package/dist/citations.js +4 -1
  14. package/dist/citations.js.map +1 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +428 -19
  17. package/dist/cli.js.map +1 -1
  18. package/dist/completion.d.ts +3 -0
  19. package/dist/completion.d.ts.map +1 -0
  20. package/dist/completion.js +110 -0
  21. package/dist/completion.js.map +1 -0
  22. package/dist/confidence.d.ts +17 -0
  23. package/dist/confidence.d.ts.map +1 -0
  24. package/dist/confidence.js +41 -0
  25. package/dist/confidence.js.map +1 -0
  26. package/dist/config-file.d.ts +13 -0
  27. package/dist/config-file.d.ts.map +1 -0
  28. package/dist/config-file.js +150 -0
  29. package/dist/config-file.js.map +1 -0
  30. package/dist/config.d.ts +11 -0
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +7 -0
  33. package/dist/config.js.map +1 -1
  34. package/dist/dates.d.ts +9 -0
  35. package/dist/dates.d.ts.map +1 -0
  36. package/dist/dates.js +218 -0
  37. package/dist/dates.js.map +1 -0
  38. package/dist/diff.d.ts +46 -0
  39. package/dist/diff.d.ts.map +1 -0
  40. package/dist/diff.js +227 -0
  41. package/dist/diff.js.map +1 -0
  42. package/dist/html-export.d.ts +6 -0
  43. package/dist/html-export.d.ts.map +1 -0
  44. package/dist/html-export.js +146 -0
  45. package/dist/html-export.js.map +1 -0
  46. package/dist/index.d.ts +11 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +10 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/markdown.d.ts +7 -0
  51. package/dist/markdown.d.ts.map +1 -0
  52. package/dist/markdown.js +232 -0
  53. package/dist/markdown.js.map +1 -0
  54. package/dist/open.d.ts +6 -0
  55. package/dist/open.d.ts.map +1 -0
  56. package/dist/open.js +25 -0
  57. package/dist/open.js.map +1 -0
  58. package/dist/profiles.d.ts +5 -0
  59. package/dist/profiles.d.ts.map +1 -0
  60. package/dist/profiles.js +38 -0
  61. package/dist/profiles.js.map +1 -0
  62. package/dist/robots.d.ts +1 -0
  63. package/dist/robots.d.ts.map +1 -1
  64. package/dist/robots.js +4 -7
  65. package/dist/robots.js.map +1 -1
  66. package/dist/search/arxiv.d.ts +7 -0
  67. package/dist/search/arxiv.d.ts.map +1 -0
  68. package/dist/search/arxiv.js +81 -0
  69. package/dist/search/arxiv.js.map +1 -0
  70. package/dist/search/brave.d.ts +1 -1
  71. package/dist/search/brave.d.ts.map +1 -1
  72. package/dist/search/brave.js +2 -1
  73. package/dist/search/brave.js.map +1 -1
  74. package/dist/search/duckduckgo.d.ts +1 -1
  75. package/dist/search/duckduckgo.d.ts.map +1 -1
  76. package/dist/search/duckduckgo.js +2 -1
  77. package/dist/search/duckduckgo.js.map +1 -1
  78. package/dist/search/github.d.ts +16 -0
  79. package/dist/search/github.d.ts.map +1 -0
  80. package/dist/search/github.js +59 -0
  81. package/dist/search/github.js.map +1 -0
  82. package/dist/search/hackernews.d.ts +16 -0
  83. package/dist/search/hackernews.d.ts.map +1 -0
  84. package/dist/search/hackernews.js +47 -0
  85. package/dist/search/hackernews.js.map +1 -0
  86. package/dist/search/pubmed.d.ts +7 -0
  87. package/dist/search/pubmed.d.ts.map +1 -0
  88. package/dist/search/pubmed.js +75 -0
  89. package/dist/search/pubmed.js.map +1 -0
  90. package/dist/search/searxng.d.ts +1 -1
  91. package/dist/search/searxng.d.ts.map +1 -1
  92. package/dist/search/searxng.js +2 -1
  93. package/dist/search/searxng.js.map +1 -1
  94. package/dist/search/stackexchange.d.ts +17 -0
  95. package/dist/search/stackexchange.d.ts.map +1 -0
  96. package/dist/search/stackexchange.js +70 -0
  97. package/dist/search/stackexchange.js.map +1 -0
  98. package/dist/search/wikipedia.d.ts +16 -0
  99. package/dist/search/wikipedia.d.ts.map +1 -0
  100. package/dist/search/wikipedia.js +56 -0
  101. package/dist/search/wikipedia.js.map +1 -0
  102. package/dist/search.d.ts +1 -0
  103. package/dist/search.d.ts.map +1 -1
  104. package/dist/search.js +43 -0
  105. package/dist/search.js.map +1 -1
  106. package/dist/sessions.d.ts +15 -0
  107. package/dist/sessions.d.ts.map +1 -1
  108. package/dist/sessions.js +67 -0
  109. package/dist/sessions.js.map +1 -1
  110. package/dist/synthesize.d.ts +6 -1
  111. package/dist/synthesize.d.ts.map +1 -1
  112. package/dist/synthesize.js +14 -5
  113. package/dist/synthesize.js.map +1 -1
  114. package/package.json +1 -1
@@ -0,0 +1,146 @@
1
+ // HTML export — turn a saved session into a single, self-contained,
2
+ // shareable HTML document. No external assets, no scripts, inline CSS only,
3
+ // so the file works offline, opens in any browser, and can be emailed or
4
+ // committed as an artifact. Pure over a SessionRecord.
5
+ //
6
+ // This is the "polished artifact" that hosted research tools produce and the
7
+ // terminal markdown doesn't: the thing you hand to a colleague. The answer's
8
+ // markdown is rendered via the hand-rolled src/markdown.ts so there's still
9
+ // zero runtime dependency.
10
+ import { markdownToHtml, escapeHtml } from "./markdown.js";
11
+ const CITATION_ANCHOR_PREFIX = "source-";
12
+ const DEFAULT_FOOTER = 'Generated by <a href="https://github.com/askalf/deepdive" rel="noopener noreferrer">deepdive</a>' +
13
+ ' — a local research agent from <a href="https://sprayberrylabs.com" rel="noopener noreferrer">Sprayberry Labs</a>.';
14
+ export function renderHtmlReport(record, opts = {}) {
15
+ const title = escapeHtml(oneLine(record.question)) || "deepdive report";
16
+ const body = markdownToHtml(record.answer, {
17
+ citationAnchorPrefix: CITATION_ANCHOR_PREFIX,
18
+ });
19
+ const meta = renderMetaLine(record);
20
+ const sources = renderSourcesHtml(record);
21
+ const footer = opts.footer === undefined ? DEFAULT_FOOTER : opts.footer;
22
+ const footerHtml = footer ? `\n <footer>${footer}</footer>` : "";
23
+ return `<!doctype html>
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="utf-8">
27
+ <meta name="viewport" content="width=device-width, initial-scale=1">
28
+ <meta name="generator" content="deepdive">
29
+ <title>${title}</title>
30
+ <style>${STYLE}</style>
31
+ </head>
32
+ <body>
33
+ <main>
34
+ <h1>${title}</h1>
35
+ ${meta}
36
+ <article>
37
+ ${body}
38
+ </article>
39
+ ${sources}${footerHtml}
40
+ </main>
41
+ </body>
42
+ </html>
43
+ `;
44
+ }
45
+ function renderMetaLine(record) {
46
+ const parts = [];
47
+ const created = new Date(record.createdAt);
48
+ if (!Number.isNaN(created.getTime())) {
49
+ parts.push(`<time datetime="${created.toISOString()}">${created.toISOString().slice(0, 10)}</time>`);
50
+ }
51
+ if (record.llm?.model)
52
+ parts.push(escapeHtml(record.llm.model));
53
+ const n = record.sources.length;
54
+ parts.push(`${n} source${n === 1 ? "" : "s"}`);
55
+ if (record.rounds.length > 0) {
56
+ parts.push(`${record.rounds.length} round${record.rounds.length === 1 ? "" : "s"}`);
57
+ }
58
+ const cost = record.cost?.amountUsd;
59
+ if (typeof cost === "number" && Number.isFinite(cost) && cost > 0) {
60
+ parts.push(`~$${cost.toFixed(cost < 0.01 ? 4 : 2)}`);
61
+ }
62
+ return `<p class="meta">${parts.join(" &middot; ")}</p>`;
63
+ }
64
+ function renderSourcesHtml(record) {
65
+ if (record.sources.length === 0)
66
+ return "";
67
+ const items = record.sources
68
+ .map((s) => {
69
+ const date = new Date(s.fetchedAt);
70
+ const fetched = Number.isNaN(date.getTime())
71
+ ? ""
72
+ : `fetched ${date.toISOString().slice(0, 10)}`;
73
+ const pub = typeof s.publishedAt === "number"
74
+ ? `published ${new Date(s.publishedAt).toISOString().slice(0, 10)}`
75
+ : "";
76
+ const metaBits = [pub, fetched].filter(Boolean).join(" · ");
77
+ const dateStr = metaBits ? ` <span class="fetched">${metaBits}</span>` : "";
78
+ const safeUrl = escapeHtml(s.url);
79
+ const label = escapeHtml(oneLine(s.title)) || safeUrl;
80
+ const safeHref = isSafeHref(s.url) ? safeUrl : "#";
81
+ return ` <li id="${CITATION_ANCHOR_PREFIX}${s.id}"><a href="${safeHref}" rel="noopener noreferrer">${label}</a>${dateStr}</li>`;
82
+ })
83
+ .join("\n");
84
+ return ` <section class="sources">\n <h2>Sources</h2>\n <ol>\n${items}\n </ol>\n </section>`;
85
+ }
86
+ function isSafeHref(url) {
87
+ return /^(https?:|mailto:|file:)/i.test(url);
88
+ }
89
+ function oneLine(s) {
90
+ return s.replace(/\s+/g, " ").trim();
91
+ }
92
+ // Inline stylesheet — readable typography, light/dark aware, print-friendly.
93
+ const STYLE = `
94
+ :root { color-scheme: light dark; }
95
+ * { box-sizing: border-box; }
96
+ body {
97
+ margin: 0;
98
+ font: 16px/1.65 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
99
+ color: #1a1a1a;
100
+ background: #fbfbfa;
101
+ }
102
+ main { max-width: 46rem; margin: 0 auto; padding: 3rem 1.25rem 4rem; }
103
+ h1 { font-size: 1.85rem; line-height: 1.25; margin: 0 0 0.5rem; letter-spacing: -0.01em; }
104
+ h2 { font-size: 1.3rem; margin: 2rem 0 0.75rem; }
105
+ h3 { font-size: 1.1rem; margin: 1.5rem 0 0.5rem; }
106
+ h4, h5, h6 { margin: 1.25rem 0 0.5rem; }
107
+ p { margin: 0 0 1rem; }
108
+ a { color: #1a56db; text-decoration: none; }
109
+ a:hover { text-decoration: underline; }
110
+ .meta { color: #6b7280; font-size: 0.85rem; margin: 0 0 2rem; }
111
+ article { font-size: 1.02rem; }
112
+ ul, ol { padding-left: 1.5rem; margin: 0 0 1rem; }
113
+ li { margin: 0.3rem 0; }
114
+ blockquote { margin: 0 0 1rem; padding: 0.4rem 1rem; border-left: 3px solid #d1d5db; color: #4b5563; }
115
+ code { font: 0.88em ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; background: #f0f0ef; padding: 0.1em 0.35em; border-radius: 4px; }
116
+ pre { background: #f0f0ef; padding: 1rem; border-radius: 8px; overflow-x: auto; margin: 0 0 1rem; }
117
+ pre code { background: none; padding: 0; }
118
+ table { border-collapse: collapse; width: 100%; margin: 0 0 1.25rem; font-size: 0.95rem; }
119
+ th, td { border: 1px solid #e5e7eb; padding: 0.5rem 0.7rem; text-align: left; vertical-align: top; }
120
+ th { background: #f3f4f6; font-weight: 600; }
121
+ hr { border: none; border-top: 1px solid #e5e7eb; margin: 2rem 0; }
122
+ sup.cite { font-size: 0.7em; line-height: 0; }
123
+ sup.cite a { padding: 0 0.1em; }
124
+ .sources { margin-top: 2.5rem; border-top: 1px solid #e5e7eb; padding-top: 1rem; }
125
+ .sources li { margin: 0.45rem 0; }
126
+ .sources .fetched { color: #9ca3af; font-size: 0.82rem; }
127
+ :target { background: #fff3bf; scroll-margin-top: 1rem; }
128
+ footer { margin-top: 3rem; padding-top: 1.25rem; border-top: 1px solid #e5e7eb; color: #9ca3af; font-size: 0.82rem; }
129
+ @media (prefers-color-scheme: dark) {
130
+ body { color: #e5e7eb; background: #18181b; }
131
+ a { color: #7aa7ff; }
132
+ .meta, footer { color: #9ca3af; }
133
+ blockquote { border-left-color: #3f3f46; color: #a1a1aa; }
134
+ code, pre { background: #27272a; }
135
+ th { background: #27272a; }
136
+ th, td { border-color: #3f3f46; }
137
+ hr, .sources, footer { border-color: #3f3f46; }
138
+ :target { background: #422006; }
139
+ }
140
+ @media print {
141
+ body { background: #fff; }
142
+ main { max-width: none; padding: 0; }
143
+ a { color: inherit; }
144
+ }
145
+ `.trim();
146
+ //# sourceMappingURL=html-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-export.js","sourceRoot":"","sources":["../src/html-export.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,19 +3,28 @@ export { planQueries, parsePlan, critique, parseCritique, type Plan, type Critiq
3
3
  export { resolveSearchAdapter, dedupeByUrl, type SearchAdapter, type SearchResult, } from "./search.js";
4
4
  export { BrowserSession, type BrowserOptions, type FetchedPage } from "./browser.js";
5
5
  export { extractContent, type ExtractedContent } from "./extract.js";
6
- export { synthesize, type SourceWithContent } from "./synthesize.js";
6
+ export { synthesize, type SourceWithContent, type SynthesizeOptions } from "./synthesize.js";
7
+ export { extractPublishedDate, metaTags, jsonLdDates, toEpoch, resolveSince, } from "./dates.js";
8
+ export { assessConfidence, formatConfidenceLine, type ConfidenceLevel, type ConfidenceInput, type ConfidenceAssessment, } from "./confidence.js";
7
9
  export { buildSourceTable, renderAnswerMarkdown, renderSourcesMarkdown, type Source, } from "./citations.js";
8
10
  export { callLLM, LLMError, DEFAULT_LLM_TIMEOUT_MS, DEFAULT_LLM_ATTEMPTS, type LLMConfig, type LLMMessage, type LLMResult, } from "./llm.js";
9
11
  export { callLLMStream, parseBlocks, parseSSE, type StreamOptions } from "./llm-stream.js";
10
12
  export { retry, backoffDelay, type RetryOptions } from "./retry.js";
11
13
  export { resolveConfig, type RuntimeConfig, type CLIFlags } from "./config.js";
14
+ export { loadConfigFile, fileConfigToEnv, knownConfigKeys, defaultConfigPath, type FileConfig, type ParsedConfigFile, } from "./config-file.js";
15
+ export { BUILTIN_PROFILES, resolveProfile, listProfiles } from "./profiles.js";
16
+ export { completionScript, type Shell } from "./completion.js";
17
+ export { browserOpenCommand, type OpenCommand } from "./open.js";
12
18
  export { createCache, cacheKey, type PageCache, type CacheOptions } from "./cache.js";
13
19
  export { runConcurrent } from "./concurrency.js";
14
20
  export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, daysAgo, PRICE_TABLE, PRICE_TABLE_VERIFIED_AT, PRICE_TABLE_STALE_AFTER_DAYS, DARIO_DEFAULT_BASE_URL, type ModelPrice, type TokenUsage, type CostEstimate, } from "./pricing.js";
15
21
  export { extractPdfText, isPdfExtractorAvailable, looksLikePdf, joinTextItems, dedupeRunningHeadersFooters, PdfExtractorMissingError, type PdfExtractOptions, type PdfExtractResult, } from "./pdf.js";
16
22
  export { ingestLocalPaths, expandPaths, stripTags, type LocalIngestOptions, type LocalIngestResult, } from "./local.js";
17
23
  export { classifyUrl, matchesAny, normalizePattern, parseDomainList, type DomainFilter, type DomainVerdict, } from "./domain-filter.js";
18
- export { generateSessionId, saveSession, loadSession, listSessions, resolveSessionId, renderSessionsList, defaultSessionsDir, humanDuration, type SessionRecord, type SessionMeta, type SessionStorageOptions, } from "./sessions.js";
24
+ export { generateSessionId, saveSession, loadSession, listSessions, resolveSessionId, renderSessionsList, defaultSessionsDir, humanDuration, deleteSession, pruneSessions, selectSessionsToPrune, parseDuration, type SessionRecord, type SessionMeta, type SessionStorageOptions, type PruneCriteria, } from "./sessions.js";
25
+ export { markdownToHtml, renderInline, escapeHtml, type MarkdownToHtmlOptions, } from "./markdown.js";
26
+ export { renderHtmlReport, type HtmlReportOptions, } from "./html-export.js";
27
+ export { diffSessions, diffSources, diffLines, renderDiffText, buildDiffNarrateUser, DIFF_NARRATE_SYSTEM, type SessionDiff, type SourceRef, type DiffLine, type LineKind, type SessionSide, type RenderDiffOptions, } from "./diff.js";
19
28
  export { detectApiFormat, toOpenAIRequest, fromOpenAIResponse, openaiSSEToAnthropic, authHeadersFor, pathFor, type ApiFormat, type AnthropicRequestBody, type OpenAIRequestBody, type AnthropicResponseShape, type OpenAIResponseShape, type AnthropicSSEEvent, type OpenAIStreamEvent, } from "./llm-format.js";
20
29
  export { verifyCitations, splitSentences, extractCiteIds, contentTokens, recall, stripSourcesBlock, DEFAULT_CITE_MIN_RECALL, type CitationCheck, type VerificationReport, type VerifyOptions, } from "./verify.js";
21
30
  export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,18 +5,27 @@ export { resolveSearchAdapter, dedupeByUrl, } from "./search.js";
5
5
  export { BrowserSession } from "./browser.js";
6
6
  export { extractContent } from "./extract.js";
7
7
  export { synthesize } from "./synthesize.js";
8
+ export { extractPublishedDate, metaTags, jsonLdDates, toEpoch, resolveSince, } from "./dates.js";
9
+ export { assessConfidence, formatConfidenceLine, } from "./confidence.js";
8
10
  export { buildSourceTable, renderAnswerMarkdown, renderSourcesMarkdown, } from "./citations.js";
9
11
  export { callLLM, LLMError, DEFAULT_LLM_TIMEOUT_MS, DEFAULT_LLM_ATTEMPTS, } from "./llm.js";
10
12
  export { callLLMStream, parseBlocks, parseSSE } from "./llm-stream.js";
11
13
  export { retry, backoffDelay } from "./retry.js";
12
14
  export { resolveConfig } from "./config.js";
15
+ export { loadConfigFile, fileConfigToEnv, knownConfigKeys, defaultConfigPath, } from "./config-file.js";
16
+ export { BUILTIN_PROFILES, resolveProfile, listProfiles } from "./profiles.js";
17
+ export { completionScript } from "./completion.js";
18
+ export { browserOpenCommand } from "./open.js";
13
19
  export { createCache, cacheKey } from "./cache.js";
14
20
  export { runConcurrent } from "./concurrency.js";
15
21
  export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, daysAgo, PRICE_TABLE, PRICE_TABLE_VERIFIED_AT, PRICE_TABLE_STALE_AFTER_DAYS, DARIO_DEFAULT_BASE_URL, } from "./pricing.js";
16
22
  export { extractPdfText, isPdfExtractorAvailable, looksLikePdf, joinTextItems, dedupeRunningHeadersFooters, PdfExtractorMissingError, } from "./pdf.js";
17
23
  export { ingestLocalPaths, expandPaths, stripTags, } from "./local.js";
18
24
  export { classifyUrl, matchesAny, normalizePattern, parseDomainList, } from "./domain-filter.js";
19
- export { generateSessionId, saveSession, loadSession, listSessions, resolveSessionId, renderSessionsList, defaultSessionsDir, humanDuration, } from "./sessions.js";
25
+ export { generateSessionId, saveSession, loadSession, listSessions, resolveSessionId, renderSessionsList, defaultSessionsDir, humanDuration, deleteSession, pruneSessions, selectSessionsToPrune, parseDuration, } from "./sessions.js";
26
+ export { markdownToHtml, renderInline, escapeHtml, } from "./markdown.js";
27
+ export { renderHtmlReport, } from "./html-export.js";
28
+ export { diffSessions, diffSources, diffLines, renderDiffText, buildDiffNarrateUser, DIFF_NARRATE_SYSTEM, } from "./diff.js";
20
29
  export { detectApiFormat, toOpenAIRequest, fromOpenAIResponse, openaiSSEToAnthropic, authHeadersFor, pathFor, } from "./llm-format.js";
21
30
  export { verifyCitations, splitSentences, extractCiteIds, contentTokens, recall, stripSourcesBlock, DEFAULT_CITE_MIN_RECALL, } from "./verify.js";
22
31
  export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACL,QAAQ,GAMT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,GAGd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAyC,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,cAAc,EAAyB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,QAAQ,EACR,sBAAsB,EACtB,oBAAoB,GAIrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,cAAc,EACd,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,GAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,GAGV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GAId,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,OAAO,GAQR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GAIxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GAKjB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface MarkdownToHtmlOptions {
2
+ citationAnchorPrefix?: string;
3
+ }
4
+ export declare function markdownToHtml(md: string, opts?: MarkdownToHtmlOptions): string;
5
+ export declare function renderInline(text: string, opts?: MarkdownToHtmlOptions): string;
6
+ export declare function escapeHtml(s: string): string;
7
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,qBAAqB;IAIpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AASD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,MAAM,CA6GnF;AAmED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,MAAM,CA+CnF;AASD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C"}
@@ -0,0 +1,232 @@
1
+ // Minimal, hand-rolled Markdown → HTML renderer.
2
+ //
3
+ // deepdive's "one runtime dependency" rule (see CLAUDE.md) rules out a
4
+ // markdown library, but the HTML export (`deepdive export <id> --format=html`)
5
+ // needs to turn the synthesizer's GitHub-flavored markdown into a polished,
6
+ // shareable document. This covers exactly the subset the synthesizer emits:
7
+ // ATX headings, paragraphs, bold/italic, inline + fenced code, links,
8
+ // ordered/unordered lists, GFM tables, blockquotes, horizontal rules, and the
9
+ // inline `[N]` citation markers (turned into superscript anchors so a reader
10
+ // can jump to the source).
11
+ //
12
+ // Pure over strings; no DOM, no deps. If the synthesizer starts emitting a
13
+ // construct this doesn't handle, the text falls through as an escaped
14
+ // paragraph rather than breaking — fail soft, since this is presentation, not
15
+ // data.
16
+ // Private-use sentinels that cannot occur in escaped source text. Used to
17
+ // "park" already-generated HTML so later inline passes never touch it.
18
+ const PARK_OPEN = String.fromCharCode(0xe000);
19
+ const PARK_CLOSE = String.fromCharCode(0xe001);
20
+ // Render a markdown document to an HTML fragment (no <html>/<body> wrapper —
21
+ // the caller owns the document shell). Block-level first, inline second.
22
+ export function markdownToHtml(md, opts = {}) {
23
+ const lines = md.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
24
+ const blocks = [];
25
+ let i = 0;
26
+ while (i < lines.length) {
27
+ const line = lines[i];
28
+ // Blank line — skip; blocks are separated structurally.
29
+ if (line.trim() === "") {
30
+ i++;
31
+ continue;
32
+ }
33
+ // Fenced code block: ``` or ~~~ (optional language hint, which we ignore).
34
+ const fence = /^(```+|~~~+)(.*)$/.exec(line.trim());
35
+ if (fence) {
36
+ const marker = fence[1];
37
+ const body = [];
38
+ i++;
39
+ while (i < lines.length && lines[i].trim() !== marker) {
40
+ body.push(lines[i]);
41
+ i++;
42
+ }
43
+ i++; // consume closing fence (or run off the end)
44
+ blocks.push(`<pre><code>${escapeHtml(body.join("\n"))}</code></pre>`);
45
+ continue;
46
+ }
47
+ // Horizontal rule.
48
+ if (/^(\s*[-*_])(\s*\1){2,}\s*$/.test(line)) {
49
+ blocks.push("<hr>");
50
+ i++;
51
+ continue;
52
+ }
53
+ // ATX heading (# … ######).
54
+ const heading = /^(#{1,6})\s+(.*)$/.exec(line);
55
+ if (heading) {
56
+ const level = heading[1].length;
57
+ blocks.push(`<h${level}>${renderInline(heading[2].trim(), opts)}</h${level}>`);
58
+ i++;
59
+ continue;
60
+ }
61
+ // GFM table: a header row of `| … |` immediately followed by a
62
+ // separator row of dashes/colons.
63
+ if (isTableRow(line) && i + 1 < lines.length && isTableSeparator(lines[i + 1])) {
64
+ const tableLines = [line, lines[i + 1]];
65
+ i += 2;
66
+ while (i < lines.length && isTableRow(lines[i])) {
67
+ tableLines.push(lines[i]);
68
+ i++;
69
+ }
70
+ blocks.push(renderTable(tableLines, opts));
71
+ continue;
72
+ }
73
+ // Blockquote: one or more consecutive `> ` lines.
74
+ if (/^\s*>\s?/.test(line)) {
75
+ const quoted = [];
76
+ while (i < lines.length && /^\s*>\s?/.test(lines[i])) {
77
+ quoted.push(lines[i].replace(/^\s*>\s?/, ""));
78
+ i++;
79
+ }
80
+ blocks.push(`<blockquote>${markdownToHtml(quoted.join("\n"), opts)}</blockquote>`);
81
+ continue;
82
+ }
83
+ // Lists: a run of ordered (`1.`) or unordered (`-`/`*`/`+`) items.
84
+ if (isListItem(line)) {
85
+ const ordered = isOrderedItem(line);
86
+ const items = [];
87
+ while (i < lines.length && isListItem(lines[i]) && isOrderedItem(lines[i]) === ordered) {
88
+ // Gather continuation lines (non-blank, non-item) into the same <li>
89
+ // so wrapped list text stays together.
90
+ let item = lines[i].replace(LIST_ITEM_RE, "");
91
+ i++;
92
+ while (i < lines.length &&
93
+ lines[i].trim() !== "" &&
94
+ !isListItem(lines[i]) &&
95
+ !/^#{1,6}\s/.test(lines[i])) {
96
+ item += " " + lines[i].trim();
97
+ i++;
98
+ }
99
+ items.push(`<li>${renderInline(item.trim(), opts)}</li>`);
100
+ }
101
+ const tag = ordered ? "ol" : "ul";
102
+ blocks.push(`<${tag}>\n${items.join("\n")}\n</${tag}>`);
103
+ continue;
104
+ }
105
+ // Paragraph: consume until a blank line or a line that starts a new block.
106
+ const para = [line];
107
+ i++;
108
+ while (i < lines.length &&
109
+ lines[i].trim() !== "" &&
110
+ !startsNewBlock(lines[i], lines[i + 1])) {
111
+ para.push(lines[i]);
112
+ i++;
113
+ }
114
+ blocks.push(`<p>${renderInline(para.join(" ").trim(), opts)}</p>`);
115
+ }
116
+ return blocks.join("\n");
117
+ }
118
+ const LIST_ITEM_RE = /^\s*(?:[-*+]|\d+[.)])\s+/;
119
+ function isListItem(line) {
120
+ return LIST_ITEM_RE.test(line);
121
+ }
122
+ function isOrderedItem(line) {
123
+ return /^\s*\d+[.)]\s+/.test(line);
124
+ }
125
+ function isTableRow(line) {
126
+ const t = line.trim();
127
+ return t.startsWith("|") && t.endsWith("|") && t.length >= 2;
128
+ }
129
+ function isTableSeparator(line) {
130
+ const t = line.trim();
131
+ if (!t.startsWith("|"))
132
+ return false;
133
+ return /^\|?(\s*:?-{1,}:?\s*\|)+\s*$/.test(t);
134
+ }
135
+ function startsNewBlock(line, next) {
136
+ if (/^#{1,6}\s/.test(line))
137
+ return true;
138
+ if (/^(```+|~~~+)/.test(line.trim()))
139
+ return true;
140
+ if (/^(\s*[-*_])(\s*\1){2,}\s*$/.test(line))
141
+ return true;
142
+ if (/^\s*>\s?/.test(line))
143
+ return true;
144
+ if (isListItem(line))
145
+ return true;
146
+ if (isTableRow(line) && next !== undefined && isTableSeparator(next))
147
+ return true;
148
+ return false;
149
+ }
150
+ function renderTable(tableLines, opts) {
151
+ const splitRow = (row) => row
152
+ .trim()
153
+ .replace(/^\|/, "")
154
+ .replace(/\|$/, "")
155
+ .split("|")
156
+ .map((c) => c.trim());
157
+ const header = splitRow(tableLines[0]);
158
+ const bodyRows = tableLines.slice(2).map(splitRow);
159
+ const thead = "<thead><tr>" +
160
+ header.map((c) => `<th>${renderInline(c, opts)}</th>`).join("") +
161
+ "</tr></thead>";
162
+ const tbody = "<tbody>" +
163
+ bodyRows
164
+ .map((cells) => "<tr>" +
165
+ cells.map((c) => `<td>${renderInline(c, opts)}</td>`).join("") +
166
+ "</tr>")
167
+ .join("") +
168
+ "</tbody>";
169
+ return `<table>${thead}${tbody}</table>`;
170
+ }
171
+ // Inline rendering. Escape HTML once up front, then layer markup back on via
172
+ // sentinel-parked placeholders so we never re-process generated tags. Order
173
+ // matters: code spans and links are extracted first (their contents must not
174
+ // be touched by later passes), then citations, then emphasis.
175
+ export function renderInline(text, opts = {}) {
176
+ let out = escapeHtml(text);
177
+ const stash = [];
178
+ const park = (html) => {
179
+ stash.push(html);
180
+ return `${PARK_OPEN}${stash.length - 1}${PARK_CLOSE}`;
181
+ };
182
+ // Inline code: `code` — content is literal, no further processing.
183
+ out = out.replace(/`([^`]+)`/g, (_m, code) => park(`<code>${code}</code>`));
184
+ // Links: [text](url). The text is already escaped; the url is escaped too.
185
+ // Only http(s), mailto, file, and in-doc (#) targets are allowed — anything
186
+ // else (javascript:, data:) renders as plain text to avoid injection in the
187
+ // exported HTML.
188
+ out = out.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (m, label, url) => {
189
+ if (!isSafeHref(url))
190
+ return m;
191
+ return park(`<a href="${url}" rel="noopener noreferrer">${label}</a>`);
192
+ });
193
+ // Citations: a `[N]` (or `[N][M]…`) run NOT immediately followed by `(`
194
+ // (which would make it a link we failed to parse). Each [N] becomes a
195
+ // superscript anchor (when a prefix is set) or a plain bracketed superscript.
196
+ out = out.replace(/(?:\[\d+\])+(?!\()/g, (run) => {
197
+ const ids = run.match(/\d+/g) ?? [];
198
+ const sups = ids
199
+ .map((id) => opts.citationAnchorPrefix
200
+ ? `<a href="#${opts.citationAnchorPrefix}${id}">${id}</a>`
201
+ : `[${id}]`)
202
+ .join("");
203
+ return park(`<sup class="cite">${sups}</sup>`);
204
+ });
205
+ // Bold then italic. **x** / __x__ first so the single-char rules don't eat
206
+ // the markers.
207
+ out = out.replace(/\*\*([^*]+)\*\*/g, (_m, x) => `<strong>${x}</strong>`);
208
+ out = out.replace(/__([^_]+)__/g, (_m, x) => `<strong>${x}</strong>`);
209
+ out = out.replace(/(^|[^*])\*([^*\s][^*]*?)\*(?!\*)/g, (_m, pre, x) => `${pre}<em>${x}</em>`);
210
+ out = out.replace(/(^|[^_])_([^_\s][^_]*?)_(?!_)/g, (_m, pre, x) => `${pre}<em>${x}</em>`);
211
+ // Restore parked spans.
212
+ const restoreRe = new RegExp(`${PARK_OPEN}(\\d+)${PARK_CLOSE}`, "g");
213
+ out = out.replace(restoreRe, (_m, n) => stash[Number(n)]);
214
+ return out;
215
+ }
216
+ function isSafeHref(url) {
217
+ if (url.startsWith("#"))
218
+ return true;
219
+ if (url.startsWith("/") || url.startsWith("./") || url.startsWith("../"))
220
+ return true;
221
+ return /^(https?:|mailto:|file:)/i.test(url);
222
+ }
223
+ // Exported for unit tests. Escapes the five HTML-significant characters.
224
+ export function escapeHtml(s) {
225
+ return s
226
+ .replace(/&/g, "&amp;")
227
+ .replace(/</g, "&lt;")
228
+ .replace(/>/g, "&gt;")
229
+ .replace(/"/g, "&quot;")
230
+ .replace(/'/g, "&#39;");
231
+ }
232
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
package/dist/open.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface OpenCommand {
2
+ cmd: string;
3
+ args: string[];
4
+ }
5
+ export declare function browserOpenCommand(platform: NodeJS.Platform, target: string): OpenCommand;
6
+ //# sourceMappingURL=open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../src/open.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAWD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,MAAM,EAAE,MAAM,GACb,WAAW,CAUb"}
package/dist/open.js ADDED
@@ -0,0 +1,25 @@
1
+ // Tiny cross-platform "open this file in the default app" helper. The command
2
+ // selection is a pure function (unit-testable without spawning anything); the
3
+ // actual spawn lives in the CLI. Used by `deepdive open <id>` to pop the
4
+ // exported HTML report in the user's browser.
5
+ // Returns the command + args to open `target` with the OS default handler.
6
+ // Every platform uses a DIRECT executable (no shell): the caller passes these
7
+ // straight to spawn() with shell:false, so `target` is a single argv entry and
8
+ // can never be interpreted as a command — no shell-injection surface, even
9
+ // from a user-supplied --out path or session id.
10
+ //
11
+ // Windows deliberately avoids `cmd /c start` (which would route through a
12
+ // shell): `explorer <file>` opens a path with its registered default handler
13
+ // (a browser, for .html) as a plain exec.
14
+ export function browserOpenCommand(platform, target) {
15
+ switch (platform) {
16
+ case "win32":
17
+ return { cmd: "explorer.exe", args: [target] };
18
+ case "darwin":
19
+ return { cmd: "open", args: [target] };
20
+ default:
21
+ // Linux / BSD — xdg-open is the freedesktop standard.
22
+ return { cmd: "xdg-open", args: [target] };
23
+ }
24
+ }
25
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../src/open.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,yEAAyE;AACzE,8CAA8C;AAO9C,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,MAAc;IAEd,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC;YACE,sDAAsD;YACtD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FileConfig } from "./config-file.js";
2
+ export declare const BUILTIN_PROFILES: Record<string, FileConfig>;
3
+ export declare function resolveProfile(name: string, userProfiles?: Record<string, FileConfig>): FileConfig;
4
+ export declare function listProfiles(userProfiles?: Record<string, FileConfig>): string[];
5
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAgBvD,CAAC;AAKF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,GAC5C,UAAU,CASZ;AAGD,wBAAgB,YAAY,CAC1B,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,GAC5C,MAAM,EAAE,CAIV"}
@@ -0,0 +1,38 @@
1
+ // Named profiles — reusable bundles of settings selected with --profile=<name>.
2
+ // Built-ins cover the common modes; a user's config file can add or override
3
+ // profiles of the same name. Selecting a profile is equivalent to setting its
4
+ // keys as defaults (below env + CLI flags) for that run.
5
+ // Built-in profiles. Values use the same friendly keys as the config file.
6
+ export const BUILTIN_PROFILES = {
7
+ // Iterate harder: 3 critic rounds.
8
+ deep: { deep: 3 },
9
+ // Maximum diligence: deeper loop, wider source net, strict citations.
10
+ thorough: { deep: 4, maxSources: 20, strictCites: true },
11
+ // Lowest latency: high fetch concurrency, single-pass.
12
+ fast: { concurrency: 8, deep: 0 },
13
+ // Spend less: cheap models for the structurally-simple plan/critic stages,
14
+ // keep the quality model for synthesis.
15
+ cheap: {
16
+ planModel: "claude-haiku-4-5",
17
+ criticModel: "claude-haiku-4-5",
18
+ synthModel: "claude-sonnet-4-6",
19
+ },
20
+ // Fail the run on any weakly-supported citation; raise the recall bar.
21
+ strict: { strictCites: true, citeMinRecall: 0.5 },
22
+ };
23
+ // Resolve a profile name to its config. A user profile of the same name
24
+ // overrides the built-in (its keys win on top of the built-in's). Throws with
25
+ // the list of available profiles when the name is unknown.
26
+ export function resolveProfile(name, userProfiles = {}) {
27
+ const builtin = BUILTIN_PROFILES[name];
28
+ const user = userProfiles[name];
29
+ if (!builtin && !user) {
30
+ throw new Error(`unknown profile: ${name} (available: ${listProfiles(userProfiles).join(", ")})`);
31
+ }
32
+ return { ...(builtin ?? {}), ...(user ?? {}) };
33
+ }
34
+ // All selectable profile names — built-ins plus any from the config file.
35
+ export function listProfiles(userProfiles = {}) {
36
+ return Array.from(new Set([...Object.keys(BUILTIN_PROFILES), ...Object.keys(userProfiles)])).sort();
37
+ }
38
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,yDAAyD;AAIzD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,mCAAmC;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IACjB,sEAAsE;IACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;IACxD,uDAAuD;IACvD,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACjC,2EAA2E;IAC3E,wCAAwC;IACxC,KAAK,EAAE;QACL,SAAS,EAAE,kBAAkB;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,mBAAmB;KAChC;IACD,uEAAuE;IACvE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE;CAClD,CAAC;AAEF,wEAAwE;AACxE,8EAA8E;AAC9E,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,eAA2C,EAAE;IAE7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,gBAAgB,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAC1B,eAA2C,EAAE;IAE7C,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAC1E,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
package/dist/robots.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export interface RobotsRule {
2
+ agent: string;
2
3
  allow: boolean;
3
4
  path: string;
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAG3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,wBAAgB,iBAAiB,IAAI,WAAW,CAM/C;AAED,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AAiCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkDzD;AAGD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CA+BT"}
1
+ {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAG3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,wBAAgB,iBAAiB,IAAI,WAAW,CAM/C;AAED,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AAiCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA+CzD;AAGD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CA+BT"}