@ritualai/cli 0.7.5 → 0.7.7

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 (49) hide show
  1. package/dist/commands/init.js +48 -25
  2. package/dist/commands/init.js.map +1 -1
  3. package/dist/commands/logout.js +1 -1
  4. package/dist/commands/logout.js.map +1 -1
  5. package/dist/lib/api-client.js +18 -0
  6. package/dist/lib/api-client.js.map +1 -1
  7. package/dist/lib/gitignore-update.js +121 -0
  8. package/dist/lib/gitignore-update.js.map +1 -0
  9. package/dist/lib/oidc.js +58 -16
  10. package/dist/lib/oidc.js.map +1 -1
  11. package/dist/lib/pat-store.js +146 -14
  12. package/dist/lib/pat-store.js.map +1 -1
  13. package/package.json +1 -1
  14. package/skills/claude-code/ritual/manifest.json +57 -0
  15. package/skills/claude-code/ritual/references/build-flow.md +174 -105
  16. package/skills/claude-code/ritual/references/cli-output-contract.md +89 -0
  17. package/skills/claude-code/ritual/references/context-pulse-flow.md +1 -1
  18. package/skills/claude-code/ritual/references/lineage-flow.md +7 -6
  19. package/skills/claude-code/ritual/references/resume-flow.md +4 -4
  20. package/skills/codex/ritual/manifest.json +57 -0
  21. package/skills/codex/ritual/references/build-flow.md +174 -105
  22. package/skills/codex/ritual/references/cli-output-contract.md +89 -0
  23. package/skills/codex/ritual/references/context-pulse-flow.md +1 -1
  24. package/skills/codex/ritual/references/lineage-flow.md +7 -6
  25. package/skills/codex/ritual/references/resume-flow.md +4 -4
  26. package/skills/cursor/ritual/manifest.json +57 -0
  27. package/skills/cursor/ritual/references/build-flow.md +174 -105
  28. package/skills/cursor/ritual/references/cli-output-contract.md +89 -0
  29. package/skills/cursor/ritual/references/context-pulse-flow.md +1 -1
  30. package/skills/cursor/ritual/references/lineage-flow.md +7 -6
  31. package/skills/cursor/ritual/references/resume-flow.md +4 -4
  32. package/skills/gemini/ritual/manifest.json +57 -0
  33. package/skills/gemini/ritual/references/build-flow.md +174 -105
  34. package/skills/gemini/ritual/references/cli-output-contract.md +89 -0
  35. package/skills/gemini/ritual/references/context-pulse-flow.md +1 -1
  36. package/skills/gemini/ritual/references/lineage-flow.md +7 -6
  37. package/skills/gemini/ritual/references/resume-flow.md +4 -4
  38. package/skills/kiro/ritual/manifest.json +57 -0
  39. package/skills/kiro/ritual/references/build-flow.md +174 -105
  40. package/skills/kiro/ritual/references/cli-output-contract.md +89 -0
  41. package/skills/kiro/ritual/references/context-pulse-flow.md +1 -1
  42. package/skills/kiro/ritual/references/lineage-flow.md +7 -6
  43. package/skills/kiro/ritual/references/resume-flow.md +4 -4
  44. package/skills/vscode/ritual/manifest.json +57 -0
  45. package/skills/vscode/ritual/references/build-flow.md +174 -105
  46. package/skills/vscode/ritual/references/cli-output-contract.md +89 -0
  47. package/skills/vscode/ritual/references/context-pulse-flow.md +1 -1
  48. package/skills/vscode/ritual/references/lineage-flow.md +7 -6
  49. package/skills/vscode/ritual/references/resume-flow.md +4 -4
@@ -4,32 +4,164 @@ exports.mintAgentPat = mintAgentPat;
4
4
  exports.defaultAgentTokenName = defaultAgentTokenName;
5
5
  const node_os_1 = require("node:os");
6
6
  const api_client_1 = require("./api-client");
