@hraness/wordcell 0.21.3 → 0.22.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.
- package/README.md +170 -64
- package/dist/{authority-4sp9d552.js → authority-1pgftmwq.js} +55 -10
- package/dist/benchmark.js +3 -3
- package/dist/capture.js +6 -5
- package/dist/cli.js +37 -31
- package/dist/clip/acquire.js +3 -2
- package/dist/clip/cli.js +6 -5
- package/dist/clip/doctor.js +4 -3
- package/dist/clip/jobs.js +3 -3
- package/dist/clip/refresh.js +1 -1
- package/dist/evaluation-builder.js +18 -17
- package/dist/evaluation-kb.js +14 -13
- package/dist/graph-authority.js +3 -3
- package/dist/graph-percolation.js +5 -5
- package/dist/index-0dqfnrz9.js +1985 -0
- package/dist/{index-0k2x4nn9.js → index-1tm7bgx7.js} +16 -4
- package/dist/{index-vdw5yjfa.js → index-2hf27mws.js} +108 -18
- package/dist/index-3agn8scn.js +306 -0
- package/dist/{index-0rfcqab6.js → index-4ag64rc1.js} +555 -59
- package/dist/index-4knsp9qj.js +34 -0
- package/dist/index-66pshdtx.js +341 -0
- package/dist/index-9rf81m0p.js +368 -0
- package/dist/{index-59ssmqqm.js → index-a6kbv718.js} +1 -1
- package/dist/{index-51bap0mq.js → index-avbce90h.js} +9 -9
- package/dist/{index-9zcpdbjg.js → index-de2w8crk.js} +13 -13
- package/dist/{index-pbr6rv47.js → index-e6p9e926.js} +6 -6
- package/dist/{index-bcfn9xah.js → index-famy7fhs.js} +5 -5
- package/dist/{index-van48n3g.js → index-fc4dr114.js} +4 -2
- package/dist/{index-jzcws0zn.js → index-g5vsqmdy.js} +27 -57
- package/dist/{index-115b07ap.js → index-hcw140eb.js} +5 -5
- package/dist/index-j70m75wd.js +217 -0
- package/dist/{index-3ehtt59c.js → index-qwgsmtsz.js} +1 -1
- package/dist/{index-bgfzwt4h.js → index-t2bs9xdr.js} +4 -4
- package/dist/index.js +285 -93
- package/dist/portfolio.js +14 -13
- package/dist/publish-model.js +36 -0
- package/dist/publish-reader/reader.css +1042 -0
- package/dist/publish-reader/reader.js +1534 -0
- package/dist/publish-reader/theme.js +92 -0
- package/dist/publish-search.js +52 -0
- package/dist/publish.js +36 -0
- package/dist/rerank-typesafe.js +13 -0
- package/dist/rerank.js +14 -0
- package/dist/sdk.js +14 -11
- package/dist/search.js +2 -2
- package/dist/semantic.js +4 -4
- package/dist/{support-vm4mkw0k.js → support-mywv1em0.js} +38 -32
- package/dist/workflows/decision-context.js +13 -12
- package/dist/workflows/index.js +13 -12
- package/package.json +63 -5
- package/skills/wordcell/AGENTS.md +1 -0
- package/skills/wordcell/SKILL.md +2 -1
- package/skills/wordcell/agents/openai.yaml +1 -1
- package/skills/wordcell/references/publish.md +93 -0
- package/skills/wordcell/references/query.md +22 -0
- package/src/cli-program.ts +347 -9
- package/src/index.ts +4 -0
- package/src/oh/authority.ts +14 -5
- package/src/oh/canonical-rust.ts +127 -0
- package/src/oh/projection-rust.ts +63 -0
- package/src/oh-adoption.ts +7 -1
- package/src/publish-graph.ts +0 -0
- package/src/publish-index.ts +195 -0
- package/src/publish-markdown.ts +617 -0
- package/src/publish-model.ts +599 -0
- package/src/publish-nav.ts +204 -0
- package/src/publish-pages.ts +382 -0
- package/src/publish-reader/reader.css +1042 -0
- package/src/publish-reader/reader.ts +1017 -0
- package/src/publish-reader/theme.ts +97 -0
- package/src/publish-search.ts +418 -0
- package/src/publish-select.ts +419 -0
- package/src/publish-theme.ts +106 -0
- package/src/publish.ts +904 -0
- package/src/rerank-credentials.ts +56 -0
- package/src/rerank-typesafe.ts +472 -0
- package/src/rerank.ts +389 -0
- package/src/sdk.ts +157 -6
- package/src/serve.ts +180 -0
- package/src/vault.ts +23 -9
- package/dist/{index-why54q5p.js → index-gm9t95d9.js} +3 -3
package/README.md
CHANGED
|
@@ -3,116 +3,156 @@
|
|
|
3
3
|
|
|
4
4
|
[](https://github.com/hraness/wordcell/tree/main/skills/wordcell)
|
|
5
5
|
|
|
6
|
-
A knowledge base for coding agents
|
|
7
|
-
|
|
8
|
-
It turns sources, plans, and decisions into inspectable context that agents can
|
|
9
|
-
recover across sessions without coupling application code to the knowledge
|
|
10
|
-
system.
|
|
6
|
+
A local knowledge base for coding agents. Save decisions in Markdown and recover
|
|
7
|
+
the context behind your code. Give the next session only the context it needs.
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
Your files stay yours: read them in Obsidian or any editor, review changes in
|
|
10
|
+
Git, and rebuild every index from the Markdown. Exact search and graph queries
|
|
11
|
+
run on your machine with no account or model. Web capture, hosted agents, and
|
|
12
|
+
optional remote reranking have [separate privacy boundaries](#privacy-and-boundaries).
|
|
13
|
+
|
|
14
|
+
[Documentation](https://wordcell.io/docs) · [Comparisons](https://github.com/hraness/wordcell/blob/main/docs/comparisons.md) · [Measured evidence](https://github.com/hraness/wordcell/blob/main/docs/evidence.md) · [Changelog](https://github.com/hraness/wordcell/blob/main/CHANGELOG.md)
|
|
15
|
+
|
|
16
|
+
## Why Wordcell
|
|
17
|
+
|
|
18
|
+
- **Keep decisions with the work.** Link a plan to the notes that explain it,
|
|
19
|
+
attach those notes to a code path, and recover their Git history on request.
|
|
20
|
+
Only context you save becomes part of the record.
|
|
21
|
+
- **Read what matters.** Start with a code path, search result, or linked note.
|
|
22
|
+
Get a limited set of summaries and open the sources you need, instead of
|
|
23
|
+
loading the whole vault into an agent conversation.
|
|
24
|
+
- **Keep control of your knowledge.** Markdown and Git are the source of truth.
|
|
25
|
+
Use local search, export selected notes as a static site, and keep using the
|
|
26
|
+
files even without Wordcell.
|
|
27
|
+
|
|
28
|
+
Plain Markdown may be enough for a small set of notes. QMD is a good fit for
|
|
29
|
+
local document retrieval and also supplies Wordcell's optional semantic search.
|
|
30
|
+
Wordcell adds a connected workflow for repository context, authored relationships,
|
|
31
|
+
Git evidence, and selective publishing. [Compare the tradeoffs](https://github.com/hraness/wordcell/blob/main/docs/comparisons.md).
|
|
13
32
|
|
|
14
33
|
## Install
|
|
15
34
|
|
|
16
35
|
[Bun 1.3.14 or newer](https://bun.sh/docs/installation) and Git are required.
|
|
17
|
-
The CLI and TypeScript SDK run with Bun.
|
|
36
|
+
The CLI and TypeScript SDK run with Bun. Install the versioned GitHub archive:
|
|
18
37
|
|
|
19
38
|
```sh
|
|
20
|
-
|
|
21
|
-
bun add --global --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.21.3/hraness-wordcell-0.21.3.tgz
|
|
39
|
+
bun add --global --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.22.0/hraness-wordcell-0.22.0.tgz
|
|
22
40
|
wordcell --help
|
|
23
41
|
```
|
|
24
42
|
|
|
25
|
-
The same release is mirrored
|
|
43
|
+
Prefer npm? The same release is [mirrored there](https://www.npmjs.com/package/@hraness/wordcell):
|
|
26
44
|
|
|
27
45
|
```sh
|
|
28
|
-
npm install --global --ignore-scripts @hraness/wordcell@0.
|
|
46
|
+
npm install --global --ignore-scripts @hraness/wordcell@0.22.0
|
|
29
47
|
wordcell --help
|
|
30
48
|
```
|
|
31
49
|
|
|
32
|
-
Bun
|
|
33
|
-
|
|
34
|
-
semantic search, browser capture, and PDF tools have
|
|
50
|
+
Keep Bun in `PATH` for either installation. If your shell cannot find `wordcell`,
|
|
51
|
+
add your package manager's global executable directory to `PATH` and reopen the
|
|
52
|
+
terminal. Optional semantic search, browser capture, and PDF tools have
|
|
53
|
+
[additional prerequisites](https://github.com/hraness/wordcell/blob/main/docs/reference.md#review-lifecycle-scripts-before-enabling-optional-adapters).
|
|
54
|
+
|
|
55
|
+
## Keep one decision available to the next session
|
|
56
|
+
|
|
57
|
+
Run this from a directory where you want a new `kb/` folder. It creates one
|
|
58
|
+
Markdown note and finds it without downloading a model or contacting a service:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
wordcell init kb
|
|
62
|
+
wordcell note create notes/parser-contract \
|
|
63
|
+
--title "Parser contract" --type concept --tag architecture \
|
|
64
|
+
--body "Parser retries stop after three attempts." --root kb
|
|
65
|
+
wordcell search "parser retries" --root kb --mode exact
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The result includes `notes/parser-contract` and the saved retry constraint.
|
|
69
|
+
Open `kb/notes/parser-contract.md` to see the ordinary Markdown file. Wordcell
|
|
70
|
+
adds a stable `document_id` in its frontmatter; you can edit the prose normally.
|
|
71
|
+
|
|
72
|
+
Already have Markdown or an Obsidian vault? In **v0.22.0 or newer**, search
|
|
73
|
+
the existing folder without initialization or an `index.md` file:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
wordcell search "a phrase from your notes" --root /path/to/your/vault --mode exact
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Replace the path and phrase with your own. You don't need to initialize,
|
|
80
|
+
convert, or move the existing files to search them.
|
|
35
81
|
|
|
36
82
|
### Use with a coding agent
|
|
37
83
|
|
|
38
|
-
|
|
39
|
-
|
|
84
|
+
After trying the CLI, install the public Agent Skill into a compatible agent,
|
|
85
|
+
such as Claude Code, Codex, Cursor, or GitHub Copilot:
|
|
40
86
|
|
|
41
87
|
```sh
|
|
42
|
-
bunx skills add hraness/wordcell#v0.
|
|
88
|
+
bunx skills add hraness/wordcell#v0.22.0 --skill wordcell
|
|
43
89
|
```
|
|
44
90
|
|
|
45
91
|
Then ask:
|
|
46
92
|
|
|
47
93
|
```text
|
|
48
|
-
Use Wordcell to
|
|
49
|
-
|
|
94
|
+
Use Wordcell to search for "parser retries" in ./kb using exact mode.
|
|
95
|
+
Read the matching note and explain the saved constraint.
|
|
50
96
|
```
|
|
51
97
|
|
|
52
|
-
The skill installs instructions, not a
|
|
53
|
-
|
|
54
|
-
|
|
98
|
+
The skill installs instructions, not a service. Installation does not create a
|
|
99
|
+
vault, modify your notes, or grant an agent permission to access other accounts.
|
|
100
|
+
The agent still follows its own provider and data-handling settings.
|
|
101
|
+
[Inspect the skill](https://github.com/hraness/wordcell/blob/main/skills/wordcell/SKILL.md).
|
|
55
102
|
|
|
56
|
-
##
|
|
103
|
+
## Recover the stopped session
|
|
57
104
|
|
|
58
|
-
|
|
59
|
-
in a note, then link the plan that will implement it:
|
|
105
|
+
Link a plan to the decision you saved:
|
|
60
106
|
|
|
61
|
-
```
|
|
62
|
-
wordcell init kb
|
|
63
|
-
wordcell note create notes/parser-contract \
|
|
64
|
-
--title "Parser contract" --type concept --tag architecture \
|
|
65
|
-
--body "Parser retries stop after three attempts." --root kb
|
|
107
|
+
```sh
|
|
66
108
|
wordcell note create plans/parser-v2 \
|
|
67
109
|
--title "Parser v2" --type plan \
|
|
68
110
|
--body "The plan implements [[notes/parser-contract|the parser contract]]." \
|
|
69
111
|
--root kb
|
|
112
|
+
wordcell backlinks notes/parser-contract --root kb
|
|
70
113
|
```
|
|
71
114
|
|
|
72
|
-
The
|
|
73
|
-
|
|
74
|
-
|
|
115
|
+
The backlink result includes `plans/parser-v2`, so a later session can find the
|
|
116
|
+
work that depends on the constraint.
|
|
117
|
+
|
|
118
|
+
For code-path lookup, add this field inside the existing frontmatter of
|
|
119
|
+
`kb/notes/parser-contract.md`:
|
|
75
120
|
|
|
76
121
|
```yaml
|
|
77
122
|
repository_scopes:
|
|
78
123
|
- packages/parser
|
|
79
124
|
```
|
|
80
125
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
## Recover the stopped session
|
|
126
|
+
From your repository root, use an actual path under that scope and inspect the
|
|
127
|
+
returned notes and inherited `AGENTS.md` guides:
|
|
85
128
|
|
|
86
|
-
|
|
87
|
-
signal:
|
|
88
|
-
|
|
89
|
-
```shell
|
|
129
|
+
```sh
|
|
90
130
|
wordcell context packages/parser/src/index.ts --root kb --repo .
|
|
91
|
-
wordcell search "why parser retries stop" --root kb --mode exact \
|
|
92
|
-
--history --repo .
|
|
93
|
-
wordcell backlinks notes/parser-contract --root kb
|
|
94
|
-
wordcell history notes/parser-contract --root kb --repo .
|
|
95
131
|
```
|
|
96
132
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
| Backlinks | The plan that explicitly links to the constraint. |
|
|
101
|
-
| Exact search | The current note matched from its words, without a network request or embedding model. |
|
|
102
|
-
| Repository context | Inherited `AGENTS.md` guides and records scoped to `packages/parser`. |
|
|
103
|
-
| Git history | The commits and bounded co-change evidence associated with the note. |
|
|
104
|
-
|
|
105
|
-
Together, those views recover the persisted decision, related plan, applicable
|
|
106
|
-
rules, and provenance needed to resume the work. They do not reconstruct
|
|
107
|
-
private chat or prove that the note is still correct. Open the returned
|
|
108
|
-
Markdown and guides before acting on them.
|
|
133
|
+
Commit the vault with your repository to preserve its history, then use
|
|
134
|
+
`wordcell history notes/parser-contract --root kb --repo .` to inspect the
|
|
135
|
+
commits behind the note. History is optional and requires recorded Git commits.
|
|
109
136
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
137
|
+
These views recover saved decisions, related work, rules, and provenance.
|
|
138
|
+
They do not reconstruct private chat or prove that the note is still correct.
|
|
139
|
+
Open the returned Markdown and guides before acting on them.
|
|
113
140
|
|
|
114
141
|
<!-- hraness:wordcell-landing:end -->
|
|
115
142
|
|
|
143
|
+
## Rerank a search window
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
wordcell search "why releases use immutable archives" --root kb --mode exact \
|
|
147
|
+
--rerank typesafe --rerank-limit 25 --limit 5 --json
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
This optional hosted lane uses TypeSafe's pinned `jev-1.13.0` model. It sends
|
|
151
|
+
bounded query and note snippets to the provider, needs a private local
|
|
152
|
+
credential, and incurs provider charges. Exact identities remain first; a
|
|
153
|
+
provider failure retains the baseline order with a diagnostic. See the
|
|
154
|
+
[setup, SDK examples, measured results, and limits](https://github.com/hraness/wordcell/blob/main/docs/reranking.md).
|
|
155
|
+
|
|
116
156
|
## What you can do
|
|
117
157
|
|
|
118
158
|
| Task | Command | Evidence and effects |
|
|
@@ -125,10 +165,71 @@ neither the vault nor a hosted knowledge service.
|
|
|
125
165
|
| Capture a source | `wordcell clip https://example.com/article --output kb/articles` | Reads the selected URL and writes a Markdown bundle with a capture receipt. |
|
|
126
166
|
| Capture a PDF | `wordcell pdf /absolute/path/to/document.pdf --output kb/articles` | Preserves the original PDF and extracted evidence; Poppler is required. |
|
|
127
167
|
| Check the vault | `wordcell check --root kb` | Reports structural and attachment problems without editing files. |
|
|
168
|
+
| Publish selected notes | `wordcell publish --root kb --out site/ --include notes/parser-contract --dry-run --json` | Previews a static site selection locally; remove `--dry-run` to build it. |
|
|
169
|
+
| Preview a site | `wordcell serve --root site --port 8080` | Serves a published site on a loopback static file server with the emitted `404.html` fallback. |
|
|
128
170
|
|
|
129
171
|
Use `--json` for structured output and `wordcell --help` for the complete command
|
|
130
172
|
surface. [Full command reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md#command-surface).
|
|
131
173
|
|
|
174
|
+
## Publish a selected part of your vault
|
|
175
|
+
|
|
176
|
+
Preview the decision and plan from the example before writing an output folder:
|
|
177
|
+
|
|
178
|
+
```sh
|
|
179
|
+
wordcell publish --root kb --out site \
|
|
180
|
+
--include notes/parser-contract --include plans/parser-v2 --dry-run --json
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Review the selection, then build and preview it:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
wordcell publish --root kb --out site \
|
|
187
|
+
--include notes/parser-contract --include plans/parser-v2
|
|
188
|
+
wordcell serve --root site --port 8080
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Open `http://127.0.0.1:8080`. You get readable pages, linked notes, and search
|
|
192
|
+
that runs in the browser. Upload the `site/` folder to your chosen static host
|
|
193
|
+
when you want to share it; `publish` itself never uploads anything.
|
|
194
|
+
|
|
195
|
+
For a repeatable slice, use path patterns or combine folders, tags, metadata,
|
|
196
|
+
code scopes, and linked neighborhoods:
|
|
197
|
+
|
|
198
|
+
```sh
|
|
199
|
+
wordcell publish --root kb --out site-notes \
|
|
200
|
+
--include-glob 'notes/**/*.md' --exclude-glob '**/draft-*' --dry-run --json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Preview reports show up to 20 selected IDs by default, with a total count and
|
|
204
|
+
selection digest. They keep note bodies out of the agent's context. Use
|
|
205
|
+
`--list-limit` to adjust that preview without changing what gets published. `publish: false` excludes a note, but selected
|
|
206
|
+
prose and attachments still need review before sharing: selection is not secret
|
|
207
|
+
redaction. [Selection recipes and hosting guide](https://github.com/hraness/wordcell/blob/main/docs/publish.md).
|
|
208
|
+
|
|
209
|
+
## Evidence and comparisons
|
|
210
|
+
|
|
211
|
+
In a four-query example over a seven-note public vault, packed search snippets
|
|
212
|
+
used **80% fewer UTF-8 bytes** than passing the same matching notes in full:
|
|
213
|
+
12,126 versus 60,584 bytes. This measures context payload size, not tokenizer
|
|
214
|
+
counts, answer quality, latency, or a win over another search tool.
|
|
215
|
+
|
|
216
|
+
In a separate public SciFact study, optional hosted Jev reranking placed a
|
|
217
|
+
judged relevant result first for **161 of 300 queries**, versus **101** with
|
|
218
|
+
Wordcell exact search alone. It sends bounded context to a paid provider;
|
|
219
|
+
this is evidence on scientific abstracts, not a comparison with QMD or a
|
|
220
|
+
guarantee for repository notes. [Results and limits](https://github.com/hraness/wordcell/blob/main/docs/reranking.md#evidence-and-limits).
|
|
221
|
+
|
|
222
|
+
Wordcell's benefit is selecting relevant context and keeping its sources
|
|
223
|
+
inspectable. Local ownership is also available in other tools, and Wordcell
|
|
224
|
+
does not claim to beat QMD's retrieval quality or every Markdown workflow.
|
|
225
|
+
|
|
226
|
+
[Measured evidence](https://github.com/hraness/wordcell/blob/main/docs/evidence.md)
|
|
227
|
+
shows a reproducible public-vault example, with the inputs, output sizes, and
|
|
228
|
+
limits beside each result. [The comparison guide](https://github.com/hraness/wordcell/blob/main/docs/comparisons.md)
|
|
229
|
+
covers Markdown alone, QMD, Basic Memory, Obsidian, and static publishing tools
|
|
230
|
+
using their own documentation. Choose the smallest workflow that meets your
|
|
231
|
+
needs.
|
|
232
|
+
|
|
132
233
|
## How the files fit together
|
|
133
234
|
|
|
134
235
|
```text
|
|
@@ -164,7 +265,7 @@ exist. [Graph queries and proof limits](https://github.com/hraness/wordcell/blob
|
|
|
164
265
|
Add the same immutable release to a Bun project:
|
|
165
266
|
|
|
166
267
|
```sh
|
|
167
|
-
bun add --exact --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.
|
|
268
|
+
bun add --exact --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.22.0/hraness-wordcell-0.22.0.tgz
|
|
168
269
|
```
|
|
169
270
|
|
|
170
271
|
The SDK provides read-only vault sessions, metadata queries, search, graph
|
|
@@ -175,7 +276,9 @@ show the public imports and lifecycle.
|
|
|
175
276
|
## Privacy and boundaries
|
|
176
277
|
|
|
177
278
|
- Structural queries and exact search read local files. Optional semantic
|
|
178
|
-
search downloads its model on first use and runs locally.
|
|
279
|
+
search downloads its model on first use and runs locally. Optional Jev
|
|
280
|
+
reranking sends the query and bounded candidate context to a remote provider;
|
|
281
|
+
it is off by default.
|
|
179
282
|
- URL capture contacts the requested source. Signed-in capture uses only
|
|
180
283
|
explicitly selected browser state. Review the [security policy](https://github.com/hraness/wordcell/blob/main/SECURITY.md)
|
|
181
284
|
before using it with private sources.
|
|
@@ -191,6 +294,7 @@ show the public imports and lifecycle.
|
|
|
191
294
|
| [Agent workflow](https://github.com/hraness/wordcell/blob/main/docs/agent-workflow.md) | Set up, query, maintain, and revise repository memory. |
|
|
192
295
|
| [Installation and command reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md) | Exact interfaces, SDK imports, optional adapters, and troubleshooting prerequisites. |
|
|
193
296
|
| [Web capture](https://github.com/hraness/wordcell/blob/main/docs/capture.md) and [PDF capture](https://github.com/hraness/wordcell/blob/main/docs/pdf.md) | Save sources with provenance, assets, and explicit completeness limits. |
|
|
297
|
+
| [Publish selected notes](https://github.com/hraness/wordcell/blob/main/docs/publish.md) | Preview a slice, build a static site, and choose how to host it. |
|
|
194
298
|
| [Graph guide](https://github.com/hraness/wordcell/blob/main/docs/graph-authority.md) | Named queries, proofs, revisions, resource limits, and cache recovery. |
|
|
195
299
|
| [Portfolio federation](https://github.com/hraness/wordcell/blob/main/docs/portfolio.md) | Search only selected, authorized vaults. |
|
|
196
300
|
| [Design](https://github.com/hraness/wordcell/blob/main/docs/design.md) and [memory rationale](https://github.com/hraness/wordcell/blob/main/docs/agent-memory.md) | File contracts, design choices, and evaluation context. |
|
|
@@ -224,8 +328,10 @@ The same skill is included at `node_modules/@hraness/wordcell/skills/wordcell/`.
|
|
|
224
328
|
|
|
225
329
|
## Release notes
|
|
226
330
|
|
|
227
|
-
Version 0.
|
|
228
|
-
|
|
331
|
+
Version 0.22 adds selective static publishing and local preview. Choose notes,
|
|
332
|
+
folders, path patterns, metadata, or linked neighborhoods, then inspect a
|
|
333
|
+
bounded selection report before building. Existing vaults need no migration.
|
|
334
|
+
The deprecated `kb` command was removed in 0.21.0; use `wordcell`.
|
|
229
335
|
[All release notes and upgrade instructions](https://github.com/hraness/wordcell/blob/main/CHANGELOG.md).
|
|
230
336
|
|
|
231
337
|
## Contributing
|
|
@@ -22,12 +22,49 @@ import {
|
|
|
22
22
|
createOhProjectionDatasetV1,
|
|
23
23
|
createOhProjectionFactV1,
|
|
24
24
|
createOhProjectionSnapshotV1,
|
|
25
|
-
evaluateOhProjectionV1,
|
|
26
25
|
parseOhProjectionResultV1
|
|
27
26
|
} from "@hraness/oh/projection";
|
|
28
27
|
import { createOhSqliteStoreAuthorityV1 } from "@hraness/oh/sqlite";
|
|
29
28
|
import { createOhStoreProfileV1, OH_WORKING_STORE_PROFILE_V1 } from "@hraness/oh/store";
|
|
30
29
|
|
|
30
|
+
// src/oh/projection-rust.ts
|
|
31
|
+
import { evaluateOhProjectionV1 } from "@hraness/oh/projection";
|
|
32
|
+
import { emitOhRustFallback } from "@hraness/oh/rust-fallback";
|
|
33
|
+
var cached;
|
|
34
|
+
function emitProjectionRustFallback(reason) {
|
|
35
|
+
emitOhRustFallback({ tag: "oh-projection-rust-fallback", reason });
|
|
36
|
+
}
|
|
37
|
+
var OH_PROJECTION_RUST_MODULE = "@hraness/oh/projection/rust";
|
|
38
|
+
async function loadEngine() {
|
|
39
|
+
if (cached !== undefined)
|
|
40
|
+
return cached;
|
|
41
|
+
try {
|
|
42
|
+
const module = await import(OH_PROJECTION_RUST_MODULE);
|
|
43
|
+
if (typeof module.loadProjectionRustEngineV1 !== "function") {
|
|
44
|
+
cached = null;
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
cached = await module.loadProjectionRustEngineV1();
|
|
48
|
+
} catch {
|
|
49
|
+
emitProjectionRustFallback("load-failed");
|
|
50
|
+
cached = null;
|
|
51
|
+
}
|
|
52
|
+
return cached;
|
|
53
|
+
}
|
|
54
|
+
async function loadProjectionRustEngineV1() {
|
|
55
|
+
return loadEngine();
|
|
56
|
+
}
|
|
57
|
+
function evaluateOhProjectionWithFallbackV1(input) {
|
|
58
|
+
if (input.engine !== null) {
|
|
59
|
+
try {
|
|
60
|
+
return input.engine.evaluate(input);
|
|
61
|
+
} catch {
|
|
62
|
+
emitProjectionRustFallback("evaluate-failed");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return evaluateOhProjectionV1(input);
|
|
66
|
+
}
|
|
67
|
+
|
|
31
68
|
// src/oh/programs.ts
|
|
32
69
|
import {
|
|
33
70
|
createOhProjectionLiteralV1 as literal,
|
|
@@ -531,6 +568,7 @@ async function openOhGraphAdapter(input, options = {}) {
|
|
|
531
568
|
if (canonicalJson4(materialized.records) !== canonicalJson4(expected))
|
|
532
569
|
throw new GraphAuthorityError("corrupt-cache", "Graph reconciliation did not retain exact source records.");
|
|
533
570
|
const projectionSnapshot = createOhProjectionSnapshotV1({ ...materialized, spaceId });
|
|
571
|
+
const rustEngine = await loadProjectionRustEngineV1();
|
|
534
572
|
const recordMap = new Map(records.map((record, index) => [record.key, { record, source: snapshot.records[index] }]));
|
|
535
573
|
const assertOpen = () => {
|
|
536
574
|
if (closed)
|
|
@@ -561,15 +599,22 @@ async function openOhGraphAdapter(input, options = {}) {
|
|
|
561
599
|
});
|
|
562
600
|
try {
|
|
563
601
|
const dataset = createOhProjectionDatasetV1({ extractorSha256: GRAPH_EXTRACTOR_SHA256, factPackId: "wordcell.graph-facts", factPackRevision: 1, facts, snapshot: projectionSnapshot });
|
|
564
|
-
const result =
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
602
|
+
const result = evaluateOhProjectionWithFallbackV1({
|
|
603
|
+
dataset,
|
|
604
|
+
engine: rustEngine,
|
|
605
|
+
rulePack: program.rulePack,
|
|
606
|
+
query: program.query,
|
|
607
|
+
snapshot: projectionSnapshot,
|
|
608
|
+
options: {
|
|
609
|
+
maximumDerivedTuples: limits.derivedTuples,
|
|
610
|
+
maximumRounds: limits.rounds,
|
|
611
|
+
maximumWorkUnits: limits.workUnits,
|
|
612
|
+
maximumProofDepth: limits.proofDepth,
|
|
613
|
+
maximumProofNodes: limits.proofNodes,
|
|
614
|
+
maximumTotalProofNodes: limits.totalProofNodes,
|
|
615
|
+
maximumResultBytes: limits.resultBytes
|
|
616
|
+
}
|
|
617
|
+
});
|
|
573
618
|
if (parseOhProjectionResultV1(result, result.identity.projectionSha256) === null)
|
|
574
619
|
throw new GraphAuthorityError("corrupt-cache", "Oh returned an invalid bounded projection result.");
|
|
575
620
|
await assertCurrent();
|
package/dist/benchmark.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
createSyntheticRankFusionFixture,
|
|
5
5
|
evaluateRanking,
|
|
6
6
|
evaluateRetrievalBenchmark
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
7
|
+
} from "./index-qwgsmtsz.js";
|
|
8
|
+
import"./index-gm9t95d9.js";
|
|
9
|
+
import"./index-d13v9ckt.js";
|
|
9
10
|
import"./index-48pz4jpc.js";
|
|
10
11
|
import"./index-06c9ctr6.js";
|
|
11
|
-
import"./index-d13v9ckt.js";
|
|
12
12
|
import"./index-5vwpzb5a.js";
|
|
13
13
|
import"./index-ekpwvbra.js";
|
|
14
14
|
import"./index-z1w83f81.js";
|
package/dist/capture.js
CHANGED
|
@@ -5,16 +5,18 @@ import {
|
|
|
5
5
|
captureSummary,
|
|
6
6
|
main,
|
|
7
7
|
runCapture
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-de2w8crk.js";
|
|
9
9
|
import"./index-6jcz0m1c.js";
|
|
10
10
|
import"./index-f984hw45.js";
|
|
11
11
|
import {
|
|
12
12
|
adapterCapabilities,
|
|
13
13
|
inspectClipEnvironment,
|
|
14
14
|
renderDoctorReport
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-
|
|
15
|
+
} from "./index-fc4dr114.js";
|
|
16
|
+
import"./index-5n05se68.js";
|
|
17
|
+
import"./index-g5vsqmdy.js";
|
|
17
18
|
import"./index-hgve9rh2.js";
|
|
19
|
+
import"./index-2gv8y733.js";
|
|
18
20
|
import"./index-w2zc0vwa.js";
|
|
19
21
|
import"./index-e5fbsywq.js";
|
|
20
22
|
import {
|
|
@@ -22,9 +24,8 @@ import {
|
|
|
22
24
|
} from "./index-dfag79p7.js";
|
|
23
25
|
import"./index-gh719d91.js";
|
|
24
26
|
import"./index-mxxxytys.js";
|
|
25
|
-
import"./index-2gv8y733.js";
|
|
26
27
|
import"./index-1xxnjn0d.js";
|
|
27
|
-
import"./index-
|
|
28
|
+
import"./index-4knsp9qj.js";
|
|
28
29
|
import"./index-z1w83f81.js";
|
|
29
30
|
|
|
30
31
|
// src/capture.ts
|
package/dist/cli.js
CHANGED
|
@@ -5,57 +5,63 @@ import {
|
|
|
5
5
|
parseArguments,
|
|
6
6
|
runExecutable,
|
|
7
7
|
usage
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-4ag64rc1.js";
|
|
9
9
|
import"./index-bcknqxrq.js";
|
|
10
|
-
import"./index-51bap0mq.js";
|
|
11
10
|
import"./index-054mb7d3.js";
|
|
11
|
+
import"./index-avbce90h.js";
|
|
12
12
|
import"./index-j4zgmzjr.js";
|
|
13
|
+
import"./index-de2w8crk.js";
|
|
14
|
+
import"./index-6jcz0m1c.js";
|
|
15
|
+
import"./index-f984hw45.js";
|
|
16
|
+
import"./index-fc4dr114.js";
|
|
17
|
+
import"./index-5n05se68.js";
|
|
18
|
+
import"./index-g5vsqmdy.js";
|
|
19
|
+
import"./index-hgve9rh2.js";
|
|
20
|
+
import"./index-2gv8y733.js";
|
|
21
|
+
import"./index-w2zc0vwa.js";
|
|
22
|
+
import"./index-e5fbsywq.js";
|
|
23
|
+
import"./index-dfag79p7.js";
|
|
24
|
+
import"./index-gh719d91.js";
|
|
13
25
|
import"./index-npg9z1a4.js";
|
|
26
|
+
import"./index-mxxxytys.js";
|
|
14
27
|
import"./index-23z4zxgg.js";
|
|
15
28
|
import"./index-pj501bh1.js";
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
29
|
+
import"./index-9rf81m0p.js";
|
|
30
|
+
import"./index-e6p9e926.js";
|
|
31
|
+
import"./index-2hf27mws.js";
|
|
19
32
|
import"./index-adx6khj5.js";
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
33
|
+
import"./index-hcw140eb.js";
|
|
34
|
+
import"./index-4j3tt0c3.js";
|
|
35
|
+
import"./index-j70m75wd.js";
|
|
36
|
+
import"./index-b88v3vtm.js";
|
|
37
|
+
import"./index-t2bs9xdr.js";
|
|
25
38
|
import"./index-nd6nynv2.js";
|
|
39
|
+
import"./index-famy7fhs.js";
|
|
40
|
+
import"./index-11621h23.js";
|
|
26
41
|
import"./index-1gwbassd.js";
|
|
27
|
-
import"./index-
|
|
42
|
+
import"./index-gm9t95d9.js";
|
|
43
|
+
import"./index-1xxnjn0d.js";
|
|
44
|
+
import"./index-0dqfnrz9.js";
|
|
45
|
+
import"./index-1tm7bgx7.js";
|
|
46
|
+
import"./index-d13v9ckt.js";
|
|
47
|
+
import"./index-48pz4jpc.js";
|
|
48
|
+
import"./index-06c9ctr6.js";
|
|
49
|
+
import"./index-4knsp9qj.js";
|
|
50
|
+
import"./index-66pshdtx.js";
|
|
51
|
+
import"./index-3agn8scn.js";
|
|
28
52
|
import"./index-hya40gb2.js";
|
|
53
|
+
import"./index-5vwpzb5a.js";
|
|
29
54
|
import"./index-x3fthpsc.js";
|
|
30
55
|
import"./index-6sw24nvv.js";
|
|
31
56
|
import"./index-3rm7cz6h.js";
|
|
32
|
-
import"./index-why54q5p.js";
|
|
33
|
-
import"./index-48pz4jpc.js";
|
|
34
|
-
import"./index-06c9ctr6.js";
|
|
35
|
-
import"./index-d13v9ckt.js";
|
|
36
|
-
import"./index-5vwpzb5a.js";
|
|
37
57
|
import"./index-ekpwvbra.js";
|
|
38
|
-
import"./index-9zcpdbjg.js";
|
|
39
|
-
import"./index-6jcz0m1c.js";
|
|
40
|
-
import"./index-f984hw45.js";
|
|
41
|
-
import"./index-van48n3g.js";
|
|
42
|
-
import"./index-jzcws0zn.js";
|
|
43
|
-
import"./index-hgve9rh2.js";
|
|
44
|
-
import"./index-w2zc0vwa.js";
|
|
45
|
-
import"./index-e5fbsywq.js";
|
|
46
|
-
import"./index-dfag79p7.js";
|
|
47
|
-
import"./index-gh719d91.js";
|
|
48
|
-
import"./index-mxxxytys.js";
|
|
49
|
-
import"./index-2gv8y733.js";
|
|
50
|
-
import"./index-1xxnjn0d.js";
|
|
51
|
-
import"./index-5n05se68.js";
|
|
52
58
|
import {
|
|
53
59
|
__require
|
|
54
60
|
} from "./index-z1w83f81.js";
|
|
55
61
|
|
|
56
62
|
// src/cli.ts
|
|
57
63
|
if (import.meta.main) {
|
|
58
|
-
const { standaloneSupportEnvironment, isUsefulSupportResult, runProductSupportCommand, showProductSupportInvitation } = await import("./support-
|
|
64
|
+
const { standaloneSupportEnvironment, isUsefulSupportResult, runProductSupportCommand, showProductSupportInvitation } = await import("./support-mywv1em0.js");
|
|
59
65
|
const env = standaloneSupportEnvironment();
|
|
60
66
|
const args = process.argv.slice(2);
|
|
61
67
|
if (args[0] === "support") {
|
package/dist/clip/acquire.js
CHANGED
|
@@ -22,15 +22,16 @@ import {
|
|
|
22
22
|
mergeRenderedTextSnapshots,
|
|
23
23
|
readBrowserExpansionTelemetry,
|
|
24
24
|
seedOwnedBrowserCookies
|
|
25
|
-
} from "../index-
|
|
25
|
+
} from "../index-g5vsqmdy.js";
|
|
26
26
|
import"../index-hgve9rh2.js";
|
|
27
|
+
import"../index-2gv8y733.js";
|
|
27
28
|
import"../index-w2zc0vwa.js";
|
|
28
29
|
import"../index-e5fbsywq.js";
|
|
29
30
|
import"../index-dfag79p7.js";
|
|
30
31
|
import"../index-gh719d91.js";
|
|
31
32
|
import"../index-mxxxytys.js";
|
|
32
|
-
import"../index-2gv8y733.js";
|
|
33
33
|
import"../index-1xxnjn0d.js";
|
|
34
|
+
import"../index-4knsp9qj.js";
|
|
34
35
|
import"../index-z1w83f81.js";
|
|
35
36
|
export {
|
|
36
37
|
seedOwnedBrowserCookies,
|
package/dist/clip/cli.js
CHANGED
|
@@ -5,20 +5,21 @@ import {
|
|
|
5
5
|
captureSucceeded,
|
|
6
6
|
captureSummary,
|
|
7
7
|
main
|
|
8
|
-
} from "../index-
|
|
8
|
+
} from "../index-de2w8crk.js";
|
|
9
9
|
import"../index-6jcz0m1c.js";
|
|
10
10
|
import"../index-f984hw45.js";
|
|
11
|
-
import"../index-
|
|
12
|
-
import"../index-
|
|
11
|
+
import"../index-fc4dr114.js";
|
|
12
|
+
import"../index-5n05se68.js";
|
|
13
|
+
import"../index-g5vsqmdy.js";
|
|
13
14
|
import"../index-hgve9rh2.js";
|
|
15
|
+
import"../index-2gv8y733.js";
|
|
14
16
|
import"../index-w2zc0vwa.js";
|
|
15
17
|
import"../index-e5fbsywq.js";
|
|
16
18
|
import"../index-dfag79p7.js";
|
|
17
19
|
import"../index-gh719d91.js";
|
|
18
20
|
import"../index-mxxxytys.js";
|
|
19
|
-
import"../index-2gv8y733.js";
|
|
20
21
|
import"../index-1xxnjn0d.js";
|
|
21
|
-
import"../index-
|
|
22
|
+
import"../index-4knsp9qj.js";
|
|
22
23
|
import"../index-z1w83f81.js";
|
|
23
24
|
export {
|
|
24
25
|
main,
|
package/dist/clip/doctor.js
CHANGED
|
@@ -9,16 +9,17 @@ import {
|
|
|
9
9
|
renderAdapterCapabilities,
|
|
10
10
|
renderDoctorReport,
|
|
11
11
|
runDiagnosticCommand
|
|
12
|
-
} from "../index-
|
|
13
|
-
import"../index-
|
|
12
|
+
} from "../index-fc4dr114.js";
|
|
13
|
+
import"../index-g5vsqmdy.js";
|
|
14
14
|
import"../index-hgve9rh2.js";
|
|
15
|
+
import"../index-2gv8y733.js";
|
|
15
16
|
import"../index-w2zc0vwa.js";
|
|
16
17
|
import"../index-e5fbsywq.js";
|
|
17
18
|
import"../index-dfag79p7.js";
|
|
18
19
|
import"../index-gh719d91.js";
|
|
19
20
|
import"../index-mxxxytys.js";
|
|
20
|
-
import"../index-2gv8y733.js";
|
|
21
21
|
import"../index-1xxnjn0d.js";
|
|
22
|
+
import"../index-4knsp9qj.js";
|
|
22
23
|
import"../index-z1w83f81.js";
|
|
23
24
|
export {
|
|
24
25
|
runDiagnosticCommand,
|
package/dist/clip/jobs.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import {
|
|
3
|
-
acquireFileLease
|
|
4
|
-
} from "../index-3rm7cz6h.js";
|
|
5
2
|
import {
|
|
6
3
|
redactSensitiveText
|
|
7
4
|
} from "../index-mxxxytys.js";
|
|
@@ -9,6 +6,9 @@ import {
|
|
|
9
6
|
sanitizeTerminalLine,
|
|
10
7
|
sanitizeTerminalText
|
|
11
8
|
} from "../index-1xxnjn0d.js";
|
|
9
|
+
import {
|
|
10
|
+
acquireFileLease
|
|
11
|
+
} from "../index-3rm7cz6h.js";
|
|
12
12
|
import"../index-z1w83f81.js";
|
|
13
13
|
|
|
14
14
|
// src/clip/jobs.ts
|