@rely-ai/caliber 1.7.8 → 1.7.9
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 +14 -14
- package/dist/bin.js +15 -15
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ Caliber **generates, audits, and maintains** your agentic development sessions.
|
|
|
37
37
|
## 🚀 Quick Start
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
npx @rely-ai/caliber
|
|
40
|
+
npx @rely-ai/caliber init
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
That's it. On first run, Caliber walks you through provider setup interactively.
|
|
@@ -46,20 +46,20 @@ Or install globally:
|
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
npm install -g @rely-ai/caliber
|
|
49
|
-
caliber
|
|
49
|
+
caliber init
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
> **Already have an API key?** Skip the interactive setup:
|
|
53
53
|
>
|
|
54
54
|
> ```bash
|
|
55
55
|
> export ANTHROPIC_API_KEY=sk-ant-...
|
|
56
|
-
> npx @rely-ai/caliber
|
|
56
|
+
> npx @rely-ai/caliber init
|
|
57
57
|
> ```
|
|
58
58
|
|
|
59
59
|
## ⚙️ How It Works
|
|
60
60
|
|
|
61
61
|
```
|
|
62
|
-
caliber
|
|
62
|
+
caliber init
|
|
63
63
|
│
|
|
64
64
|
├─ 1. 🔌 Connect Choose your LLM provider — Claude Code seat, Cursor seat,
|
|
65
65
|
│ or an API key (Anthropic, OpenAI, Vertex AI)
|
|
@@ -112,7 +112,7 @@ Every change Caliber makes is reversible:
|
|
|
112
112
|
|
|
113
113
|
| Command | Description |
|
|
114
114
|
| -------------------- | ---------------------------------------------------- |
|
|
115
|
-
| `caliber
|
|
115
|
+
| `caliber init` | 🏁 Initialize your project — full 6-step wizard |
|
|
116
116
|
| `caliber score` | 📊 Score your config quality (deterministic, no LLM) |
|
|
117
117
|
| `caliber skills` | 🧩 Discover and install community skills |
|
|
118
118
|
| `caliber regenerate` | 🔄 Re-analyze and regenerate your setup |
|
|
@@ -125,15 +125,15 @@ Every change Caliber makes is reversible:
|
|
|
125
125
|
### Examples
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
#
|
|
129
|
-
caliber
|
|
130
|
-
caliber
|
|
131
|
-
caliber
|
|
132
|
-
caliber
|
|
133
|
-
caliber
|
|
134
|
-
caliber
|
|
135
|
-
caliber
|
|
136
|
-
caliber
|
|
128
|
+
# Initialize
|
|
129
|
+
caliber init # Interactive — picks agent, walks through setup
|
|
130
|
+
caliber init --agent claude # Target Claude Code only
|
|
131
|
+
caliber init --agent cursor # Target Cursor only
|
|
132
|
+
caliber init --agent codex # Target OpenAI Codex only
|
|
133
|
+
caliber init --agent all # Target all three
|
|
134
|
+
caliber init --agent claude,cursor # Comma-separated
|
|
135
|
+
caliber init --dry-run # Preview without writing files
|
|
136
|
+
caliber init --force # Overwrite existing setup without prompting
|
|
137
137
|
|
|
138
138
|
# Scoring
|
|
139
139
|
caliber score # Full breakdown with grade (A-F)
|
package/dist/bin.js
CHANGED
|
@@ -169,7 +169,7 @@ import fs30 from "fs";
|
|
|
169
169
|
import path24 from "path";
|
|
170
170
|
import { fileURLToPath } from "url";
|
|
171
171
|
|
|
172
|
-
// src/commands/
|
|
172
|
+
// src/commands/init.ts
|
|
173
173
|
import path19 from "path";
|
|
174
174
|
import chalk8 from "chalk";
|
|
175
175
|
import ora2 from "ora";
|
|
@@ -3060,7 +3060,7 @@ var SpinnerMessages = class {
|
|
|
3060
3060
|
}
|
|
3061
3061
|
};
|
|
3062
3062
|
|
|
3063
|
-
// src/commands/
|
|
3063
|
+
// src/commands/init.ts
|
|
3064
3064
|
init_config();
|
|
3065
3065
|
|
|
3066
3066
|
// src/commands/interactive-provider-setup.ts
|
|
@@ -5361,7 +5361,7 @@ function formatMs(ms) {
|
|
|
5361
5361
|
return `${secs}s`;
|
|
5362
5362
|
}
|
|
5363
5363
|
|
|
5364
|
-
// src/commands/
|
|
5364
|
+
// src/commands/init.ts
|
|
5365
5365
|
async function initCommand(options) {
|
|
5366
5366
|
const brand = chalk8.hex("#EB9D83");
|
|
5367
5367
|
const title = chalk8.hex("#83D1EB");
|
|
@@ -5373,12 +5373,12 @@ async function initCommand(options) {
|
|
|
5373
5373
|
\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551
|
|
5374
5374
|
\u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
|
|
5375
5375
|
`));
|
|
5376
|
-
console.log(chalk8.dim("
|
|
5376
|
+
console.log(chalk8.dim(" Initialize your project for AI-assisted development\n"));
|
|
5377
5377
|
console.log(title.bold(" Welcome to Caliber\n"));
|
|
5378
5378
|
console.log(chalk8.dim(" Caliber analyzes your codebase and creates tailored config files"));
|
|
5379
5379
|
console.log(chalk8.dim(" so your AI coding agents understand your project from day one.\n"));
|
|
5380
5380
|
const report = options.debugReport ? new DebugReport() : null;
|
|
5381
|
-
console.log(title.bold(" How
|
|
5381
|
+
console.log(title.bold(" How it works:\n"));
|
|
5382
5382
|
console.log(chalk8.dim(" 1. Connect Set up your LLM provider"));
|
|
5383
5383
|
console.log(chalk8.dim(" 2. Discover Analyze your code, dependencies, and structure"));
|
|
5384
5384
|
console.log(chalk8.dim(" 3. Generate Create config files tailored to your project"));
|
|
@@ -5466,7 +5466,7 @@ async function initCommand(options) {
|
|
|
5466
5466
|
if (hasExistingConfig && baselineScore.score === 100) {
|
|
5467
5467
|
trackInitScoreComputed(baselineScore.score, passingCount, failingCount, true);
|
|
5468
5468
|
console.log(chalk8.bold.green(" Your setup is already optimal \u2014 nothing to change.\n"));
|
|
5469
|
-
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber
|
|
5469
|
+
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber init --force") + chalk8.dim(" to regenerate anyway.\n"));
|
|
5470
5470
|
if (!options.force) return;
|
|
5471
5471
|
}
|
|
5472
5472
|
const allFailingChecks = baselineScore.checks.filter((c) => !c.passed && c.maxPoints > 0);
|
|
@@ -5482,7 +5482,7 @@ async function initCommand(options) {
|
|
|
5482
5482
|
}
|
|
5483
5483
|
}
|
|
5484
5484
|
console.log("");
|
|
5485
|
-
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber
|
|
5485
|
+
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber init --force") + chalk8.dim(" to regenerate anyway.\n"));
|
|
5486
5486
|
return;
|
|
5487
5487
|
}
|
|
5488
5488
|
const isEmpty = fingerprint.fileTree.length < 3;
|
|
@@ -5714,7 +5714,7 @@ async function initCommand(options) {
|
|
|
5714
5714
|
}
|
|
5715
5715
|
} catch {
|
|
5716
5716
|
}
|
|
5717
|
-
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber
|
|
5717
|
+
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber init --force") + chalk8.dim(" to override.\n"));
|
|
5718
5718
|
return;
|
|
5719
5719
|
}
|
|
5720
5720
|
if (report) {
|
|
@@ -5749,7 +5749,7 @@ async function initCommand(options) {
|
|
|
5749
5749
|
trackInitSkillsSearch(false, 0);
|
|
5750
5750
|
console.log(chalk8.dim(" Skipped. Run ") + chalk8.hex("#83D1EB")("caliber skills") + chalk8.dim(" later to browse.\n"));
|
|
5751
5751
|
}
|
|
5752
|
-
console.log(chalk8.bold.green("
|
|
5752
|
+
console.log(chalk8.bold.green(" Setup complete! Your project is ready for AI-assisted development."));
|
|
5753
5753
|
console.log(chalk8.dim(" Run ") + chalk8.hex("#83D1EB")("caliber undo") + chalk8.dim(" to revert changes.\n"));
|
|
5754
5754
|
console.log(chalk8.bold(" Next steps:\n"));
|
|
5755
5755
|
console.log(` ${title("caliber score")} See your full config breakdown`);
|
|
@@ -6089,7 +6089,7 @@ async function statusCommand(options) {
|
|
|
6089
6089
|
}
|
|
6090
6090
|
if (!manifest) {
|
|
6091
6091
|
console.log(` Setup: ${chalk10.dim("No setup applied")}`);
|
|
6092
|
-
console.log(chalk10.dim("\n Run ") + chalk10.hex("#83D1EB")("caliber
|
|
6092
|
+
console.log(chalk10.dim("\n Run ") + chalk10.hex("#83D1EB")("caliber init") + chalk10.dim(" to get started.\n"));
|
|
6093
6093
|
return;
|
|
6094
6094
|
}
|
|
6095
6095
|
console.log(` Files managed: ${chalk10.cyan(manifest.entries.length.toString())}`);
|
|
@@ -6114,7 +6114,7 @@ async function regenerateCommand(options) {
|
|
|
6114
6114
|
}
|
|
6115
6115
|
const manifest = readManifest();
|
|
6116
6116
|
if (!manifest) {
|
|
6117
|
-
console.log(chalk11.yellow("No existing setup found. Run ") + chalk11.hex("#83D1EB")("caliber
|
|
6117
|
+
console.log(chalk11.yellow("No existing setup found. Run ") + chalk11.hex("#83D1EB")("caliber init") + chalk11.yellow(" first."));
|
|
6118
6118
|
throw new Error("__exit__");
|
|
6119
6119
|
}
|
|
6120
6120
|
const targetAgent = readState()?.targetAgent ?? ["claude", "cursor"];
|
|
@@ -6237,7 +6237,7 @@ async function regenerateCommand(options) {
|
|
|
6237
6237
|
}
|
|
6238
6238
|
} catch {
|
|
6239
6239
|
}
|
|
6240
|
-
console.log(chalk11.dim(" Run ") + chalk11.hex("#83D1EB")("caliber
|
|
6240
|
+
console.log(chalk11.dim(" Run ") + chalk11.hex("#83D1EB")("caliber init --force") + chalk11.dim(" to override.\n"));
|
|
6241
6241
|
return;
|
|
6242
6242
|
}
|
|
6243
6243
|
displayScoreDelta(baselineScore, afterScore);
|
|
@@ -6265,9 +6265,9 @@ async function scoreCommand(options) {
|
|
|
6265
6265
|
const separator = chalk12.gray(" " + "\u2500".repeat(53));
|
|
6266
6266
|
console.log(separator);
|
|
6267
6267
|
if (result.score < 40) {
|
|
6268
|
-
console.log(chalk12.gray(" Run ") + chalk12.hex("#83D1EB")("caliber
|
|
6268
|
+
console.log(chalk12.gray(" Run ") + chalk12.hex("#83D1EB")("caliber init") + chalk12.gray(" to generate a complete, optimized setup."));
|
|
6269
6269
|
} else if (result.score < 70) {
|
|
6270
|
-
console.log(chalk12.gray(" Run ") + chalk12.hex("#83D1EB")("caliber
|
|
6270
|
+
console.log(chalk12.gray(" Run ") + chalk12.hex("#83D1EB")("caliber init") + chalk12.gray(" to improve your setup."));
|
|
6271
6271
|
} else {
|
|
6272
6272
|
console.log(chalk12.green(" Looking good!") + chalk12.gray(" Run ") + chalk12.hex("#83D1EB")("caliber regenerate") + chalk12.gray(" to rebuild from scratch."));
|
|
6273
6273
|
}
|
|
@@ -7196,7 +7196,7 @@ function parseAgentOption(value) {
|
|
|
7196
7196
|
}
|
|
7197
7197
|
return agents;
|
|
7198
7198
|
}
|
|
7199
|
-
program.command("
|
|
7199
|
+
program.command("init").description("Initialize your project for AI-assisted development").option("--agent <type>", "Target agents (comma-separated): claude, cursor, codex", parseAgentOption).option("--dry-run", "Preview changes without writing files").option("--force", "Overwrite existing setup without prompting").option("--debug-report", void 0, false).action(tracked("init", initCommand));
|
|
7200
7200
|
program.command("undo").description("Revert all config changes made by Caliber").action(tracked("undo", undoCommand));
|
|
7201
7201
|
program.command("status").description("Show current Caliber setup status").option("--json", "Output as JSON").action(tracked("status", statusCommand));
|
|
7202
7202
|
program.command("regenerate").alias("regen").alias("re").description("Re-analyze project and regenerate setup").option("--dry-run", "Preview changes without writing files").action(tracked("regenerate", regenerateCommand));
|
package/package.json
CHANGED