@staticn0va/wigolo 0.3.1 → 0.4.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 (163) hide show
  1. package/README.md +57 -2
  2. package/SKILL.md +149 -0
  3. package/dist/cache/change-detector.d.ts +7 -0
  4. package/dist/cache/change-detector.d.ts.map +1 -0
  5. package/dist/cache/change-detector.js +43 -0
  6. package/dist/cache/change-detector.js.map +1 -0
  7. package/dist/cache/diff-summary.d.ts +2 -0
  8. package/dist/cache/diff-summary.d.ts.map +1 -0
  9. package/dist/cache/diff-summary.js +87 -0
  10. package/dist/cache/diff-summary.js.map +1 -0
  11. package/dist/cache/store.d.ts +2 -0
  12. package/dist/cache/store.d.ts.map +1 -1
  13. package/dist/cache/store.js +10 -0
  14. package/dist/cache/store.js.map +1 -1
  15. package/dist/cli/auth.d.ts +2 -0
  16. package/dist/cli/auth.d.ts.map +1 -0
  17. package/dist/cli/auth.js +95 -0
  18. package/dist/cli/auth.js.map +1 -0
  19. package/dist/cli/daemon.d.ts +6 -1
  20. package/dist/cli/daemon.d.ts.map +1 -1
  21. package/dist/cli/daemon.js +56 -3
  22. package/dist/cli/daemon.js.map +1 -1
  23. package/dist/cli/health.d.ts +1 -1
  24. package/dist/cli/health.d.ts.map +1 -1
  25. package/dist/cli/health.js +41 -3
  26. package/dist/cli/health.js.map +1 -1
  27. package/dist/cli/index.d.ts +1 -1
  28. package/dist/cli/index.d.ts.map +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/plugin.d.ts +5 -0
  32. package/dist/cli/plugin.d.ts.map +1 -0
  33. package/dist/cli/plugin.js +188 -0
  34. package/dist/cli/plugin.js.map +1 -0
  35. package/dist/cli/shell.d.ts +2 -0
  36. package/dist/cli/shell.d.ts.map +1 -0
  37. package/dist/cli/shell.js +86 -0
  38. package/dist/cli/shell.js.map +1 -0
  39. package/dist/cli/warmup.d.ts +4 -0
  40. package/dist/cli/warmup.d.ts.map +1 -1
  41. package/dist/cli/warmup.js +48 -1
  42. package/dist/cli/warmup.js.map +1 -1
  43. package/dist/config.d.ts +7 -0
  44. package/dist/config.d.ts.map +1 -1
  45. package/dist/config.js +15 -0
  46. package/dist/config.js.map +1 -1
  47. package/dist/daemon/health-check.d.ts +16 -0
  48. package/dist/daemon/health-check.d.ts.map +1 -0
  49. package/dist/daemon/health-check.js +36 -0
  50. package/dist/daemon/health-check.js.map +1 -0
  51. package/dist/daemon/http-server.d.ts +26 -0
  52. package/dist/daemon/http-server.d.ts.map +1 -0
  53. package/dist/daemon/http-server.js +282 -0
  54. package/dist/daemon/http-server.js.map +1 -0
  55. package/dist/daemon/proxy.d.ts +10 -0
  56. package/dist/daemon/proxy.d.ts.map +1 -0
  57. package/dist/daemon/proxy.js +99 -0
  58. package/dist/daemon/proxy.js.map +1 -0
  59. package/dist/fetch/action-executor.d.ts +28 -0
  60. package/dist/fetch/action-executor.d.ts.map +1 -0
  61. package/dist/fetch/action-executor.js +86 -0
  62. package/dist/fetch/action-executor.js.map +1 -0
  63. package/dist/fetch/auth.d.ts +2 -1
  64. package/dist/fetch/auth.d.ts.map +1 -1
  65. package/dist/fetch/auth.js +30 -2
  66. package/dist/fetch/auth.js.map +1 -1
  67. package/dist/fetch/browser-pool.d.ts +30 -11
  68. package/dist/fetch/browser-pool.d.ts.map +1 -1
  69. package/dist/fetch/browser-pool.js +165 -49
  70. package/dist/fetch/browser-pool.js.map +1 -1
  71. package/dist/fetch/browser-selector.d.ts +17 -0
  72. package/dist/fetch/browser-selector.d.ts.map +1 -0
  73. package/dist/fetch/browser-selector.js +70 -0
  74. package/dist/fetch/browser-selector.js.map +1 -0
  75. package/dist/fetch/browser-types.d.ts +3 -0
  76. package/dist/fetch/browser-types.d.ts.map +1 -0
  77. package/dist/fetch/browser-types.js +45 -0
  78. package/dist/fetch/browser-types.js.map +1 -0
  79. package/dist/fetch/cdp-client.d.ts +9 -0
  80. package/dist/fetch/cdp-client.d.ts.map +1 -0
  81. package/dist/fetch/cdp-client.js +90 -0
  82. package/dist/fetch/cdp-client.js.map +1 -0
  83. package/dist/fetch/router.d.ts +4 -1
  84. package/dist/fetch/router.d.ts.map +1 -1
  85. package/dist/fetch/router.js +8 -2
  86. package/dist/fetch/router.js.map +1 -1
  87. package/dist/index.js +32 -3
  88. package/dist/index.js.map +1 -1
  89. package/dist/instructions.d.ts +26 -0
  90. package/dist/instructions.d.ts.map +1 -0
  91. package/dist/instructions.js +101 -0
  92. package/dist/instructions.js.map +1 -0
  93. package/dist/logger.d.ts +1 -1
  94. package/dist/logger.d.ts.map +1 -1
  95. package/dist/plugins/loader.d.ts +20 -0
  96. package/dist/plugins/loader.d.ts.map +1 -0
  97. package/dist/plugins/loader.js +162 -0
  98. package/dist/plugins/loader.js.map +1 -0
  99. package/dist/plugins/registry.d.ts +26 -0
  100. package/dist/plugins/registry.d.ts.map +1 -0
  101. package/dist/plugins/registry.js +68 -0
  102. package/dist/plugins/registry.js.map +1 -0
  103. package/dist/plugins/validate.d.ts +9 -0
  104. package/dist/plugins/validate.d.ts.map +1 -0
  105. package/dist/plugins/validate.js +70 -0
  106. package/dist/plugins/validate.js.map +1 -0
  107. package/dist/repl/commands/cache.d.ts +4 -0
  108. package/dist/repl/commands/cache.d.ts.map +1 -0
  109. package/dist/repl/commands/cache.js +44 -0
  110. package/dist/repl/commands/cache.js.map +1 -0
  111. package/dist/repl/commands/crawl.d.ts +7 -0
  112. package/dist/repl/commands/crawl.d.ts.map +1 -0
  113. package/dist/repl/commands/crawl.js +42 -0
  114. package/dist/repl/commands/crawl.js.map +1 -0
  115. package/dist/repl/commands/extract.d.ts +5 -0
  116. package/dist/repl/commands/extract.d.ts.map +1 -0
  117. package/dist/repl/commands/extract.js +37 -0
  118. package/dist/repl/commands/extract.js.map +1 -0
  119. package/dist/repl/commands/fetch.d.ts +5 -0
  120. package/dist/repl/commands/fetch.d.ts.map +1 -0
  121. package/dist/repl/commands/fetch.js +53 -0
  122. package/dist/repl/commands/fetch.js.map +1 -0
  123. package/dist/repl/commands/search.d.ts +5 -0
  124. package/dist/repl/commands/search.d.ts.map +1 -0
  125. package/dist/repl/commands/search.js +62 -0
  126. package/dist/repl/commands/search.js.map +1 -0
  127. package/dist/repl/commands/types.d.ts +9 -0
  128. package/dist/repl/commands/types.d.ts.map +1 -0
  129. package/dist/repl/commands/types.js +2 -0
  130. package/dist/repl/commands/types.js.map +1 -0
  131. package/dist/repl/formatters.d.ts +10 -0
  132. package/dist/repl/formatters.d.ts.map +1 -0
  133. package/dist/repl/formatters.js +209 -0
  134. package/dist/repl/formatters.js.map +1 -0
  135. package/dist/repl/parser.d.ts +9 -0
  136. package/dist/repl/parser.d.ts.map +1 -0
  137. package/dist/repl/parser.js +84 -0
  138. package/dist/repl/parser.js.map +1 -0
  139. package/dist/repl/shell.d.ts +8 -0
  140. package/dist/repl/shell.d.ts.map +1 -0
  141. package/dist/repl/shell.js +156 -0
  142. package/dist/repl/shell.js.map +1 -0
  143. package/dist/search/context-formatter.d.ts +3 -0
  144. package/dist/search/context-formatter.d.ts.map +1 -0
  145. package/dist/search/context-formatter.js +56 -0
  146. package/dist/search/context-formatter.js.map +1 -0
  147. package/dist/server.d.ts +17 -0
  148. package/dist/server.d.ts.map +1 -1
  149. package/dist/server.js +204 -104
  150. package/dist/server.js.map +1 -1
  151. package/dist/tools/cache.d.ts +2 -1
  152. package/dist/tools/cache.d.ts.map +1 -1
  153. package/dist/tools/cache.js +56 -1
  154. package/dist/tools/cache.js.map +1 -1
  155. package/dist/tools/fetch.d.ts.map +1 -1
  156. package/dist/tools/fetch.js +16 -1
  157. package/dist/tools/fetch.js.map +1 -1
  158. package/dist/tools/search.d.ts.map +1 -1
  159. package/dist/tools/search.js +10 -0
  160. package/dist/tools/search.js.map +1 -1
  161. package/dist/types.d.ts +48 -0
  162. package/dist/types.d.ts.map +1 -1
  163. package/package.json +36 -3
