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 cliVersion =
process.env.CLI_VERSION || readUpResult?.packageJson.version || 'unknown';
const gitCommitInfo = process.env.GIT_COMMIT_INFO || 'N/A';
render(
React.createElement(App, {
config,
settings,
cliVersion,
gitCommitInfo,
startupWarnings,
}),
);

View File

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

View File

@@ -13,6 +13,7 @@ interface AboutBoxProps {
osVersion: string;
sandboxEnv: string;
modelVersion: string;
gitCommitInfo?: string;
}
export const AboutBox: React.FC<AboutBoxProps> = ({
@@ -20,6 +21,7 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
osVersion,
sandboxEnv,
modelVersion,
gitCommitInfo,
}) => (
<Box
borderStyle="round"
@@ -44,6 +46,18 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
<Text>{cliVersion}</Text>
</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 width="35%">
<Text bold color={Colors.LightBlue}>

View File

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

View File

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

View File

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

View File

@@ -20,6 +20,19 @@ if [[ $(pwd) != *"/packages/"* ]]; then
exit 1
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
# rm -rf dist/*

View File

@@ -32,6 +32,19 @@ if [ -n "${DEBUG:-}" ] && ! scripts/sandbox_command.sh -q; then
fi
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)
# 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[@]}"