@sylphx/lookout 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -95,7 +95,7 @@ const extracted = await lookout.extract({ url: 'https://example.com' })
95
95
  | `web_search` | Public adapters (DuckDuckGo HTML + Wikipedia + npm registry + HN Algolia), rank fusion, query-term boost, host filters |
96
96
  | `web_fetch` | SSRF-safe HTTP(S) fetch, redirects, size limits, cite spans |
97
97
  | `web_extract` | Title, description, JSON-LD, tables, spans from HTML/URL |
98
- | `web_cache` | Local disk cache query/stats/clear/prune (`LOOKOUT_CACHE_DIR`, optional max age) |
98
+ | `web_cache` (advanced) | Local disk cache query/stats/clear/prune (`LOOKOUT_CACHE_DIR`, optional max age) |
99
99
  | `web_crawl` *(advanced)* | Same-origin, depth-limited crawl (not a full-site crawler) |
100
100
  | `web_research` *(advanced)* | Search then fetch/extract top pages with citeable excerpts |
101
101
 
@@ -1,36 +1,11 @@
1
- # Lookout — brand npm publish readiness
1
+ # Lookout — brand npm publish
2
2
 
3
- **Publish authority:** this repository only (not a multi-product monorepo).
3
+ **Publish authority:** this repository only.
4
4
 
5
5
  | Field | Value |
6
6
  | --- | --- |
7
7
  | Brand | **Lookout** |
8
- | Transitional npm id | `@sylphx/lookout` |
9
- | Target brand npm id | `@sylphx/lookout` |
10
- | Brand bin | `lookout` |
11
- | Marketplace title | Lookout (`server.json`) |
8
+ | Canonical npm id | `@sylphx/lookout` |
9
+ | Transitional id | _(none — shipped as brand from day one)_ |
12
10
 
13
- ## Current policy
14
-
15
- 1. Ship/publish `@sylphx/lookout` from this repo (existing CI/release train).
16
- 2. Optional second publish of `@sylphx/lookout` **from this same repo** (same artifacts, renamed package.json at pack time).
17
- 3. Never publish brand packages from any other repository.
18
-
19
- ## Dry-run (no npm auth required)
20
-
21
- ```bash
22
- # Transitional package as configured
23
- npm pack --dry-run
24
- # Or product-specific brand pack plan script when present:
25
- # bun scripts/brand-pack-plan.ts
26
- ```
27
-
28
- ## Blockers for live brand publish
29
-
30
- - npm automation token / 2FA for `@sylphx` scope
31
- - Changeset/version alignment with transitional package
32
- - Registry readback proof after publish
33
-
34
- ## Authority
35
-
36
- Publish and brand packages only from **this repository**. No central Instruments monorepo.
11
+ No dual-name expand required.
@@ -0,0 +1,19 @@
1
+ # Local-first frontier
2
+
3
+ ## Principles
4
+
5
+ 1. **Less dependency** — prefer OS/Rust binaries over heavy npm ML
6
+ 2. **Zero config** — works without API keys
7
+ 3. **Local first, cloud optional**
8
+ 4. **Speed / size / performance**
9
+ 5. **Rust first** where engines exist
10
+
11
+ See product README + EVIDENCE_CONTRACT for surfaces.
12
+
13
+ ## Non-negotiable
14
+
15
+ 1. Zero API key for default path
16
+ 2. Prefer Rust native MCP when present
17
+ 3. Few tools; primary path documented in TOOL_SURFACE.md
18
+ 4. Cloud / LLM only optional and non-authority
19
+ 5. Product SSOT is this repository only (no instruments monorepo)
@@ -21,7 +21,7 @@ Tiny default: public search adapters + fetch/extract/cache with citeable excerpt
21
21
  - `web_search`
22
22
  - `web_fetch`
23
23
  - `web_extract`
24
- - `web_cache`
24
+ - ~~core~~ `web_cache` (advanced)
25
25
  - `web_crawl (advanced)`
26
26
  - `web_research (advanced)`
27
27
 
package/docs/PUBLISH.md CHANGED
@@ -2,22 +2,19 @@
2
2
 
3
3
  | Field | Value |
4
4
  | --- | --- |
5
- | Package | `@sylphx/lookout` |
6
- | Repo version | `0.1.0` |
7
- | Registry state | **not on npm (404)** |
8
- | npm auth in this environment | `ENEEDAUTH` (external credential blocker) |
5
+ | Transitional npm | `@sylphx/lookout` |
6
+ | Brand npm | `— (canonical)` |
7
+ | Version | `0.1.1` |
8
+ | Registry | **live** (dual expand–contract where brand transitional) |
9
+ | Auth | GitHub org `NPM_TOKEN` via publish workflows |
9
10
 
10
- ## In-repo readiness
11
-
12
- - CI/tests/release-gate green on tip
13
- - `npm pack --dry-run` produces a valid TS package (~23KB)
14
- - Live `npm publish` blocked only by missing `@sylphx` registry auth in this environment
15
-
16
- ## Install until publish lands
11
+ ## Install
17
12
 