package/README.md CHANGED
@@ -55,6 +55,45 @@ npx @staticn0va/wigolo warmup --force # Wipe SearXNG state/install/locks and
55
55
 
56
56
  Run `npx @staticn0va/wigolo doctor` to see the health of every component (Python, Docker, Playwright, Trafilatura, FlashRank, SearXNG install + process). Exits 0 when healthy, 1 when any required component is degraded. Usable in scripts: `npx @staticn0va/wigolo doctor && my-agent`.
57
57
 
58
+ ## Daemon Mode
59
+
60
+ Run wigolo as a persistent HTTP server for lower latency and shared infrastructure:
61
+
62
+ ### Start the daemon
63
+
64
+ ```bash
65
+ npx @staticn0va/wigolo serve
66
+ npx @staticn0va/wigolo serve --port 4444 --host 0.0.0.0
67
+ ```
68
+
69
+ The daemon exposes:
70
+ - `POST /mcp` -- StreamableHTTP MCP transport (preferred)
71
+ - `GET /sse` -- SSE MCP transport (legacy compatibility)
72
+ - `GET /health` -- Health check endpoint
73
+
74
+ ### Check health
75
+
76
+ ```bash
77
+ npx @staticn0va/wigolo health
78
+ # or
79
+ curl http://127.0.0.1:3333/health
80
+ ```
81
+
82
+ Returns:
83
+ ```json
84
+ {
85
+ "status": "healthy",
86
+ "searxng": "active",
87
+ "browsers": "ready",
88
+ "cache": "active",
89
+ "uptime_seconds": 3600
90
+ }
91
+ ```
92
+
93
+ ### Auto-connect
94
+
95
+ When starting in stdio mode, wigolo checks if a daemon is already running on `WIGOLO_DAEMON_PORT`. If detected, a notice is printed to stderr. Full stdio-to-daemon proxy is planned for v2.1.
96
+
58
97
  ## Prerequisites
