Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/plugins/google/src/react/AddGoogleSource.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export default function AddGoogleSource(props: {
return (
<div className="flex flex-1 flex-col gap-6">
<div>
<h1 className="text-xl font-semibold text-foreground">Add Google</h1>
<h1 className="text-xl font-semibold text-foreground">Add Google integration</h1>
<p className="mt-1 text-[13px] text-muted-foreground">
Bundle Google APIs into one integration with a shared OAuth consent.
</p>
Expand Down
8 changes: 4 additions & 4 deletions packages/plugins/graphql/src/react/AddGraphqlSource.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ export default function AddGraphqlSource(props: {

return (
<div className="flex flex-1 flex-col gap-6">
<h1 className="text-xl font-semibold text-foreground">Add GraphQL Source</h1>
<h1 className="text-xl font-semibold text-foreground">Add GraphQL integration</h1>

<GraphqlSourceFields
endpoint={endpoint}
Expand All @@ -143,8 +143,8 @@ export default function AddGraphqlSource(props: {
<AuthMethodListEditor
list={authMethodList}
allowedKinds={["none", "apikey"]}
emptyHint="No authentication declared. Add a method, or add the source without auth and connect an account from the integration page later."
footerHint="Every method here is registered with the source. Connect an account from the integration page after adding."
emptyHint="No authentication declared. Add a method, or add the integration without auth and connect an account from the integration page later."
footerHint="Every method here is registered with the integration. Connect an account from the integration page after adding."
/>

{slugAlreadyExists && !adding && <SlugCollisionAlert slug={resolvedSlug} />}
Expand All @@ -156,7 +156,7 @@ export default function AddGraphqlSource(props: {
Cancel
</Button>
<Button onClick={() => void handleAdd()} disabled={!canAdd} loading={adding}>
Add source
Add integration
</Button>
</FloatActions>
</div>
Expand Down
6 changes: 3 additions & 3 deletions packages/plugins/mcp/src/react/AddMcpSource.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ export default function AddMcpSource(props: {
return (
<div className="flex flex-1 flex-col gap-6">
<div>
<h1 className="text-xl font-semibold text-foreground">Add MCP Source</h1>
<h1 className="text-xl font-semibold text-foreground">Add MCP integration</h1>
<p className="mt-1 text-[13px] text-muted-foreground">
Connect to an MCP server to discover and use its tools.
</p>
Expand Down Expand Up @@ -473,7 +473,7 @@ export default function AddMcpSource(props: {
</Button>
{(probe || isProbing) && (
<Button type="button" onClick={handleAddRemote} disabled={!canAdd} loading={isAdding}>
Add source
Add integration
</Button>
)}
</FloatActions>
Expand Down Expand Up @@ -542,7 +542,7 @@ export default function AddMcpSource(props: {
disabled={!stdioCommand.trim() || stdioSlugExists}
loading={stdioAdding}
>
Add source
Add integration
</Button>
</FloatActions>
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export default function AddMicrosoftSource(props: {
return (
<div className="flex flex-1 flex-col gap-6">
<div>
<h1 className="text-xl font-semibold text-foreground">Add Microsoft Graph</h1>
<h1 className="text-xl font-semibold text-foreground">Add Microsoft integration</h1>
<p className="mt-1 text-[13px] text-muted-foreground">
Pick Microsoft 365 workloads and connect them through one delegated OAuth consent.
</p>
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/pages/api-keys.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ export function ApiKeysPage() {
<CopyButton value="Authorization: Bearer <api-key>" />
</div>
<p className="mt-2 max-w-2xl text-xs leading-5 text-muted-foreground">
API keys work as PATs and have full access to your account.
API keys work like personal access tokens and have full access to your account.
</p>
</PageHeader>

Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/pages/policies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ export function PoliciesPage() {
<PageContainer>
<PageHeader
title="Policies"
description="Override default approval behavior for tools. The most restrictive matched action wins. Blocked tools are hidden from agent search and fail at invoke."
description="Decide which tools run automatically, which ask for approval, and which are blocked. The most restrictive matching rule wins; blocked tools are hidden from agents."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 "fail at invoke" behavior dropped from description

The old description stated "Blocked tools are hidden from agent search and fail at invoke." The new description only says "blocked tools are hidden from agents," omitting what happens when a blocked tool is invoked directly (e.g., via API or explicit tool call). A user who sees the block is silent-to-agents might assume invocation still works through another path and be surprised by an error at runtime.

/>

<div className="mb-8">
Expand Down
22 changes: 16 additions & 6 deletions packages/react/src/pages/secrets.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,21 @@ import { isAsyncResultLoading } from "../lib/async-result";
// ---------------------------------------------------------------------------

const PROVIDER_LABELS: Record<string, string> = {
default: "Default store",
encrypted: "Encrypted store",
keychain: "Keychain",
file: "Local file",
memory: "Memory",
onepassword: "1Password",
"workos-vault": "WorkOS Vault",
};

const providerLabel = (key: string): string => PROVIDER_LABELS[key] ?? key;
const providerLabel = (key: string): string =>
PROVIDER_LABELS[key] ??
key
.split(/[-_]/g)
.filter(Boolean)
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
.join(" ");

export function SecretsPage(props: { showProviderInfo?: boolean }) {
useExecutorDocumentTitle("Providers");
Expand Down Expand Up @@ -117,13 +123,17 @@ export function SecretsPage(props: { showProviderInfo?: boolean }) {
<span className="min-w-0 shrink truncate">
{providerLabel(String(key))}
</span>
<span className="max-w-40 shrink truncate font-mono text-xs text-muted-foreground">
{String(key)}
</span>
</CardStackEntryTitle>
<CardStackEntryDescription>
{String(key) === "encrypted"
? "Values you paste are encrypted and stored in this instance's database."
: `${providerLabel(String(key))} credential provider.`}
</CardStackEntryDescription>
</CardStackEntryContent>
<CardStackEntryActions>
<Badge variant="secondary">provider</Badge>
<Badge variant="secondary">
{String(key) === "encrypted" ? "default" : "provider"}
</Badge>
Comment thread
greptile-apps[bot] marked this conversation as resolved.
</CardStackEntryActions>
</CardStackEntry>
))
Expand Down
Loading