@wei840222/qmd 2026.9.29 → 2026.9.30

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/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ### Changed
6
+
7
+ - Dependency upgrades and runtime engine modernization: Updated Node.js engine target to `>=24.21.0` (LTS Krypton) and packageManager to `pnpm@12.6.0`. Upgraded dependencies and toolchain including `node-llama-cpp` to `3.22.1`, `zod` to `4.6.5`, `@modelcontextprotocol/server` to `2.1.0`, `picomatch` to `4.0.7`, `yaml` to `2.9.1`, `tsx` to `4.23.15`, `oxlint` to `1.85.0`, `vitest` to `4.1.11` (patching security advisory GHSA-82fw-gwwq-j7x9), and refreshed patch/minor dependency overrides.
8
+
5
9
  ### Fixed
6
10
 
7
11
  - Metadata extraction error retry: `isDocumentMetadataCurrent` now requires an error-free extraction, allowing `qmd update` to automatically re-attempt extraction on documents that previously failed without requiring manual edits.
@@ -19,7 +23,7 @@
19
23
  - Document file path and title metadata in candidate reranking: candidate documents for chat-based and remote rerankers now retain document file paths and titles, enabling rerankers to evaluate provenance and temporal references.
20
24
  - Relative temporal resolution in query expansion: `expandQuery` prompts now instruct models to calculate exact ISO dates from relative time expressions (e.g. "yesterday", "昨天", "today", "last week") against current local time for lexical and vector search.
21
25
  - Added file, title, and current local time to TypeSafe Jev candidate reranking and intent classification states, with temporal constraint guidance.
22
- - Search intent playbook and guidance for query expansion: Added `JEV_STRATEGY_PLAYBOOK` mapping Jev intent classifications (`code_search`, `concept_search`, `factual_lookup`, `broad_exploration`) to concrete lexical and vector search guidance passed to downstream expansion LLMs in dedicated `<search_intent>` XML blocks, keeping untrusted context separate.
26
+ - Search intent playbook and guidance for query expansion: Added `JEV_STRATEGY_PLAYBOOK` mapping Jev intent classifications (`troubleshooting`, `how_to_guide`, `code_search`, `concept_search`, `factual_lookup`, `broad_exploration`) to concrete lexical and vector search guidance passed to downstream expansion LLMs in dedicated `<search_intent>` XML blocks, keeping untrusted context separate.
23
27
 
24
28
  ## [2026.9.25] - 2026-09-26
25
29
 
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "14c9c5c",
3
- "builtAt": "2026-09-29T03:20:38.715Z"
2
+ "commit": "6ac6043",
3
+ "builtAt": "2026-09-29T05:54:42.265Z"
4
4
  }
@@ -3,6 +3,18 @@ import { getFormattedLocalTime } from "./remote-llm.js";
3
3
  export const DEFAULT_JEV_TIMEOUT_MS = 30000;
4
4
  export const DEFAULT_JEV_RERANK_BATCH_SIZE = 40;