59
98
 
60
99
  - **Node.js 20+** — [Download](https://nodejs.org/) or `brew install node` (macOS) / `winget install OpenJS.NodeJS` (Windows) / `sudo apt install nodejs` (Ubuntu/Debian)
@@ -198,6 +237,8 @@ Full list of env vars:
198
237
  | `WIGOLO_BOOTSTRAP_MAX_ATTEMPTS` | `3` | Cap on SearXNG bootstrap auto-retries |
199
238
  | `WIGOLO_BOOTSTRAP_BACKOFF_SECONDS` | `30,3600,86400` | Backoff seconds for retry attempts 1, 2, 3 |
200
239
  | `WIGOLO_HEALTH_PROBE_INTERVAL_MS` | `30000` | Interval between SearXNG `/healthz` probes |
240
+ | `WIGOLO_DAEMON_PORT` | `3333` | HTTP server port for daemon mode |
241
+ | `WIGOLO_DAEMON_HOST` | `127.0.0.1` | HTTP server bind address for daemon mode |
201
242
 
202
243
  ## How it works
203
244
 
@@ -230,7 +271,7 @@ SearXNG bootstrap failures are self-healing: wigolo retries after 30 seconds, 1
230
271
  ## Roadmap
231
272
 
232
273
  ### v2.1 — Next
233
- - [ ] Daemon mode — persistent HTTP server, zero startup latency
274
+ - [x] Daemon mode — persistent HTTP server, zero startup latency
234
275
  - [ ] Browser interaction — click, type, scroll before extraction
235
276
  - [ ] Content change detection — diff monitoring for cached pages
236
277
  - [ ] CDP session discovery — attach to running Chrome for seamless auth
@@ -239,7 +280,7 @@ SearXNG bootstrap failures are self-healing: wigolo retries after 30 seconds, 1
239
280
  ### v2.2
240
281
  - [ ] Multi-browser pool — Chromium + Firefox for fingerprint diversity
241
282
  - [ ] Interactive REPL (`wigolo shell`)
242
- - [ ] Agent skill distribution — MCP registry listings, `SKILL.md`
283
+ - [x] Agent skill distribution — MCP registry listings, `SKILL.md`
243
284
 
244
285
  ### v3 — The Knowledge Engine
245
286
  - [ ] Answer synthesis — search + LLM = direct answers with citations (bring your own key)
@@ -252,6 +293,20 @@ SearXNG bootstrap failures are self-healing: wigolo retries after 30 seconds, 1
252
293
  - [ ] Cloud sync — share cache across machines via rclone (S3, Drive, Dropbox)
253
294
  - [ ] Team knowledge base — shared indexed content across team members
254
295
 
296
+ ## Discovery
297
+
298
+ wigolo is listed on MCP server registries for agent discovery:
299
+
300
+ - **SKILL.md** -- machine-readable tool description at repo root
301
+ - **npm** -- `npm info @staticn0va/wigolo` or search for `mcp-server` keyword
302
+
303
+ To add wigolo to your agent's toolset:
304
+ ```bash
305
+ claude mcp add wigolo -- npx @staticn0va/wigolo
306
+ ```
307
+
308
+ See `SKILL.md` for the full tool schema in agent-discovery format.
309
+
255
310
  ## Troubleshooting
256
311
 
257
312
  **SearXNG won't start**
package/SKILL.md ADDED
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: wigolo
3
+ description: Local-first web search MCP server for AI coding agents. Search, fetch, crawl, cache, and extract from the web with zero API keys, zero cloud, zero cost.
4
+ author: KnockOutEZ
5
+ license: BUSL-1.1
6
+ repository: https://github.com/KnockOutEZ/wigolo
7
+ transport: stdio
8
+ install: npx @staticn0va/wigolo
9
+ runtime: node
10
+ min_runtime_version: "20"
11
+ tools:
12
+ - name: search
13
+ description: Search the web and return results with optional full content extraction. Supports domain filtering, date ranges, categories, and ML reranking.
14
+ - name: fetch
15
+ description: Fetch a web page and return its content as clean markdown. Supports JavaScript rendering, authenticated browsing, section extraction, and caching.
16
+ - name: crawl
17
+ description: Crawl a website starting from a seed URL. Supports BFS, DFS, sitemap, and map (URL-only) strategies with depth/page limits and URL filtering.
18
+ - name: cache
19
+ description: Query the local knowledge base of previously fetched content. Full-text search over cached pages by query, URL pattern, or date. Cache stats and clearing.
20
+ - name: extract
21
+ description: Extract structured data from a web page. Supports CSS selector extraction, HTML table parsing, metadata extraction (title, author, JSON-LD), and JSON Schema heuristic matching.
22
+ ---
23
+
24
+ # wigolo
25
+
26
+ Local-first web search MCP server for AI coding agents.
27
+
28
+ ## Installation
29
+
30
+ **Claude Code:**
31
+ ```bash
32
+ claude mcp add wigolo -- npx @staticn0va/wigolo
33
+ ```
34
+
35
+ **Cursor / VS Code / any MCP client:**
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "wigolo": {
40
+ "command": "npx",
41
+ "args": ["@staticn0va/wigolo"]
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ **Optional warmup (improves search quality):**
48
+ ```bash
49
+ npx @staticn0va/wigolo warmup
50
+ ```
51
+
52
+ ## Tools
53
+
54
+ ### search
55
+
56
+ Search the web and get full markdown content in one call.
57
+
58
+ ```json
59
+ {
60
+ "query": "React Server Components best practices",
61
+ "max_results": 5,
62
+ "include_domains": ["react.dev", "vercel.com"],
63
+ "from_date": "2024-01-01"
64
+ }
65
+ ```
66
+
67
+ Returns: titles, URLs, relevance scores, and full extracted markdown per result.
68
+
69
+ ### fetch
70
+
71
+ Fetch any URL and get clean markdown.
72
+
73
+ ```json
74
+ {
75
+ "url": "https://docs.react.dev/reference/react/useState",
76
+ "section": "Parameters"
77
+ }
78
+ ```
79
+
80
+ Returns: clean markdown, links, images, metadata. Cached for future use.
81
+
82
+ ### crawl
83
+
84
+ Crawl a site from a seed URL.
85
+
86
+ ```json
87
+ {
88
+ "url": "https://docs.example.com",
89
+ "strategy": "sitemap",
90
+ "max_pages": 50
91
+ }
92
+ ```
93
+
94
+ Returns: array of pages with titles, markdown, depth. Supports `bfs`, `dfs`, `sitemap`, `map` strategies.
95
+
96
+ ### cache
97
+
98
+ Query previously fetched content without hitting the network.
99
+
100
+ ```json
101
+ {
102
+ "query": "React hooks",
103
+ "url_pattern": "*react.dev*"
104
+ }
105
+ ```
106
+
107
+ Returns: matching cached pages with full markdown and fetch timestamps.
108
+
109
+ ### extract
110
+
111
+ Structured data extraction from any URL or HTML.
112
+
113
+ ```json
114
+ {
115
+ "url": "https://example.com/product",
116
+ "mode": "schema",
117
+ "schema": {
118
+ "type": "object",
119
+ "properties": {
120
+ "price": { "type": "string" },
121
+ "name": { "type": "string" }
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
127
+ Modes: `selector` (CSS), `tables` (HTML tables), `metadata` (meta tags + JSON-LD), `schema` (JSON Schema heuristic matching).
128
+
129
+ ## Key Features
130
+
131
+ - Zero API keys required
132
+ - Zero cloud dependency -- runs entirely local
133
+ - Authenticated browsing (Chrome profiles, session state)
134
+ - Localhost access (develop against local servers)
135
+ - SQLite FTS5 cache with full-text search
136
+ - ML reranking (optional, via FlashRank)
137
+ - Extraction ensemble: site-specific, Defuddle, Trafilatura, Readability, Turndown
138
+
139
+ ## Requirements
140
+
141
+ - Node.js 20+
142
+ - Python 3.8+ (recommended, for embedded SearXNG search)
143
+ - Docker (optional, alternative to Python for SearXNG)
144
+
145
+ ## Links
146
+
147
+ - Repository: https://github.com/KnockOutEZ/wigolo
148
+ - npm: https://www.npmjs.com/package/@staticn0va/wigolo
149
+ - License: BSL 1.1 (converts to MIT on 2029-04-12)
@@ -0,0 +1,7 @@
1
+ export interface ChangeResult {
2
+ changed: boolean;
3
+ previousHash?: string;
4
+ diffSummary?: string;
5
+ }
6
+ export declare function detectChange(url: string, newMarkdown: string): ChangeResult;
7
+ //# sourceMappingURL=change-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-detector.d.ts","sourceRoot":"","sources":["../../src/cache/change-detector.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAyC3E"}
@@ -0,0 +1,43 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createLogger } from '../logger.js';
3
+ import { normalizeUrl, getHashForNormalizedUrl, getMarkdownForNormalizedUrl } from './store.js';
4
+ import { computeDiffSummary } from './diff-summary.js';
5
+ const log = createLogger('cache');
6
+ export function detectChange(url, newMarkdown) {
7
+ try {
8
+ const normalizedUrl = normalizeUrl(url);
9
+ const previousHash = getHashForNormalizedUrl(normalizedUrl);
10
+ if (previousHash === null) {
11
+ log.debug('no cached entry for change detection', { url: normalizedUrl });
12
+ return { changed: false };
13
+ }
14
+ const newHash = createHash('sha256').update(newMarkdown).digest('hex');
15
+ if (newHash === previousHash) {
16
+ log.debug('content unchanged', { url: normalizedUrl, hash: newHash });
17
+ return { changed: false };
18
+ }
19
+ const previousMarkdown = getMarkdownForNormalizedUrl(normalizedUrl);
20
+ const diffSummary = previousMarkdown !== null
21
+ ? computeDiffSummary(previousMarkdown, newMarkdown)
22
+ : undefined;
23
+ log.info('content change detected', {
24
+ url: normalizedUrl,
25
+ previousHash,
26
+ newHash,
27
+ diffSummary,
28
+ });
29
+ return {
30
+ changed: true,
31
+ previousHash,
32
+ diffSummary,
33
+ };
34
+ }
35
+ catch (err) {
36
+ log.error('change detection failed', {
37
+ url,
38
+ error: err instanceof Error ? err.message : String(err),
39
+ });
40
+ return { changed: false };
41
+ }
42
+ }
43
+ //# sourceMappingURL=change-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-detector.js","sourceRoot":"","sources":["../../src/cache/change-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAQlC,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,WAAmB;IAC3D,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,aAAa,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,gBAAgB,KAAK,IAAI;YAC3C,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QAEd,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAClC,GAAG,EAAE,aAAa;YAClB,YAAY;YACZ,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,WAAW;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACnC,GAAG;YACH,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function computeDiffSummary(oldMarkdown: string, newMarkdown: string): string;
2
+ //# sourceMappingURL=diff-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-summary.d.ts","sourceRoot":"","sources":["../../src/cache/diff-summary.ts"],"names":[],"mappings":"AA4EA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA+BnF"}
@@ -0,0 +1,87 @@
1
+ import { createLogger } from '../logger.js';
2
+ const log = createLogger('cache');
3
+ function normalizeLineEndings(text) {
4
+ return text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
5
+ }
6
+ function splitLines(text) {
7
+ if (text === '')
8
+ return [];
9
+ const normalized = normalizeLineEndings(text);
10
+ const lines = normalized.split('\n');
11
+ if (lines.length > 0 && lines[lines.length - 1] === '') {
12
+ lines.pop();
13
+ }
14
+ return lines;
15
+ }
16
+ function computeLCS(oldLines, newLines) {
17
+ const m = oldLines.length;
18
+ const n = newLines.length;
19
+ const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
20
+ for (let i = 1; i <= m; i++) {
21
+ for (let j = 1; j <= n; j++) {
22
+ if (oldLines[i - 1] === newLines[j - 1]) {
23
+ dp[i][j] = dp[i - 1][j - 1] + 1;
24
+ }
25
+ else {
26
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
27
+ }
28
+ }
29
+ }
30
+ return dp;
31
+ }
32
+ function computeDiffCounts(oldLines, newLines) {
33
+ const m = oldLines.length;
34
+ const n = newLines.length;
35
+ if (m === 0 && n === 0)
36
+ return { added: 0, removed: 0, modified: 0 };
37
+ if (m === 0)
38
+ return { added: n, removed: 0, modified: 0 };
39
+ if (n === 0)
40
+ return { added: 0, removed: m, modified: 0 };
41
+ const dp = computeLCS(oldLines, newLines);
42
+ const lcsLength = dp[m][n];
43
+ const removed = m - lcsLength;
44
+ const added = n - lcsLength;
45
+ let modified = 0;
46
+ const pairable = Math.min(removed, added);
47
+ if (pairable > 0) {
48
+ modified = pairable;
49
+ }
50
+ return {
51
+ added: added - modified,
52
+ removed: removed - modified,
53
+ modified,
54
+ };
55
+ }
56
+ function pluralize(count, singular) {
57
+ return count === 1 ? `${count} ${singular}` : `${count} ${singular}s`;
58
+ }
59
+ const MAX_DIFF_LINES = 5000;
60
+ export function computeDiffSummary(oldMarkdown, newMarkdown) {
61
+ try {
62
+ const oldLines = splitLines(oldMarkdown);
63
+ const newLines = splitLines(newMarkdown);
64
+ if (oldLines.length > MAX_DIFF_LINES || newLines.length > MAX_DIFF_LINES) {
65
+ log.debug('content too large for LCS diff, returning approximate summary', {
66
+ oldLineCount: oldLines.length,
67
+ newLineCount: newLines.length,
68
+ });
69
+ return `Content changed significantly (${oldLines.length} -> ${newLines.length} lines)`;
70
+ }
71
+ const counts = computeDiffCounts(oldLines, newLines);
72
+ const summary = `${pluralize(counts.added, 'line')} added, ` +
73
+ `${pluralize(counts.removed, 'line')} removed, ` +
74
+ `${pluralize(counts.modified, 'line')} modified`;
75
+ log.debug('diff summary computed', {
76
+ oldLineCount: oldLines.length,
77
+ newLineCount: newLines.length,
78
+ ...counts,
79
+ });
80
+ return summary;
81
+ }
82
+ catch (err) {
83
+ log.warn('diff summary computation failed', { error: err instanceof Error ? err.message : String(err) });
84
+ return 'Unable to compute diff summary';
85
+ }
86
+ }
87
+ //# sourceMappingURL=diff-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-summary.js","sourceRoot":"","sources":["../../src/cache/diff-summary.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import type { RawFetchResult, ExtractionResult, CachedContent, SearchResultItem,
2
2
  export declare function normalizeUrl(url: string): string;
3
3
  export declare function cacheContent(result: RawFetchResult, extraction: ExtractionResult): void;
4
4
  export declare function getCachedContent(url: string): CachedContent | null;
5
+ export declare function getHashForNormalizedUrl(normalizedUrl: string): string | null;
6
+ export declare function getMarkdownForNormalizedUrl(normalizedUrl: string): string | null;
5
7
  export declare function isExpired(cached: CachedContent): boolean;
6
8
  export declare function searchCache(query: string): CachedContent[];
7
9
  export interface CachedSearchResult {
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgBjH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0BhD;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAsCvF;AAsCD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CASlE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAGxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAY1D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,EAAE,MAAM,EAAE,GACpB,IAAI,CAqBN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAgB/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,aAAa,EAAE,CA4BlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CA0BT;AAED,wBAAgB,aAAa,IAAI,UAAU,CAiB1C"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgBjH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0BhD;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAsCvF;AAsCD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CASlE;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5E;AAED,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAGxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAY1D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,EAAE,MAAM,EAAE,GACpB,IAAI,CAqBN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAgB/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,aAAa,EAAE,CA4BlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CA0BT;AAED,wBAAgB,aAAa,IAAI,UAAU,CAiB1C"}
@@ -99,6 +99,16 @@ export function getCachedContent(url) {
99
99
  `).get(url, normalizedUrl);
100
100
  return row ? rowToCachedContent(row) : null;
101
101
  }
