@xberg-io/opencode-xberg 1.3.8 → 1.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.
- package/.opencode/ai-rulez-bundle.json +17 -16
- package/.opencode/ai-rulez-content.js +3 -3
- package/.opencode/commands/xberg-extract.md +3 -3
- package/.opencode/commands/xberg-ocr.md +3 -3
- package/.opencode/plugins/xberg.js +1 -1
- package/.opencode/skills/xberg/SKILL.md +20 -25
- package/.opencode/skills/xberg/index.md +10 -0
- package/.opencode/skills/xberg/references/advanced-features.md +1 -1
- package/.opencode/skills/xberg/references/cli-reference.md +6 -4
- package/.opencode/skills/xberg/references/configuration.md +6 -6
- package/.opencode/skills/xberg/references/nodejs-api.md +1 -1
- package/.opencode/skills/xberg/references/other-bindings.md +1 -1
- package/.opencode/skills/xberg/references/python-api.md +6 -6
- package/.opencode/skills/xberg/references/rust-api.md +5 -5
- package/.opencode/skills/xberg/references/supported-formats.md +1 -1
- package/.opencode/skills/{batch-extraction → xberg-batch-extraction}/SKILL.md +11 -9
- package/.opencode/skills/xberg-batch-extraction/index.md +10 -0
- package/.opencode/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-batch-extraction/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.opencode/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.opencode/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/{.pi/skills/chunking → .opencode/skills/xberg-chunking}/SKILL.md +5 -5
- package/.opencode/skills/xberg-chunking/index.md +10 -0
- package/.opencode/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-chunking/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-chunking/references/configuration.md +587 -0
- package/.opencode/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-chunking/references/python-api.md +657 -0
- package/.opencode/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.opencode/skills/{extracting-keywords → xberg-extracting-keywords}/SKILL.md +7 -8
- package/.opencode/skills/xberg-extracting-keywords/index.md +10 -0
- package/.opencode/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-keywords/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/{.pi/skills/extracting-tables → .opencode/skills/xberg-extracting-tables}/SKILL.md +4 -5
- package/.opencode/skills/xberg-extracting-tables/index.md +10 -0
- package/.opencode/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-tables/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/{.pi/skills/extracting-with-ocr → .opencode/skills/xberg-extracting-with-ocr}/SKILL.md +5 -6
- package/.opencode/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.opencode/skills/{picking-a-format → xberg-picking-a-format}/SKILL.md +4 -4
- package/.opencode/skills/xberg-picking-a-format/index.md +10 -0
- package/.opencode/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-picking-a-format/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.opencode/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.opencode/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/.pi/prompts/xberg-extract.md +1 -1
- package/.pi/prompts/xberg-ocr.md +1 -1
- package/.pi/skills/xberg/SKILL.md +20 -25
- package/.pi/skills/xberg/index.md +10 -0
- package/.pi/skills/xberg/references/advanced-features.md +1 -1
- package/.pi/skills/xberg/references/cli-reference.md +6 -4
- package/.pi/skills/xberg/references/configuration.md +6 -6
- package/.pi/skills/xberg/references/nodejs-api.md +1 -1
- package/.pi/skills/xberg/references/other-bindings.md +1 -1
- package/.pi/skills/xberg/references/python-api.md +6 -6
- package/.pi/skills/xberg/references/rust-api.md +5 -5
- package/.pi/skills/xberg/references/supported-formats.md +1 -1
- package/.pi/skills/{batch-extraction → xberg-batch-extraction}/SKILL.md +11 -9
- package/.pi/skills/xberg-batch-extraction/index.md +10 -0
- package/.pi/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-batch-extraction/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.pi/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.pi/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.pi/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/{.opencode/skills/chunking → .pi/skills/xberg-chunking}/SKILL.md +5 -5
- package/.pi/skills/xberg-chunking/index.md +10 -0
- package/.pi/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-chunking/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-chunking/references/configuration.md +587 -0
- package/.pi/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-chunking/references/python-api.md +657 -0
- package/.pi/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.pi/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.pi/skills/{extracting-keywords → xberg-extracting-keywords}/SKILL.md +7 -8
- package/.pi/skills/xberg-extracting-keywords/index.md +10 -0
- package/.pi/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-keywords/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/{.opencode/skills/extracting-tables → .pi/skills/xberg-extracting-tables}/SKILL.md +4 -5
- package/.pi/skills/xberg-extracting-tables/index.md +10 -0
- package/.pi/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-tables/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/{.opencode/skills/extracting-with-ocr → .pi/skills/xberg-extracting-with-ocr}/SKILL.md +5 -6
- package/.pi/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.pi/skills/{picking-a-format → xberg-picking-a-format}/SKILL.md +4 -4
- package/.pi/skills/xberg-picking-a-format/index.md +10 -0
- package/.pi/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-picking-a-format/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.pi/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.pi/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.pi/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/README.md +75 -9
- package/assets/icon.svg +16 -9
- package/assets/logo.png +0 -0
- package/package.json +136 -21
- package/scripts/mcp-launch.sh +6 -5
package/README.md
CHANGED
|
@@ -17,6 +17,20 @@ Self-host:
|
|
|
17
17
|
/plugin install xberg@xberg
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
### Kimi installation and compatibility
|
|
21
|
+
|
|
22
|
+
From a checkout of this repository, install with the Python Kimi CLI version used for native
|
|
23
|
+
plugin validation:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
uvx --from kimi-cli==1.51.0 kimi plugin install ./plugin
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Native plugin installation was validated with Python Kimi CLI 1.51.0. The replacement
|
|
30
|
+
`@moonshot-ai/kimi-code` 2.1.1 does not provide a `plugin` CLI subcommand; its interactive
|
|
31
|
+
plugin loading has not been verified. These results do not establish compatibility with
|
|
32
|
+
newer Kimi releases.
|
|
33
|
+
|
|
20
34
|
### Pi
|
|
21
35
|
|
|
22
36
|
From a checkout of this repository, run:
|
|
@@ -76,12 +90,12 @@ sudo apt install tesseract-ocr-* # Debian/Ubuntu
|
|
|
76
90
|
| Skill | Trigger |
|
|
77
91
|
|-------|---------|
|
|
78
92
|
| **xberg** | Extract text, tables, metadata, and images from 107 document formats (PDF, Office, images, HTML, email, archives, academic) using Xberg. Use when writing code that calls Xberg APIs in Python, Node.js/TypeScript, Rust, or CLI. Covers installation, extraction (sync/async), configuration (OCR, chunking, output format), batch processing, error handling, and plugins. |
|
|
79
|
-
| **extracting-with-ocr** | Use when extracting text from scanned PDFs, photographed pages, or images that have no embedded text layer. Covers OCR backends, language packs, force-OCR, and performance tuning. |
|
|
80
|
-
| **extracting-tables** | Use when extracting tabular data from PDFs, spreadsheets, or images. Covers layout-aware table detection, table model selection, output formats (markdown / JSON cells), and known limits. |
|
|
81
|
-
| **chunking** | Use when splitting extracted text into chunks for LLM context windows or RAG ingestion. Covers chunk size, overlap, markdown/yaml/semantic chunkers, tokenizer-based sizing, and the standalone `chunk` command. |
|
|
82
|
-
| **extracting-keywords** | Use when extracting keywords (YAKE/RAKE), detecting document language, or generating embeddings for RAG and search. Covers the keyword config, `--detect-language`, and the standalone `embed` command. |
|
|
83
|
-
| **batch-extraction** | Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout. |
|
|
84
|
-
| **picking-a-format** | Use when choosing an output format for extracted documents — text, markdown, djot, html, or JSON. Maps consumer (LLM, parser, archive) to the right `--format` / `--content-format` pair. |
|
|
93
|
+
| **xberg-extracting-with-ocr** | Use when extracting text from scanned PDFs, photographed pages, or images that have no embedded text layer. Covers OCR backends, language packs, force-OCR, and performance tuning. |
|
|
94
|
+
| **xberg-extracting-tables** | Use when extracting tabular data from PDFs, spreadsheets, or images. Covers layout-aware table detection, table model selection, output formats (markdown / JSON cells), and known limits. |
|
|
95
|
+
| **xberg-chunking** | Use when splitting extracted text into chunks for LLM context windows or RAG ingestion. Covers chunk size, overlap, markdown/yaml/semantic chunkers, tokenizer-based sizing, and the standalone `chunk` command. |
|
|
96
|
+
| **xberg-extracting-keywords** | Use when extracting keywords (YAKE/RAKE), detecting document language, or generating embeddings for RAG and search. Covers the keyword config, `--detect-language`, and the standalone `embed` command. |
|
|
97
|
+
| **xberg-batch-extraction** | Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout. |
|
|
98
|
+
| **xberg-picking-a-format** | Use when choosing an output format for extracted documents — text, markdown, djot, html, or JSON. Maps consumer (LLM, parser, archive) to the right `--format` / `--content-format` pair. |
|
|
85
99
|
|
|
86
100
|
**Reference materials** (linked from the `xberg` skill):
|
|
87
101
|
|
|
@@ -148,9 +162,9 @@ Edit `plugin/.ai-rulez` sources, then run these commands from the repository roo
|
|
|
148
162
|
with a Pi-capable ai-rulez v5 binary installed:
|
|
149
163
|
|
|
150
164
|
```bash
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
165
|
+
mise run plugin:generate
|
|
166
|
+
mise run plugin:verify
|
|
167
|
+
mise run plugin:test
|
|
154
168
|
```
|
|
155
169
|
|
|
156
170
|
CI builds the generator from a pinned source revision and verifies the generated
|
|
@@ -167,3 +181,55 @@ MIT. The skill content uses Elastic-2.0 references to the upstream [xberg](https
|
|
|
167
181
|
- **Marketplace**: this repo — `/plugin marketplace add xberg-io/xberg`
|
|
168
182
|
- **Upstream**: [xberg-io/xberg](https://github.com/xberg-io/xberg)
|
|
169
183
|
- **Related plugins**: [crawlberg](https://github.com/xberg-io/crawlberg)
|
|
184
|
+
|
|
185
|
+
## Generated runtime bundles
|
|
186
|
+
|
|
187
|
+
`plugin/.ai-rulez/config.toml` loads `config.plugins.toml` through the `plugins` layer;
|
|
188
|
+
skills, commands and runtime adapters are authored alongside it. AI-Rulez (latest, minimum 5.7.0)
|
|
189
|
+
generates all eleven supported runtimes: Claude, Cursor, Codex, Gemini, Kimi, OpenCode, Factory,
|
|
190
|
+
Hermes, Pi, Agent Plugins and Copilot. Codex ships both manifest layouts; repository-root
|
|
191
|
+
Claude and Codex marketplace indexes point to the `plugin` bundle. Cursor also has a marketplace index.
|
|
192
|
+
|
|
193
|
+
Pi packages skills and prompts without MCP integration. Copilot packages skills and MCP configuration, but does not package slash commands or hooks.
|
|
194
|
+
Hermes includes a Python package under `.hermes/package`; OpenCode and Pi share the npm package.
|
|
195
|
+
The Agent Plugins manifest uses the stable 1.0 specification. Runtime capabilities differ;
|
|
196
|
+
install the CLI before using skills in a runtime without MCP registration.
|
|
197
|
+
|
|
198
|
+
Run `ai-rulez generate --plugin` from the repository root to regenerate and
|
|
199
|
+
`ai-rulez verify --plugin` to compare current source output and provenance.
|
|
200
|
+
The release workflow packages every runtime into a deterministic archive, checksums,
|
|
201
|
+
and marketplace metadata; npm and PyPI retain their existing publishing jobs.
|
|
202
|
+
|
|
203
|
+
## Hermes runtime setup
|
|
204
|
+
|
|
205
|
+
Install the product CLI with MCP support and put it on Hermes' PATH before using the plugin.
|
|
206
|
+
The Hermes adapter registers every bundled skill under the product namespace and provides
|
|
207
|
+
`xberg_call`, which calls the selected native MCP tool with `tool_arguments` through a local
|
|
208
|
+
stdio session. Select `tool: "list_tools"` first to inspect the server's exact request schemas. Hermes skills are selected explicitly; they are not automatically appended to the
|
|
209
|
+
system prompt. Enable the plugin in Hermes configuration; project plugins also require
|
|
210
|
+
`HERMES_ENABLE_PROJECT_PLUGINS=true`.
|
|
211
|
+
|
|
212
|
+
The bridge uses the installed CLI directly. The auto-installing launchers used by other MCP clients
|
|
213
|
+
are not included in the Hermes Python wheel. Provider credentials are inherited from the environment,
|
|
214
|
+
and are needed for provider-backed requests. Missing CLIs, unavailable tools and model preparation
|
|
215
|
+
fail with an actionable request error. CLI result data remains untrusted document content.
|
|
216
|
+
|
|
217
|
+
## Public Agent Skills
|
|
218
|
+
|
|
219
|
+
The repository-root `skills/` directory contains the same generated skills and supporting
|
|
220
|
+
resources as `plugin/skills/`. Install them independently of a plugin runtime:
|
|
221
|
+
|
|
222
|
+
```sh
|
|
223
|
+
npx skills add xberg-io/xberg --skill xberg
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Edit `plugin/.ai-rulez/skills`, then run `mise run plugin:generate` to regenerate runtime
|
|
227
|
+
bundles and synchronize the public export. `mise run plugin:verify` checks both projections;
|
|
228
|
+
`mise run plugin:skills:test` verifies resource freshness, ownership and symlink protection.
|
|
229
|
+
The public ownership manifest records SHA-256 hashes of every exported file.
|
|
230
|
+
|
|
231
|
+
Download integrity: the launcher currently relies on HTTPS for direct binary downloads.
|
|
232
|
+
Verify release checksums separately when available before manually installing an archive.
|
|
233
|
+
|
|
234
|
+
Launcher and visual assets are authored in `plugin/.ai-rulez/scripts/` and
|
|
235
|
+
`plugin/.ai-rulez/assets/`; `mise run plugin:generate` copies them into the runtime bundle.
|
package/assets/icon.svg
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
<svg
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
viewBox="0 0 309 309"
|
|
4
|
+
width="309"
|
|
5
|
+
height="309"
|
|
6
|
+
role="img"
|
|
7
|
+
aria-label="Xberg Rotated Junction V5 dark background"
|
|
8
|
+
>
|
|
9
|
+
<title>Xberg Rotated Junction V5 dark background</title>
|
|
10
|
+
|
|
11
|
+
<image
|
|
12
|
+
href="data:image/png;base64,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"
|
|
13
|
+
x="0"
|
|
14
|
+
y="0"
|
|
15
|
+
width="309"
|
|
16
|
+
height="309"
|
|
6
17
|
/>
|
|
7
|
-
<path d="M152 64 L152 96 C152 100.4 155.6 104 160 104 L192 104 Z" fill="#1F6FEB" />
|
|
8
|
-
<rect x="80" y="128" width="88" height="12" rx="6" fill="#1F6FEB" />
|
|
9
|
-
<rect x="80" y="152" width="96" height="12" rx="6" fill="#1F6FEB" />
|
|
10
|
-
<rect x="80" y="176" width="64" height="12" rx="6" fill="#1F6FEB" />
|
|
11
18
|
</svg>
|
package/assets/logo.png
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
+
"author": {
|
|
3
|
+
"email": "contact@xberg.io",
|
|
4
|
+
"name": "Kreuzberg, Inc.",
|
|
5
|
+
"url": "https://xberg.io"
|
|
6
|
+
},
|
|
2
7
|
"dependencies": {
|
|
3
|
-
"@opencode/plugin": "^2.
|
|
8
|
+
"@opencode/plugin": "^2.2.3"
|
|
4
9
|
},
|
|
5
10
|
"description": "Local document extraction: text, tables, metadata, images from 107 formats with optional OCR.",
|
|
6
11
|
"exports": {
|
|
@@ -12,13 +17,68 @@
|
|
|
12
17
|
".opencode/commands/xberg-extract.md",
|
|
13
18
|
".opencode/commands/xberg-ocr.md",
|
|
14
19
|
".opencode/plugins/xberg.js",
|
|
15
|
-
".opencode/skills/batch-extraction/SKILL.md",
|
|
16
|
-
".opencode/skills/
|
|
17
|
-
".opencode/skills/
|
|
18
|
-
".opencode/skills/
|
|
19
|
-
".opencode/skills/
|
|
20
|
-
".opencode/skills/
|
|
20
|
+
".opencode/skills/xberg-batch-extraction/SKILL.md",
|
|
21
|
+
".opencode/skills/xberg-batch-extraction/index.md",
|
|
22
|
+
".opencode/skills/xberg-batch-extraction/references/advanced-features.md",
|
|
23
|
+
".opencode/skills/xberg-batch-extraction/references/cli-reference.md",
|
|
24
|
+
".opencode/skills/xberg-batch-extraction/references/configuration.md",
|
|
25
|
+
".opencode/skills/xberg-batch-extraction/references/nodejs-api.md",
|
|
26
|
+
".opencode/skills/xberg-batch-extraction/references/other-bindings.md",
|
|
27
|
+
".opencode/skills/xberg-batch-extraction/references/python-api.md",
|
|
28
|
+
".opencode/skills/xberg-batch-extraction/references/rust-api.md",
|
|
29
|
+
".opencode/skills/xberg-batch-extraction/references/supported-formats.md",
|
|
30
|
+
".opencode/skills/xberg-chunking/SKILL.md",
|
|
31
|
+
".opencode/skills/xberg-chunking/index.md",
|
|
32
|
+
".opencode/skills/xberg-chunking/references/advanced-features.md",
|
|
33
|
+
".opencode/skills/xberg-chunking/references/cli-reference.md",
|
|
34
|
+
".opencode/skills/xberg-chunking/references/configuration.md",
|
|
35
|
+
".opencode/skills/xberg-chunking/references/nodejs-api.md",
|
|
36
|
+
".opencode/skills/xberg-chunking/references/other-bindings.md",
|
|
37
|
+
".opencode/skills/xberg-chunking/references/python-api.md",
|
|
38
|
+
".opencode/skills/xberg-chunking/references/rust-api.md",
|
|
39
|
+
".opencode/skills/xberg-chunking/references/supported-formats.md",
|
|
40
|
+
".opencode/skills/xberg-extracting-keywords/SKILL.md",
|
|
41
|
+
".opencode/skills/xberg-extracting-keywords/index.md",
|
|
42
|
+
".opencode/skills/xberg-extracting-keywords/references/advanced-features.md",
|
|
43
|
+
".opencode/skills/xberg-extracting-keywords/references/cli-reference.md",
|
|
44
|
+
".opencode/skills/xberg-extracting-keywords/references/configuration.md",
|
|
45
|
+
".opencode/skills/xberg-extracting-keywords/references/nodejs-api.md",
|
|
46
|
+
".opencode/skills/xberg-extracting-keywords/references/other-bindings.md",
|
|
47
|
+
".opencode/skills/xberg-extracting-keywords/references/python-api.md",
|
|
48
|
+
".opencode/skills/xberg-extracting-keywords/references/rust-api.md",
|
|
49
|
+
".opencode/skills/xberg-extracting-keywords/references/supported-formats.md",
|
|
50
|
+
".opencode/skills/xberg-extracting-tables/SKILL.md",
|
|
51
|
+
".opencode/skills/xberg-extracting-tables/index.md",
|
|
52
|
+
".opencode/skills/xberg-extracting-tables/references/advanced-features.md",
|
|
53
|
+
".opencode/skills/xberg-extracting-tables/references/cli-reference.md",
|
|
54
|
+
".opencode/skills/xberg-extracting-tables/references/configuration.md",
|
|
55
|
+
".opencode/skills/xberg-extracting-tables/references/nodejs-api.md",
|
|
56
|
+
".opencode/skills/xberg-extracting-tables/references/other-bindings.md",
|
|
57
|
+
".opencode/skills/xberg-extracting-tables/references/python-api.md",
|
|
58
|
+
".opencode/skills/xberg-extracting-tables/references/rust-api.md",
|
|
59
|
+
".opencode/skills/xberg-extracting-tables/references/supported-formats.md",
|
|
60
|
+
".opencode/skills/xberg-extracting-with-ocr/SKILL.md",
|
|
61
|
+
".opencode/skills/xberg-extracting-with-ocr/index.md",
|
|
62
|
+
".opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md",
|
|
63
|
+
".opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md",
|
|
64
|
+
".opencode/skills/xberg-extracting-with-ocr/references/configuration.md",
|
|
65
|
+
".opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md",
|
|
66
|
+
".opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md",
|
|
67
|
+
".opencode/skills/xberg-extracting-with-ocr/references/python-api.md",
|
|
68
|
+
".opencode/skills/xberg-extracting-with-ocr/references/rust-api.md",
|
|
69
|
+
".opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md",
|
|
70
|
+
".opencode/skills/xberg-picking-a-format/SKILL.md",
|
|
71
|
+
".opencode/skills/xberg-picking-a-format/index.md",
|
|
72
|
+
".opencode/skills/xberg-picking-a-format/references/advanced-features.md",
|
|
73
|
+
".opencode/skills/xberg-picking-a-format/references/cli-reference.md",
|
|
74
|
+
".opencode/skills/xberg-picking-a-format/references/configuration.md",
|
|
75
|
+
".opencode/skills/xberg-picking-a-format/references/nodejs-api.md",
|
|
76
|
+
".opencode/skills/xberg-picking-a-format/references/other-bindings.md",
|
|
77
|
+
".opencode/skills/xberg-picking-a-format/references/python-api.md",
|
|
78
|
+
".opencode/skills/xberg-picking-a-format/references/rust-api.md",
|
|
79
|
+
".opencode/skills/xberg-picking-a-format/references/supported-formats.md",
|
|
21
80
|
".opencode/skills/xberg/SKILL.md",
|
|
81
|
+
".opencode/skills/xberg/index.md",
|
|
22
82
|
".opencode/skills/xberg/references/advanced-features.md",
|
|
23
83
|
".opencode/skills/xberg/references/cli-reference.md",
|
|
24
84
|
".opencode/skills/xberg/references/configuration.md",
|
|
@@ -29,13 +89,68 @@
|
|
|
29
89
|
".opencode/skills/xberg/references/supported-formats.md",
|
|
30
90
|
".pi/prompts/xberg-extract.md",
|
|
31
91
|
".pi/prompts/xberg-ocr.md",
|
|
32
|
-
".pi/skills/batch-extraction/SKILL.md",
|
|
33
|
-
".pi/skills/
|
|
34
|
-
".pi/skills/
|
|
35
|
-
".pi/skills/
|
|
36
|
-
".pi/skills/
|
|
37
|
-
".pi/skills/
|
|
92
|
+
".pi/skills/xberg-batch-extraction/SKILL.md",
|
|
93
|
+
".pi/skills/xberg-batch-extraction/index.md",
|
|
94
|
+
".pi/skills/xberg-batch-extraction/references/advanced-features.md",
|
|
95
|
+
".pi/skills/xberg-batch-extraction/references/cli-reference.md",
|
|
96
|
+
".pi/skills/xberg-batch-extraction/references/configuration.md",
|
|
97
|
+
".pi/skills/xberg-batch-extraction/references/nodejs-api.md",
|
|
98
|
+
".pi/skills/xberg-batch-extraction/references/other-bindings.md",
|
|
99
|
+
".pi/skills/xberg-batch-extraction/references/python-api.md",
|
|
100
|
+
".pi/skills/xberg-batch-extraction/references/rust-api.md",
|
|
101
|
+
".pi/skills/xberg-batch-extraction/references/supported-formats.md",
|
|
102
|
+
".pi/skills/xberg-chunking/SKILL.md",
|
|
103
|
+
".pi/skills/xberg-chunking/index.md",
|
|
104
|
+
".pi/skills/xberg-chunking/references/advanced-features.md",
|
|
105
|
+
".pi/skills/xberg-chunking/references/cli-reference.md",
|
|
106
|
+
".pi/skills/xberg-chunking/references/configuration.md",
|
|
107
|
+
".pi/skills/xberg-chunking/references/nodejs-api.md",
|
|
108
|
+
".pi/skills/xberg-chunking/references/other-bindings.md",
|
|
109
|
+
".pi/skills/xberg-chunking/references/python-api.md",
|
|
110
|
+
".pi/skills/xberg-chunking/references/rust-api.md",
|
|
111
|
+
".pi/skills/xberg-chunking/references/supported-formats.md",
|
|
112
|
+
".pi/skills/xberg-extracting-keywords/SKILL.md",
|
|
113
|
+
".pi/skills/xberg-extracting-keywords/index.md",
|
|
114
|
+
".pi/skills/xberg-extracting-keywords/references/advanced-features.md",
|
|
115
|
+
".pi/skills/xberg-extracting-keywords/references/cli-reference.md",
|
|
116
|
+
".pi/skills/xberg-extracting-keywords/references/configuration.md",
|
|
117
|
+
".pi/skills/xberg-extracting-keywords/references/nodejs-api.md",
|
|
118
|
+
".pi/skills/xberg-extracting-keywords/references/other-bindings.md",
|
|
119
|
+
".pi/skills/xberg-extracting-keywords/references/python-api.md",
|
|
120
|
+
".pi/skills/xberg-extracting-keywords/references/rust-api.md",
|
|
121
|
+
".pi/skills/xberg-extracting-keywords/references/supported-formats.md",
|
|
122
|
+
".pi/skills/xberg-extracting-tables/SKILL.md",
|
|
123
|
+
".pi/skills/xberg-extracting-tables/index.md",
|
|
124
|
+
".pi/skills/xberg-extracting-tables/references/advanced-features.md",
|
|
125
|
+
".pi/skills/xberg-extracting-tables/references/cli-reference.md",
|
|
126
|
+
".pi/skills/xberg-extracting-tables/references/configuration.md",
|
|
127
|
+
".pi/skills/xberg-extracting-tables/references/nodejs-api.md",
|
|
128
|
+
".pi/skills/xberg-extracting-tables/references/other-bindings.md",
|
|
129
|
+
".pi/skills/xberg-extracting-tables/references/python-api.md",
|
|
130
|
+
".pi/skills/xberg-extracting-tables/references/rust-api.md",
|
|
131
|
+
".pi/skills/xberg-extracting-tables/references/supported-formats.md",
|
|
132
|
+
".pi/skills/xberg-extracting-with-ocr/SKILL.md",
|
|
133
|
+
".pi/skills/xberg-extracting-with-ocr/index.md",
|
|
134
|
+
".pi/skills/xberg-extracting-with-ocr/references/advanced-features.md",
|
|
135
|
+
".pi/skills/xberg-extracting-with-ocr/references/cli-reference.md",
|
|
136
|
+
".pi/skills/xberg-extracting-with-ocr/references/configuration.md",
|
|
137
|
+
".pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md",
|
|
138
|
+
".pi/skills/xberg-extracting-with-ocr/references/other-bindings.md",
|
|
139
|
+
".pi/skills/xberg-extracting-with-ocr/references/python-api.md",
|
|
140
|
+
".pi/skills/xberg-extracting-with-ocr/references/rust-api.md",
|
|
141
|
+
".pi/skills/xberg-extracting-with-ocr/references/supported-formats.md",
|
|
142
|
+
".pi/skills/xberg-picking-a-format/SKILL.md",
|
|
143
|
+
".pi/skills/xberg-picking-a-format/index.md",
|
|
144
|
+
".pi/skills/xberg-picking-a-format/references/advanced-features.md",
|
|
145
|
+
".pi/skills/xberg-picking-a-format/references/cli-reference.md",
|
|
146
|
+
".pi/skills/xberg-picking-a-format/references/configuration.md",
|
|
147
|
+
".pi/skills/xberg-picking-a-format/references/nodejs-api.md",
|
|
148
|
+
".pi/skills/xberg-picking-a-format/references/other-bindings.md",
|
|
149
|
+
".pi/skills/xberg-picking-a-format/references/python-api.md",
|
|
150
|
+
".pi/skills/xberg-picking-a-format/references/rust-api.md",
|
|
151
|
+
".pi/skills/xberg-picking-a-format/references/supported-formats.md",
|
|
38
152
|
".pi/skills/xberg/SKILL.md",
|
|
153
|
+
".pi/skills/xberg/index.md",
|
|
39
154
|
".pi/skills/xberg/references/advanced-features.md",
|
|
40
155
|
".pi/skills/xberg/references/cli-reference.md",
|
|
41
156
|
".pi/skills/xberg/references/configuration.md",
|
|
@@ -66,12 +181,12 @@
|
|
|
66
181
|
"./.pi/prompts/xberg-ocr.md"
|
|
67
182
|
],
|
|
68
183
|
"skills": [
|
|
69
|
-
"./.pi/skills/batch-extraction",
|
|
70
|
-
"./.pi/skills/chunking",
|
|
71
|
-
"./.pi/skills/extracting-keywords",
|
|
72
|
-
"./.pi/skills/extracting-tables",
|
|
73
|
-
"./.pi/skills/extracting-with-ocr",
|
|
74
|
-
"./.pi/skills/picking-a-format",
|
|
184
|
+
"./.pi/skills/xberg-batch-extraction",
|
|
185
|
+
"./.pi/skills/xberg-chunking",
|
|
186
|
+
"./.pi/skills/xberg-extracting-keywords",
|
|
187
|
+
"./.pi/skills/xberg-extracting-tables",
|
|
188
|
+
"./.pi/skills/xberg-extracting-with-ocr",
|
|
189
|
+
"./.pi/skills/xberg-picking-a-format",
|
|
75
190
|
"./.pi/skills/xberg"
|
|
76
191
|
]
|
|
77
192
|
},
|
|
@@ -80,5 +195,5 @@
|
|
|
80
195
|
"url": "https://github.com/xberg-io/xberg"
|
|
81
196
|
},
|
|
82
197
|
"type": "module",
|
|
83
|
-
"version": "1.
|
|
84
|
-
}
|
|
198
|
+
"version": "1.4.0"
|
|
199
|
+
}
|
package/scripts/mcp-launch.sh
CHANGED
|
@@ -47,12 +47,13 @@ if have "$BINARY_NAME"; then
|
|
|
47
47
|
fi
|
|
48
48
|
|
|
49
49
|
if want npx && have npx; then
|
|
50
|
-
log "
|
|
50
|
+
log "resolving npx $NPM_PKG@latest ..."
|
|
51
51
|
scratch="$(mktemp -d)"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
# Resolve in an empty project, then execute the selected binary in the caller's cwd. ~keep
|
|
53
|
+
if npm_bin="$(cd "$scratch" && npx -y --package "$NPM_PKG@latest" --call "command -v ${BINARY_NAME%.exe}" 2>/dev/null)" && runnable "$npm_bin"; then
|
|
54
|
+
rm -rf "$scratch"
|
|
55
|
+
log "launching npm package binary $npm_bin"
|
|
56
|
+
exec "$npm_bin" "$@"
|
|
56
57
|
fi
|
|
57
58
|
rm -rf "$scratch"
|
|
58
59
|
log "npx $NPM_PKG not available (no CLI bin yet); falling through"
|