just-vibe 0.14.0 → 0.14.1
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 +4 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/plugins/just-vibe/.claude-plugin/plugin.json +1 -1
- package/plugins/just-vibe/.codex-plugin/plugin.json +1 -1
- package/plugins/just-vibe/scripts/lib/catalog.mjs +16 -0
- package/plugins/just-vibe/scripts/lib/claude-shortcuts.mjs +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.14.1
|
|
4
|
+
|
|
5
|
+
- Update, inspect and remove Claude Code installations made by 0.12.0 or earlier. 0.14.0 checked the installed copy against workflow rules added in 0.13.0, so `update --target claude` and `doctor --target claude` stopped with "Command compare: procedure[5] promises a write". An installed copy is now read with shape checks only. Codex installations were not affected.
|
|
6
|
+
|
|
3
7
|
## 0.14.0
|
|
4
8
|
|
|
5
9
|
0.13.0 was prepared but not published to npm. This release also contains its changes, listed under 0.13.0.
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Engineering workflows and role profiles for coding agents, with remembered prefe
|
|
|
6
6
|
|
|
7
7
|
Describe what you want normally. With supported, trusted host hooks, just-vibe suggests relevant workflows and directs the agent to load their methods and discover the tools it needs. Explicit corrections can refine later instructions. Current requests always take precedence, and saved preferences grant no permissions.
|
|
8
8
|
|
|
9
|
-
**Source version: 0.14.
|
|
9
|
+
**Source version: 0.14.1**, with language-server checks, structural rules, mutation evidence, sandboxed workers, a ready queue and in-host MCP review, and lower per-prompt and per-tool-call hook cost. It also contains the routing, workflow contract and profile revisions prepared for 0.13.0, which was not published separately. The catalog has 221 skill names, 218 canonical workflows, 113 engineering profiles and 22 packs. Check [npm](https://www.npmjs.com/package/just-vibe) for published versions and the [implementation and verification plan](https://github.com/Zachshotamartin/just-vibe/blob/main/docs/agent-qa-and-learning-plan.md) for acceptance evidence. A source build is not evidence of publication.
|
|
10
10
|
|
|
11
11
|
## Install
|
|
12
12
|
|
package/package.json
CHANGED
|
@@ -152,6 +152,22 @@ export function loadCatalog(root = pluginRoot) {
|
|
|
152
152
|
return { ...catalog, packs: packs.packs, root };
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
// An installed copy was validated by the release that built it. Newer authoring rules must not
|
|
156
|
+
// block reading it to update, inspect or remove that installation, so only the fields that name
|
|
157
|
+
// files are checked.
|
|
158
|
+
export function loadInstalledCatalog(root) {
|
|
159
|
+
const packs = JSON.parse(readFileSync(resolve(root, 'catalog/packs.json'), 'utf8'));
|
|
160
|
+
const source = JSON.parse(readFileSync(resolve(root, 'catalog/commands.json'), 'utf8'));
|
|
161
|
+
if (source.schemaVersion !== 1 || !Array.isArray(source.commands) || !Array.isArray(packs.packs)) throw new Error('Unsupported installed catalog.');
|
|
162
|
+
const ids = new Set();
|
|
163
|
+
for (const c of source.commands) {
|
|
164
|
+
if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(c?.id) || ids.has(c.id) || typeof c.summary !== 'string'
|
|
165
|
+
|| (!c.aliasOf && c.skillPath !== `skills/${c.id}/SKILL.md`)) throw new Error(`Invalid installed command: ${c?.id}`);
|
|
166
|
+
ids.add(c.id);
|
|
167
|
+
}
|
|
168
|
+
return { ...materializeAliases(source), packs: packs.packs, root };
|
|
169
|
+
}
|
|
170
|
+
|
|
155
171
|
export function getCommand(catalog, id, { canonical = false } = {}) {
|
|
156
172
|
const name = commandName(id);
|
|
157
173
|
let command = catalog.commands.find(c => c.id === name);
|
|
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, readFileSync, readdirSync } from 'node:fs';
|
|
|
2
2
|
import { resolve, join } from 'node:path';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { managedFiles } from './managed-files.mjs';
|
|
5
|
-
import { loadCatalog } from './catalog.mjs';
|
|
5
|
+
import { loadCatalog, loadInstalledCatalog } from './catalog.mjs';
|
|
6
6
|
import { DEFAULT_SELECTION, selectPayload } from './selection.mjs';
|
|
7
7
|
import { within, readJson } from './storage.mjs';
|
|
8
8
|
|
|
@@ -40,7 +40,7 @@ export function claudeShortcuts(options, { source, operation, dryRun = false, ro
|
|
|
40
40
|
// Read the actual staged selection when available, rather than exposing skills
|
|
41
41
|
// which a core/frontend/ML installation intentionally excluded.
|
|
42
42
|
const plugin = source && join(source, 'plugins/just-vibe');
|
|
43
|
-
let catalog =
|
|
43
|
+
let catalog = plugin && existsSync(join(plugin, 'catalog/commands.json')) ? loadInstalledCatalog(plugin) : loadCatalog(), ids;
|
|
44
44
|
if (dryRun && operation === 'install' && !options.local && !options.github
|
|
45
45
|
&& (options.command === 'update' || !plugin || !existsSync(join(plugin, 'catalog/commands.json')))) {
|
|
46
46
|
// Preflight the future payload before the native host or managed bundle is
|