18
13
  ```bash
19
- git clone https://github.com/SylphxAI/lookout.git
20
- cd lookout
21
- bun install
22
- ./bin/lookout doctor
14
+ # preferred brand
15
+ npm i -g @sylphx/lookout
16
+ # transitional still valid during expand
17
+ npm i -g @sylphx/lookout
23
18
  ```
19
+
20
+ Workflows: `publish-npm-package.yml`, `publish-brand-alias.yml`.
@@ -1,19 +1,26 @@
1
- # Tool surface — this product
1
+ # Tool surface — Lookout
2
2
 
3
- Policy: **few, powerful, obvious** tools. Prefer the primary read tool first.
3
+ Policy: **few, powerful, obvious** tools.
4
+
5
+ ## Primary
4
6
 
5
7
  | Tool | Role |
6
8
  | --- | --- |
7
- | `web_search` | Local-first public search adapters |
9
+ | `web_search` | Local-first public search adapters (no paid key required) |
8
10
  | `web_fetch` | SSRF-aware fetch |
9
11
  | `web_extract` | Main-content extract with citeable spans |
12
+
13
+ ## Advanced
14
+
15
+ | Tool | Role |
16
+ | --- | --- |
10
17
  | `web_cache` | Cache stats/control |
11
- | `web_crawl` | Advanced crawl |
12
- | `web_research` | Advanced multi-step research |
18
+ | `web_crawl` | Multi-page crawl |
19
+ | `web_research` | Multi-step research orchestration |
13
20
 
14
21
  ## Rules
15
22
 
16
- 1. Do not add near-duplicate tools that only differ by vanity naming.
23
+ 1. Default agent path: **search fetch extract**.
17
24
  2. Advanced tools must be labeled advanced in README/skill.
18
- 3. Schema fields should be agent-obvious; fail closed on unsafe input.
19
- 4. Composition with sibling products is via public contracts, not monorepo imports.
25
+ 3. No paid API key required for primary path.
26
+ 4. Local-first means process runs locally; network is inherent to web.
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@sylphx/lookout",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
- "description": "Lookout \u2014 local-first web instrument for agents. Search, fetch, extract, cache with citeable excerpts. No required API key. SDK \u00b7 CLI \u00b7 MCP.",
5
+ "description": "Lookout local-first web instrument for agents. Search, fetch, extract, cache with citeable excerpts. No required API key. SDK · CLI · MCP.",
6
6
  "type": "module",
7
7
  "license": "MIT",
8
8
  "bin": {
package/server.json CHANGED
@@ -2,18 +2,18 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.SylphxAI/lookout",
4
4
  "title": "Lookout",
5
- "description": "Local-first web instrument for agents: search, fetch, extract, cache. No required API key. SDK · CLI · MCP.",
5
+ "description": "Local-first web instrument for agents: search, fetch, extract, cache. No required API key. SDK \u00b7 CLI \u00b7 MCP.",
6
6
  "repository": {
7
7
  "url": "https://github.com/SylphxAI/lookout",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.1.0",
10
+ "version": "0.1.1",
11
11
  "websiteUrl": "https://github.com/SylphxAI/lookout#readme",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "@sylphx/lookout",
16
- "version": "0.1.0",
16
+ "version": "0.1.1",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }
package/src/doctor.ts CHANGED
@@ -14,7 +14,7 @@ export function runDoctor(version = '0.1.0'): DoctorReport {
14
14
  const checks: DoctorReport['checks'] = [];
15
15
  checks.push({
16
16
  name: 'core_tools',
17
- status: CORE_TOOLS.length === 4 ? 'ok' : 'fail',
17
+ status: CORE_TOOLS.length === 3 ? 'ok' : 'fail',
18
18
  message: `core: ${CORE_TOOLS.join(', ')}; advanced: ${ADVANCED_TOOLS.join(', ')}`,
19
19
  });
20
20
  const cacheDir = defaultCacheDir();
package/src/engine.ts CHANGED
@@ -423,5 +423,5 @@ export class LookoutEngine {
423
423
  }
424
424
  }
425
425
 
426
- export const CORE_TOOLS = ['web_search', 'web_fetch', 'web_extract', 'web_cache'] as const;
427
- export const ADVANCED_TOOLS = ['web_crawl', 'web_research'] as const;
426
+ export const CORE_TOOLS = ['web_search', 'web_fetch', 'web_extract'] as const;
427
+ export const ADVANCED_TOOLS = ['web_cache', 'web_crawl', 'web_research'] as const;
package/src/mcp.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Lookout MCP server — stdio tools:
3
- * core: web_search, web_fetch, web_extract, web_cache
3
+ * core: web_search, web_fetch, web_extract; advanced: web_cache, web_crawl, web_research
4
4
  * advanced: web_crawl, web_research
5
5
  */
6
6
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';