@ritualai/cli 0.7.9 → 0.7.11

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.
Files changed (67) hide show
  1. package/dist/commands/doctor.js +113 -18
  2. package/dist/commands/doctor.js.map +1 -1
  3. package/dist/commands/init.js +198 -45
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/login.js +20 -18
  6. package/dist/commands/login.js.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/identity-banner.js +2 -1
  10. package/dist/lib/identity-banner.js.map +1 -1
  11. package/dist/lib/node-managers.js +114 -0
  12. package/dist/lib/node-managers.js.map +1 -0
  13. package/dist/lib/npm-registry.js +107 -0
  14. package/dist/lib/npm-registry.js.map +1 -0
  15. package/dist/lib/oidc.js +19 -10
  16. package/dist/lib/oidc.js.map +1 -1
  17. package/dist/lib/skill-bundles.js +62 -0
  18. package/dist/lib/skill-bundles.js.map +1 -0
  19. package/dist/lib/skill-manifest.js +53 -0
  20. package/dist/lib/skill-manifest.js.map +1 -0
  21. package/dist/lib/welcome-banner.js +9 -12
  22. package/dist/lib/welcome-banner.js.map +1 -1
  23. package/dist/lib/workspace-flow.js +11 -5
  24. package/dist/lib/workspace-flow.js.map +1 -1
  25. package/package.json +1 -1
  26. package/skills/claude-code/ritual/.ritual-bundle.json +4 -0
  27. package/skills/claude-code/ritual/references/async-polling.md +43 -9
  28. package/skills/claude-code/ritual/references/build-flow.md +764 -150
  29. package/skills/claude-code/ritual/references/cli-output-contract.md +181 -8
  30. package/skills/claude-code/ritual/references/context-pulse-flow.md +3 -3
  31. package/skills/claude-code/ritual/references/discovery-classification.md +3 -3
  32. package/skills/claude-code/ritual/references/resume-flow.md +2 -0
  33. package/skills/codex/ritual/.ritual-bundle.json +4 -0
  34. package/skills/codex/ritual/references/async-polling.md +43 -9
  35. package/skills/codex/ritual/references/build-flow.md +764 -150
  36. package/skills/codex/ritual/references/cli-output-contract.md +181 -8
  37. package/skills/codex/ritual/references/context-pulse-flow.md +3 -3
  38. package/skills/codex/ritual/references/discovery-classification.md +3 -3
  39. package/skills/codex/ritual/references/resume-flow.md +2 -0
  40. package/skills/cursor/ritual/.ritual-bundle.json +4 -0
  41. package/skills/cursor/ritual/references/async-polling.md +43 -9
  42. package/skills/cursor/ritual/references/build-flow.md +764 -150
  43. package/skills/cursor/ritual/references/cli-output-contract.md +181 -8
  44. package/skills/cursor/ritual/references/context-pulse-flow.md +3 -3
  45. package/skills/cursor/ritual/references/discovery-classification.md +3 -3
  46. package/skills/cursor/ritual/references/resume-flow.md +2 -0
  47. package/skills/gemini/ritual/.ritual-bundle.json +4 -0
  48. package/skills/gemini/ritual/references/async-polling.md +43 -9
  49. package/skills/gemini/ritual/references/build-flow.md +764 -150
  50. package/skills/gemini/ritual/references/cli-output-contract.md +181 -8
  51. package/skills/gemini/ritual/references/context-pulse-flow.md +3 -3
  52. package/skills/gemini/ritual/references/discovery-classification.md +3 -3
  53. package/skills/gemini/ritual/references/resume-flow.md +2 -0
  54. package/skills/kiro/ritual/.ritual-bundle.json +4 -0
  55. package/skills/kiro/ritual/references/async-polling.md +43 -9
  56. package/skills/kiro/ritual/references/build-flow.md +764 -150
  57. package/skills/kiro/ritual/references/cli-output-contract.md +181 -8
  58. package/skills/kiro/ritual/references/context-pulse-flow.md +3 -3
  59. package/skills/kiro/ritual/references/discovery-classification.md +3 -3
  60. package/skills/kiro/ritual/references/resume-flow.md +2 -0
  61. package/skills/vscode/ritual/.ritual-bundle.json +4 -0
  62. package/skills/vscode/ritual/references/async-polling.md +43 -9
  63. package/skills/vscode/ritual/references/build-flow.md +764 -150
  64. package/skills/vscode/ritual/references/cli-output-contract.md +181 -8
  65. package/skills/vscode/ritual/references/context-pulse-flow.md +3 -3
  66. package/skills/vscode/ritual/references/discovery-classification.md +3 -3
  67. package/skills/vscode/ritual/references/resume-flow.md +2 -0
