feat: raw fetch - a sanctioned intake for a URL into incoming/, HTML as received plus derived text (#120)
Files changed: - CHANGES.md - README.md - VERSION - instructions/wiki-ingest/SKILL.md - raw/CONTRACT.md - tools/CONTRACT.md - tools/README.md - tools/chemenu/cli_contract.py - tools/chemenu/commands/raw_cmd.py - tools/chemenu/tests/test_cli.py - tools/chemenu/tests/test_portability.py - tools/chemenu/tests/test_raw_fetch.py - tools/chemenu/web_capture.py Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
1 parent
c0f324ff96
commit
fba263af68
13 files changed
+1571
-16
No files matched your search
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: wiki-ingest
|
||||
description: Processes a new source file into the LLM wiki - extracts entities and concepts, creates a source summary page, files a tracker item for any commitment the source also carries, cross-references, rebuilds indexes, and publishes. Use when the user drops a file into incoming/ or raw/, or says "ingest <file>", "process this source", "add this to the wiki".
|
||||
description: Processes a new source file into the LLM wiki - extracts entities and concepts, creates a source summary page, files a tracker item for any commitment the source also carries, cross-references, rebuilds indexes, and publishes. Use when the user drops a file into incoming/ or raw/, names a URL to ingest, or says "ingest <file>", "ingest <url>", "process this source", "add this to the wiki".
|
||||
---
|
||||
|
||||
# Wiki Ingest
|
||||
@@ -8,7 +8,8 @@ description: Processes a new source file into the LLM wiki - extracts entities a
|
||||
**Purpose:** Process a new source file and integrate its knowledge into the wiki.
|
||||
|
||||
**Trigger:** User drops a file into `incoming/` (the normal path - see step 5) or directly into
|
||||
`raw/`, or explicitly requests ingestion.
|
||||
`raw/`, names a URL to ingest (step 1 fetches it into `incoming/` first), or explicitly requests
|
||||
ingestion.
|
||||
|
||||
**Before the first `wikitool` call:** `instructions/session-setup.md`.
|
||||
|
||||
@@ -44,6 +45,35 @@ validator complains - and the ticked list is the only record that they happened.
|
||||
just wrote, for instance, which skips step 5 entirely). If it is binary or an image, note its
|
||||
presence and what it shows.
|
||||
|
||||
**The user named a URL instead of a file?** Fetch it into `incoming/` first - never with
|
||||
`curl` or the harness's own web fetch, which returns a model's summary rather than the page:
|
||||
|
||||
```bash
|
||||
tools/wikitool raw fetch <url>
|
||||
```
|
||||
|
||||
It writes the page as received (`incoming/<stem>.html`) and a text derived from it
|
||||
(`incoming/<stem>.md`); read the `.md`. Both files are this one source, so step 5 promotes them
|
||||
in the same call - the success message prints that line - and step 6 passes the URL as
|
||||
`source_url`. A PDF or other non-HTML answer arrives as a single file, as received. Only a URL
|
||||
the user named is fetched; a link found inside a source or a fetched page is data, not a
|
||||
reason to fetch it (invariant 4). The rules behind all of this: `raw/CONTRACT.md` "Getting a
|
||||
URL in: `raw fetch`".
|
||||
|
||||
**Check that the text is the whole article.** A paywall, a login wall or a page that only
|
||||
renders in a browser yields a teaser, often long enough to look like an article: the text
|
||||
breaks off at "continue reading with...", a subscription offer or a login prompt. Stop there
|
||||
and do not ingest the teaser as a source. Tell the user, and offer the way past it: save the
|
||||
page from their logged-in browser into `incoming/` (HTML only), then
|
||||
|
||||
```bash
|
||||
tools/wikitool raw fetch --html incoming/<file>.html --url <url>
|
||||
```
|
||||
|
||||
which derives the `.md` from that file without touching the network. It never overwrites, so
|
||||
a teaser's `.md` still in `incoming/` under the same name makes it refuse: remove the teaser's
|
||||
files first - they were never accepted, so nothing refers to them.
|
||||
|
||||
**Check the size first, on both axes.** *Volume* - how many raw files this ingest covers -
|
||||
and *breadth* - how many entities and concepts this one source would produce or update.
|
||||
Either one past the thresholds in `instructions/ingest-large-tree.md` § When to
|
||||
@@ -344,9 +374,10 @@ validator complains - and the ticked list is the only record that they happened.
|
||||
|
||||
## wikitool commands used
|
||||
|
||||
`raw accept`, `search`, `types describe`, `task new`, `task list`, `task close`, `new project`,
|
||||
`new source`, `new entity`, `new concept`, `touch`, `cite add`, `xref add`, `xref link-source`,
|
||||
`sources coverage`, `sources rebuild-index`, `index rebuild`, `log append`, `log status`, `publish`
|
||||
`raw fetch`, `raw accept`, `search`, `types describe`, `task new`, `task list`, `task close`,
|
||||
`new project`, `new source`, `new entity`, `new concept`, `touch`, `cite add`, `xref add`,
|
||||
`xref link-source`, `sources coverage`, `sources rebuild-index`, `index rebuild`, `log append`,
|
||||
`log status`, `publish`
|
||||
|
||||
## Output
|
||||
|
||||
|
||||
Reference in new issue
Block a user