7
+ const prompt_1 = require("./prompt");
8
+ const DEFAULT_WEB_APP_URL = 'https://app.ritualapp.cloud';
7
9
  async function mintAgentPat(opts) {
8
10
  const name = opts.nameOverride ?? defaultAgentTokenName();
9
- let response;
11
+ const webAppUrl = opts.webAppUrl ?? DEFAULT_WEB_APP_URL;
12
+ return mintWithCapRecovery(opts, name, webAppUrl);
13
+ }
14
+ /**
15
+ * Attempt to mint a PAT. On 409 (active-token cap reached — currently
16
+ * 10 per user, enforced in apps/api/src/modules/auth/tokens/pat.service.ts),
17
+ * try to recover automatically:
18
+ *
19
+ * 1. GET /auth/tokens to see what's outstanding.
20
+ * 2. Find existing tokens named for THIS hostname (very likely
21
+ * stale entries from prior `ritual init` runs on this machine).
22
+ * 3. If we find at least one, ask the user once whether we can
23
+ * revoke the oldest such token to free a slot.
24
+ * 4. On Y: revoke, then retry the mint exactly once.
25
+ * 5. On N (or no same-hostname tokens to revoke, or we already
26
+ * retried): re-raise with the corrected /u/tokens URL so the
27
+ * user can clean up manually.
28
+ *
29
+ * Why "same hostname only" rather than the absolute oldest:
30
+ * Tokens for OTHER devices (`Ritual CLI — work-laptop`) should
31
+ * never get auto-revoked by `ritual init` running on a different
32
+ * machine — that would break the user's other agents silently. We
33
+ * only ever rotate THIS machine's own historical tokens.
34
+ *
35
+ * The `retrying` flag prevents an infinite loop if revoke succeeds
36
+ * but a different concurrent caller mints another token before our
37
+ * retry. Single retry is enough; if it fails again, fall back to
38
+ * the manual-cleanup error.
39
+ */
40
+ async function mintWithCapRecovery(opts, name, webAppUrl, retrying = false) {
10
41
  try {
11
- response = await opts.api.post('/auth/tokens', {
42
+ const response = await opts.api.post('/auth/tokens', {
12
43
  name,
13
44
  scopes: opts.scopes ?? ['admin'],
14
45
  // undefined → service-layer default; null → no expiry.
15
46
  expiresInDays: opts.expiresInDays ?? 365,
16
47
  });
48
+ return {
49
+ plaintextToken: response.plaintextToken,
50
+ id: response.id,
51
+ name: response.name,
52
+ expiresAt: response.expiresAt,
53
+ };
17
54
  }
18
55
  catch (err) {
19
- if (err instanceof api_client_1.ApiError && err.status === 409) {
20
- // Active-token cap hit. Re-surface with a hint about the
21
- // management UI so the user can revoke an old one.
22
- throw new Error('Personal access token limit reached. Revoke an old token at ' +
23
- 'https://app.ritualapp.cloud/settings/tokens and re-run `ritual init`.');
56
+ if (!(err instanceof api_client_1.ApiError) || err.status !== 409)
57
+ throw err;
58
+ if (retrying) {
59
+ // Second-time hit on the cap means a concurrent caller is
60
+ // also minting; fall back to manual cleanup rather than
61
+ // looping. Rare; safe.
62
+ throw manualCleanupError(webAppUrl);
63
+ }
64
+ // Try to revoke an old token from THIS machine. Quiet about
65
+ // what we'd do unless we can actually do it (no false promises).
66
+ const candidate = await findOldestRevocableForThisHost(opts.api, name);
67
+ if (!candidate) {
68
+ // All 10 slots are taken by tokens NOT named for this
69
+ // machine — we won't touch them. User has to choose.
70
+ throw manualCleanupError(webAppUrl);
71
+ }
72
+ const accepted = await askToRevoke(candidate);
73
+ if (!accepted)
74
+ throw manualCleanupError(webAppUrl);
75
+ // Defensive: if DELETE fails (network blip, token already
76
+ // revoked by another caller, 5xx), fall back to the manual-
77
+ // cleanup error rather than surfacing a less-helpful ApiError.
78
+ // Behavior is identical to pre-0.7.7 (which couldn't auto-
79
+ // rotate at all) — we just don't make things worse on this
80
+ // edge.
81
+ try {
82
+ await opts.api.delete(`/auth/tokens/${candidate.id}`);
24
83
  }
25
- throw err;
84
+ catch {
85
+ throw manualCleanupError(webAppUrl);
86
+ }
87
+ console.error(` ✓ Revoked old token "${candidate.name}" (last used ${formatRelative(candidate.lastUsedAt)})`);
88
+ return mintWithCapRecovery(opts, name, webAppUrl, /* retrying */ true);
26
89
  }
27
- return {
28
- plaintextToken: response.plaintextToken,
29
- id: response.id,
30
- name: response.name,
31
- expiresAt: response.expiresAt,
32
- };
90
+ }
91
+ /**
92
+ * Fetch the user's active tokens, filter to ones named for the
93
+ * current host's `defaultAgentTokenName()` shape, and return the
94
+ * oldest. Returns `undefined` when there's nothing safely revocable
95
+ * (any of: GET fails, the response is empty, or no token matches
96
+ * this machine's name).
97
+ */
98
+ async function findOldestRevocableForThisHost(api, currentName) {
99
+ let list;
100
+ try {
101
+ list = await api.get('/auth/tokens');
102
+ }
103
+ catch {
104
+ // If we can't list, don't try to be clever — let the caller
105
+ // fall back to the manual-cleanup error.
106
+ return undefined;
107
+ }
108
+ const candidates = list.tokens.filter((t) => !t.revokedAt && t.name === currentName);
109
+ if (candidates.length === 0)
110
+ return undefined;
111
+ // Oldest first (createdAt ascending). The server returns
112
+ // createdAt descending; we just re-sort to be explicit.
113
+ candidates.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
114
+ return candidates[0];
115
+ }
116
+ async function askToRevoke(candidate) {
117
+ // CI / piped stdin / non-TTY → don't try to prompt. User has to
118
+ // clean up manually; we surface the same actionable error.
119
+ if (!process.stdin.isTTY)
120
+ return false;
121
+ const created = formatRelative(candidate.createdAt);
122
+ const lastUsed = candidate.lastUsedAt
123
+ ? formatRelative(candidate.lastUsedAt)
124
+ : 'never used';
125
+ const answer = (await (0, prompt_1.prompt)(`\n Access-token cap reached (10 active tokens). An older token from this machine\n` +
126
+ ` is available to rotate:\n` +
127
+ ` "${candidate.name}" · created ${created} · ${lastUsed}\n` +
128
+ ` Revoke it and continue? [Y/n]: `))
129
+ .trim()
130
+ .toLowerCase();
131
+ // Default-yes (empty input or 'y' / 'yes'). Anything else = no.
132
+ return answer === '' || answer === 'y' || answer === 'yes';
133
+ }
134
+ function manualCleanupError(webAppUrl) {
135
+ return new Error(`Personal access token limit reached. Revoke an old token at ${webAppUrl}/u/tokens ` +
136
+ 'and re-run `ritual init`.');
137
+ }
138
+ /**
139
+ * Format an ISO 8601 timestamp as "N days ago" / "N hours ago" /
140
+ * "just now". Kept tiny — no dep on date-fns / dayjs.
141
+ */
142
+ function formatRelative(iso) {
143
+ if (!iso)
144
+ return 'unknown';
145
+ const then = Date.parse(iso);
146
+ if (Number.isNaN(then))
147
+ return iso;
148
+ const diffMs = Date.now() - then;
149
+ const minutes = Math.floor(diffMs / 60_000);
150
+ if (minutes < 1)
151
+ return 'just now';
152
+ if (minutes < 60)
153
+ return `${minutes}m ago`;
154
+ const hours = Math.floor(minutes / 60);
155
+ if (hours < 24)
156
+ return `${hours}h ago`;
157
+ const days = Math.floor(hours / 24);
158
+ if (days < 30)
159
+ return `${days}d ago`;
160
+ const months = Math.floor(days / 30);
161
+ if (months < 12)
162
+ return `${months}mo ago`;
163
+ const years = Math.floor(days / 365);
164
+ return `${years}y ago`;
33
165
  }
34
166
  /**
35
167
  * `Ritual CLI — <hostname>`, truncated to fit the API's 80-char limit
@@ -1 +1 @@
1
- {"version":3,"file":"pat-store.js","sourceRoot":"","sources":["../../src/lib/pat-store.ts"],"names":[],"mappings":";;AA8EA,oCA6BC;AAOD,sDAIC;AAtHD,qCAAmC;AACnC,6CAAmD;AA6E5C,KAAK,UAAU,YAAY,CAAC,IAAoB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,qBAAqB,EAAE,CAAC;IAE1D,IAAI,QAA2B,CAAC;IAChC,IAAI,CAAC;QACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,cAAc,EAAE;YACjE,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;YAChC,uDAAuD;YACvD,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,GAAG;SACxC,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,qBAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACnD,yDAAyD;YACzD,mDAAmD;YACnD,MAAM,IAAI,KAAK,CACd,8DAA8D;gBAC7D,uEAAuE,CACxE,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC;IACX,CAAC;IAED,OAAO;QACN,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC7B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB;IACpC,MAAM,IAAI,GAAG,IAAA,kBAAQ,GAAE,IAAI,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAG,gBAAgB,IAAI,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"pat-store.js","sourceRoot":"","sources":["../../src/lib/pat-store.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.5",
3
+ "version": "0.7.7",
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",
@@ -0,0 +1,57 @@
1
+ [
2
+ {
3
+ "path": "DESIGN.md",
4
+ "lines": 36,
5
+ "bytes": 2226
6
+ },
7
+ {
8
+ "path": "SKILL.md",
9
+ "lines": 72,
10
+ "bytes": 5915
11
+ },
12
+ {
13
+ "path": "agents/openai.yaml",
14
+ "lines": 6,
15
+ "bytes": 213
16
+ },
17
+ {
18
+ "path": "references/async-polling.md",
19
+ "lines": 27,
20
+ "bytes": 1197
21
+ },
22
+ {
23
+ "path": "references/build-flow.md",
24
+ "lines": 1519,
25
+ "bytes": 88142
26
+ },
27
+ {
28
+ "path": "references/cli-output-contract.md",
29
+ "lines": 225,
30
+ "bytes": 11559
31
+ },
32
+ {
33
+ "path": "references/context-pulse-flow.md",
34
+ "lines": 357,
35
+ "bytes": 25358
36
+ },
37
+ {
38
+ "path": "references/discovery-classification.md",
39
+ "lines": 176,
40
+ "bytes": 10275
41
+ },
42
+ {
43
+ "path": "references/lineage-flow.md",
44
+ "lines": 154,
45
+ "bytes": 8774
46
+ },
47
+ {
48
+ "path": "references/resume-flow.md",
49
+ "lines": 157,
50
+ "bytes": 9950
51
+ },
52
+ {
53
+ "path": "references/scoring-fallback.md",
54
+ "lines": 126,
55
+ "bytes": 6494
56
+ }
57
+ ]