102
+ export function getHashForNormalizedUrl(normalizedUrl) {
103
+ const db = getDatabase();
104
+ const row = db.prepare('SELECT content_hash FROM url_cache WHERE normalized_url = ? LIMIT 1').get(normalizedUrl);
105
+ return row?.content_hash ?? null;
106
+ }
107
+ export function getMarkdownForNormalizedUrl(normalizedUrl) {
108
+ const db = getDatabase();
109
+ const row = db.prepare('SELECT markdown FROM url_cache WHERE normalized_url = ? LIMIT 1').get(normalizedUrl);
110
+ return row ? row.markdown : null;
111
+ }
102
112
  export function isExpired(cached) {
103
113
  if (!cached.expiresAt)
104
114
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runAuth(args: string[]): Promise<number>;
2
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AA2FA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB7D"}
@@ -0,0 +1,95 @@
1
+ import { getConfig } from '../config.js';
2
+ import { createLogger } from '../logger.js';
3
+ import { listSessions } from '../fetch/auth.js';
4
+ const log = createLogger('cli');
5
+ function write(text) {
6
+ process.stderr.write(text + '\n');
7
+ }
8
+ async function discoverCommand() {
9
+ const config = getConfig();
10
+ if (!config.cdpUrl) {
11
+ write('Error: WIGOLO_CDP_URL is not configured.');
12
+ write('Set it to your Chrome debugging endpoint, e.g.:');
13
+ write(' export WIGOLO_CDP_URL=http://localhost:9222');
14
+ write('');
15
+ write('Launch Chrome with debugging enabled:');
16
+ write(' google-chrome --remote-debugging-port=9222');
17
+ return 1;
18
+ }
19
+ try {
20
+ const sessions = await listSessions();
21
+ if (sessions.length === 0) {
22
+ write('No active CDP sessions found.');
23
+ write(`Endpoint: ${config.cdpUrl}`);
24
+ write('');
25
+ write('Make sure Chrome is running with --remote-debugging-port=9222');
26
+ return 0;
27
+ }
28
+ write(`Found ${sessions.length} active session(s) at ${config.cdpUrl}:\n`);
29
+ for (const session of sessions) {
30
+ write(` ID: ${session.id}`);
31
+ write(` Title: ${session.title || '(untitled)'}`);
32
+ write(` URL: ${session.url}`);
33
+ write(` WS: ${session.webSocketDebuggerUrl}`);
34
+ if (session.type) {
35
+ write(` Type: ${session.type}`);
36
+ }
37
+ write('');
38
+ }
39
+ return 0;
40
+ }
41
+ catch (err) {
42
+ const message = err instanceof Error ? err.message : String(err);
43
+ write(`Error discovering CDP sessions: ${message}`);
44
+ log.error('auth discover failed', { error: message });
45
+ return 1;
46
+ }
47
+ }
48
+ async function statusCommand() {
49
+ const config = getConfig();
50
+ write('Auth Configuration Status:\n');
51
+ if (config.authStatePath) {
52
+ write(` Storage State: ${config.authStatePath}`);
53
+ }
54
+ else {
55
+ write(' Storage State: not configured (WIGOLO_AUTH_STATE_PATH)');
56
+ }
57
+ if (config.chromeProfilePath) {
58
+ write(` Chrome Profile: ${config.chromeProfilePath}`);
59
+ }
60
+ else {
61
+ write(' Chrome Profile: not configured (WIGOLO_CHROME_PROFILE_PATH)');
62
+ }
63
+ if (config.cdpUrl) {
64
+ write(` CDP URL: ${config.cdpUrl}`);
65
+ }
66
+ else {
67
+ write(' CDP URL: not configured (WIGOLO_CDP_URL)');
68
+ }
69
+ write('');
70
+ const hasAny = config.authStatePath || config.chromeProfilePath || config.cdpUrl;
71
+ if (!hasAny) {
72
+ write(' No auth methods configured. Set one of the above env vars.');
73
+ }
74
+ else {
75
+ write(' Fallback order: Storage State > Chrome Profile > CDP');
76
+ }
77
+ return 0;
78
+ }
79
+ export async function runAuth(args) {
80
+ const subcommand = args[0];
81
+ switch (subcommand) {
82
+ case 'discover':
83
+ return discoverCommand();
84
+ case 'status':
85
+ return statusCommand();
86
+ default:
87
+ write('Usage: wigolo auth <subcommand>');
88
+ write('');
89
+ write('Subcommands:');
90
+ write(' discover List active Chrome CDP debugging sessions');
91
+ write(' status Show current auth configuration');
92
+ return 1;
93
+ }
94
+ }
95
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,7 @@
1
- export declare function runDaemon(_args: string[]): void;
1
+ export interface DaemonArgs {
2
+ port: number;
3
+ host: string;
4
+ }
5
+ export declare function parseDaemonArgs(args: string[]): DaemonArgs;
6
+ export declare function runDaemon(args: string[]): void;
2
7
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAG/C"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmB1D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAoC9C"}