Introduce optional gitCommitInfo as app-wide metadata.

This change adds an optional `gitCommitInfo` string to the app state,
which, if set by the GET_COMMIT_INFO environment variable when the
application is launched, will be displayed in the /about section. 

The `start.sh` and `build_package.sh` scripts set `GET_COMMIT_INFO` to
the most recent git commit's short hash if known, appending the string
"(local modifications)" if additional changes are detected beyond that
point.
This commit is contained in:
DeWitt Clinton
2025-05-27 08:17:40 -07:00
parent b3f52e215a
commit 43370ab0c5
8 changed files with 51 additions and 1 deletions

View File

@@ -68,12 +68,14 @@ async function main() {
const readUpResult = await readPackageUp({ cwd: __dirname }); const readUpResult = await readPackageUp({ cwd: __dirname });
const cliVersion = const cliVersion =
process.env.CLI_VERSION || readUpResult?.packageJson.version || 'unknown'; process.env.CLI_VERSION || readUpResult?.packageJson.version || 'unknown';
const gitCommitInfo = process.env.GIT_COMMIT_INFO || 'N/A';
render( render(
React.createElement(App, { React.createElement(App, {
config, config,
settings, settings,
cliVersion, cliVersion,
gitCommitInfo,
startupWarnings, startupWarnings,
}), }),
); );

View File

@@ -50,6 +50,7 @@ interface AppProps {
config: Config; config: Config;
settings: LoadedSettings; settings: LoadedSettings;
cliVersion: string; cliVersion: string;
gitCommitInfo?: string;
startupWarnings?: string[]; startupWarnings?: string[];
} }
@@ -57,6 +58,7 @@ export const App = ({
config, config,
settings, settings,
cliVersion, cliVersion,
gitCommitInfo: _gitCommitInfo,
startupWarnings = [], startupWarnings = [],
}: AppProps) => { }: AppProps) => {
const { history, addItem, clearItems } = useHistory(); const { history, addItem, clearItems } = useHistory();

View File

@@ -13,6 +13,7 @@ interface AboutBoxProps {
osVersion: string; osVersion: string;
sandboxEnv: string; sandboxEnv: string;
modelVersion: string; modelVersion: string;
gitCommitInfo?: string;
} }
export const AboutBox: React.FC<AboutBoxProps> = ({ export const AboutBox: React.FC<AboutBoxProps> = ({
@@ -20,6 +21,7 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
osVersion, osVersion,
sandboxEnv, sandboxEnv,
modelVersion, modelVersion,
gitCommitInfo,
}) => ( }) => (
<Box <Box
borderStyle="round" borderStyle="round"
@@ -44,6 +46,18 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
<Text>{cliVersion}</Text> <Text>{cliVersion}</Text>
</Box> </Box>
</Box> </Box>
{gitCommitInfo && gitCommitInfo !== 'N/A' && (
<Box flexDirection="row">
<Box width="35%">
<Text bold color={Colors.LightBlue}>
Git Commit
</Text>
</Box>
<Box>
<Text>{gitCommitInfo}</Text>
</Box>
</Box>
)}
<Box flexDirection="row"> <Box flexDirection="row">
<Box width="35%"> <Box width="35%">
<Text bold color={Colors.LightBlue}> <Text bold color={Colors.LightBlue}>

View File

@@ -53,6 +53,7 @@ export const HistoryItemDisplay: React.FC<HistoryItemDisplayProps> = ({
osVersion={item.osVersion} osVersion={item.osVersion}
sandboxEnv={item.sandboxEnv} sandboxEnv={item.sandboxEnv}
modelVersion={item.modelVersion} modelVersion={item.modelVersion}
gitCommitInfo={item.gitCommitInfo} // Added this line
/> />
)} )}
{item.type === 'tool_group' && ( {item.type === 'tool_group' && (

View File

@@ -56,6 +56,7 @@ export const useSlashCommandProcessor = (
osVersion: message.osVersion, osVersion: message.osVersion,
sandboxEnv: message.sandboxEnv, sandboxEnv: message.sandboxEnv,
modelVersion: message.modelVersion, modelVersion: message.modelVersion,
gitCommitInfo: message.gitCommitInfo, // Added this line
}; };
} else { } else {
historyItemContent = { historyItemContent = {
@@ -176,6 +177,7 @@ export const useSlashCommandProcessor = (
sandboxEnv = `sandbox-exec (${process.env.SEATBELT_PROFILE || 'unknown'})`; sandboxEnv = `sandbox-exec (${process.env.SEATBELT_PROFILE || 'unknown'})`;
} }
const modelVersion = config?.getModel() || 'Unknown'; const modelVersion = config?.getModel() || 'Unknown';
const gitCommitInfo = process.env.GIT_COMMIT_INFO || 'N/A';
addMessage({ addMessage({
type: MessageType.ABOUT, type: MessageType.ABOUT,
@@ -184,6 +186,7 @@ export const useSlashCommandProcessor = (
osVersion, osVersion,
sandboxEnv, sandboxEnv,
modelVersion, modelVersion,
gitCommitInfo,
}); });
}, },
}, },

View File

@@ -86,6 +86,7 @@ export type HistoryItemAbout = HistoryItemBase & {
osVersion: string; osVersion: string;
sandboxEnv: string; sandboxEnv: string;
modelVersion: string; modelVersion: string;
gitCommitInfo?: string;
}; };
export type HistoryItemToolGroup = HistoryItemBase & { export type HistoryItemToolGroup = HistoryItemBase & {
@@ -137,6 +138,7 @@ export type Message =
osVersion: string; osVersion: string;
sandboxEnv: string; sandboxEnv: string;
modelVersion: string; modelVersion: string;
gitCommitInfo?: string;
content?: string; // Optional content, not really used for ABOUT content?: string; // Optional content, not really used for ABOUT
}; };

