@ritualai/cli 0.36.38 → 0.36.42
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 +1 -1
- package/dist/commands/build.js +42 -3
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/init.js +69 -133
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +43 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/telemetry.js +35 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/index.js +76 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/agents/providers.js +15 -8
- package/dist/lib/agents/providers.js.map +1 -1
- package/dist/lib/config.js +1 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gitignore-update.js +19 -23
- package/dist/lib/gitignore-update.js.map +1 -1
- package/dist/lib/memory-update.js +31 -22
- package/dist/lib/memory-update.js.map +1 -1
- package/dist/lib/onboarding-state.js +5 -3
- package/dist/lib/onboarding-state.js.map +1 -1
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/telemetry.js +234 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/uninstall-plan.js +6 -2
- package/dist/lib/uninstall-plan.js.map +1 -1
- package/package.json +1 -1
- package/skills/claude-code/ritual/.ritual-bundle.json +3 -3
- package/skills/claude-code/ritual/SKILL.md +2 -2
- package/skills/claude-code/ritual/references/build-flow.md +22 -25
- package/skills/claude-code/ritual/references/cli-output-contract.md +3 -5
- package/skills/claude-code/ritual/references/lite-flow.md +23 -26
- package/skills/codex/ritual/.ritual-bundle.json +3 -3
- package/skills/codex/ritual/SKILL.md +2 -2
- package/skills/codex/ritual/references/build-flow.md +22 -25
- package/skills/codex/ritual/references/cli-output-contract.md +3 -5
- package/skills/codex/ritual/references/lite-flow.md +23 -26
- package/skills/cursor/ritual/.ritual-bundle.json +3 -3
- package/skills/cursor/ritual/SKILL.md +2 -2
- package/skills/cursor/ritual/references/build-flow.md +22 -25
- package/skills/cursor/ritual/references/cli-output-contract.md +3 -5
- package/skills/cursor/ritual/references/lite-flow.md +23 -26
- package/skills/gemini/ritual/.ritual-bundle.json +3 -3
- package/skills/gemini/ritual/SKILL.md +2 -2
- package/skills/gemini/ritual/references/build-flow.md +22 -25
- package/skills/gemini/ritual/references/cli-output-contract.md +3 -5
- package/skills/gemini/ritual/references/lite-flow.md +23 -26
- package/skills/kiro/ritual/.ritual-bundle.json +3 -3
- package/skills/kiro/ritual/SKILL.md +2 -2
- package/skills/kiro/ritual/references/build-flow.md +22 -25
- package/skills/kiro/ritual/references/cli-output-contract.md +3 -5
- package/skills/kiro/ritual/references/lite-flow.md +23 -26
- package/skills/vscode/ritual/.ritual-bundle.json +3 -3
- package/skills/vscode/ritual/SKILL.md +2 -2
- package/skills/vscode/ritual/references/build-flow.md +22 -25
- package/skills/vscode/ritual/references/cli-output-contract.md +3 -5
- package/skills/vscode/ritual/references/lite-flow.md +23 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.telemetryCommand = telemetryCommand;
|
|
4
|
+
const telemetry_1 = require("../lib/telemetry");
|
|
5
|
+
/**
|
|
6
|
+
* `ritual telemetry [on|off|status]` — manage anonymous usage analytics.
|
|
7
|
+
*
|
|
8
|
+
* Persists the choice to ~/.config/ritual/telemetry.json so it survives
|
|
9
|
+
* across sessions (unlike the DO_NOT_TRACK / RITUAL_TELEMETRY=0 env vars,
|
|
10
|
+
* which are also honored). `status` (the default) prints the current state.
|
|
11
|
+
*/
|
|
12
|
+
async function telemetryCommand(action) {
|
|
13
|
+
const verb = (action || 'status').toLowerCase();
|
|
14
|
+
if (verb === 'off' || verb === 'disable') {
|
|
15
|
+
(0, telemetry_1.setOptOut)(true);
|
|
16
|
+
console.log('\n ✓ Telemetry disabled. No usage analytics will be sent.\n');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (verb === 'on' || verb === 'enable') {
|
|
20
|
+
(0, telemetry_1.setOptOut)(false);
|
|
21
|
+
console.log('\n ✓ Telemetry enabled. Thanks — anonymous usage data helps us improve Ritual.\n');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (verb === 'status') {
|
|
25
|
+
const s = (0, telemetry_1.describeStatus)();
|
|
26
|
+
console.log(`\n Telemetry: ${s.enabled ? 'enabled' : 'disabled'} (${s.reason})`);
|
|
27
|
+
if (s.enabled)
|
|
28
|
+
console.log(` Anonymous install id: ${s.installId}`);
|
|
29
|
+
console.log(' Turn off: `ritual telemetry off` or RITUAL_TELEMETRY=0\n');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.error(`\n ✗ Unknown telemetry action "${action}". Use: on | off | status\n`);
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/commands/telemetry.ts"],"names":[],"mappings":";;AASA,4CAuBC;AAhCD,gDAA6D;AAE7D;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CAAC,MAAe;IACrD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1C,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACR,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO;IACR,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAA,0BAAc,GAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,mCAAmC,MAAM,6BAA6B,CAAC,CAAC;IACtF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
37
|
const commander_1 = require("commander");
|
|
5
38
|
const help_style_1 = require("./lib/help-style");
|
|
@@ -22,6 +55,8 @@ const uninstall_1 = require("./commands/uninstall");
|
|
|
22
55
|
// stare at the polling loop.
|
|
23
56
|
const status_1 = require("./commands/status");
|
|
24
57
|
const graph_1 = require("./commands/graph");
|
|
58
|
+
const telemetry_1 = require("./commands/telemetry");
|
|
59
|
+
const telemetry = __importStar(require("./lib/telemetry"));
|
|
25
60
|
const package_info_1 = require("./lib/package-info");
|
|
26
61
|
// 2026-05-15 (PR C) — pre-flight one-line stderr warning when the
|
|
27
62
|
// project's SKILL bundles drift from the installed CLI. Catches the
|
|
@@ -41,6 +76,29 @@ program
|
|
|
41
76
|
.description('Ritual CLI — connect AI coding agents to Ritual Cloud. ' +
|
|
42
77
|
'Scaffold skills, register MCP servers, manage sessions.')
|
|
43
78
|
.version((0, package_info_1.readPackageVersionSafe)());
|
|
79
|
+
// ── Anonymous, opt-out usage analytics ──────────────────────────────────
|
|
80
|
+
// Central seam: fire start/complete/fail for every command via commander's
|
|
81
|
+
// lifecycle hooks (subcommands inherit them). All sends are fire-and-forget;
|
|
82
|
+
// we flush once at the very end. Commands set `process.exitCode` rather than
|
|
83
|
+
// hard-exiting, so the flush below always runs. See lib/telemetry.ts.
|
|
84
|
+
let cmdStartedAt = 0;
|
|
85
|
+
let currentCommand = '';
|
|
86
|
+
program.hook('preAction', (_thisCommand, actionCommand) => {
|
|
87
|
+
currentCommand = actionCommand.name();
|
|
88
|
+
cmdStartedAt = Date.now();
|
|
89
|
+
if (telemetry.isFirstRun()) {
|
|
90
|
+
telemetry.maybeShowFirstRunNotice();
|
|
91
|
+
telemetry.capture('cli_first_run', { command: currentCommand });
|
|
92
|
+
}
|
|
93
|
+
telemetry.capture('cli_command_started', { command: currentCommand });
|
|
94
|
+
});
|
|
95
|
+
program.hook('postAction', (_thisCommand, actionCommand) => {
|
|
96
|
+
telemetry.capture('cli_command_completed', {
|
|
97
|
+
command: actionCommand.name(),
|
|
98
|
+
duration_ms: Date.now() - cmdStartedAt,
|
|
99
|
+
exit_code: process.exitCode ?? 0,
|
|
100
|
+
});
|
|
101
|
+
});
|
|
44
102
|
/**
|
|
45
103
|
* Maintainer-only flags only register when RITUAL_INTERNAL=1 is set in
|
|
46
104
|
* the environment. The public npm install never sets it, so end users:
|
|
@@ -77,17 +135,14 @@ const initCmd = program
|
|
|
77
135
|
.option('--list', 'List known agents and exit')
|
|
78
136
|
.option('--issuer <url>', 'OIDC issuer for the lazy-auth flow (defaults to prod or RITUAL_KEYCLOAK_URL env)')
|
|
79
137
|
.option('--client-id <id>', 'OIDC client id (defaults to "ritual-cli")')
|
|
80
|
-
.option('--no-
|
|
81
|
-
.option('--no-memory-rule', 'Skip writing the coding-discovery routing rule into each agent\'s instructions file (CLAUDE.md, GEMINI.md, AGENTS.md, .cursor/rules, .kiro/steering, .windsurf/rules, .github/copilot-instructions.md).')
|
|
82
|
-
.option('--global-memory-rule', 'Also write the coding-discovery rule to each agent\'s USER-GLOBAL instructions file (~/.claude/CLAUDE.md, ~/.gemini/GEMINI.md, ~/.codex/AGENTS.md) so it applies in every repo, not just this one.')
|
|
138
|
+
.option('--no-memory-rule', "Don't write the Ritual coding-discovery routing rule. By default it's written only to your PERSONAL agent config — this repo's gitignored CLAUDE.local.md and your global ~/.claude/CLAUDE.md — never to the committed, team-shared CLAUDE.md. Pass this to skip it entirely.")
|
|
83
139
|
.option('--switch-account', 'Force a fresh sign-in even if you already have valid local credentials. Uses OIDC prompt=login so Keycloak ignores its SSO cookie. Atomic — your previous session is restored if anything fails.')
|
|
84
140
|
.option('--yes', 'Skip interactive confirmation prompts (required for --switch-account in non-TTY mode).')
|
|
85
141
|
.option('--skills-only', 'Refresh ONLY the bundled skill files in this project; skip auth, PAT minting, workspace binding, and MCP registration. Use after `npm i -g @ritualai/cli@latest` to pull the newest SKILL bundle into an already-initialized repo.')
|
|
86
|
-
.option('--persona <slug>', 'Persona for /ritual build defaults (e.g. backend-services, frontend-web). Skips the interactive picker in the onboarding flow.')
|
|
87
142
|
.option('-v, --verbose', 'Verbose post-setup output: PAT details, per-agent status table, skill install paths, and the detailed verify-then-restart next-steps block. Default is a compact "Ready to ship" CTA box.');
|
|
88
143
|
// Maintainer-only — registered only when RITUAL_INTERNAL=1.
|
|
89
144
|
internalOption(initCmd, '--dev', 'Shortcut for --issuer https://auth.dev.ritualapp.cloud/realms/ritual (maintainer testing against the Ritual dev environment).');
|
|
90
|
-
internalOption(initCmd, '--re-onboard', 'Re-run the FTUE onboarding screens (
|
|
145
|
+
internalOption(initCmd, '--re-onboard', 'Re-run the FTUE onboarding screens (workspace + build-flow explainer) even if they\'ve been shown on this machine. Used by maintainers iterating on screen designs.');
|
|
91
146
|
initCmd.action(init_1.initCommand);
|
|
92
147
|
// `ritual build "<ask>"` — the terminal entry into the build flow.
|
|
93
148
|
// The flow runs inside the user's coding agent; this command launches
|
|
@@ -154,6 +209,10 @@ program
|
|
|
154
209
|
.command('doctor')
|
|
155
210
|
.description('Sanity check the CLI environment: credentials, endpoints, detected agents')
|
|
156
211
|
.action(doctor_1.doctorCommand);
|
|
212
|
+
program
|
|
213
|
+
.command('telemetry [action]')
|
|
214
|
+
.description('Manage anonymous usage analytics: on | off | status (default)')
|
|
215
|
+
.action(telemetry_1.telemetryCommand);
|
|
157
216
|
program
|
|
158
217
|
.command('uninstall')
|
|
159
218
|
.description('Safely reverse `ritual init`: clear credentials + surface MCP/npm removal (use --project to also remove this repo\'s Ritual files)')
|
|
@@ -179,7 +238,18 @@ graph
|
|
|
179
238
|
// the rationale. Must run before parseAsync so the warning prints
|
|
180
239
|
// above the command output rather than interleaved.
|
|
181
240
|
(0, stale_bundle_warning_1.printStaleBundleWarning)(process.argv.slice(2));
|
|
182
|
-
|
|
241
|
+
// On success we don't await a flush: the in-flight sends keep the event loop
|
|
242
|
+
// alive on their own and Node exits once they settle (bounded by the send
|
|
243
|
+
// timeout), so a fast command pays ~0 extra when PostHog is reachable.
|
|
244
|
+
program.parseAsync(process.argv).catch(async (err) => {
|
|
245
|
+
telemetry.capture('cli_command_failed', {
|
|
246
|
+
command: currentCommand,
|
|
247
|
+
duration_ms: cmdStartedAt ? Date.now() - cmdStartedAt : undefined,
|
|
248
|
+
error_kind: err.name || 'Error',
|
|
249
|
+
});
|
|
250
|
+
// Bounded flush before the hard exit so the failure event has a chance
|
|
251
|
+
// to leave (process.exit would otherwise kill the in-flight send).
|
|
252
|
+
await telemetry.flush();
|
|
183
253
|
console.error(`\n ✗ ${err.message}\n`);
|
|
184
254
|
process.exit(1);
|
|
185
255
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,13 @@ exports.PROVIDERS = [
|
|
|
47
47
|
// closes the scope-mismatch FTUE bug where MCP was registered
|
|
48
48
|
// user-global but the skill only loaded from the project dir.
|
|
49
49
|
userSkillDir: (0, node_path_1.join)((0, node_os_1.homedir)(), '.claude', 'skills'),
|
|
50
|
-
// Claude Code loads
|
|
51
|
-
//
|
|
52
|
-
//
|
|
50
|
+
// Claude Code loads, at the start of every session: `CLAUDE.md` (committed,
|
|
51
|
+
// team-shared — opt-in only now), `CLAUDE.local.md` (repo-local, gitignored
|
|
52
|
+
// — the personal default), and `~/.claude/CLAUDE.md` (global — also a
|
|
53
|
+
// personal default). The default `ritual init` writes the two personal
|
|
54
|
+
// surfaces; the committed one is the future share-with-team opt-in.
|
|
53
55
|
projectMemoryRule: { path: 'CLAUDE.md', mode: 'append' },
|
|
56
|
+
localMemoryRule: { path: 'CLAUDE.local.md', mode: 'append' },
|
|
54
57
|
userMemoryRule: { path: (0, node_path_1.join)('.claude', 'CLAUDE.md'), mode: 'append' },
|
|
55
58
|
// `claude mcp add-json` writes to ~/.claude.json itself; we
|
|
56
59
|
// shell out so we don't fight its config-file format.
|
|
@@ -71,9 +74,10 @@ exports.PROVIDERS = [
|
|
|
71
74
|
packageSkillDir: 'skills/cursor',
|
|
72
75
|
// Cursor reads project rules from `.cursor/rules/*.mdc` with YAML
|
|
73
76
|
// frontmatter; `alwaysApply: true` loads the rule every request.
|
|
74
|
-
// Dedicated file (we own it)
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
+
// Dedicated file (we own it), written repo-local + gitignored by default
|
|
78
|
+
// — Cursor has no user-global rule FILE (User Rules live in the settings
|
|
79
|
+
// DB), so this personal repo-local file is the only surface a CLI writes.
|
|
80
|
+
localMemoryRule: {
|
|
77
81
|
path: (0, node_path_1.join)('.cursor', 'rules', 'ritual-discovery.mdc'),
|
|
78
82
|
mode: 'dedicated',
|
|
79
83
|
frontmatter: '---\ndescription: Choose the right discovery tier before planning a coding task\nglobs:\nalwaysApply: true\n---',
|
|
@@ -105,7 +109,9 @@ exports.PROVIDERS = [
|
|
|
105
109
|
// `.windsurf/rules/*.md` takes single rule files with a `trigger`
|
|
106
110
|
// frontmatter — `always_on` loads it every Cascade conversation. So
|
|
107
111
|
// the routing rule ships even though the multi-file SKILL bundle can't.
|
|
108
|
-
|
|
112
|
+
// Written repo-local + gitignored by default (Windsurf global is a
|
|
113
|
+
// single settings file we don't manage).
|
|
114
|
+
localMemoryRule: {
|
|
109
115
|
path: (0, node_path_1.join)('.windsurf', 'rules', 'ritual-discovery.md'),
|
|
110
116
|
mode: 'dedicated',
|
|
111
117
|
frontmatter: '---\ntrigger: always_on\ndescription: Choose the right discovery tier before planning a coding task\n---',
|
|
@@ -123,7 +129,8 @@ exports.PROVIDERS = [
|
|
|
123
129
|
// Kiro steering: `.kiro/steering/*.md` with `inclusion: always`
|
|
124
130
|
// frontmatter loads the file into context for every prompt. The
|
|
125
131
|
// frontmatter MUST be the first bytes (no leading blank line).
|
|
126
|
-
|
|
132
|
+
// Written repo-local + gitignored by default.
|
|
133
|
+
localMemoryRule: {
|
|
127
134
|
path: (0, node_path_1.join)('.kiro', 'steering', 'ritual-discovery.md'),
|
|
128
135
|
mode: 'dedicated',
|
|
129
136
|
frontmatter: '---\ninclusion: always\n---',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/lib/agents/providers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/lib/agents/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,16 +58,8 @@ function entryForProvider(provider) {
|
|
|
58
58
|
* `.gitignore`. The block always sorts entries the same way for
|
|
59
59
|
* idempotent diffs across re-runs.
|
|
60
60
|
*/
|
|
61
|
-
function buildBlock(
|
|
62
|
-
|
|
63
|
-
.map(entryForProvider)
|
|
64
|
-
.filter((e) => e !== null)
|
|
65
|
-
// Sort so the block's contents are deterministic regardless of
|
|
66
|
-
// detect()-order changes between releases. Makes diffs in
|
|
67
|
-
// people's `.gitignore` files signal-not-noise.
|
|
68
|
-
.sort()
|
|
69
|
-
.join('\n');
|
|
70
|
-
return `${BEGIN_MARKER}\n${entries}\n${END_MARKER}`;
|
|
61
|
+
function buildBlock(entries) {
|
|
62
|
+
return `${BEGIN_MARKER}\n${entries.join('\n')}\n${END_MARKER}`;
|
|
71
63
|
}
|
|
72
64
|
/**
|
|
73
65
|
* Replace the marker-bracketed block in `body` with `newBlock`. If
|
|
@@ -98,27 +90,31 @@ function replaceOrAppendBlock(body, newBlock) {
|
|
|
98
90
|
}
|
|
99
91
|
/**
|
|
100
92
|
* Ensure the project `.gitignore` ignores the scaffolded skill dirs
|
|
101
|
-
* for the agents that just got written
|
|
102
|
-
*
|
|
93
|
+
* for the agents that just got written, plus any `extraEntries` —
|
|
94
|
+
* since 2026-06-21 the repo-local routing-rule files (`CLAUDE.local.md`,
|
|
95
|
+
* `.cursor/rules/ritual-discovery.mdc`, etc.) that a default `ritual init`
|
|
96
|
+
* now writes as the developer's PERSONAL (non-committed) surface. Creates
|
|
97
|
+
* the file if it doesn't exist.
|
|
103
98
|
*
|
|
104
|
-
* Skipped silently when
|
|
105
|
-
*
|
|
99
|
+
* Skipped silently when there's nothing to ignore (no scaffolded skill
|
|
100
|
+
* dirs AND no extra entries).
|
|
106
101
|
*/
|
|
107
|
-
function updateProjectGitignore(projectRoot, scaffoldedProviders) {
|
|
102
|
+
function updateProjectGitignore(projectRoot, scaffoldedProviders, extraEntries = []) {
|
|
108
103
|
const gitignorePath = (0, node_path_1.join)(projectRoot, '.gitignore');
|
|
109
104
|
const preExisting = (0, node_fs_1.existsSync)(gitignorePath);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
105
|
+
// Merge skill-dir entries + extra (memory-rule local files), de-dupe,
|
|
106
|
+
// and sort so the block is deterministic across re-runs regardless of
|
|
107
|
+
// detect()-order — diffs stay signal-not-noise.
|
|
108
|
+
const entries = Array.from(new Set([
|
|
109
|
+
...scaffoldedProviders.map(entryForProvider).filter((e) => e !== null),
|
|
110
|
+
...extraEntries,
|
|
111
|
+
])).sort();
|
|
112
|
+
// No-op fast path: nothing to ignore.
|
|
117
113
|
if (entries.length === 0) {
|
|
118
114
|
return { gitignorePath, preExisting, entries, changed: false };
|
|
119
115
|
}
|
|
120
116
|
const currentBody = preExisting ? (0, node_fs_1.readFileSync)(gitignorePath, 'utf8') : '';
|
|
121
|
-
const newBlock = buildBlock(
|
|
117
|
+
const newBlock = buildBlock(entries);
|
|
122
118
|
const nextBody = replaceOrAppendBlock(currentBody, newBlock);
|
|
123
119
|
if (nextBody === currentBody) {
|
|
124
120
|
// Block already up to date — no write, no log noise.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore-update.js","sourceRoot":"","sources":["../../src/lib/gitignore-update.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"gitignore-update.js","sourceRoot":"","sources":["../../src/lib/gitignore-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,16 @@ const node_os_1 = require("node:os");
|
|
|
25
25
|
* rule), written wholesale as `frontmatter + body`. Like the
|
|
26
26
|
* scaffolded skill files, it's regenerated every init.
|
|
27
27
|
*
|
|
28
|
-
* Scopes
|
|
29
|
-
*
|
|
28
|
+
* Scopes (as of 2026-06-21): a default `ritual init` writes the developer's
|
|
29
|
+
* PERSONAL surfaces — `local` (repo-local `CLAUDE.local.md` / the dedicated
|
|
30
|
+
* rule files, relative to the repo root; the caller adds them to `.gitignore`)
|
|
31
|
+
* and `global` (relative to $HOME, applies across the developer's repos). The
|
|
32
|
+
* COMMITTED, team-shared `project` file is written ONLY when `opts.committed`
|
|
33
|
+
* is passed (the future "share with your team" flow), so a plain init never
|
|
34
|
+
* commits a rule teammates would inherit, and never touches any other repo.
|
|
30
35
|
*
|
|
31
36
|
* Mirrors `gitignore-update.ts`: byte-level string ops (preserve line endings),
|
|
32
|
-
* idempotent, fail-soft at the call site.
|
|
33
|
-
* routing rule is team-shareable guidance most repos want committed.
|
|
37
|
+
* idempotent, fail-soft at the call site.
|
|
34
38
|
*/
|
|
35
39
|
/**
|
|
36
40
|
* Marker comments delimiting the block we own in `append`-mode files. Matched
|
|
@@ -123,10 +127,14 @@ function writeRule(rootDir, target, scope) {
|
|
|
123
127
|
return { ...base, changed: true };
|
|
124
128
|
}
|
|
125
129
|
/**
|
|
126
|
-
* Write the routing rule
|
|
127
|
-
* `
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
+
* Write the routing rule to each provider's PERSONAL surfaces by default —
|
|
131
|
+
* `localMemoryRule` (repo-local, gitignored by the caller) + `userMemoryRule`
|
|
132
|
+
* (user-global, $HOME). The COMMITTED, team-shared `projectMemoryRule` is
|
|
133
|
+
* written ONLY when `opts.committed` is passed (the future share-with-team
|
|
134
|
+
* flow). De-dupes by absolute path so two agents that share a file (e.g. both
|
|
135
|
+
* write `AGENTS.md`) get one write. Providers without a target for a given
|
|
136
|
+
* scope are skipped — so Gemini/Codex (no `localMemoryRule`) get only the
|
|
137
|
+
* global write, and Copilot (committed file only) gets nothing on a plain init.
|
|
130
138
|
*
|
|
131
139
|
* `opts.homeDir` overrides `$HOME` for the global scope (tests).
|
|
132
140
|
*/
|
|
@@ -134,21 +142,22 @@ function updateMemoryRules(projectRoot, providers, opts = {}) {
|
|
|
134
142
|
const home = opts.homeDir ?? (0, node_os_1.homedir)();
|
|
135
143
|
const seen = new Set();
|
|
136
144
|
const results = [];
|
|
145
|
+
const writeOnce = (root, target, scope) => {
|
|
146
|
+
if (!target)
|
|
147
|
+
return;
|
|
148
|
+
const abs = (0, node_path_1.join)(root, target.path);
|
|
149
|
+
if (seen.has(abs))
|
|
150
|
+
return;
|
|
151
|
+
seen.add(abs);
|
|
152
|
+
results.push(writeRule(root, target, scope));
|
|
153
|
+
};
|
|
137
154
|
for (const provider of providers) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
if (opts.global && provider.userMemoryRule) {
|
|
146
|
-
const abs = (0, node_path_1.join)(home, provider.userMemoryRule.path);
|
|
147
|
-
if (!seen.has(abs)) {
|
|
148
|
-
seen.add(abs);
|
|
149
|
-
results.push(writeRule(home, provider.userMemoryRule, 'global'));
|
|
150
|
-
}
|
|
151
|
-
}
|
|
155
|
+
// Personal surfaces — written by default, never committed/shared:
|
|
156
|
+
writeOnce(projectRoot, provider.localMemoryRule, 'local'); // repo-local (gitignored)
|
|
157
|
+
writeOnce(home, provider.userMemoryRule, 'global'); // user-global ($HOME)
|
|
158
|
+
// Team-shared committed surface — opt-in only (share-with-team flow):
|
|
159
|
+
if (opts.committed)
|
|
160
|
+
writeOnce(projectRoot, provider.projectMemoryRule, 'project');
|
|
152
161
|
}
|
|
153
162
|
return results;
|
|
154
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-update.js","sourceRoot":"","sources":["../../src/lib/memory-update.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"memory-update.js","sourceRoot":"","sources":["../../src/lib/memory-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,9 +107,11 @@ function updateOnboardingState(patch) {
|
|
|
107
107
|
* the predicate, not every call site.
|
|
108
108
|
*/
|
|
109
109
|
// shouldShowPersonaPicker was removed 2026-06-11 along with the interactive
|
|
110
|
-
// FTUE persona picker (JTBD-first entry)
|
|
111
|
-
//
|
|
112
|
-
//
|
|
110
|
+
// FTUE persona picker (JTBD-first entry). As of 2026-06-21 `ritual init` no
|
|
111
|
+
// longer reads or writes persona at all (the `--persona` flag + the
|
|
112
|
+
// `user.persona` sync were dropped once every build was confirmed to pass an
|
|
113
|
+
// explicit jtbd). The personaPickedAt / personaSlug state fields stay so
|
|
114
|
+
// existing machines that recorded a pick aren't disturbed.
|
|
113
115
|
function shouldShowWorkspaceExplainer(state) {
|
|
114
116
|
return !state.workspaceExplainerSeenAt;
|
|
115
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-state.js","sourceRoot":"","sources":["../../src/lib/onboarding-state.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;AAmDH,kDAeC;AAQD,sDAKC;
|
|
1
|
+
{"version":3,"file":"onboarding-state.js","sourceRoot":"","sources":["../../src/lib/onboarding-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":";;AA2DA,oDAEC;AAOD,8CAeC;AAUD,8CAIC;AAjGD,qCAA6E;AAC7E,yCAA0C;AAuD1C,MAAM,sBAAsB,GAAG,SAAS,CAAC;AACzC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAE9C,SAAgB,oBAAoB,CAAC,UAAkB;IACtD,OAAO,IAAA,gBAAI,EAAC,UAAU,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,UAAkB;IACnD,MAAM,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAA,oBAAU,EAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;QAChD,8DAA8D;QAC9D,gEAAgE;QAChE,8BAA8B;QAC9B,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC/E,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,MAAqB;IAC1E,MAAM,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAA,uBAAa,EAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC"}
|