@xberg-io/opencode-xberg 1.3.7 → 1.3.11

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 (150) hide show
  1. package/.opencode/ai-rulez-bundle.json +52 -0
  2. package/.opencode/ai-rulez-content.js +167 -0
  3. package/.opencode/commands/xberg-extract.md +14 -0
  4. package/.opencode/commands/xberg-ocr.md +14 -0
  5. package/.opencode/plugins/xberg.js +75 -62
  6. package/.opencode/skills/xberg/SKILL.md +422 -0
  7. package/.opencode/skills/xberg/index.md +10 -0
  8. package/.opencode/skills/xberg/references/advanced-features.md +628 -0
  9. package/.opencode/skills/xberg/references/cli-reference.md +462 -0
  10. package/.opencode/skills/xberg/references/configuration.md +587 -0
  11. package/.opencode/skills/xberg/references/nodejs-api.md +485 -0
  12. package/.opencode/skills/xberg/references/other-bindings.md +345 -0
  13. package/.opencode/skills/xberg/references/python-api.md +657 -0
  14. package/.opencode/skills/xberg/references/rust-api.md +412 -0
  15. package/.opencode/skills/xberg/references/supported-formats.md +252 -0
  16. package/.opencode/skills/xberg-batch-extraction/SKILL.md +170 -0
  17. package/.opencode/skills/xberg-batch-extraction/index.md +10 -0
  18. package/.opencode/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
  19. package/.opencode/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
  20. package/.opencode/skills/xberg-batch-extraction/references/configuration.md +587 -0
  21. package/.opencode/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
  22. package/.opencode/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
  23. package/.opencode/skills/xberg-batch-extraction/references/python-api.md +657 -0
  24. package/.opencode/skills/xberg-batch-extraction/references/rust-api.md +412 -0
  25. package/.opencode/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
  26. package/.opencode/skills/xberg-chunking/SKILL.md +163 -0
  27. package/.opencode/skills/xberg-chunking/index.md +10 -0
  28. package/.opencode/skills/xberg-chunking/references/advanced-features.md +628 -0
  29. package/.opencode/skills/xberg-chunking/references/cli-reference.md +462 -0
  30. package/.opencode/skills/xberg-chunking/references/configuration.md +587 -0
  31. package/.opencode/skills/xberg-chunking/references/nodejs-api.md +485 -0
  32. package/.opencode/skills/xberg-chunking/references/other-bindings.md +345 -0
  33. package/.opencode/skills/xberg-chunking/references/python-api.md +657 -0
  34. package/.opencode/skills/xberg-chunking/references/rust-api.md +412 -0
  35. package/.opencode/skills/xberg-chunking/references/supported-formats.md +252 -0
  36. package/.opencode/skills/xberg-extracting-keywords/SKILL.md +170 -0
  37. package/.opencode/skills/xberg-extracting-keywords/index.md +10 -0
  38. package/.opencode/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
  39. package/.opencode/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
  40. package/.opencode/skills/xberg-extracting-keywords/references/configuration.md +587 -0
  41. package/.opencode/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
  42. package/.opencode/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
  43. package/.opencode/skills/xberg-extracting-keywords/references/python-api.md +657 -0
  44. package/.opencode/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
  45. package/.opencode/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
  46. package/.opencode/skills/xberg-extracting-tables/SKILL.md +155 -0
  47. package/.opencode/skills/xberg-extracting-tables/index.md +10 -0
  48. package/.opencode/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
  49. package/.opencode/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
  50. package/.opencode/skills/xberg-extracting-tables/references/configuration.md +587 -0
  51. package/.opencode/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
  52. package/.opencode/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
  53. package/.opencode/skills/xberg-extracting-tables/references/python-api.md +657 -0
  54. package/.opencode/skills/xberg-extracting-tables/references/rust-api.md +412 -0
  55. package/.opencode/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
  56. package/.opencode/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
  57. package/.opencode/skills/xberg-extracting-with-ocr/index.md +10 -0
  58. package/.opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
  59. package/.opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
  60. package/.opencode/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
  61. package/.opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
  62. package/.opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
  63. package/.opencode/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
  64. package/.opencode/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
  65. package/.opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
  66. package/.opencode/skills/xberg-picking-a-format/SKILL.md +104 -0
  67. package/.opencode/skills/xberg-picking-a-format/index.md +10 -0
  68. package/.opencode/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
  69. package/.opencode/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
  70. package/.opencode/skills/xberg-picking-a-format/references/configuration.md +587 -0
  71. package/.opencode/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
  72. package/.opencode/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
  73. package/.opencode/skills/xberg-picking-a-format/references/python-api.md +657 -0
  74. package/.opencode/skills/xberg-picking-a-format/references/rust-api.md +412 -0
  75. package/.opencode/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
  76. package/.pi/prompts/xberg-extract.md +14 -0
  77. package/.pi/prompts/xberg-ocr.md +14 -0
  78. package/.pi/skills/xberg/SKILL.md +422 -0
  79. package/.pi/skills/xberg/index.md +10 -0
  80. package/.pi/skills/xberg/references/advanced-features.md +628 -0
  81. package/.pi/skills/xberg/references/cli-reference.md +462 -0
  82. package/.pi/skills/xberg/references/configuration.md +587 -0
  83. package/.pi/skills/xberg/references/nodejs-api.md +485 -0
  84. package/.pi/skills/xberg/references/other-bindings.md +345 -0
  85. package/.pi/skills/xberg/references/python-api.md +657 -0
  86. package/.pi/skills/xberg/references/rust-api.md +412 -0
  87. package/.pi/skills/xberg/references/supported-formats.md +252 -0
  88. package/.pi/skills/xberg-batch-extraction/SKILL.md +170 -0
  89. package/.pi/skills/xberg-batch-extraction/index.md +10 -0
  90. package/.pi/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
  91. package/.pi/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
  92. package/.pi/skills/xberg-batch-extraction/references/configuration.md +587 -0
  93. package/.pi/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
  94. package/.pi/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
  95. package/.pi/skills/xberg-batch-extraction/references/python-api.md +657 -0
  96. package/.pi/skills/xberg-batch-extraction/references/rust-api.md +412 -0
  97. package/.pi/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
  98. package/.pi/skills/xberg-chunking/SKILL.md +163 -0
  99. package/.pi/skills/xberg-chunking/index.md +10 -0
  100. package/.pi/skills/xberg-chunking/references/advanced-features.md +628 -0
  101. package/.pi/skills/xberg-chunking/references/cli-reference.md +462 -0
  102. package/.pi/skills/xberg-chunking/references/configuration.md +587 -0
  103. package/.pi/skills/xberg-chunking/references/nodejs-api.md +485 -0
  104. package/.pi/skills/xberg-chunking/references/other-bindings.md +345 -0
  105. package/.pi/skills/xberg-chunking/references/python-api.md +657 -0
  106. package/.pi/skills/xberg-chunking/references/rust-api.md +412 -0
  107. package/.pi/skills/xberg-chunking/references/supported-formats.md +252 -0
  108. package/.pi/skills/xberg-extracting-keywords/SKILL.md +170 -0
  109. package/.pi/skills/xberg-extracting-keywords/index.md +10 -0
  110. package/.pi/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
  111. package/.pi/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
  112. package/.pi/skills/xberg-extracting-keywords/references/configuration.md +587 -0
  113. package/.pi/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
  114. package/.pi/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
  115. package/.pi/skills/xberg-extracting-keywords/references/python-api.md +657 -0
  116. package/.pi/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
  117. package/.pi/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
  118. package/.pi/skills/xberg-extracting-tables/SKILL.md +155 -0
  119. package/.pi/skills/xberg-extracting-tables/index.md +10 -0
  120. package/.pi/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
  121. package/.pi/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
  122. package/.pi/skills/xberg-extracting-tables/references/configuration.md +587 -0
  123. package/.pi/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
  124. package/.pi/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
  125. package/.pi/skills/xberg-extracting-tables/references/python-api.md +657 -0
  126. package/.pi/skills/xberg-extracting-tables/references/rust-api.md +412 -0
  127. package/.pi/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
  128. package/.pi/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
  129. package/.pi/skills/xberg-extracting-with-ocr/index.md +10 -0
  130. package/.pi/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
  131. package/.pi/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
  132. package/.pi/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
  133. package/.pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
  134. package/.pi/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
  135. package/.pi/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
  136. package/.pi/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
  137. package/.pi/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
  138. package/.pi/skills/xberg-picking-a-format/SKILL.md +104 -0
  139. package/.pi/skills/xberg-picking-a-format/index.md +10 -0
  140. package/.pi/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
  141. package/.pi/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
  142. package/.pi/skills/xberg-picking-a-format/references/configuration.md +587 -0
  143. package/.pi/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
  144. package/.pi/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
  145. package/.pi/skills/xberg-picking-a-format/references/python-api.md +657 -0
  146. package/.pi/skills/xberg-picking-a-format/references/rust-api.md +412 -0
  147. package/.pi/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
  148. package/README.md +112 -6
  149. package/package.json +184 -16
  150. package/scripts/mcp-launch.sh +189 -0