View File

@@ -20,6 +20,19 @@ if [[ $(pwd) != *"/packages/"* ]]; then
exit 1 exit 1
fi fi
# Determine Git information
GIT_COMMIT_INFO="N/A"
if command -v git &> /dev/null && git rev-parse --is-inside-work-tree &> /dev/null; then
GIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "")
if [ -n "$GIT_HASH" ]; then
GIT_COMMIT_INFO="$GIT_HASH"
if [ -n "$(git status --porcelain)" ]; then
GIT_COMMIT_INFO="$GIT_COMMIT_INFO (local modifications)"
fi
fi
fi
export GIT_COMMIT_INFO
# clean dist directory # clean dist directory
# rm -rf dist/* # rm -rf dist/*

View File

@@ -32,6 +32,19 @@ if [ -n "${DEBUG:-}" ] && ! scripts/sandbox_command.sh -q; then
fi fi
node_args+=("./packages/cli" "$@") node_args+=("./packages/cli" "$@")
# Determine Git information
GIT_COMMIT_INFO="N/A"
if command -v git &> /dev/null && git rev-parse --is-inside-work-tree &> /dev/null; then
GIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "")
if [ -n "$GIT_HASH" ]; then
GIT_COMMIT_INFO="$GIT_HASH"
if [ -n "$(git status --porcelain)" ]; then
GIT_COMMIT_INFO="$GIT_COMMIT_INFO (local modifications)"
fi
fi
fi
# DEV=true to enable React Dev Tools (https://github.com/vadimdemedes/ink?tab=readme-ov-file#using-react-devtools) # DEV=true to enable React Dev Tools (https://github.com/vadimdemedes/ink?tab=readme-ov-file#using-react-devtools)
# CLI_VERSION to display in the app ui footer # CLI_VERSION to display in the app ui footer
CLI_VERSION='development' DEV=true node "${node_args[@]}" # GIT_COMMIT_INFO to display in the about box
GIT_COMMIT_INFO="${GIT_COMMIT_INFO}" CLI_VERSION='development' DEV=true node "${node_args[@]}"