@@ -48,27 +48,33 @@ async function loginCommand(options) {
48
48
  workspaceName: ws.name,
49
49
  projectDir,
50
50
  cliVersion: (0, package_info_1.readPackageVersionSafe)(),
51
- // `ritual login`'s "tips" are different from init's focus on
52
- // the auth surface specifically.
51
+ // `ritual login`'s tips are different from init's: focus on
52
+ // auth, not workspace or agent setup. Hide quick commands until
53
+ // the user is actually signed in.
53
54
  tips: tokenStatus.kind === 'signed-in'
54
55
  ? undefined
55
56
  : [
56
- '1. Open your browser to Keycloak',
57
- '2. Sign in (or verify email if brand-new)',
58
- '3. Bounce back here; tokens cached locally',
57
+ '1. Open your browser to sign in',
58
+ '2. Finish signup if brand-new',
59
+ '3. Return here; session cached locally',
59
60
  ],
60
- quickCommands: [
61
- 'ritual whoami',
62
- 'ritual login --switch-account',
63
- 'ritual logout --all',
64
- 'ritual doctor',
65
- ],
61
+ quickCommands: tokenStatus.kind === 'signed-in'
62
+ ? [
63
+ 'ritual whoami',
64
+ 'ritual login --switch-account',
65
+ 'ritual logout --all',
66
+ 'ritual doctor',
67
+ ]
68
+ : [],
66
69
  });
67
70
  // If a valid session exists and no --switch-account, also keep
68
71
  // the existing compact identity banner for the textual "already
69
72
  // signed in" message + exit.
