@ranger-testing/ranger-cli 1.0.14 → 1.1.1
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 +87 -324
- package/build/cli.js +76 -64
- package/build/cli.js.map +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/addEnv.js.map +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/clean.js.map +1 -1
- package/build/commands/dataMcpServer.js +1 -1
- package/build/commands/feature.js +94 -34
- package/build/commands/feature.js.map +1 -1
- package/build/commands/hook.js +28 -0
- package/build/commands/hook.js.map +1 -0
- package/build/commands/hooks/disable.js +30 -0
- package/build/commands/hooks/disable.js.map +1 -0
- package/build/commands/hooks/enable.js +48 -0
- package/build/commands/hooks/enable.js.map +1 -0
- package/build/commands/hooks/exitPlanMode.js +35 -0
- package/build/commands/hooks/exitPlanMode.js.map +1 -0
- package/build/commands/hooks/index.js +11 -0
- package/build/commands/hooks/index.js.map +1 -0
- package/build/commands/hooks/output.js +53 -0
- package/build/commands/hooks/output.js.map +1 -0
- package/build/commands/hooks/planReminder.js +46 -0
- package/build/commands/hooks/planReminder.js.map +1 -0
- package/build/commands/hooks/planStart.js +30 -0
- package/build/commands/hooks/planStart.js.map +1 -0
- package/build/commands/hooks/postEdit.js +43 -0
- package/build/commands/hooks/postEdit.js.map +1 -0
- package/build/commands/hooks/preCompact.js +30 -0
- package/build/commands/hooks/preCompact.js.map +1 -0
- package/build/commands/hooks/sessionEnd.js +21 -0
- package/build/commands/hooks/sessionEnd.js.map +1 -0
- package/build/commands/hooks/sessionStart.js +75 -0
- package/build/commands/hooks/sessionStart.js.map +1 -0
- package/build/commands/hooks/stopHook.js +54 -0
- package/build/commands/hooks/stopHook.js.map +1 -0
- package/build/commands/index.js +1 -3
- package/build/commands/index.js.map +1 -1
- package/build/commands/skillup.js +36 -70
- package/build/commands/skillup.js.map +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/start.js.map +1 -1
- package/build/commands/status.js +17 -21
- package/build/commands/status.js.map +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/updateEnv.js.map +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/claudePlugin.js +85 -0
- package/build/commands/utils/claudePlugin.js.map +1 -0
- package/build/commands/utils/cliSecret.js +1 -1
- package/build/commands/utils/desirePathLog.js +133 -0
- package/build/commands/utils/desirePathLog.js.map +1 -0
- package/build/commands/utils/featureApi.js +23 -0
- package/build/commands/utils/featureApi.js.map +1 -1
- package/build/commands/utils/git.js +44 -0
- package/build/commands/utils/git.js.map +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/sessionCache.js +282 -0
- package/build/commands/utils/sessionCache.js.map +1 -0
- package/build/commands/utils/skillContent.js +3 -3
- package/build/commands/utils/skillContent.js.map +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/skills.js.map +1 -1
- package/build/commands/verifyFeature.js +32 -3
- package/build/commands/verifyFeature.js.map +1 -1
- package/build/commands/verifyInBrowser.js +1 -1
- package/build/skills/ranger/SKILL.md +170 -0
- package/build/skills/ranger/create.md +151 -0
- package/build/skills/ranger/start.md +122 -0
- package/build/skills/{feature-tracker → ranger}/verify.md +48 -3
- package/package.json +2 -3
- package/build/commands/postEditHook.js +0 -25
- package/build/commands/postEditHook.js.map +0 -1
- package/build/commands/preCompactHook.js +0 -85
- package/build/commands/preCompactHook.js.map +0 -1
- package/build/commands/sessionStartHook.js +0 -64
- package/build/commands/sessionStartHook.js.map +0 -1
- package/build/commands/utils/mcpConfig.js +0 -1
- package/build/commands/utils/mcpConfig.js.map +0 -1
- package/build/skills/feature-tracker/SKILL.md +0 -163
- package/build/skills/feature-tracker/create.md +0 -114
- package/build/skills/feature-tracker/report.md +0 -159
- package/build/skills/feature-tracker/start.md +0 -93
|
@@ -3,8 +3,9 @@ import { join } from 'path';
|
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import inquirer from 'inquirer';
|
|
6
|
-
import { createFeature, listFeatures, getFeature, getFeatureReportMarkdown, listFeatureSessions, startSession, concludeSession, } from './utils/featureApi.js';
|
|
6
|
+
import { createFeature, listFeatures, getFeature, updateFeature, getFeatureReportMarkdown, listFeatureSessions, startSession, concludeSession, createChecklistItem, } from './utils/featureApi.js';
|
|
7
7
|
import { getRangerDir } from './utils/rangerRoot.js';
|
|
8
|
+
import { registerSession } from './utils/sessionCache.js';
|
|
8
9
|
// Active feature file name (relative to .ranger dir)
|
|
9
10
|
const ACTIVE_FEATURE_FILE = 'active-feature.txt';
|
|
10
11
|
/**
|
|
@@ -118,19 +119,11 @@ function getReviewStatusDisplay(feature) {
|
|
|
118
119
|
function displayFeature(feature, checklistItems) {
|
|
119
120
|
const devStatus = getDevStatusDisplay(feature);
|
|
120
121
|
const reviewStatus = getReviewStatusDisplay(feature);
|
|
121
|
-
console.log(`\n${devStatus.emoji} ${feature.name} (${feature.
|
|
122
|
+
console.log(`\n${devStatus.emoji} ${feature.name} (${feature.dashboardUrl})`);
|
|
122
123
|
console.log(` Dev Status: ${devStatus.label}`);
|
|
123
124
|
if (reviewStatus) {
|
|
124
125
|
console.log(` Review Status: ${reviewStatus.emoji} ${reviewStatus.label}`);
|
|
125
126
|
}
|
|
126
|
-
if (feature.stats) {
|
|
127
|
-
const { verifiedItems, totalItems, blockedItems } = feature.stats;
|
|
128
|
-
let progressStr = ` Progress: ${verifiedItems}/${totalItems}`;
|
|
129
|
-
if (blockedItems > 0) {
|
|
130
|
-
progressStr += ` (${blockedItems} blocked)`;
|
|
131
|
-
}
|
|
132
|
-
console.log(progressStr);
|
|
133
|
-
}
|
|
134
127
|
if (feature.description) {
|
|
135
128
|
console.log(` Description: ${feature.description}`);
|
|
136
129
|
}
|
|
@@ -166,6 +159,9 @@ function displayFeature(feature, checklistItems) {
|
|
|
166
159
|
if (item.status === 'blocked' && item.blockedReason) {
|
|
167
160
|
console.log(` Blocked: ${item.blockedReason}`);
|
|
168
161
|
}
|
|
162
|
+
if (item.status === 'incomplete' && item.incompleteReason) {
|
|
163
|
+
console.log(` Incomplete: ${item.incompleteReason}`);
|
|
164
|
+
}
|
|
169
165
|
if (item.status === 'canceled' && item.canceledReason) {
|
|
170
166
|
console.log(` Canceled: ${item.canceledReason}`);
|
|
171
167
|
}
|
|
@@ -196,6 +192,11 @@ export async function featureCreate(name, options) {
|
|
|
196
192
|
await setActiveFeatureId(feature.id);
|
|
197
193
|
// Start the session immediately so it's in_progress
|
|
198
194
|
await tryStartCurrentSession(feature.id);
|
|
195
|
+
// Register Claude session if provided via env var
|
|
196
|
+
const claudeSessionId = process.env.CLAUDE_SESSION_ID;
|
|
197
|
+
if (claudeSessionId) {
|
|
198
|
+
registerSession(claudeSessionId, feature.id);
|
|
199
|
+
}
|
|
199
200
|
console.log(`\n\u2705 Feature created: ${feature.id}`);
|
|
200
201
|
displayFeature(feature, feature.checklistItems);
|
|
201
202
|
console.log(`\n\u27a1\ufe0f Set as active feature`);
|
|
@@ -204,7 +205,10 @@ export async function featureCreate(name, options) {
|
|
|
204
205
|
* List features
|
|
205
206
|
*/
|
|
206
207
|
export async function featureList(options) {
|
|
207
|
-
const filters = {
|
|
208
|
+
const filters = {
|
|
209
|
+
limit: options.limit ?? 10,
|
|
210
|
+
offset: options.offset ?? 0,
|
|
211
|
+
};
|
|
208
212
|
if (options.currentBranch) {
|
|
209
213
|
filters.gitRepoUrl = getGitRepoUrl();
|
|
210
214
|
filters.gitBranch = getGitBranch();
|
|
@@ -214,7 +218,10 @@ export async function featureList(options) {
|
|
|
214
218
|
console.log('\nNo features found.');
|
|
215
219
|
return;
|
|
216
220
|
}
|
|
217
|
-
|
|
221
|
+
const showing = result.totalCount > result.items.length
|
|
222
|
+
? `Showing ${result.items.length} of ${result.totalCount}`
|
|
223
|
+
: `${result.totalCount} feature(s) found`;
|
|
224
|
+
console.log(`\n${showing}:\n`);
|
|
218
225
|
for (const feature of result.items) {
|
|
219
226
|
const devStatus = getDevStatusDisplay(feature);
|
|
220
227
|
const reviewStatus = getReviewStatusDisplay(feature);
|
|
@@ -224,19 +231,19 @@ export async function featureList(options) {
|
|
|
224
231
|
if (reviewStatus) {
|
|
225
232
|
console.log(` Review Status: ${reviewStatus.emoji} ${reviewStatus.label}`);
|
|
226
233
|
}
|
|
227
|
-
if (feature.stats) {
|
|
228
|
-
const { verifiedItems, totalItems, blockedItems } = feature.stats;
|
|
229
|
-
let progressStr = ` Progress: ${verifiedItems}/${totalItems}`;
|
|
230
|
-
if (blockedItems > 0) {
|
|
231
|
-
progressStr += ` (${blockedItems} blocked)`;
|
|
232
|
-
}
|
|
233
|
-
console.log(progressStr);
|
|
234
|
-
}
|
|
235
234
|
if (feature.gitBranch) {
|
|
236
235
|
console.log(` Branch: ${feature.gitBranch}`);
|
|
237
236
|
}
|
|
238
237
|
console.log('');
|
|
239
238
|
}
|
|
239
|
+
// Show next page command if there are more items
|
|
240
|
+
const currentLimit = filters.limit ?? 10;
|
|
241
|
+
const nextOffset = (filters.offset ?? 0) + result.items.length;
|
|
242
|
+
if (nextOffset < result.totalCount) {
|
|
243
|
+
const limitFlag = currentLimit !== 10 ? ` --limit ${currentLimit}` : '';
|
|
244
|
+
const branchFlag = options.currentBranch ? ' --current-branch' : '';
|
|
245
|
+
console.log(`Next page: ranger feature list --offset ${nextOffset}${limitFlag}${branchFlag}`);
|
|
246
|
+
}
|
|
240
247
|
}
|
|
241
248
|
/**
|
|
242
249
|
* Show feature details
|
|
@@ -245,33 +252,35 @@ export async function featureShow(id) {
|
|
|
245
252
|
const featureId = id || (await getActiveFeatureId());
|
|
246
253
|
if (!featureId) {
|
|
247
254
|
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
248
|
-
console.error('Run: ranger feature
|
|
255
|
+
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
249
256
|
process.exit(1);
|
|
250
257
|
}
|
|
251
258
|
const feature = await getFeature(featureId);
|
|
252
259
|
displayFeature(feature, feature.checklistItems);
|
|
253
260
|
}
|
|
254
|
-
/**
|
|
255
|
-
* Set active feature
|
|
256
|
-
*/
|
|
257
|
-
export async function featureUse(id) {
|
|
258
|
-
// Verify the feature exists
|
|
259
|
-
const feature = await getFeature(id);
|
|
260
|
-
await setActiveFeatureId(feature.id);
|
|
261
|
-
console.log(`\n\u2705 Active feature set to: ${feature.name} (${feature.id})`);
|
|
262
|
-
}
|
|
263
261
|
/**
|
|
264
262
|
* Resume feature matching current git context
|
|
265
263
|
* @param id Optional feature ID to resume directly (bypasses search/prompt)
|
|
266
264
|
*/
|
|
267
265
|
export async function featureResume(id) {
|
|
268
|
-
// If ID provided,
|
|
266
|
+
// If ID provided, set it as the active feature directly
|
|
269
267
|
if (id) {
|
|
270
268
|
const feature = await getFeature(id);
|
|
271
269
|
await setActiveFeatureId(feature.id);
|
|
270
|
+
// Update the feature's gitBranch to the current branch
|
|
271
|
+
const currentBranch = getGitBranch();
|
|
272
|
+
if (currentBranch && currentBranch !== feature.gitBranch) {
|
|
273
|
+
await updateFeature(feature.id, { gitBranch: currentBranch });
|
|
274
|
+
console.log(` Updated branch to: ${currentBranch}`);
|
|
275
|
+
}
|
|
272
276
|
console.log(`\n\u2705 Resumed feature: ${feature.name} (${feature.id})`);
|
|
273
277
|
// Start the current session if it's ready
|
|
274
278
|
await tryStartCurrentSession(feature.id);
|
|
279
|
+
// Register Claude session if provided via env var
|
|
280
|
+
const claudeSessionId = process.env.CLAUDE_SESSION_ID;
|
|
281
|
+
if (claudeSessionId) {
|
|
282
|
+
registerSession(claudeSessionId, feature.id);
|
|
283
|
+
}
|
|
275
284
|
displayFeature(feature, feature.checklistItems);
|
|
276
285
|
return;
|
|
277
286
|
}
|
|
@@ -298,7 +307,23 @@ export async function featureResume(id) {
|
|
|
298
307
|
selectedFeature = activeFeatures[0];
|
|
299
308
|
}
|
|
300
309
|
else {
|
|
301
|
-
// Multiple matches -
|
|
310
|
+
// Multiple matches - check if we're in interactive mode
|
|
311
|
+
const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
|
|
312
|
+
if (!isInteractive) {
|
|
313
|
+
// Non-interactive mode: list features and require explicit ID
|
|
314
|
+
console.log('\nNon-interactive mode detected. Multiple features found:');
|
|
315
|
+
for (const f of activeFeatures) {
|
|
316
|
+
const devStatus = getDevStatusDisplay(f);
|
|
317
|
+
console.log(` ${devStatus.emoji} ${f.name}`);
|
|
318
|
+
console.log(` ID: ${f.id}`);
|
|
319
|
+
if (f.gitBranch) {
|
|
320
|
+
console.log(` Branch: ${f.gitBranch}`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
console.error('\nPlease specify the feature ID: ranger feature resume <id>');
|
|
324
|
+
process.exit(1);
|
|
325
|
+
}
|
|
326
|
+
// Interactive mode: prompt user to select
|
|
302
327
|
const { selected } = await inquirer.prompt([
|
|
303
328
|
{
|
|
304
329
|
type: 'list',
|
|
@@ -313,11 +338,21 @@ export async function featureResume(id) {
|
|
|
313
338
|
selectedFeature = activeFeatures.find((f) => f.id === selected);
|
|
314
339
|
}
|
|
315
340
|
await setActiveFeatureId(selectedFeature.id);
|
|
341
|
+
// Update the feature's gitBranch to the current branch
|
|
342
|
+
if (gitBranch && gitBranch !== selectedFeature.gitBranch) {
|
|
343
|
+
await updateFeature(selectedFeature.id, { gitBranch });
|
|
344
|
+
console.log(` Updated branch to: ${gitBranch}`);
|
|
345
|
+
}
|
|
316
346
|
console.log(`\n\u2705 Resumed feature: ${selectedFeature.name} (${selectedFeature.id})`);
|
|
317
347
|
// Start the current session if it's ready
|
|
318
348
|
await tryStartCurrentSession(selectedFeature.id);
|
|
319
|
-
//
|
|
349
|
+
// Register Claude session if provided via env var
|
|
320
350
|
const fullFeature = await getFeature(selectedFeature.id);
|
|
351
|
+
const claudeSessionId = process.env.CLAUDE_SESSION_ID;
|
|
352
|
+
if (claudeSessionId) {
|
|
353
|
+
registerSession(claudeSessionId, fullFeature.id);
|
|
354
|
+
}
|
|
355
|
+
// Show current status
|
|
321
356
|
displayFeature(fullFeature, fullFeature.checklistItems);
|
|
322
357
|
}
|
|
323
358
|
/**
|
|
@@ -368,7 +403,7 @@ export async function featureConcludeSession(id) {
|
|
|
368
403
|
const featureId = id || (await getActiveFeatureId());
|
|
369
404
|
if (!featureId) {
|
|
370
405
|
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
371
|
-
console.error('Run: ranger feature
|
|
406
|
+
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
372
407
|
process.exit(1);
|
|
373
408
|
}
|
|
374
409
|
const feature = await getFeature(featureId);
|
|
@@ -426,4 +461,29 @@ export async function featureSessions(id) {
|
|
|
426
461
|
console.log('');
|
|
427
462
|
}
|
|
428
463
|
}
|
|
464
|
+
/**
|
|
465
|
+
* Add a checklist item to the active feature
|
|
466
|
+
*/
|
|
467
|
+
export async function featureAddChecklistItem(description, id) {
|
|
468
|
+
const featureId = id || (await getActiveFeatureId());
|
|
469
|
+
if (!featureId) {
|
|
470
|
+
console.error('\n\u274c No feature ID provided and no active feature set.');
|
|
471
|
+
console.error('Run: ranger feature resume <id> to set an active feature');
|
|
472
|
+
process.exit(1);
|
|
473
|
+
}
|
|
474
|
+
const feature = await getFeature(featureId);
|
|
475
|
+
// Check if there's an active (non-submitted) review
|
|
476
|
+
if (feature.latestReview && !feature.latestReview.submittedAt) {
|
|
477
|
+
console.error('\n\u274c Cannot add checklist item: feature has an active review.');
|
|
478
|
+
console.error('Please finish your review first:');
|
|
479
|
+
console.error(` ${feature.dashboardUrl}`);
|
|
480
|
+
process.exit(1);
|
|
481
|
+
}
|
|
482
|
+
// Create the checklist item
|
|
483
|
+
await createChecklistItem(featureId, description);
|
|
484
|
+
// Refetch and display the updated feature
|
|
485
|
+
const updatedFeature = await getFeature(featureId);
|
|
486
|
+
console.log(`\n\u2705 Checklist item added`);
|
|
487
|
+
displayFeature(updatedFeature, updatedFeature.checklistItems);
|
|
488
|
+
}
|
|
429
489
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { sessionStart, sessionEnd, preCompact, postEdit, planStart, planReminder, exitPlanMode, stopHook, enable, disable, } from './hooks/index.js';
|
|
2
|
+
const HOOKS = {
|
|
3
|
+
'session-start': sessionStart,
|
|
4
|
+
'session-end': sessionEnd,
|
|
5
|
+
'pre-compact': preCompact,
|
|
6
|
+
'post-edit': postEdit,
|
|
7
|
+
'plan-start': planStart,
|
|
8
|
+
'plan-reminder': planReminder,
|
|
9
|
+
'exit-plan-mode': exitPlanMode,
|
|
10
|
+
stop: stopHook,
|
|
11
|
+
enable: enable,
|
|
12
|
+
disable: disable,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Unified hook command handler for Claude Code plugin.
|
|
16
|
+
* Routes to the appropriate hook based on the --name parameter.
|
|
17
|
+
*/
|
|
18
|
+
export async function hook(name) {
|
|
19
|
+
const hookFn = HOOKS[name];
|
|
20
|
+
if (!hookFn) {
|
|
21
|
+
const validNames = Object.keys(HOOKS).join(', ');
|
|
22
|
+
console.error(`Unknown hook: ${name}`);
|
|
23
|
+
console.error(`Valid hooks: ${validNames}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
await hookFn();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,OAAO,GACV,MAAM,kBAAkB,CAAC;AAc1B,MAAM,KAAK,GAA0C;IACjD,eAAe,EAAE,YAAY;IAC7B,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,YAAY;IAC9B,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAgB,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { disableSession, disableBranch, getCurrentBranch, } from '../utils/sessionCache.js';
|
|
2
|
+
import { printBlock } from './output.js';
|
|
3
|
+
/**
|
|
4
|
+
* Disable hook - disables Ranger hooks for this Claude session and current branch
|
|
5
|
+
*/
|
|
6
|
+
export async function disable() {
|
|
7
|
+
const sessionId = process.env.CLAUDE_SESSION_ID || '';
|
|
8
|
+
if (!sessionId) {
|
|
9
|
+
console.error('Error: CLAUDE_SESSION_ID not found in environment.');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
// Disable hooks for this session
|
|
13
|
+
disableSession(sessionId);
|
|
14
|
+
// Also disable the current branch if not on main/master
|
|
15
|
+
const branch = getCurrentBranch();
|
|
16
|
+
if (branch && branch !== 'main' && branch !== 'master') {
|
|
17
|
+
disableBranch(branch);
|
|
18
|
+
}
|
|
19
|
+
printBlock(`# RANGER DISABLED
|
|
20
|
+
|
|
21
|
+
The user has expressly disabled Ranger hooks for this session${branch && branch !== 'main' && branch !== 'master' ? ` and branch '${branch}'` : ''}.
|
|
22
|
+
|
|
23
|
+
**IMPORTANT INSTRUCTIONS:**
|
|
24
|
+
- Do NOT use the /ranger skill
|
|
25
|
+
- Do NOT use any \`ranger\` CLI commands
|
|
26
|
+
- Proceed with your task without tracking features using the Ranger CLI
|
|
27
|
+
|
|
28
|
+
To re-enable Ranger, run \`/ranger:enable\`.`);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=disable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/hooks/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,aAAa,EACb,gBAAgB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,iCAAiC;IACjC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE1B,wDAAwD;IACxD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrD,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC;;+DAEgD,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;6CAOrG,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { enableSession, getCurrentBranch } from '../utils/sessionCache.js';
|
|
2
|
+
import { getToken } from '../utils/keychain.js';
|
|
3
|
+
import { getRangerSkillContent } from '../utils/skillContent.js';
|
|
4
|
+
import { printBlock } from './output.js';
|
|
5
|
+
/**
|
|
6
|
+
* Enable hook - enables Ranger hooks for this Claude session
|
|
7
|
+
*/
|
|
8
|
+
export async function enable() {
|
|
9
|
+
const sessionId = process.env.CLAUDE_SESSION_ID || '';
|
|
10
|
+
if (!sessionId) {
|
|
11
|
+
console.error('Error: CLAUDE_SESSION_ID not found in environment.');
|
|
12
|
+
console.error('Make sure Ranger hooks are properly configured.');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
// Check if CLI is configured (has token)
|
|
16
|
+
const token = await getToken();
|
|
17
|
+
if (!token) {
|
|
18
|
+
printBlock(`# RANGER SETUP REQUIRED
|
|
19
|
+
|
|
20
|
+
The Ranger CLI is not configured. To get started:
|
|
21
|
+
|
|
22
|
+
1. Install: \`npm install -g @ranger-testing/ranger-cli\`
|
|
23
|
+
2. Get token: https://dashboard.ranger.net/cli
|
|
24
|
+
3. Initialize: \`ranger start <your-token>\`
|
|
25
|
+
|
|
26
|
+
Restart your Claude Code session after setup.`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Enable hooks for this session (and auto-enable branch if not on main)
|
|
30
|
+
enableSession(sessionId);
|
|
31
|
+
const branch = getCurrentBranch();
|
|
32
|
+
const branchNote = branch && branch !== 'main' && branch !== 'master'
|
|
33
|
+
? `\n\n**Branch '${branch}' is now enabled** - Ranger will stay active on this branch across sessions.`
|
|
34
|
+
: '';
|
|
35
|
+
// Output the skill prompt
|
|
36
|
+
const skillContent = getRangerSkillContent();
|
|
37
|
+
printBlock(`# RANGER ENABLED${branchNote}
|
|
38
|
+
|
|
39
|
+
**For ANY UI work, you MUST use the /ranger skill.**
|
|
40
|
+
|
|
41
|
+
${skillContent}
|
|
42
|
+
|
|
43
|
+
## Quick Reference
|
|
44
|
+
|
|
45
|
+
**In plan mode:** Include Ranger Feature Specification at end of plan.
|
|
46
|
+
**Not in plan mode:** Run \`ranger feature create\` FIRST, then verify with \`ranger verify-feature\`.`);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=enable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/commands/hooks/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,yCAAyC;IACzC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,UAAU,CAAC;;;;;;;;8CAQ2B,CAAC,CAAC;QACxC,OAAO;IACX,CAAC;IAED,wEAAwE;IACxE,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,UAAU,GACZ,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;QAC9C,CAAC,CAAC,iBAAiB,MAAM,8EAA8E;QACvG,CAAC,CAAC,EAAE,CAAC;IAEb,0BAA0B;IAC1B,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAE7C,UAAU,CAAC,mBAAmB,UAAU;;;;EAI1C,YAAY;;;;;uGAKyF,CAAC,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { printBlock, getEnabledSessionId } from './output.js';
|
|
2
|
+
/**
|
|
3
|
+
* PermissionRequest hook handler for ExitPlanMode
|
|
4
|
+
*
|
|
5
|
+
* This command is invoked when Claude requests permission to exit plan mode.
|
|
6
|
+
* It reminds Claude to create a Ranger feature to track the work.
|
|
7
|
+
*/
|
|
8
|
+
export async function exitPlanMode() {
|
|
9
|
+
const sessionId = await getEnabledSessionId();
|
|
10
|
+
if (!sessionId) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
printBlock(`=== RANGER: CREATE FEATURE NOW ===
|
|
14
|
+
|
|
15
|
+
You are about to exit plan mode. If your plan includes UI changes:
|
|
16
|
+
|
|
17
|
+
**ACTION REQUIRED:** Create the Ranger feature using items from your Ranger Feature Specification:
|
|
18
|
+
|
|
19
|
+
\`\`\`
|
|
20
|
+
ranger feature create "<Feature Name from plan>" \\
|
|
21
|
+
-d "<Description from plan>" \\
|
|
22
|
+
-c "<Checklist item 1 from plan>" \\
|
|
23
|
+
-c "<Checklist item 2 from plan>"
|
|
24
|
+
\`\`\`
|
|
25
|
+
|
|
26
|
+
**REMINDER:** Checklist items must be E2E user flows, NOT implementation tasks.
|
|
27
|
+
|
|
28
|
+
**Good:** "User can log in with valid credentials and see dashboard"
|
|
29
|
+
**Bad:** "Add form validation" or "API returns 200"
|
|
30
|
+
|
|
31
|
+
If you did NOT include a Ranger Feature Specification in your plan, go back and add one before proceeding. See /ranger and create.md for guidance.
|
|
32
|
+
|
|
33
|
+
=== END ===`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=exitPlanMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exitPlanMode.js","sourceRoot":"","sources":["../../../src/commands/hooks/exitPlanMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;YAoBH,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { sessionStart } from './sessionStart.js';
|
|
2
|
+
export { sessionEnd } from './sessionEnd.js';
|
|
3
|
+
export { preCompact } from './preCompact.js';
|
|
4
|
+
export { postEdit } from './postEdit.js';
|
|
5
|
+
export { planStart } from './planStart.js';
|
|
6
|
+
export { planReminder } from './planReminder.js';
|
|
7
|
+
export { exitPlanMode } from './exitPlanMode.js';
|
|
8
|
+
export { stopHook } from './stopHook.js';
|
|
9
|
+
export { enable } from './enable.js';
|
|
10
|
+
export { disable } from './disable.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { isSessionEnabled } from '../utils/sessionCache.js';
|
|
2
|
+
/**
|
|
3
|
+
* Helper utilities for hooks
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Print a block of text with consistent formatting.
|
|
7
|
+
* Handles multi-line strings cleanly without repeated console.log calls.
|
|
8
|
+
*/
|
|
9
|
+
export function printBlock(text) {
|
|
10
|
+
console.log(text);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read and parse hook input from stdin.
|
|
14
|
+
* Returns null if parsing fails.
|
|
15
|
+
*/
|
|
16
|
+
export async function readHookInput() {
|
|
17
|
+
let input = '';
|
|
18
|
+
for await (const chunk of process.stdin) {
|
|
19
|
+
input += chunk;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(input);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read hook input and check if session is enabled.
|
|
30
|
+
* Returns session_id if enabled, null otherwise.
|
|
31
|
+
* Use this as the standard guard at the start of most hooks.
|
|
32
|
+
*/
|
|
33
|
+
export async function getEnabledSessionId() {
|
|
34
|
+
const input = await readHookInput();
|
|
35
|
+
const sessionId = input?.session_id;
|
|
36
|
+
if (!sessionId || !isSessionEnabled(sessionId)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return sessionId;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Read hook input and return full context for hooks that need more data.
|
|
43
|
+
* Returns null if session not enabled.
|
|
44
|
+
*/
|
|
45
|
+
export async function getEnabledHookContext() {
|
|
46
|
+
const input = await readHookInput();
|
|
47
|
+
const sessionId = input?.session_id;
|
|
48
|
+
if (!sessionId || !isSessionEnabled(sessionId)) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return { sessionId, input };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/commands/hooks/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAWD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,KAAK,IAAI,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAc,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC;IAEpC,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IAIvC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC;IAEpC,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { printBlock, getEnabledHookContext } from './output.js';
|
|
2
|
+
import { shouldShowPlanReminder } from '../utils/sessionCache.js';
|
|
3
|
+
/**
|
|
4
|
+
* Plan reminder hook handler
|
|
5
|
+
*
|
|
6
|
+
* This command is invoked on UserPromptSubmit, SubagentStop, and PostToolUse.
|
|
7
|
+
* It checks if in plan mode and shows the Ranger reminder (max once per 5 mins per session).
|
|
8
|
+
*/
|
|
9
|
+
export async function planReminder() {
|
|
10
|
+
const ctx = await getEnabledHookContext();
|
|
11
|
+
if (!ctx) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// Only show in plan mode
|
|
15
|
+
if (ctx.input.permission_mode !== 'plan') {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// Check if we should show the reminder (rate limited per session)
|
|
19
|
+
if (!shouldShowPlanReminder(ctx.sessionId)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
printBlock(`=== RANGER: ACTION REQUIRED ===
|
|
23
|
+
|
|
24
|
+
If this plan involves ANY UI changes, you MUST:
|
|
25
|
+
|
|
26
|
+
1. **READ /ranger skill NOW** - specifically the create.md instructions
|
|
27
|
+
2. **Add a Ranger Feature Specification** to the end of your plan
|
|
28
|
+
|
|
29
|
+
DO NOT write checklist items without reading create.md first.
|
|
30
|
+
Checklist items are E2E test scenarios, NOT implementation tasks.
|
|
31
|
+
|
|
32
|
+
Your plan must end with:
|
|
33
|
+
\`\`\`
|
|
34
|
+
### Ranger Feature Specification (create this first with \`ranger feature create\`)
|
|
35
|
+
Feature Name: <name>
|
|
36
|
+
Description: <description>
|
|
37
|
+
Checklist:
|
|
38
|
+
1. <E2E user flow that can be verified in browser>
|
|
39
|
+
2. <another E2E user flow if needed>
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
Then run: \`ranger feature create "<name>" -d "<desc>" -c "<item1>" -c "<item2>"\`
|
|
43
|
+
|
|
44
|
+
=== END ===`);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=planReminder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planReminder.js","sourceRoot":"","sources":["../../../src/commands/hooks/planReminder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,GAAG,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO;IACX,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;QACvC,OAAO;IACX,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO;IACX,CAAC;IAED,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;YAsBH,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { printBlock, getEnabledSessionId } from './output.js';
|
|
2
|
+
/**
|
|
3
|
+
* SubagentStart hook handler for Plan mode
|
|
4
|
+
*
|
|
5
|
+
* This command is invoked when Claude enters plan mode (Plan subagent starts).
|
|
6
|
+
* It reminds Claude to include Ranger checklist items as part of the planning process.
|
|
7
|
+
*/
|
|
8
|
+
export async function planStart() {
|
|
9
|
+
const sessionId = await getEnabledSessionId();
|
|
10
|
+
if (!sessionId) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
printBlock(`=== RANGER: ACTION REQUIRED ===
|
|
14
|
+
|
|
15
|
+
If this plan involves UI changes, you MUST:
|
|
16
|
+
|
|
17
|
+
1. **READ /ranger skill** - specifically create.md
|
|
18
|
+
2. **Add a Ranger Feature Specification** at the end of your plan
|
|
19
|
+
|
|
20
|
+
Checklist items are E2E test scenarios, NOT implementation tasks.
|
|
21
|
+
|
|
22
|
+
**Good:** "User can log in with valid credentials and see dashboard"
|
|
23
|
+
**Bad:** "Add form validation" or "Button is visible"
|
|
24
|
+
|
|
25
|
+
After planning, run:
|
|
26
|
+
\`ranger feature create "<name>" -d "<desc>" -c "<E2E flow 1>" -c "<E2E flow 2>"\`
|
|
27
|
+
|
|
28
|
+
=== END ===`);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=planStart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planStart.js","sourceRoot":"","sources":["../../../src/commands/hooks/planStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,UAAU,CAAC;;;;;;;;;;;;;;;YAeH,CAAC,CAAC;AACd,CAAC"}
|