pi-vault-mind 0.16.3 → 0.16.4
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 +11 -0
- package/dist/src/model-router.js +10 -8
- package/dist/test/model-router.test.js +14 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.4 / 0.6.6 — 2026-07-17
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **Obsidian-contained popovers.** Shared folder pickers now convert viewport anchor coordinates into the workspace leaf's fixed containing block, so their menus stay aligned with their input fields in the real Obsidian shell.
|
|
8
|
+
- **Cloud-only default chat routing.** New vault model-router configurations use `ollama/gemma4:31b-cloud` for every auto profile tier and explicit cloud fallbacks only. ReturnVape's active vault-local runtime configuration was migrated to remove local Gemma chat routes; local embedding models remain unchanged.
|
|
9
|
+
|
|
10
|
+
### Tests
|
|
11
|
+
|
|
12
|
+
- Added focused regression coverage for contained popover placement and cloud-only model-router defaults/profiles.
|
|
13
|
+
|
|
3
14
|
## 0.16.3 / 0.6.5 — 2026-07-16
|
|
4
15
|
|
|
5
16
|
### Added
|
package/dist/src/model-router.js
CHANGED
|
@@ -14,12 +14,14 @@ import * as fs from "node:fs";
|
|
|
14
14
|
import { ensureDir, resolveVaultMindPaths } from "./utils.js";
|
|
15
15
|
/** Tuned default primary model + fallback sequence for the `auto` router profile. */
|
|
16
16
|
export const defaultModelRouterChoices = () => {
|
|
17
|
-
const isMacOS = process.platform === "darwin";
|
|
18
17
|
return {
|
|
19
18
|
primary: "ollama/gemma4:31b-cloud",
|
|
20
|
-
fallbackSequence:
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
fallbackSequence: [
|
|
20
|
+
"ollama/gemma4:31b-cloud",
|
|
21
|
+
"ollama/deepseek-v4-flash:cloud",
|
|
22
|
+
"ollama/minimax-m3:cloud",
|
|
23
|
+
"ollama/kimi-k2.7-code:cloud",
|
|
24
|
+
],
|
|
23
25
|
};
|
|
24
26
|
};
|
|
25
27
|
/**
|
|
@@ -32,7 +34,7 @@ export const scaffoldModelRouterConfig = (cwd) => {
|
|
|
32
34
|
const { modelRouter: configPath } = resolveVaultMindPaths(cwd);
|
|
33
35
|
if (fs.existsSync(configPath))
|
|
34
36
|
return { created: false, path: configPath };
|
|
35
|
-
const { primary
|
|
37
|
+
const { primary, fallbackSequence } = defaultModelRouterChoices();
|
|
36
38
|
const config = {
|
|
37
39
|
defaultProfile: "auto",
|
|
38
40
|
features: {
|
|
@@ -55,9 +57,9 @@ export const scaffoldModelRouterConfig = (cwd) => {
|
|
|
55
57
|
},
|
|
56
58
|
profiles: {
|
|
57
59
|
auto: {
|
|
58
|
-
high: { model:
|
|
59
|
-
medium: { model:
|
|
60
|
-
low: { model:
|
|
60
|
+
high: { model: primary, thinking: "medium" },
|
|
61
|
+
medium: { model: primary, thinking: "low" },
|
|
62
|
+
low: { model: primary, thinking: "off" },
|
|
61
63
|
},
|
|
62
64
|
},
|
|
63
65
|
};
|
|
@@ -15,19 +15,21 @@ describe("defaultModelRouterChoices", () => {
|
|
|
15
15
|
assert.ok(Array.isArray(fallbackSequence));
|
|
16
16
|
assert.equal(fallbackSequence.length, 4);
|
|
17
17
|
});
|
|
18
|
-
it("
|
|
18
|
+
it("selects only explicit cloud fallbacks", () => {
|
|
19
19
|
const { fallbackSequence } = defaultModelRouterChoices();
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
assert.ok(fallbackSequence.length > 0);
|
|
21
|
+
for (const model of fallbackSequence) {
|
|
22
|
+
assert.match(model, /(?:-cloud|:cloud)$/);
|
|
22
23
|
}
|
|
23
24
|
});
|
|
24
|
-
it("
|
|
25
|
+
it("uses the configured cloud fallback sequence", () => {
|
|
25
26
|
const { fallbackSequence } = defaultModelRouterChoices();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
assert.deepEqual(fallbackSequence, [
|
|
28
|
+
"ollama/gemma4:31b-cloud",
|
|
29
|
+
"ollama/deepseek-v4-flash:cloud",
|
|
30
|
+
"ollama/minimax-m3:cloud",
|
|
31
|
+
"ollama/kimi-k2.7-code:cloud",
|
|
32
|
+
]);
|
|
31
33
|
});
|
|
32
34
|
});
|
|
33
35
|
describe("scaffoldModelRouterConfig", () => {
|
|
@@ -83,6 +85,9 @@ describe("scaffoldModelRouterConfig", () => {
|
|
|
83
85
|
assert.equal(typeof profile.model, "string");
|
|
84
86
|
assert.equal(typeof profile.thinking, "string");
|
|
85
87
|
}
|
|
88
|
+
for (const tier of ["high", "medium", "low"]) {
|
|
89
|
+
assert.equal(parsed.profiles.auto[tier].model, "ollama/gemma4:31b-cloud");
|
|
90
|
+
}
|
|
86
91
|
});
|
|
87
92
|
it("never overwrites an existing model-router.json (idempotent)", () => {
|
|
88
93
|
const expectedPath = resolveVaultMindPaths(testDir).modelRouter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-vault-mind",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.4",
|
|
4
4
|
"description": "Passive Obsidian vault extension for pi. Watches @agent markers, dispatches forked subagents (Miner, Broadcaster, Heavy-Lifter), stores in LanceDB with vector + FTS + graph. Multi-agent 'Drop & Forget' workflow for the pi agent ecosystem.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|