5
5
  export const JEV_STRATEGY_PLAYBOOK = {
6
+ troubleshooting: {
7
+ label: "Troubleshooting & Bug Fix",
8
+ objective: "Diagnosing errors, exceptions, stack traces, failure modes, or broken states.",
9
+ lexGuidance: "Prioritize exact error codes, exception class names, HTTP statuses, and failed syscall/function identifiers. Exclude generic noise like 'why', 'error', 'issue'.",
10
+ vecGuidance: "Formulate concrete diagnostic or remediation questions (e.g., 'how to resolve <error> caused by <reason>').",
11
+ },
12
+ how_to_guide: {
13
+ label: "How-To & Procedural Guide",
14
+ objective: "Looking for step-by-step setup guides, workflows, recipes, installation, or migration steps.",
15
+ lexGuidance: "Include tool/command names, CLI flags, configuration filenames, and workflow action verbs without extra filler words.",
16
+ vecGuidance: "Formulate procedural task questions (e.g., 'step-by-step guide to configure or implement <task>').",
17
+ },
6
18
  code_search: {
7
19
  label: "Code Search",
8
20
  objective: "Looking for specific code, functions, APIs, syntax, or implementations.",
@@ -74,8 +86,10 @@ export class RemoteJev {
74
86
  model: this.model,
75
87
  questions: {
76
88
  strategy: choice("What type of search is the user performing given the query and optional context?", {
89
+ troubleshooting: "Diagnosing errors, exceptions, stack traces, or broken behavior",
90
+ how_to_guide: "Step-by-step instructions, installation, configuration, or migration workflows",
77
91
  code_search: "Looking for specific code, functions, APIs, or implementations",
78
- concept_search: "Looking for explanations, concepts, or documentation",
92
+ concept_search: "Looking for explanations, concepts, architecture, or documentation",
79
93
  factual_lookup: "Looking for specific facts, configurations, or settings",
80
94
  broad_exploration: "Exploring a topic broadly without a specific target",
81
95
  }),
package/package.json CHANGED
@@ -1,8 +1,30 @@
1
1
  {
2
2
  "name": "@wei840222/qmd",
3
- "version": "2026.9.29",
4
- "packageManager": "pnpm@11.15.1",
3
+ "version": "2026.9.30",
5
4
  "description": "Query Markup Documents - On-device hybrid search for markdown files with BM25, vector search, and LLM reranking",
5
+ "author": "Wan, Jiun Wei <wei840222@gmail.com>",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "markdown",
9
+ "search",
10
+ "fts",
11
+ "full-text-search",
12
+ "vector",
13
+ "semantic-search",
14
+ "sqlite",
15
+ "bm25",
16
+ "embeddings",
17
+ "rag",
18
+ "mcp",
19
+ "reranking",
20
+ "knowledge-base",
21
+ "local-ai",
22
+ "llm"
23
+ ],
24
+ "engines": {
25
+ "node": ">=24.21.0"
26
+ },
27
+ "packageManager": "pnpm@12.6.0",
6
28
  "type": "module",
7
29
  "main": "dist/index.js",
8
30
  "types": "dist/index.d.ts",
@@ -64,21 +86,21 @@
64
86
  "url": "https://github.com/wei840222/qmd/issues"
65
87
  },
66
88
  "dependencies": {
67
- "@modelcontextprotocol/server": "2.0.0",
89
+ "@modelcontextprotocol/server": "2.1.0",
68
90
  "@node-rs/jieba": "2.0.3",
69
91
  "@typesafe-ai/sdk": "^0.6.0",
70
92
  "fast-glob": "3.3.3",
71
93
  "lru-cache": "^11.5.3",
72
- "node-llama-cpp": "3.20.0",
73
- "picomatch": "4.0.5",
94
+ "node-llama-cpp": "3.22.1",
95
+ "picomatch": "4.0.7",
74
96
  "sqlite-vec": "0.1.9",
75
97
  "tree-sitter-go": "0.25.0",
76
98
  "tree-sitter-python": "0.25.0",
77
99
  "tree-sitter-rust": "0.24.0",
78
100
  "tree-sitter-typescript": "0.23.2",
79
101
  "web-tree-sitter": "0.26.12",
80
- "yaml": "2.9.0",
81
- "zod": "4.2.1"
102
+ "yaml": "2.9.1",
103
+ "zod": "4.6.5"
82
104
  },
83
105
  "optionalDependencies": {
84
106
  "sqlite-vec-darwin-arm64": "0.1.9",
@@ -88,50 +110,28 @@
88
110
  "sqlite-vec-windows-x64": "0.1.9"
89
111
  },
90
112
  "devDependencies": {
91
- "@oxlint/plugins": "1.78.0",
92
- "oxlint": "1.78.0",
93
- "tsx": "4.23.12",
94
- "vitest": "3.2.7"
113
+ "@oxlint/plugins": "1.85.0",
114
+ "oxlint": "1.85.0",
115
+ "tsx": "4.23.15",
116
+ "vitest": "4.1.11"
95
117
  },
96
118
  "overrides": {
97
- "@hono/node-server": "2.0.10",
98
- "ajv": "8.18.0",
99
- "esbuild": "0.28.1",
119
+ "@hono/node-server": "2.1.2",
120
+ "ajv": "8.20.0",
121
+ "esbuild": "0.28.2",
100
122
  "fast-uri": "3.1.5",
101
- "hono": "4.12.34",
102
- "ip-address": "10.3.1",
123
+ "hono": "4.13.10",
124
+ "ip-address": "10.7.2",
103
125
  "nanoid": "3.3.18",
104
- "path-to-regexp": "8.4.0",
105
- "postcss": "8.5.23",
106
- "qs": "6.15.3",
107
- "rollup": "4.59.0",
126
+ "path-to-regexp": "8.4.2",
127
+ "postcss": "8.5.28",
128
+ "qs": "6.16.0",
129
+ "rollup": "4.63.5",
108
130
  "simple-git": "3.36.0",
109
- "tar": "7.5.21",
131
+ "tar": "7.5.22",
110
132
  "vite": "7.3.5"
111
133
  },
112
134
  "peerDependencies": {
113
135
  "typescript": "^5.9.3 || ^6.0.0-0"
114
- },
115
- "engines": {
116
- "node": ">=22.16.0"
117
- },
118
- "keywords": [
119
- "markdown",
120
- "search",
121
- "fts",
122
- "full-text-search",
123
- "vector",
124
- "semantic-search",
125
- "sqlite",
126
- "bm25",
127
- "embeddings",
128
- "rag",
129
- "mcp",
130
- "reranking",
131
- "knowledge-base",
132
- "local-ai",
133
- "llm"
134
- ],
135
- "author": "Wan, Jiun Wei <wei840222@gmail.com>",
136
- "license": "MIT"
136
+ }
137
137
  }