@rely-ai/caliber 1.14.3 → 1.15.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/README.md +16 -14
- package/dist/bin.js +21 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -151,28 +151,30 @@ caliber undo # Revert everything
|
|
|
151
151
|
|
|
152
152
|
## 📊 Scoring
|
|
153
153
|
|
|
154
|
-
`caliber score` gives you a deterministic quality score
|
|
154
|
+
`caliber score` gives you a deterministic, tech-stack-agnostic quality score. No LLM needed — it cross-references your config files against the actual project filesystem.
|
|
155
155
|
|
|
156
156
|
```
|
|
157
|
-
Config Score
|
|
158
|
-
|
|
159
|
-
FILES & SETUP
|
|
160
|
-
QUALITY
|
|
161
|
-
|
|
162
|
-
ACCURACY
|
|
163
|
-
FRESHNESS & SAFETY
|
|
164
|
-
BONUS
|
|
157
|
+
Agent Config Score 88 / 100 Grade A
|
|
158
|
+
|
|
159
|
+
FILES & SETUP 17 / 17
|
|
160
|
+
QUALITY 21 / 23
|
|
161
|
+
GROUNDING 20 / 20
|
|
162
|
+
ACCURACY 10 / 15
|
|
163
|
+
FRESHNESS & SAFETY 10 / 10
|
|
164
|
+
BONUS 5 / 5
|
|
165
165
|
```
|
|
166
166
|
|
|
167
167
|
| Category | Points | What it checks |
|
|
168
168
|
| ---------------------- | ------ | ------------------------------------------------------------------ |
|
|
169
|
-
| **Files & Setup** | 25 | Config files exist, skills present, cross-platform parity
|
|
170
|
-
| **Quality** | 25 | Has
|
|
171
|
-
| **
|
|
172
|
-
| **Accuracy** | 15 |
|
|
173
|
-
| **Freshness & Safety** | 10 | Recently updated, no leaked secrets, permissions
|
|
169
|
+
| **Files & Setup** | 25 | Config files exist, skills present, MCP servers, cross-platform parity |
|
|
170
|
+
| **Quality** | 25 | Has code blocks, concise token budget, concrete instructions, structured headings |
|
|
171
|
+
| **Grounding** | 20 | Config references actual project directories and files |
|
|
172
|
+
| **Accuracy** | 15 | Referenced paths exist on disk, config is in sync with code (git-based) |
|
|
173
|
+
| **Freshness & Safety** | 10 | Recently updated, no leaked secrets, permissions configured |
|
|
174
174
|
| **Bonus** | 5 | Auto-refresh hooks, AGENTS.md, OpenSkills format |
|
|
175
175
|
|
|
176
|
+
Every failing check includes structured fix data — when `caliber init` runs, the LLM receives exactly what's wrong and how to fix it.
|
|
177
|
+
|
|
176
178
|
## 🧩 Skills
|
|
177
179
|
|
|
178
180
|
Caliber searches three community registries and scores results against your project
|
package/dist/bin.js
CHANGED
|
@@ -3595,6 +3595,7 @@ init_config();
|
|
|
3595
3595
|
import chalk4 from "chalk";
|
|
3596
3596
|
import readline2 from "readline";
|
|
3597
3597
|
import select3 from "@inquirer/select";
|
|
3598
|
+
import confirm from "@inquirer/confirm";
|
|
3598
3599
|
function promptInput(question) {
|
|
3599
3600
|
const rl = readline2.createInterface({ input: process.stdin, output: process.stdout });
|
|
3600
3601
|
return new Promise((resolve2) => {
|
|
@@ -3621,12 +3622,28 @@ async function runInteractiveProviderSetup(options) {
|
|
|
3621
3622
|
switch (provider) {
|
|
3622
3623
|
case "claude-cli": {
|
|
3623
3624
|
config.model = "default";
|
|
3624
|
-
|
|
3625
|
+
if (!isClaudeCliAvailable()) {
|
|
3626
|
+
console.log(chalk4.yellow("\n Claude Code CLI not found."));
|
|
3627
|
+
console.log(chalk4.dim(" Install it: ") + chalk4.hex("#83D1EB")("npm install -g @anthropic-ai/claude-code"));
|
|
3628
|
+
console.log(chalk4.dim(" Then run ") + chalk4.hex("#83D1EB")("claude") + chalk4.dim(" once to log in.\n"));
|
|
3629
|
+
const proceed = await confirm({ message: "Continue anyway?" });
|
|
3630
|
+
if (!proceed) throw new Error("__exit__");
|
|
3631
|
+
} else {
|
|
3632
|
+
console.log(chalk4.dim(" Run `claude` once and log in with your Pro/Max/Team account if you haven't."));
|
|
3633
|
+
}
|
|
3625
3634
|
break;
|
|
3626
3635
|
}
|
|
3627
3636
|
case "cursor": {
|
|
3628
3637
|
config.model = "default";
|
|
3629
|
-
|
|
3638
|
+
if (!isCursorAgentAvailable()) {
|
|
3639
|
+
console.log(chalk4.yellow("\n Cursor Agent CLI not found."));
|
|
3640
|
+
console.log(chalk4.dim(" Install it: ") + chalk4.hex("#83D1EB")("curl https://cursor.com/install -fsS | bash"));
|
|
3641
|
+
console.log(chalk4.dim(" Then run ") + chalk4.hex("#83D1EB")("agent login") + chalk4.dim(" to authenticate.\n"));
|
|
3642
|
+
const proceed = await confirm({ message: "Continue anyway?" });
|
|
3643
|
+
if (!proceed) throw new Error("__exit__");
|
|
3644
|
+
} else {
|
|
3645
|
+
console.log(chalk4.dim(" Run `agent login` if you haven't, or set CURSOR_API_KEY."));
|
|
3646
|
+
}
|
|
3630
3647
|
break;
|
|
3631
3648
|
}
|
|
3632
3649
|
case "anthropic": {
|
|
@@ -7942,7 +7959,7 @@ import { fileURLToPath as fileURLToPath2 } from "url";
|
|
|
7942
7959
|
import { execSync as execSync13 } from "child_process";
|
|
7943
7960
|
import chalk17 from "chalk";
|
|
7944
7961
|
import ora6 from "ora";
|
|
7945
|
-
import
|
|
7962
|
+
import confirm2 from "@inquirer/confirm";
|
|
7946
7963
|
var __dirname_vc = path26.dirname(fileURLToPath2(import.meta.url));
|
|
7947
7964
|
var pkg2 = JSON.parse(
|
|
7948
7965
|
fs32.readFileSync(path26.resolve(__dirname_vc, "..", "package.json"), "utf-8")
|
|
@@ -7987,7 +8004,7 @@ Run ${chalk17.bold("npm install -g @rely-ai/caliber")} to upgrade.
|
|
|
7987
8004
|
chalk17.yellow(`
|
|
7988
8005
|
Update available: ${current} -> ${latest}`)
|
|
7989
8006
|
);
|
|
7990
|
-
const shouldUpdate = await
|
|
8007
|
+
const shouldUpdate = await confirm2({ message: "Would you like to update now? (Y/n)", default: true });
|
|
7991
8008
|
if (!shouldUpdate) {
|
|
7992
8009
|
console.log();
|
|
7993
8010
|
return;
|
package/package.json
CHANGED