70
73
  if (tokenStatus.kind === 'signed-in' && !options.switchAccount) {
71
- (0, identity_banner_1.printIdentityBanner)((0, identity_banner_1.identityFromCreds)(tokenStatus.creds), { indent: ' ' });
74
+ (0, identity_banner_1.printIdentityBanner)((0, identity_banner_1.identityFromCreds)(tokenStatus.creds), {
75
+ indent: ' ',
76
+ switchCommand: 'ritual login --switch-account',
77
+ });
72
78
  console.log('');
73
79
  console.log(' Already signed in. Nothing to do.');
74
80
  console.log('');
@@ -80,11 +86,8 @@ async function loginCommand(options) {
80
86
  : undefined;
81
87
  if (isSwitching) {
82
88
  console.log(` Currently signed in as ${currentEmail}.`);
83
- console.log(` Continuing will:`);
84
- console.log(` Back up your local credentials, then atomically replace them on success`);
85
- console.log(` • Open your browser with OIDC \`prompt=login\` (Keycloak will show its`);
86
- console.log(` sign-in form even if its SSO cookie says otherwise — no incognito needed)`);
87
- console.log(` If anything goes wrong, your existing session is restored.`);
89
+ console.log(` Continuing will open your browser for a fresh sign-in.`);
90
+ console.log(` Your current session is backed up and restored if anything fails.`);
88
91
  console.log('');
89
92
  if (!process.stdin.isTTY) {
90
93
  if (!options.yes) {
@@ -145,7 +148,6 @@ async function loginCommand(options) {
145
148
  console.log('');
146
149
  console.log(` ✓ Signed in as ${display}`);
147
150
  console.log('');
148
- console.log(' Your AI coding agent can now connect to Ritual via MCP.');
149
151
  console.log(' Run `ritual whoami` to confirm session details.');
150
152
  console.log('');
151
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -29,6 +29,7 @@ program
29
29
  .option('--no-workspace', 'Skip the "create a workspace for this repo?" prompt. Useful for CI or when you want to bind a workspace by hand later.')
30
30
  .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.')
31
31
  .option('--yes', 'Skip interactive confirmation prompts (required for --switch-account in non-TTY mode).')
32
+ .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.')
32
33
  .action(init_1.initCommand);
33
34
  program
34
35
  .command('login')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAsD;AACtD,qDAA4D;AAE5D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACX,yDAAyD;IACxD,yDAAyD,CAC1D;KACA,OAAO,CAAC,IAAA,qCAAsB,GAAE,CAAC,CAAC;AAEpC,oEAAoE;AACpE,+DAA+D;AAC/D,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;KAChF,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CACN,gBAAgB,EAChB,kFAAkF,CAClF;KACA,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,OAAO,EAAE,iFAAiF,CAAC;KAClG,MAAM,CACN,gBAAgB,EAChB,wHAAwH,CACxH;KACA,MAAM,CACN,kBAAkB,EAClB,kMAAkM,CAClM;KACA,MAAM,CACN,OAAO,EACP,wFAAwF,CACxF;KACA,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEtB,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CACN,gBAAgB,EAChB,iGAAiG,CACjG;KACA,MAAM,CACN,kBAAkB,EAClB,4EAA4E,CAC5E;KACA,MAAM,CAAC,OAAO,EAAE,iFAAiF,CAAC;KAClG,MAAM,CACN,kBAAkB,EAClB,oIAAoI,CACpI;KACA,MAAM,CACN,OAAO,EACP,wFAAwF,CACxF;KACA,MAAM,CAAC,oBAAY,CAAC,CAAC;AAEvB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CACN,OAAO,EACP,6IAA6I,CAC7I;KACA,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,wBAAc,CAAC,CAAC;AAEzB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,iEAAiE;AACjE,+DAA+D;AAC/D,kDAAkD;AAClD,MAAM,KAAK,GAAG,OAAO;KACnB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oEAAoE,CAAC,CAAC;AAEpF,KAAK;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CACN,kBAAkB,EAClB,0FAA0F,CAC1F;KACA,MAAM,CAAC,aAAa,EAAE,8DAA8D,CAAC;KACrF,MAAM,CAAC,0BAAkB,CAAC,CAAC;AAE7B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IACrD,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAsD;AACtD,qDAA4D;AAE5D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACX,yDAAyD;IACxD,yDAAyD,CAC1D;KACA,OAAO,CAAC,IAAA,qCAAsB,GAAE,CAAC,CAAC;AAEpC,oEAAoE;AACpE,+DAA+D;AAC/D,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;KAChF,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CACN,gBAAgB,EAChB,kFAAkF,CAClF;KACA,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,OAAO,EAAE,iFAAiF,CAAC;KAClG,MAAM,CACN,gBAAgB,EAChB,wHAAwH,CACxH;KACA,MAAM,CACN,kBAAkB,EAClB,kMAAkM,CAClM;KACA,MAAM,CACN,OAAO,EACP,wFAAwF,CACxF;KACA,MAAM,CACN,eAAe,EACf,oOAAoO,CACpO;KACA,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEtB,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CACN,gBAAgB,EAChB,iGAAiG,CACjG;KACA,MAAM,CACN,kBAAkB,EAClB,4EAA4E,CAC5E;KACA,MAAM,CAAC,OAAO,EAAE,iFAAiF,CAAC;KAClG,MAAM,CACN,kBAAkB,EAClB,oIAAoI,CACpI;KACA,MAAM,CACN,OAAO,EACP,wFAAwF,CACxF;KACA,MAAM,CAAC,oBAAY,CAAC,CAAC;AAEvB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CACN,OAAO,EACP,6IAA6I,CAC7I;KACA,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,wBAAc,CAAC,CAAC;AAEzB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,sBAAa,CAAC,CAAC;AAExB,iEAAiE;AACjE,+DAA+D;AAC/D,kDAAkD;AAClD,MAAM,KAAK,GAAG,OAAO;KACnB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oEAAoE,CAAC,CAAC;AAEpF,KAAK;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CACN,kBAAkB,EAClB,0FAA0F,CAC1F;KACA,MAAM,CAAC,aAAa,EAAE,8DAA8D,CAAC;KACrF,MAAM,CAAC,0BAAkB,CAAC,CAAC;AAE7B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IACrD,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -81,7 +81,8 @@ function printIdentityBanner(identity, opts = {}) {
81
81
  lines.push(`${indent} No refresh token stored — sign in again when access expires`);
82
82
  }
83
83
  if (opts.includeSwitchHint !== false) {
84
- lines.push(`${indent} To switch accounts: ritual init --switch-account`);
84
+ const switchCommand = opts.switchCommand ?? 'ritual init --switch-account';
85
+ lines.push(`${indent} To switch accounts: ${switchCommand}`);
85
86
  }
86
87
  process.stderr.write(lines.join('\n') + '\n');
87
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"identity-banner.js","sourceRoot":"","sources":["../../src/lib/identity-banner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-banner.js","sourceRoot":"","sources":["../../src/lib/identity-banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reportNodeManagers = reportNodeManagers;
4
+ exports.findDeadHyphenatedInstalls = findDeadHyphenatedInstalls;
5
+ exports.findShadowedInstalls = findShadowedInstalls;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_os_1 = require("node:os");
8
+ const node_path_1 = require("node:path");
9
+ /**
10
+ * Read a single `package.json` and extract `{ name, version }`.
11
+ * Returns null on any read/parse failure — caller treats absence as
12
+ * "no install at this path", not as an error.
13
+ */
14
+ function readPackageInfo(path) {
15
+ try {
16
+ const raw = (0, node_fs_1.readFileSync)(path, 'utf-8');
17
+ const parsed = JSON.parse(raw);
18
+ if (typeof parsed.name !== 'string' || typeof parsed.version !== 'string')
19
+ return null;
20
+ return { name: parsed.name, version: parsed.version };
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /**
27
+ * Given a directory we believe contains one or more Node version
28
+ * installations as immediate subdirectories, probe each for the two
29
+ * ritual packages. `nodeVersionDirPattern` describes how to derive the
30
+ * `lib/node_modules` location from each version dir.
31
+ *
32
+ * fnm layout: ~/.local/share/fnm/node-versions/v20.19.2/installation/lib/node_modules
33
+ * nvm layout: ~/.nvm/versions/node/v20.19.2/lib/node_modules
34
+ * asdf layout: ~/.asdf/installs/nodejs/20.19.2/.npm/lib/node_modules
35
+ */
36
+ function scanVersionRoot(manager, versionsRoot, libPathFromVersion) {
37
+ if (!(0, node_fs_1.existsSync)(versionsRoot))
38
+ return [];
39
+ let versionDirs;
40
+ try {
41
+ versionDirs = (0, node_fs_1.readdirSync)(versionsRoot, { withFileTypes: true })
42
+ .filter((d) => d.isDirectory())
43
+ .map((d) => d.name);
44
+ }
45
+ catch {
46
+ return [];
47
+ }
48
+ const out = [];
49
+ const packageNames = ['@ritualai/cli', '@ritual-ai/cli'];
50
+ for (const versionDir of versionDirs) {
51
+ const nodeModules = libPathFromVersion((0, node_path_1.join)(versionsRoot, versionDir));
52
+ for (const pkg of packageNames) {
53
+ const pkgJson = (0, node_path_1.join)(nodeModules, ...pkg.split('/'), 'package.json');
54
+ const info = readPackageInfo(pkgJson);
55
+ if (!info)
56
+ continue;
57
+ if (info.name !== pkg)
58
+ continue;
59
+ out.push({
60
+ manager,
61
+ nodeVersion: versionDir,
62
+ packageName: pkg,
63
+ version: info.version,
64
+ packageJsonPath: pkgJson,
65
+ });
66
+ }
67
+ }
68
+ return out;
69
+ }
70
+ /**
71
+ * Build the full report. Each manager is probed at its canonical
72
+ * install root; absence of a root is treated as "manager not used,"
73
+ * not an error. The aggregate `anyManagerPresent` is true if at least
74
+ * one root existed (whether or not it had ritual installs).
75
+ *
76
+ * NB: this does NOT probe the currently-active Node's global path —
77
+ * that's already reflected in `process.version` and the doctor reports
78
+ * it separately. The point of this report is shadowing detection: what
79
+ * other Node versions exist that you might silently fall through to.
80
+ */
81
+ function reportNodeManagers(home = (0, node_os_1.homedir)()) {
82
+ const fnmRoot = (0, node_path_1.join)(home, '.local', 'share', 'fnm', 'node-versions');
83
+ const nvmRoot = (0, node_path_1.join)(home, '.nvm', 'versions', 'node');
84
+ const asdfRoot = (0, node_path_1.join)(home, '.asdf', 'installs', 'nodejs');
85
+ const anyManagerPresent = (0, node_fs_1.existsSync)(fnmRoot) || (0, node_fs_1.existsSync)(nvmRoot) || (0, node_fs_1.existsSync)(asdfRoot);
86
+ const installs = [
87
+ ...scanVersionRoot('fnm', fnmRoot, (v) => (0, node_path_1.join)(v, 'installation', 'lib', 'node_modules')),
88
+ ...scanVersionRoot('nvm', nvmRoot, (v) => (0, node_path_1.join)(v, 'lib', 'node_modules')),
89
+ // asdf's node plugin uses npm's per-version prefix under `.npm`.
90
+ // This is the path npm itself writes to when you `npm i -g`
91
+ // under an asdf-managed Node.
92
+ ...scanVersionRoot('asdf', asdfRoot, (v) => (0, node_path_1.join)(v, '.npm', 'lib', 'node_modules')),
93
+ ];
94
+ return { anyManagerPresent, installs };
95
+ }
96
+ /**
97
+ * Pull just the dead-package installs out of a report. Used by doctor
98
+ * to render a louder warning — having `@ritual-ai/cli` installed
99
+ * anywhere is always a problem (it's the dead 0.1.x legacy), regardless
100
+ * of whether the *current* shell picks it up.
101
+ */
102
+ function findDeadHyphenatedInstalls(report) {
103
+ return report.installs.filter((i) => i.packageName === '@ritual-ai/cli');
104
+ }
105
+ /**
106
+ * Pull installs that are NOT the version of `currentVersion` (and not
107
+ * the dead hyphenated package — that's a separate, louder warning).
108
+ * These are "you've got a stale install on another Node version that
109
+ * will surface when fnm switches under you" candidates.
110
+ */
111
+ function findShadowedInstalls(report, currentVersion) {
112
+ return report.installs.filter((i) => i.packageName === '@ritualai/cli' && i.version !== currentVersion);
113
+ }
114
+ //# sourceMappingURL=node-managers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-managers.js","sourceRoot":"","sources":["../../src/lib/node-managers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLatestNpmVersion = getLatestNpmVersion;
4
+ exports.isNewerVersion = isNewerVersion;
5
+ const node_https_1 = require("node:https");
6
+ /**
7
+ * Fetch the latest published version of an npm package from the public
8
+ * registry. Used by `ritual doctor` to surface "you're on 0.7.10 but
9
+ * 0.7.11 is available."
10
+ *
11
+ * Pure HTTPS — no dependency on a registry client library. We hit the
12
+ * package metadata endpoint and read `dist-tags.latest`, which is what
13
+ * `npm view <pkg> version` returns.
14
+ *
15
+ * Hard timeout because `ritual doctor` runs synchronously in the user's
16
+ * terminal and a hung network call would hang the diagnostic. Caller
17
+ * should treat null as "couldn't determine" (e.g. offline, registry
18
+ * down, corporate proxy) rather than "package doesn't exist."
19
+ *
20
+ * Why we don't use `child_process.execSync('npm view ...')`:
21
+ * - Shells out to `npm`, which loads ~600ms of Node startup just for
22
+ * the registry round-trip.
23
+ * - Adds an implicit dependency on `npm` being on PATH (we don't
24
+ * enforce that — a user could be on pnpm or yarn).
25
+ * - Surfaces npm's stderr noise (deprecation warnings, etc.) to the
26
+ * diagnostic output.
27
+ */
28
+ async function getLatestNpmVersion(packageName, timeoutMs = 2000) {
29
+ return new Promise((resolve) => {
30
+ // Encode scoped package names (`@scope/name`) for the URL path.
31
+ // `encodeURIComponent` turns `@` into `%40` and `/` into `%2F`,
32
+ // which is the registry's expected form for scoped packages.
33
+ const encoded = encodeURIComponent(packageName);
34
+ const url = `https://registry.npmjs.org/${encoded}`;
35
+ const req = (0, node_https_1.request)(url, {
36
+ method: 'GET',
37
+ headers: {
38
+ // Slim metadata response — full doc is megabytes for
39
+ // packages with long publish histories. `abbreviated`
40
+ // returns only the fields we need (~5KB).
41
+ Accept: 'application/vnd.npm.install-v1+json',
42
+ 'User-Agent': '@ritualai/cli (doctor)',
43
+ },
44
+ }, (res) => {
45
+ if (res.statusCode !== 200) {
46
+ res.resume(); // drain and discard
47
+ resolve(null);
48
+ return;
49
+ }
50
+ const chunks = [];
51
+ res.on('data', (c) => chunks.push(c));
52
+ res.on('end', () => {
53
+ try {
54
+ const body = Buffer.concat(chunks).toString('utf-8');
55
+ const parsed = JSON.parse(body);
56
+ const latest = parsed['dist-tags']?.latest;
57
+ resolve(typeof latest === 'string' ? latest : null);
58
+ }
59
+ catch {
60
+ resolve(null);
61
+ }
62
+ });
63
+ res.on('error', () => resolve(null));
64
+ });
65
+ req.setTimeout(timeoutMs, () => {
66
+ req.destroy();
67
+ resolve(null);
68
+ });
69
+ req.on('error', () => resolve(null));
70
+ req.end();
71
+ });
72
+ }
73
+ /**
74
+ * Loose semver compare: return true iff `latest` is strictly newer than
75
+ * `installed`. Tolerates `0.0.0-unknown` (used when we can't read our
76
+ * own version) by treating it as "always outdated" — which surfaces a
77
+ * loud error in doctor rather than silently passing.
78
+ *
79
+ * We deliberately don't pull in `semver` as a dep here — the cost
80
+ * (parse error handling, prerelease semantics, range syntax) isn't
81
+ * justified for a one-call compare. Splitting on '.' and comparing as
82
+ * numeric tuples is sufficient for our 0.X.Y release line.
83
+ */
84
+ function isNewerVersion(installed, latest) {
85
+ if (installed === latest)
86
+ return false;
87
+ if (installed === '0.0.0-unknown')
88
+ return true;
89
+ const parse = (v) => v
90
+ .split('-')[0] // strip prerelease (e.g. -beta.1)
91
+ .split('.')
92
+ .map((s) => Number.parseInt(s, 10))
93
+ .map((n) => (Number.isFinite(n) ? n : 0));
94
+ const a = parse(installed);
95
+ const b = parse(latest);
96
+ const len = Math.max(a.length, b.length);
97
+ for (let i = 0; i < len; i++) {
98
+ const ai = a[i] ?? 0;
99
+ const bi = b[i] ?? 0;
100
+ if (bi > ai)
101
+ return true;
102
+ if (bi < ai)
103
+ return false;
104
+ }
105
+ return false;
106
+ }
107
+ //# sourceMappingURL=npm-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../../src/lib/npm-registry.ts"],"names":[],"mappings":"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"}
package/dist/lib/oidc.js CHANGED
@@ -18,28 +18,29 @@ function generatePkce() {
18
18
  /**
19
19
  * Spin up a one-shot loopback server on a random port. Resolves with
20
20
  * the captured `?code=...&state=...` query params from the OAuth
21
- * redirect. Rejects on timeout (default 5 min) or error response.
21
+ * redirect. Rejects on timeout (default 15 min) or error response.
22
22
  *
23
23
  * The timeout path is the common failure mode for new users who have
24
24
  * to click an email-verification link: by the time the verification
25
- * email arrives + the user notices + clicks, the 5-minute window has
26
- * elapsed and Keycloak's redirect lands on a port we no longer hold.
27
- * Phase 1 of the back-to-terminal UX (R1, 2026-05-12) gives those
28
- * users a recoverable landing page on the web app
29
- * (`/auth/cli-success`); the timeout error below points them at it.
25
+ * email arrives + the user notices + clicks, the original 5-minute
26
+ * window had elapsed and Keycloak's redirect lands on a port we no
27
+ * longer hold. Bumped to 15 minutes 2026-05-14 holding a local
28
+ * loopback port a bit longer is much cheaper than first-run users
29
+ * dropping out mid-signup. The /auth/cli-success page (Phase 1 of
30
+ * the back-to-terminal UX, R1 2026-05-12) catches the remainder.
30
31
  *
31
32
  * Phase 2 (Device Authorization Grant, RFC 8628) replaces this whole
32
33
  * flow with one that doesn't depend on the original browser/CLI
33
34
  * staying linked, eliminating the timeout class entirely.
34
35
  */
35
- function awaitAuthorizationRedirect(issuer, timeoutMs = 5 * 60 * 1000) {
36
+ function awaitAuthorizationRedirect(issuer, timeoutMs = 15 * 60 * 1000) {
36
37
  let port = 0;
37
38
  let serverRef;
38
39
  const promise = new Promise((resolve, reject) => {
39
40
  const timer = setTimeout(() => {
40
41
  serverRef.close();
41
42
  const fallback = cliSuccessFallbackUrl(issuer);
42
- reject(new Error(`Login timed out — no callback received within 5 minutes.\n` +
43
+ reject(new Error(`Login timed out — no callback received within 15 minutes.\n` +
43
44
  ` If you were asked to verify your email, the verification link's redirect\n` +
44
45
  ` came back after this CLI gave up listening. Recover with one of:\n` +
45
46
  ` 1. Re-run \`ritual login\` and click the verification link sooner, OR\n` +
@@ -154,9 +155,17 @@ async function performLoginFlow(cfg, openBrowser, log) {
154
155
  authorizeUrl.searchParams.set('prompt', 'login');
155
156
  }
156
157
  log(`Opening browser to ${cfg.issuer.replace(/^https?:\/\//, '')}…`);
157
- log(`If the browser doesn't open, visit:\n ${authorizeUrl.toString()}\n`);
158
+ // The giant `?response_type=code&client_id=…` authorize URL used to
159
+ // print here unconditionally as a copy-paste fallback. In practice
160
+ // it was visual noise on 99% of runs (the `open` package spawns
161
+ // fine on macOS / Linux / Windows with a desktop). We now only
162
+ // surface it when `openBrowser` actually rejects — typical causes:
163
+ // SSH session with no $DISPLAY, container with no GUI, $BROWSER
164
+ // pointing at a missing binary. The catch's caller still proceeds
165
+ // to wait on the loopback callback, so a copy-paste sign-in works.
158
166
  await openBrowser(authorizeUrl.toString()).catch(() => {
159
- /* if `open` fails the user can copy-paste */
167
+ log(`Browser didn't open automatically. Visit this URL to sign in:`);
168
+ log(` ${authorizeUrl.toString()}`);
160
169
  });
161
170
  // Wait for the redirect back to localhost.
162
171
  const result = await promise;
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../../src/lib/oidc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../../src/lib/oidc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findLocalSkillBundles = findLocalSkillBundles;
4
+ exports.findStaleBundles = findStaleBundles;
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const providers_1 = require("./agents/providers");
8
+ const skill_manifest_1 = require("./skill-manifest");
9
+ /**
10
+ * Walk every known provider's `projectSkillDir` under `projectDir` and
11
+ * collect each child directory as a candidate skill bundle. Reads each
12
+ * manifest and compares to `cliVersion`.
13
+ *
14
+ * Hidden directories (those starting with `.`) are skipped — they're
15
+ * either dotfiles or our own manifest companions, never skill dirs.
16
+ *
17
+ * `cliVersion` is passed in (rather than read from package-info here)
18
+ * so tests can inject a fixed value.
19
+ */
20
+ function findLocalSkillBundles(projectDir, cliVersion) {
21
+ const found = [];
22
+ for (const provider of providers_1.PROVIDERS) {
23
+ const skillRoot = (0, node_path_1.join)(projectDir, provider.projectSkillDir);
24
+ if (!(0, node_fs_1.existsSync)(skillRoot))
25
+ continue;
26
+ let entries;
27
+ try {
28
+ entries = (0, node_fs_1.readdirSync)(skillRoot, { withFileTypes: true })
29
+ .filter((d) => d.isDirectory() && !d.name.startsWith('.'))
30
+ .map((d) => d.name);
31
+ }
32
+ catch {
33
+ continue;
34
+ }
35
+ for (const skillName of entries) {
36
+ const path = (0, node_path_1.join)(skillRoot, skillName);
37
+ // Defensive: a non-directory slipping through (race, symlink
38
+ // loop) just gets skipped.
39
+ try {
40
+ if (!(0, node_fs_1.statSync)(path).isDirectory())
41
+ continue;
42
+ }
43
+ catch {
44
+ continue;
45
+ }
46
+ const manifest = (0, skill_manifest_1.readSkillManifest)(path);
47
+ const drift = (0, skill_manifest_1.compareToCliVersion)(manifest, cliVersion);
48
+ found.push({ provider, skillName, path, drift });
49
+ }
50
+ }
51
+ return found;
52
+ }
53
+ /**
54
+ * Subset of bundles whose drift status indicates a refresh would help.
55
+ * Both `drift` (manifest present, version mismatch) AND `unknown`
56
+ * (manifest missing — pre-0.7.11 bundle) are considered actionable:
57
+ * running `ritual init --skills-only` is the same fix for either case.
58
+ */
59
+ function findStaleBundles(bundles) {
60
+ return bundles.filter((b) => b.drift.kind === 'drift' || b.drift.kind === 'unknown');
61
+ }
62
+ //# sourceMappingURL=skill-bundles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-bundles.js","sourceRoot":"","sources":["../../src/lib/skill-bundles.ts"],"names":[],"mappings":";;AAqCA,sDAgCC;AAQD,4CAEC;AA/ED,qCAA4D;AAC5D,yCAAiC;AACjC,kDAAmE;AACnE,qDAA4F;AAuB5F;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,UAAkB;IAC3E,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,qBAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC;YAAE,SAAS;QAErC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAA,qBAAW,EAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACxC,6DAA6D;YAC7D,2BAA2B;YAC3B,IAAI,CAAC;gBACJ,IAAI,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE;oBAAE,SAAS;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,IAAA,kCAAiB,EAAC,IAAI,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAA,oCAAmB,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,OAA2B;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MANIFEST_FILENAME = void 0;
4
+ exports.writeSkillManifest = writeSkillManifest;
5
+ exports.readSkillManifest = readSkillManifest;
6
+ exports.compareToCliVersion = compareToCliVersion;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ exports.MANIFEST_FILENAME = '.ritual-bundle.json';
10
+ /**
11
+ * Write a manifest into `dir`. Used by the build-skills script.
12
+ *
13
+ * Always overwrites. `dir` must exist — caller is responsible for
14
+ * mkdir.
15
+ */
16
+ function writeSkillManifest(dir, manifest) {
17
+ const path = (0, node_path_1.join)(dir, exports.MANIFEST_FILENAME);
18
+ (0, node_fs_1.writeFileSync)(path, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
19
+ }
20
+ /**
21
+ * Read a manifest from `dir`. Returns `null` if absent or unparseable.
22
+ *
23
+ * Never throws — drift checks are best-effort and an unreadable
24
+ * manifest just means "we can't tell," not "crash the doctor."
25
+ */
26
+ function readSkillManifest(dir) {
27
+ const path = (0, node_path_1.join)(dir, exports.MANIFEST_FILENAME);
28
+ if (!(0, node_fs_1.existsSync)(path))
29
+ return null;
30
+ try {
31
+ const raw = (0, node_fs_1.readFileSync)(path, 'utf-8');
32
+ const parsed = JSON.parse(raw);
33
+ if (typeof parsed.cliVersion !== 'string' || parsed.cliVersion.length === 0) {
34
+ return null;
35
+ }
36
+ if (typeof parsed.builtAt !== 'string' || parsed.builtAt.length === 0) {
37
+ return null;
38
+ }
39
+ return { cliVersion: parsed.cliVersion, builtAt: parsed.builtAt };
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ function compareToCliVersion(manifest, cliVersion) {
46
+ if (!manifest)
47
+ return { kind: 'unknown' };
48
+ if (manifest.cliVersion === cliVersion) {
49
+ return { kind: 'in-sync', bundleVersion: manifest.cliVersion };
50
+ }
51
+ return { kind: 'drift', bundleVersion: manifest.cliVersion, cliVersion };
52
+ }
53
+ //# sourceMappingURL=skill-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-manifest.js","sourceRoot":"","sources":["../../src/lib/skill-manifest.ts"],"names":[],"mappings":";;;AA0CA,gDAGC;AAQD,8CAgBC;AAkBD,kDASC;AAhGD,qCAAkE;AAClE,yCAAiC;AAiCpB,QAAA,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,GAAW,EAAE,QAA6B;IAC5E,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,yBAAiB,CAAC,CAAC;IAC1C,IAAA,uBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,yBAAiB,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;QAC/D,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAkBD,SAAgB,mBAAmB,CAClC,QAAoC,EACpC,UAAkB;IAElB,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AAC1E,CAAC"}