source dump of claude code
at main 92 lines 12 kB view raw
1import figures from 'figures'; 2import { homedir } from 'os'; 3import * as React from 'react'; 4import { Box, Text } from '../../ink.js'; 5import type { Step } from '../../projectOnboardingState.js'; 6import { formatCreditAmount, getCachedReferrerReward } from '../../services/api/referral.js'; 7import type { LogOption } from '../../types/logs.js'; 8import { getCwd } from '../../utils/cwd.js'; 9import { formatRelativeTimeAgo } from '../../utils/format.js'; 10import type { FeedConfig, FeedLine } from './Feed.js'; 11export function createRecentActivityFeed(activities: LogOption[]): FeedConfig { 12 const lines: FeedLine[] = activities.map(log => { 13 const time = formatRelativeTimeAgo(log.modified); 14 const description = log.summary && log.summary !== 'No prompt' ? log.summary : log.firstPrompt; 15 return { 16 text: description || '', 17 timestamp: time 18 }; 19 }); 20 return { 21 title: 'Recent activity', 22 lines, 23 footer: lines.length > 0 ? '/resume for more' : undefined, 24 emptyMessage: 'No recent activity' 25 }; 26} 27export function createWhatsNewFeed(releaseNotes: string[]): FeedConfig { 28 const lines: FeedLine[] = releaseNotes.map(note => { 29 if ("external" === 'ant') { 30 const match = note.match(/^(\d+\s+\w+\s+ago)\s+(.+)$/); 31 if (match) { 32 return { 33 timestamp: match[1], 34 text: match[2] || '' 35 }; 36 } 37 } 38 return { 39 text: note 40 }; 41 }); 42 const emptyMessage = "external" === 'ant' ? 'Unable to fetch latest claude-cli-internal commits' : 'Check the Claude Code changelog for updates'; 43 return { 44 title: "external" === 'ant' ? "What's new [ANT-ONLY: Latest CC commits]" : "What's new", 45 lines, 46 footer: lines.length > 0 ? '/release-notes for more' : undefined, 47 emptyMessage 48 }; 49} 50export function createProjectOnboardingFeed(steps: Step[]): FeedConfig { 51 const enabledSteps = steps.filter(({ 52 isEnabled 53 }) => isEnabled).sort((a, b) => Number(a.isComplete) - Number(b.isComplete)); 54 const lines: FeedLine[] = enabledSteps.map(({ 55 text, 56 isComplete 57 }) => { 58 const checkmark = isComplete ? `${figures.tick} ` : ''; 59 return { 60 text: `${checkmark}${text}` 61 }; 62 }); 63 const warningText = getCwd() === homedir() ? 'Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead.' : undefined; 64 if (warningText) { 65 lines.push({ 66 text: warningText 67 }); 68 } 69 return { 70 title: 'Tips for getting started', 71 lines 72 }; 73} 74export function createGuestPassesFeed(): FeedConfig { 75 const reward = getCachedReferrerReward(); 76 const subtitle = reward ? `Share Claude Code and earn ${formatCreditAmount(reward)} of extra usage` : 'Share Claude Code with friends'; 77 return { 78 title: '3 guest passes', 79 lines: [], 80 customContent: { 81 content: <> 82 <Box marginY={1}> 83 <Text color="claude">[] [] []</Text> 84 </Box> 85 <Text dimColor>{subtitle}</Text> 86 </>, 87 width: 48 88 }, 89 footer: '/passes' 90 }; 91} 92//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiaG9tZWRpciIsIlJlYWN0IiwiQm94IiwiVGV4dCIsIlN0ZXAiLCJmb3JtYXRDcmVkaXRBbW91bnQiLCJnZXRDYWNoZWRSZWZlcnJlclJld2FyZCIsIkxvZ09wdGlvbiIsImdldEN3ZCIsImZvcm1hdFJlbGF0aXZlVGltZUFnbyIsIkZlZWRDb25maWciLCJGZWVkTGluZSIsImNyZWF0ZVJlY2VudEFjdGl2aXR5RmVlZCIsImFjdGl2aXRpZXMiLCJsaW5lcyIsIm1hcCIsImxvZyIsInRpbWUiLCJtb2RpZmllZCIsImRlc2NyaXB0aW9uIiwic3VtbWFyeSIsImZpcnN0UHJvbXB0IiwidGV4dCIsInRpbWVzdGFtcCIsInRpdGxlIiwiZm9vdGVyIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZW1wdHlNZXNzYWdlIiwiY3JlYXRlV2hhdHNOZXdGZWVkIiwicmVsZWFzZU5vdGVzIiwibm90ZSIsIm1hdGNoIiwiY3JlYXRlUHJvamVjdE9uYm9hcmRpbmdGZWVkIiwic3RlcHMiLCJlbmFibGVkU3RlcHMiLCJmaWx0ZXIiLCJpc0VuYWJsZWQiLCJzb3J0IiwiYSIsImIiLCJOdW1iZXIiLCJpc0NvbXBsZXRlIiwiY2hlY2ttYXJrIiwidGljayIsIndhcm5pbmdUZXh0IiwicHVzaCIsImNyZWF0ZUd1ZXN0UGFzc2VzRmVlZCIsInJld2FyZCIsInN1YnRpdGxlIiwiY3VzdG9tQ29udGVudCIsImNvbnRlbnQiLCJ3aWR0aCJdLCJzb3VyY2VzIjpbImZlZWRDb25maWdzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmlndXJlcyBmcm9tICdmaWd1cmVzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tICcuLi8uLi9wcm9qZWN0T25ib2FyZGluZ1N0YXRlLmpzJ1xuaW1wb3J0IHtcbiAgZm9ybWF0Q3JlZGl0QW1vdW50LFxuICBnZXRDYWNoZWRSZWZlcnJlclJld2FyZCxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBpL3JlZmVycmFsLmpzJ1xuaW1wb3J0IHR5cGUgeyBMb2dPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9sb2dzLmpzJ1xuaW1wb3J0IHsgZ2V0Q3dkIH0gZnJvbSAnLi4vLi4vdXRpbHMvY3dkLmpzJ1xuaW1wb3J0IHsgZm9ybWF0UmVsYXRpdmVUaW1lQWdvIH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0LmpzJ1xuaW1wb3J0IHR5cGUgeyBGZWVkQ29uZmlnLCBGZWVkTGluZSB9IGZyb20gJy4vRmVlZC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlY2VudEFjdGl2aXR5RmVlZChhY3Rpdml0aWVzOiBMb2dPcHRpb25bXSk6IEZlZWRDb25maWcge1xuICBjb25zdCBsaW5lczogRmVlZExpbmVbXSA9IGFjdGl2aXRpZXMubWFwKGxvZyA9PiB7XG4gICAgY29uc3QgdGltZSA9IGZvcm1hdFJlbGF0aXZlVGltZUFnbyhsb2cubW9kaWZpZWQpXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgbG9nLnN1bW1hcnkgJiYgbG9nLnN1bW1hcnkgIT09ICdObyBwcm9tcHQnID8gbG9nLnN1bW1hcnkgOiBsb2cuZmlyc3RQcm9tcHRcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBkZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHRpbWVzdGFtcDogdGltZSxcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ1JlY2VudCBhY3Rpdml0eScsXG4gICAgbGluZXMsXG4gICAgZm9vdGVyOiBsaW5lcy5sZW5ndGggPiAwID8gJy9yZXN1bWUgZm9yIG1vcmUnIDogdW5kZWZpbmVkLFxuICAgIGVtcHR5TWVzc2FnZTogJ05vIHJlY2VudCBhY3Rpdml0eScsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdoYXRzTmV3RmVlZChyZWxlYXNlTm90ZXM6IHN0cmluZ1tdKTogRmVlZENvbmZpZyB7XG4gIGNvbnN0IGxpbmVzOiBGZWVkTGluZVtdID0gcmVsZWFzZU5vdGVzLm1hcChub3RlID0+IHtcbiAgICBpZiAoXCJleHRlcm5hbFwiID09PSAnYW50Jykge1xuICAgICAgY29uc3QgbWF0Y2ggPSBub3RlLm1hdGNoKC9eKFxcZCtcXHMrXFx3K1xccythZ28pXFxzKyguKykkLylcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpbWVzdGFtcDogbWF0Y2hbMV0sXG4gICAgICAgICAgdGV4dDogbWF0Y2hbMl0gfHwgJycsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IG5vdGUsXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGVtcHR5TWVzc2FnZSA9XG4gICAgXCJleHRlcm5hbFwiID09PSAnYW50J1xuICAgICAgPyAnVW5hYmxlIHRvIGZldGNoIGxhdGVzdCBjbGF1ZGUtY2xpLWludGVybmFsIGNvbW1pdHMnXG4gICAgICA6ICdDaGVjayB0aGUgQ2xhdWRlIENvZGUgY2hhbmdlbG9nIGZvciB1cGRhdGVzJ1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6XG4gICAgICBcImV4dGVybmFsXCIgPT09ICdhbnQnXG4gICAgICAgID8gXCJXaGF0J3MgbmV3IFtBTlQtT05MWTogTGF0ZXN0IENDIGNvbW1pdHNdXCJcbiAgICAgICAgOiBcIldoYXQncyBuZXdcIixcbiAgICBsaW5lcyxcbiAgICBmb290ZXI6IGxpbmVzLmxlbmd0aCA+IDAgPyAnL3JlbGVhc2Utbm90ZXMgZm9yIG1vcmUnIDogdW5kZWZpbmVkLFxuICAgIGVtcHR5TWVzc2FnZSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvamVjdE9uYm9hcmRpbmdGZWVkKHN0ZXBzOiBTdGVwW10pOiBGZWVkQ29uZmlnIHtcbiAgY29uc3QgZW5hYmxlZFN0ZXBzID0gc3RlcHNcbiAgICAuZmlsdGVyKCh7IGlzRW5hYmxlZCB9KSA9PiBpc0VuYWJsZWQpXG4gICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLmlzQ29tcGxldGUpIC0gTnVtYmVyKGIuaXNDb21wbGV0ZSkpXG5cbiAgY29uc3QgbGluZXM6IEZlZWRMaW5lW10gPSBlbmFibGVkU3RlcHMubWFwKCh7IHRleHQsIGlzQ29tcGxldGUgfSkgPT4ge1xuICAgIGNvbnN0IGNoZWNrbWFyayA9IGlzQ29tcGxldGUgPyBgJHtmaWd1cmVzLnRpY2t9IGAgOiAnJ1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBgJHtjaGVja21hcmt9JHt0ZXh0fWAsXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHdhcm5pbmdUZXh0ID1cbiAgICBnZXRDd2QoKSA9PT0gaG9tZWRpcigpXG4gICAgICA/ICdOb3RlOiBZb3UgaGF2ZSBsYXVuY2hlZCBjbGF1ZGUgaW4geW91ciBob21lIGRpcmVjdG9yeS4gRm9yIHRoZSBiZXN0IGV4cGVyaWVuY2UsIGxhdW5jaCBpdCBpbiBhIHByb2plY3QgZGlyZWN0b3J5IGluc3RlYWQuJ1xuICAgICAgOiB1bmRlZmluZWRcblxuICBpZiAod2FybmluZ1RleHQpIHtcbiAgICBsaW5lcy5wdXNoKHtcbiAgICAgIHRleHQ6IHdhcm5pbmdUZXh0LFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnVGlwcyBmb3IgZ2V0dGluZyBzdGFydGVkJyxcbiAgICBsaW5lcyxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RQYXNzZXNGZWVkKCk6IEZlZWRDb25maWcge1xuICBjb25zdCByZXdhcmQgPSBnZXRDYWNoZWRSZWZlcnJlclJld2FyZCgpXG4gIGNvbnN0IHN1YnRpdGxlID0gcmV3YXJkXG4gICAgPyBgU2hhcmUgQ2xhdWRlIENvZGUgYW5kIGVhcm4gJHtmb3JtYXRDcmVkaXRBbW91bnQocmV3YXJkKX0gb2YgZXh0cmEgdXNhZ2VgXG4gICAgOiAnU2hhcmUgQ2xhdWRlIENvZGUgd2l0aCBmcmllbmRzJ1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnMyBndWVzdCBwYXNzZXMnLFxuICAgIGxpbmVzOiBbXSxcbiAgICBjdXN0b21Db250ZW50OiB7XG4gICAgICBjb250ZW50OiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBtYXJnaW5ZPXsxfT5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiY2xhdWRlXCI+W+Kcu10gW+Kcu10gW+Kcu108L1RleHQ+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+e3N1YnRpdGxlfTwvVGV4dD5cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgd2lkdGg6IDQ4LFxuICAgIH0sXG4gICAgZm9vdGVyOiAnL3Bhc3NlcycsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsT0FBTyxNQUFNLFNBQVM7QUFDN0IsU0FBU0MsT0FBTyxRQUFRLElBQUk7QUFDNUIsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLGNBQWNDLElBQUksUUFBUSxpQ0FBaUM7QUFDM0QsU0FDRUMsa0JBQWtCLEVBQ2xCQyx1QkFBdUIsUUFDbEIsZ0NBQWdDO0FBQ3ZDLGNBQWNDLFNBQVMsUUFBUSxxQkFBcUI7QUFDcEQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxxQkFBcUIsUUFBUSx1QkFBdUI7QUFDN0QsY0FBY0MsVUFBVSxFQUFFQyxRQUFRLFFBQVEsV0FBVztBQUVyRCxPQUFPLFNBQVNDLHdCQUF3QkEsQ0FBQ0MsVUFBVSxFQUFFTixTQUFTLEVBQUUsQ0FBQyxFQUFFRyxVQUFVLENBQUM7RUFDNUUsTUFBTUksS0FBSyxFQUFFSCxRQUFRLEVBQUUsR0FBR0UsVUFBVSxDQUFDRSxHQUFHLENBQUNDLEdBQUcsSUFBSTtJQUM5QyxNQUFNQyxJQUFJLEdBQUdSLHFCQUFxQixDQUFDTyxHQUFHLENBQUNFLFFB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