@ritualai/cli 0.7.3 → 0.7.5
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 +36 -1
- package/dist/commands/init.js +174 -43
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +120 -13
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +55 -8
- package/dist/commands/logout.js.map +1 -1
- package/dist/index.js +8 -66
- package/dist/index.js.map +1 -1
- package/dist/lib/auth-flow.js +1 -1
- package/dist/lib/auth-flow.js.map +1 -1
- package/dist/lib/colors.js +182 -0
- package/dist/lib/colors.js.map +1 -0
- package/dist/lib/config.js +30 -17
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/credentials-backup.js +282 -0
- package/dist/lib/credentials-backup.js.map +1 -0
- package/dist/lib/identity-banner.js +88 -0
- package/dist/lib/identity-banner.js.map +1 -0
- package/dist/lib/oidc.js +55 -0
- package/dist/lib/oidc.js.map +1 -1
- package/dist/lib/package-info.js +76 -0
- package/dist/lib/package-info.js.map +1 -0
- package/dist/lib/welcome-banner.js +290 -0
- package/dist/lib/welcome-banner.js.map +1 -0
- package/package.json +1 -1
- package/skills/claude-code/ritual/agents/openai.yaml +2 -2
- package/skills/codex/ritual/agents/openai.yaml +2 -2
- package/skills/cursor/ritual/agents/openai.yaml +2 -2
- package/skills/gemini/ritual/agents/openai.yaml +2 -2
- package/skills/kiro/ritual/agents/openai.yaml +2 -2
- package/skills/vscode/ritual/agents/openai.yaml +2 -2
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.printWelcomeBanner = printWelcomeBanner;
|
|
4
|
+
exports.readBoundWorkspace = readBoundWorkspace;
|
|
5
|
+
const node_os_1 = require("node:os");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const colors_1 = require("./colors");
|
|
9
|
+
/**
|
|
10
|
+
* Welcome banner for `ritual init` and `ritual login`.
|
|
11
|
+
*
|
|
12
|
+
* Inspired by Claude Code's startup screen: a two-column boxed
|
|
13
|
+
* panel that surfaces "who you are, where you are, what's about to
|
|
14
|
+
* happen, what you can do next" in one glance. Replaces the previous
|
|
15
|
+
* single-line `Ritual — scaffolding skills…` opener.
|
|
16
|
+
*
|
|
17
|
+
* Layout:
|
|
18
|
+
*
|
|
19
|
+
* ╭─── Ritual CLI v0.7.5 ──────────────────────────────────────╮
|
|
20
|
+
* │ │ <right column> │
|
|
21
|
+
* │ Welcome (back)! │ │
|
|
22
|
+
* │ │ • tip 1 │
|
|
23
|
+
* │ <chain link glyph> │ • tip 2 │
|
|
24
|
+
* │ │ • tip 3 │
|
|
25
|
+
* │ <tagline / identity> │ │
|
|
26
|
+
* │ │ Quick commands / │
|
|
27
|
+
* │ ~/Development/project-name │ recent activity │
|
|
28
|
+
* ╰────────────────────────────────────────┴────────────────────╯
|
|
29
|
+
*
|
|
30
|
+
* Renders only on TTY (`process.stdout.isTTY`). Skips entirely
|
|
31
|
+
* outside a TTY so piped output / CI / `--json` consumers aren't
|
|
32
|
+
* polluted. Width-aware: collapses to single-column when terminal
|
|
33
|
+
* width < 100.
|
|
34
|
+
*
|
|
35
|
+
* The chain-link glyph is the Ritual CLI's terminal-only visual
|
|
36
|
+
* anchor. The canonical Ritual brand mark (teal R-in-circle, see
|
|
37
|
+
* `apps/web/static/icon.svg`) is too detailed for terminal block-
|
|
38
|
+
* character rendering at the welcome-box scale. Both coexist: chain
|
|
39
|
+
* link in CLI, R-in-circle everywhere else. The brand TEAL color
|
|
40
|
+
* `#1FAF9F` is shared across both for unmistakable Ritual identity.
|
|
41
|
+
*/
|
|
42
|
+
/** The chain-link glyph. 7×5 cells of Unicode box characters. */
|
|
43
|
+
const CHAIN_GLYPH = [
|
|
44
|
+
'╭─────╮ ',
|
|
45
|
+
'│ ╭──┼──╮ ',
|
|
46
|
+
'│ │ │ │ ',
|
|
47
|
+
'╰──┼──╯ │ ',
|
|
48
|
+
' ╰─────╯ ',
|
|
49
|
+
];
|
|
50
|
+
/** Minimum terminal width for the two-column layout. Below this we fall back. */
|
|
51
|
+
const MIN_TWO_COL_WIDTH = 100;
|
|
52
|
+
/** Target total width of the welcome box (top + bottom border). */
|
|
53
|
+
const TARGET_WIDTH = 110;
|
|
54
|
+
/** Left column width (identity / context / glyph). */
|
|
55
|
+
const LEFT_COL_WIDTH = 48;
|
|
56
|
+
/**
|
|
57
|
+
* Render the welcome banner. Writes to stderr — same routing
|
|
58
|
+
* principle as `identity-banner.ts`: human chrome on stderr, leaving
|
|
59
|
+
* stdout clean for JSON / pipes / agent-readable status output.
|
|
60
|
+
*
|
|
61
|
+
* Returns nothing. Idempotent — callers can call multiple times if
|
|
62
|
+
* they want (e.g. before sign-in and after), but the standard call
|
|
63
|
+
* site is once at the top of the command.
|
|
64
|
+
*/
|
|
65
|
+
function printWelcomeBanner(input) {
|
|
66
|
+
// Non-TTY: skip entirely. Same gate as identity-banner.
|
|
67
|
+
if (!process.stderr.isTTY)
|
|
68
|
+
return;
|
|
69
|
+
const width = Math.min(process.stdout.columns ?? TARGET_WIDTH, TARGET_WIDTH);
|
|
70
|
+
const twoCol = width >= MIN_TWO_COL_WIDTH;
|
|
71
|
+
const colorMode = (0, colors_1.detectColorMode)();
|
|
72
|
+
const lines = twoCol
|
|
73
|
+
? renderTwoColumn(input, width)
|
|
74
|
+
: renderSingleColumn(input, width);
|
|
75
|
+
// Wrap in top/bottom border. Top border carries the CLI version
|
|
76
|
+
// in the chrome — `╭─── Ritual CLI v0.7.5 ──────╮` — same shape
|
|
77
|
+
// as Claude Code's `Claude Code v2.1.112` header.
|
|
78
|
+
const header = renderTopBorder(input.cliVersion, width);
|
|
79
|
+
const footer = renderBottomBorder(width, twoCol);
|
|
80
|
+
const out = [header, ...lines, footer].join('\n') + '\n';
|
|
81
|
+
// Apply teal to the entire frame at the end so partial-write
|
|
82
|
+
// glitches don't leave color escapes hanging.
|
|
83
|
+
void colorMode; // colorize() is per-line inside the renderers
|
|
84
|
+
process.stderr.write(out);
|
|
85
|
+
}
|
|
86
|
+
// ─── top + bottom border ──────────────────────────────────────────
|
|
87
|
+
function renderTopBorder(cliVersion, width) {
|
|
88
|
+
const label = ` Ritual CLI v${cliVersion} `;
|
|
89
|
+
// Pad to: ╭───label───────────────╮
|
|
90
|
+
const dashesBefore = 3;
|
|
91
|
+
const innerWidth = width - 2; // minus the corner chars
|
|
92
|
+
const remaining = innerWidth - dashesBefore - label.length;
|
|
93
|
+
const body = '─'.repeat(dashesBefore) + label + '─'.repeat(Math.max(0, remaining));
|
|
94
|
+
return (0, colors_1.color)(colors_1.RITUAL_TEAL, `╭${body}╮`);
|
|
95
|
+
}
|
|
96
|
+
function renderBottomBorder(width, twoCol) {
|
|
97
|
+
const innerWidth = width - 2;
|
|
98
|
+
if (twoCol) {
|
|
99
|
+
// Bottom has a ┴ where the column divider was.
|
|
100
|
+
const left = '─'.repeat(LEFT_COL_WIDTH);
|
|
101
|
+
const right = '─'.repeat(Math.max(0, innerWidth - LEFT_COL_WIDTH - 1));
|
|
102
|
+
return (0, colors_1.color)(colors_1.RITUAL_TEAL, `╰${left}┴${right}╯`);
|
|
103
|
+
}
|
|
104
|
+
return (0, colors_1.color)(colors_1.RITUAL_TEAL, `╰${'─'.repeat(innerWidth)}╯`);
|
|
105
|
+
}
|
|
106
|
+
// ─── two-column layout ────────────────────────────────────────────
|
|
107
|
+
function renderTwoColumn(input, width) {
|
|
108
|
+
const left = leftColumnLines(input, LEFT_COL_WIDTH);
|
|
109
|
+
const right = rightColumnLines(input);
|
|
110
|
+
const rightWidth = width - LEFT_COL_WIDTH - 3; // minus separators
|
|
111
|
+
// Pad to the same length so the divider doesn't drift.
|
|
112
|
+
const rowCount = Math.max(left.length, right.length);
|
|
113
|
+
while (left.length < rowCount)
|
|
114
|
+
left.push('');
|
|
115
|
+
while (right.length < rowCount)
|
|
116
|
+
right.push('');
|
|
117
|
+
const result = [];
|
|
118
|
+
for (let i = 0; i < rowCount; i++) {
|
|
119
|
+
const l = padDisplay(left[i], LEFT_COL_WIDTH);
|
|
120
|
+
const r = padDisplay(right[i], rightWidth);
|
|
121
|
+
const bar = (0, colors_1.color)(colors_1.RITUAL_TEAL, '│');
|
|
122
|
+
result.push(`${bar}${l}${bar}${r}${bar}`);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
function renderSingleColumn(input, width) {
|
|
127
|
+
// Narrow terminal — stack everything in one column. Drop the
|
|
128
|
+
// chain glyph margin to give text more room.
|
|
129
|
+
const innerWidth = width - 2;
|
|
130
|
+
const lines = [];
|
|
131
|
+
for (const l of leftColumnLines(input, innerWidth)) {
|
|
132
|
+
lines.push((0, colors_1.color)(colors_1.RITUAL_TEAL, '│') + padDisplay(l, innerWidth) + (0, colors_1.color)(colors_1.RITUAL_TEAL, '│'));
|
|
133
|
+
}
|
|
134
|
+
// Visual separator between left + right content blocks.
|
|
135
|
+
lines.push((0, colors_1.color)(colors_1.RITUAL_TEAL, '├' + '─'.repeat(innerWidth) + '┤'));
|
|
136
|
+
for (const r of rightColumnLines(input)) {
|
|
137
|
+
lines.push((0, colors_1.color)(colors_1.RITUAL_TEAL, '│') + padDisplay(r, innerWidth) + (0, colors_1.color)(colors_1.RITUAL_TEAL, '│'));
|
|
138
|
+
}
|
|
139
|
+
return lines;
|
|
140
|
+
}
|
|
141
|
+
// ─── content: left column (identity + glyph) ─────────────────────
|
|
142
|
+
function leftColumnLines(input, colWidth) {
|
|
143
|
+
const greeting = input.currentUser ? `Welcome back, ${input.currentUser}` : 'Welcome to Ritual!';
|
|
144
|
+
const projectLabel = `~/${relativeToHome(input.projectDir)}`;
|
|
145
|
+
const wsLine = input.workspaceBound && input.workspaceName
|
|
146
|
+
? `Workspace: ${input.workspaceName}`
|
|
147
|
+
: input.workspaceBound
|
|
148
|
+
? 'Workspace: (bound)'
|
|
149
|
+
: undefined;
|
|
150
|
+
const lines = [];
|
|
151
|
+
lines.push('');
|
|
152
|
+
lines.push(centerInColumn((0, colors_1.boldColor)(colors_1.RITUAL_TEAL, greeting), colWidth, greeting.length));
|
|
153
|
+
lines.push('');
|
|
154
|
+
// Chain glyph — center the WHOLE glyph as a block, not each
|
|
155
|
+
// row independently. Each row is trimmed of trailing whitespace
|
|
156
|
+
// (to avoid odd terminal selection rectangles) but the relative
|
|
157
|
+
// alignment between rows is preserved by computing the centering
|
|
158
|
+
// offset once from the widest row.
|
|
159
|
+
const glyphWidth = Math.max(...CHAIN_GLYPH.map((r) => r.trimEnd().length));
|
|
160
|
+
const glyphLeftPad = Math.max(0, Math.floor((colWidth - glyphWidth) / 2));
|
|
161
|
+
for (const row of CHAIN_GLYPH) {
|
|
162
|
+
const trimmed = row.trimEnd();
|
|
163
|
+
lines.push(' '.repeat(glyphLeftPad) + (0, colors_1.color)(colors_1.RITUAL_TEAL, trimmed));
|
|
164
|
+
}
|
|
165
|
+
lines.push('');
|
|
166
|
+
if (wsLine) {
|
|
167
|
+
lines.push(centerInColumn((0, colors_1.dim)(wsLine), colWidth, wsLine.length));
|
|
168
|
+
}
|
|
169
|
+
else if (!input.currentUser) {
|
|
170
|
+
// Fresh user tagline.
|
|
171
|
+
const tagline = 'Plan and ship without surprise context';
|
|
172
|
+
lines.push(centerInColumn((0, colors_1.dim)(tagline), colWidth, tagline.length));
|
|
173
|
+
}
|
|
174
|
+
lines.push(centerInColumn((0, colors_1.dim)(projectLabel), colWidth, projectLabel.length));
|
|
175
|
+
lines.push('');
|
|
176
|
+
return lines;
|
|
177
|
+
}
|
|
178
|
+
// ─── content: right column (tips / activity / commands) ──────────
|
|
179
|
+
function rightColumnLines(input) {
|
|
180
|
+
const lines = [];
|
|
181
|
+
const heading = (text) => (0, colors_1.boldColor)(colors_1.RITUAL_TEAL, text);
|
|
182
|
+
const tips = input.tips ?? defaultTipsFor(input);
|
|
183
|
+
const recent = input.recentActivity;
|
|
184
|
+
const quick = input.quickCommands ?? defaultQuickCommandsFor(input);
|
|
185
|
+
if (recent !== undefined && recent.length > 0) {
|
|
186
|
+
lines.push('');
|
|
187
|
+
lines.push(` ${heading('Recent activity')}`);
|
|
188
|
+
for (const r of recent) {
|
|
189
|
+
lines.push(` ${r}`);
|
|
190
|
+
}
|
|
191
|
+
lines.push('');
|
|
192
|
+
lines.push(` ${heading('Quick commands')}`);
|
|
193
|
+
for (const q of quick) {
|
|
194
|
+
lines.push(` ${(0, colors_1.dim)(q)}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
lines.push('');
|
|
199
|
+
lines.push(` ${heading('What this command will do')}`);
|
|
200
|
+
for (const t of tips) {
|
|
201
|
+
lines.push(` ${t}`);
|
|
202
|
+
}
|
|
203
|
+
lines.push('');
|
|
204
|
+
lines.push(` ${heading('Quick commands')}`);
|
|
205
|
+
for (const q of quick) {
|
|
206
|
+
lines.push(` ${(0, colors_1.dim)(q)}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
lines.push('');
|
|
210
|
+
return lines;
|
|
211
|
+
}
|
|
212
|
+
function defaultTipsFor(_input) {
|
|
213
|
+
return [
|
|
214
|
+
'1. Sign you in (browser-based OAuth)',
|
|
215
|
+
'2. Bind a workspace for this repo',
|
|
216
|
+
'3. Mint a long-lived MCP token',
|
|
217
|
+
'4. Register the MCP server with your',
|
|
218
|
+
' AI coding agent(s)',
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
function defaultQuickCommandsFor(_input) {
|
|
222
|
+
return [
|
|
223
|
+
'/ritual build <feature> ← inside agent',
|
|
224
|
+
'ritual graph status',
|
|
225
|
+
'ritual doctor',
|
|
226
|
+
'ritual init --switch-account',
|
|
227
|
+
];
|
|
228
|
+
}
|
|
229
|
+
// ─── helpers ──────────────────────────────────────────────────────
|
|
230
|
+
/**
|
|
231
|
+
* Display the project path relative to ~ when possible, else
|
|
232
|
+
* absolute. Cosmetic only — keeps the welcome box from showing the
|
|
233
|
+
* user's full home prefix.
|
|
234
|
+
*/
|
|
235
|
+
function relativeToHome(absPath) {
|
|
236
|
+
const home = (0, node_os_1.homedir)();
|
|
237
|
+
if (absPath === home)
|
|
238
|
+
return '';
|
|
239
|
+
if (absPath.startsWith(home + '/'))
|
|
240
|
+
return absPath.slice(home.length + 1);
|
|
241
|
+
return (0, node_path_1.basename)(absPath);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Pad text to a fixed visible width — taking into account ANSI
|
|
245
|
+
* escape sequences which take screen-space of 0 chars. Bare-bones
|
|
246
|
+
* implementation: strip ANSI, measure, pad.
|
|
247
|
+
*/
|
|
248
|
+
function padDisplay(text, width) {
|
|
249
|
+
const visible = stripAnsi(text).length;
|
|
250
|
+
if (visible >= width)
|
|
251
|
+
return text;
|
|
252
|
+
return text + ' '.repeat(width - visible);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Center `text` in a column of `colWidth`, treating ANSI-sequence
|
|
256
|
+
* bytes as zero-width. Caller must pass the visible length of the
|
|
257
|
+
* uncolored text as `visibleLen` since we can't reliably recompute
|
|
258
|
+
* after color() wraps the content.
|
|
259
|
+
*/
|
|
260
|
+
function centerInColumn(coloredText, colWidth, visibleLen) {
|
|
261
|
+
const pad = Math.max(0, Math.floor((colWidth - visibleLen) / 2));
|
|
262
|
+
return ' '.repeat(pad) + coloredText;
|
|
263
|
+
}
|
|
264
|
+
/** Strip ANSI escape sequences. Minimal — covers SGR codes only. */
|
|
265
|
+
function stripAnsi(s) {
|
|
266
|
+
// eslint-disable-next-line no-control-regex
|
|
267
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
268
|
+
}
|
|
269
|
+
// ─── workspace-name resolver ─────────────────────────────────────
|
|
270
|
+
/**
|
|
271
|
+
* Read `.ritual/config.json` from the project dir (if present) and
|
|
272
|
+
* resolve the workspace name. Returns `{ bound: false }` if no
|
|
273
|
+
* config file. Returns `{ bound: true, name }` with a best-effort
|
|
274
|
+
* label — config schema stores `workspaceId` only, so the name
|
|
275
|
+
* itself comes from a separate cached field if the binding flow
|
|
276
|
+
* persisted it (it does, as of PR #200).
|
|
277
|
+
*/
|
|
278
|
+
function readBoundWorkspace(projectDir) {
|
|
279
|
+
const cfgPath = (0, node_path_1.join)(projectDir, '.ritual', 'config.json');
|
|
280
|
+
if (!(0, node_fs_1.existsSync)(cfgPath))
|
|
281
|
+
return { bound: false };
|
|
282
|
+
try {
|
|
283
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(cfgPath, 'utf-8'));
|
|
284
|
+
return { bound: true, name: parsed.workspaceName };
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return { bound: true };
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=welcome-banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome-banner.js","sourceRoot":"","sources":["../../src/lib/welcome-banner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ritualai/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "Ritual CLI — scaffold AI coding agent skills + register MCP servers. Connects Claude Code, Cursor, Windsurf, Kiro, Gemini CLI, VS Code/Copilot, and Codex to Ritual Cloud.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "Apache-2.0",
|