@@ -0,0 +1,170 @@
1
+ ---
2
+ description: Use when extracting keywords (YAKE/RAKE) from documents — and, secondarily, when detecting document language or generating embeddings for RAG and search. Covers the keyword config (and its feature gating), `--detect-language`, and the standalone `embed` command with real flags.
3
+ name: xberg-extracting-keywords
4
+ ---
5
+
6
+ <!--
7
+ AI-RULEZ :: GENERATED FILE — DO NOT EDIT
8
+ Content-Hash: blake3:491d3cbcd4f6128d43e32b39c13d03a023b397f97c71da48ed5a02d6be00ae28
9
+ Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
10
+ Schema-Version: v1
11
+ -->
12
+
13
+ # Extracting keywords, language, and embeddings
14
+
15
+ Use this for the enrichment surface around extraction: statistical keyword
16
+ extraction, language detection, and vector embeddings. Keywords and
17
+ language detection ride along with extraction and land on the result;
18
+ embeddings are produced by a dedicated `embed` command.
19
+
20
+ ## Keywords (YAKE / RAKE)
21
+
22
+ Keyword extraction is configured via the `[keywords]` config block (or
23
+ inline JSON) — there is no single `--keywords` CLI flag. When enabled,
24
+ extracted keywords appear on `result.extracted_keywords` (`extractedKeywords`
25
+ in Node.js; the CLI JSON field is `extracted_keywords`). Two algorithms are
26
+ available:
27
+
28
+ - **YAKE** (`"yake"`) — statistical, unsupervised single-document
29
+ extraction. Good general default.
30
+ - **RAKE** (`"rake"`) — co-occurrence / phrase-based. Favors multi-word
31
+ key phrases.
32
+
33
+ > Feature-gated: keyword extraction requires the CLI to be built with the
34
+ > `keywords-yake` and/or `keywords-rake` Cargo features (both are in the
35
+ > default/`full` build). If the CLI was built without them, the `[keywords]`
36
+ > config block is silently ignored — `result.extracted_keywords` simply stays empty
37
+ > rather than erroring. The `"yake"` algorithm needs `keywords-yake`; `"rake"`
38
+ > needs `keywords-rake`.
39
+
40
+ Enable via inline JSON on the CLI:
41
+
42
+ ```bash
43
+ xberg extract paper.pdf --format json \
44
+ --config-json '{"keywords":{"algorithm":"yake","max_keywords":15,"language":"en"}}' \
45
+ | jq '.result.extracted_keywords'
46
+ ```
47
+
48
+ Or in a config file:
49
+
50
+ ```toml
51
+ [keywords]
52
+ algorithm = "rake" # "yake" or "rake"
53
+ max_keywords = 10 # default 10
54
+ min_score = 0.0 # filter below this score (normalized 0.0-1.0 for both algorithms)
55
+ ngram_range = [1, 3] # unigrams..trigrams (default); config-file only
56
+ language = "en" # stopword language; omit to skip stopword filtering
57
+ ```
58
+
59
+ ```bash
60
+ xberg extract report.pdf --config xberg.toml --format json | jq '.result.extracted_keywords'
61
+ ```
62
+
63
+ Field notes:
64
+
65
+ - `max_keywords` caps how many keywords are returned (default 10).
66
+ - `min_score` filters low-scoring keywords. Both YAKE and RAKE normalize
67
+ their scores to the `0.0`-`1.0` range with *higher-is-better*, so
68
+ `min_score` retains keywords with `score >= min_score` identically for
69
+ either algorithm.
70
+ - `ngram_range` is `[min, max]`: `[1,1]` unigrams only, `[1,2]` adds
71
+ bigrams, `[1,3]` (default) adds trigrams. Config-file only — it is not a
72
+ field on the language bindings' `KeywordConfig`.
73
+ - `language` enables stopword filtering for that language; omit it to
74
+ disable stopword filtering entirely.
75
+
76
+ ## Language detection
77
+
78
+ Language detection is a real CLI flag: `--detect-language`. Detected
79
+ languages appear on `result.detected_languages`:
80
+
81
+ ```bash
82
+ xberg extract multilingual.pdf --detect-language true --format json \
83
+ | jq '.result.detected_languages'
84
+ ```
85
+
86
+ In a config file it lives under `[language_detection]`:
87
+
88
+ ```toml
89
+ [language_detection]
90
+ enabled = true
91
+ min_confidence = 0.8
92
+ detect_multiple = false
93
+ ```
94
+
95
+ The CLI flag enables detection with `min_confidence = 0.8` and
96
+ single-language mode; use the config block to detect multiple languages or
97
+ tune confidence.
98
+
99
+ ## Embeddings (`embed` command)
100
+
101
+ The standalone `embed` command produces vector embeddings for text from
102
+ `--text` (repeatable) or stdin. It does not run extraction — pipe
103
+ extracted content in if you want document embeddings.
104
+
105
+ ```bash
106
+ # Local ONNX preset model (default provider)
107
+ xberg embed --text "first passage" --text "second passage" --preset balanced
108
+
109
+ # Embed extracted document text
110
+ xberg extract report.pdf | xberg embed --preset quality
111
+ ```
112
+
113
+ Presets for the local provider: `fast`, `balanced` (default), `quality`,
114
+ `multilingual`. Output defaults to JSON (`--format json`).
115
+
116
+ `--provider` selects the embedding source:
117
+
118
+ | Provider | Flag | Notes |
119
+ | -------- | ------------------------------------- | --------------------------------------------- |
120
+ | `local` | `--preset <fast\|balanced\|quality\|multilingual>` | **Default.** ONNX model, no API key. |
121
+ | `llm` | `--model <id>` `--api-key <key>` | liter-llm routing, e.g. `openai/text-embedding-3-small`. |
122
+ | `plugin` | `--plugin <name>` | A backend pre-registered in-process via the plugin API. |
123
+
124
+ ```bash
125
+ # Provider-hosted embeddings via an LLM
126
+ xberg embed --text "query text" \
127
+ --provider llm --model openai/text-embedding-3-small --api-key "$OPENAI_API_KEY"
128
+ ```
129
+
130
+ Local embedding presets must be downloaded first if not cached. Pre-warm
131
+ them with the cache command:
132
+
133
+ ```bash
134
+ xberg cache warm --embedding-model balanced # one preset
135
+ xberg cache warm --all-embeddings # all available presets (currently 8)
136
+ ```
137
+
138
+ ## Programmatic access
139
+
140
+ Keywords and detected languages live on the document in the result envelope:
141
+
142
+ ```python
143
+ from xberg import ExtractInput, extract, ExtractionConfig, KeywordConfig, KeywordAlgorithm
144
+
145
+ config = ExtractionConfig(
146
+ keywords=KeywordConfig(algorithm=KeywordAlgorithm.YAKE, max_keywords=15, language="en"),
147
+ )
148
+ result = await extract(ExtractInput(uri="paper.pdf"), config)
149
+ doc = result.results[0]
150
+ print(doc.extracted_keywords) # extracted keywords (when enabled)
151
+ print(doc.detected_languages) # detected languages (when enabled)
152
+ ```
153
+
154
+ See `references/python-api.md` and `references/configuration.md` for the keyword / language-detection config
155
+ classes and the embedding presets.
156
+
157
+ ## Common pitfalls
158
+
159
+ - **No `--keywords` flag** — keyword extraction is config-only. Use
160
+ `--config-json '{"keywords":{...}}'` or a `[keywords]` config block.
161
+ - **`min_score` direction** — scores are normalized to `0.0`-`1.0` with
162
+ higher-is-better for both YAKE and RAKE, so the same threshold behaves
163
+ identically for either algorithm.
164
+ - **Embeddings ≠ extraction** — `embed` only takes raw text. Pipe
165
+ `xberg extract` output into it for document vectors.
166
+ - **Cold embedding models** — first local run downloads the preset; run
167
+ `xberg cache warm --all-embeddings` to pre-populate.
168
+
169
+ See `references/advanced-features.md` for the embeddings pipeline and
170
+ `references/cli-reference.md` for the `embed` and `cache warm` flag sets.
@@ -0,0 +1,10 @@
1
+ <!--
2
+ AI-RULEZ :: GENERATED FILE — DO NOT EDIT
3
+ Content-Hash: blake3:95ea1ed670e9f4a1d722e167cb5405aa3b445cb8dc79db95981131bd99e390a5
4
+ Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
5
+ Schema-Version: v1
6
+ -->
7
+
8
+ # Concepts
9
+
10
+ * [Extracting Keywords](SKILL.md) - Use when extracting keywords (YAKE/RAKE) from documents — and, secondarily, when detecting document language or generating embeddings for RAG and search. Covers the keyword config (and its feature gating), `--detect-language`, and the standalone `embed` command with real flags.