History

Clarify provider and integration copy (#1267)

Rhys Sullivan committed 4 months ago

Commit 251130e1 parent 2e9d7467 files · +27 −17Browse files

Unified · Split

7 files
  1. packages/plugins/google/src/react/AddGoogleSource.tsx +1 −1
  2. packages/plugins/graphql/src/react/AddGraphqlSource.tsx +4 −4
  3. packages/plugins/mcp/src/react/AddMcpSource.tsx +3 −3
  4. packages/plugins/microsoft/src/react/AddMicrosoftSource.tsx +1 −1
  5. packages/react/src/pages/api-keys.tsx +1 −1
  6. packages/react/src/pages/policies.tsx +1 −1
  7. packages/react/src/pages/secrets.tsx +16 −6
packages/plugins/google/src/react/AddGoogleSource.tsx+1−1
@@ -132,7 +132,7 @@ export default function AddGoogleSource(props: { · 131 unmodified lines
132 return (132 return (
133 <div className="flex flex-1 flex-col gap-6">133 <div className="flex flex-1 flex-col gap-6">
134 <div>134 <div>
135 <h1 className="text-xl font-semibold text-foreground">Add Google</h1>135 <h1 className="text-xl font-semibold text-foreground">Add Google integration</h1>
136 <p className="mt-1 text-[13px] text-muted-foreground">136 <p className="mt-1 text-[13px] text-muted-foreground">
137 Bundle Google APIs into one integration with a shared OAuth consent.137 Bundle Google APIs into one integration with a shared OAuth consent.
138 </p>138 </p>
packages/plugins/graphql/src/react/AddGraphqlSource.tsx+4−4
@@ -130,7 +130,7 @@ export default function AddGraphqlSource(props: { · 129 unmodified lines
130 130
131 return (131 return (
132 <div className="flex flex-1 flex-col gap-6">132 <div className="flex flex-1 flex-col gap-6">
133 <h1 className="text-xl font-semibold text-foreground">Add GraphQL Source</h1>133 <h1 className="text-xl font-semibold text-foreground">Add GraphQL integration</h1>
134 134
135 <GraphqlSourceFields135 <GraphqlSourceFields
136 endpoint={endpoint}136 endpoint={endpoint}
@@ -143,8 +143,8 @@ export default function AddGraphqlSource(props: { · 6 unmodified lines
143 <AuthMethodListEditor143 <AuthMethodListEditor
144 list={authMethodList}144 list={authMethodList}
145 allowedKinds={["none", "apikey"]}145 allowedKinds={["none", "apikey"]}
146 emptyHint="No authentication declared. Add a method, or add the source without auth and connect an account from the integration page later."146 emptyHint="No authentication declared. Add a method, or add the integration without auth and connect an account from the integration page later."
147 footerHint="Every method here is registered with the source. Connect an account from the integration page after adding."147 footerHint="Every method here is registered with the integration. Connect an account from the integration page after adding."
148 />148 />
149 149
150 {slugAlreadyExists && !adding && <SlugCollisionAlert slug={resolvedSlug} />}150 {slugAlreadyExists && !adding && <SlugCollisionAlert slug={resolvedSlug} />}
@@ -156,7 +156,7 @@ export default function AddGraphqlSource(props: { · 5 unmodified lines
156 Cancel156 Cancel
157 </Button>157 </Button>
158 <Button onClick={() => void handleAdd()} disabled={!canAdd} loading={adding}>158 <Button onClick={() => void handleAdd()} disabled={!canAdd} loading={adding}>
159 Add source159 Add integration
160 </Button>160 </Button>
161 </FloatActions>161 </FloatActions>
162 </div>162 </div>
packages/plugins/mcp/src/react/AddMcpSource.tsx+3−3
@@ -380,7 +380,7 @@ export default function AddMcpSource(props: { · 379 unmodified lines
380 return (380 return (
381 <div className="flex flex-1 flex-col gap-6">381 <div className="flex flex-1 flex-col gap-6">
382 <div>382 <div>
383 <h1 className="text-xl font-semibold text-foreground">Add MCP Source</h1>383 <h1 className="text-xl font-semibold text-foreground">Add MCP integration</h1>
384 <p className="mt-1 text-[13px] text-muted-foreground">384 <p className="mt-1 text-[13px] text-muted-foreground">
385 Connect to an MCP server to discover and use its tools.385 Connect to an MCP server to discover and use its tools.
386 </p>386 </p>
@@ -473,7 +473,7 @@ export default function AddMcpSource(props: { · 86 unmodified lines
473 </Button>473 </Button>
474 {(probe || isProbing) && (474 {(probe || isProbing) && (
475 <Button type="button" onClick={handleAddRemote} disabled={!canAdd} loading={isAdding}>475 <Button type="button" onClick={handleAddRemote} disabled={!canAdd} loading={isAdding}>
476 Add source476 Add integration
477 </Button>477 </Button>
478 )}478 )}
479 </FloatActions>479 </FloatActions>
@@ -542,7 +542,7 @@ export default function AddMcpSource(props: { · 62 unmodified lines
542 disabled={!stdioCommand.trim() || stdioSlugExists}542 disabled={!stdioCommand.trim() || stdioSlugExists}
543 loading={stdioAdding}543 loading={stdioAdding}
544 >544 >
545 Add source545 Add integration
546 </Button>546 </Button>
547 </FloatActions>547 </FloatActions>
548 </>548 </>
packages/plugins/microsoft/src/react/AddMicrosoftSource.tsx+1−1
@@ -108,7 +108,7 @@ export default function AddMicrosoftSource(props: { · 107 unmodified lines
108 return (108 return (
109 <div className="flex flex-1 flex-col gap-6">109 <div className="flex flex-1 flex-col gap-6">
110 <div>110 <div>
111 <h1 className="text-xl font-semibold text-foreground">Add Microsoft Graph</h1>111 <h1 className="text-xl font-semibold text-foreground">Add Microsoft integration</h1>
112 <p className="mt-1 text-[13px] text-muted-foreground">112 <p className="mt-1 text-[13px] text-muted-foreground">
113 Pick Microsoft 365 workloads and connect them through one delegated OAuth consent.113 Pick Microsoft 365 workloads and connect them through one delegated OAuth consent.
114 </p>114 </p>
packages/react/src/pages/api-keys.tsx+1−1
@@ -133,7 +133,7 @@ export function ApiKeysPage() { · 132 unmodified lines
133 <CopyButton value="Authorization: Bearer <api-key>" />133 <CopyButton value="Authorization: Bearer <api-key>" />
134 </div>134 </div>
135 <p className="mt-2 max-w-2xl text-xs leading-5 text-muted-foreground">135 <p className="mt-2 max-w-2xl text-xs leading-5 text-muted-foreground">
136 API keys work as PATs and have full access to your account.136 API keys work like personal access tokens and have full access to your account.
137 </p>137 </p>
138 </PageHeader>138 </PageHeader>
139 139
packages/react/src/pages/policies.tsx+1−1
@@ -365,7 +365,7 @@ export function PoliciesPage() { · 364 unmodified lines
365 <PageContainer>365 <PageContainer>
366 <PageHeader366 <PageHeader
367 title="Policies"367 title="Policies"
368 description="Override default approval behavior for tools. The most restrictive matched action wins. Blocked tools are hidden from agent search and fail at invoke."368 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."
369 />369 />
370 370
371 <div className="mb-8">371 <div className="mb-8">
packages/react/src/pages/secrets.tsx+16−6
@@ -33,7 +33,7 @@ import { isAsyncResultLoading } from "../lib/async-result"; · 32 unmodified lines
33// ---------------------------------------------------------------------------33// ---------------------------------------------------------------------------
34 34
35const PROVIDER_LABELS: Record<string, string> = {35const PROVIDER_LABELS: Record<string, string> = {
36 default: "Default store",36 encrypted: "Encrypted store",
37 keychain: "Keychain",37 keychain: "Keychain",
38 file: "Local file",38 file: "Local file",
39 memory: "Memory",39 memory: "Memory",
@@ -41,7 +41,13 @@ const PROVIDER_LABELS: Record<string, string> = { · 1 unmodified line
41 "workos-vault": "WorkOS Vault",41 "workos-vault": "WorkOS Vault",
42};42};
43 43
44const providerLabel = (key: string): string => PROVIDER_LABELS[key] ?? key;44const providerLabel = (key: string): string =>
45 PROVIDER_LABELS[key] ??
46 key
47 .split(/[-_]/g)
48 .filter(Boolean)
49 .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
50 .join(" ");
45 51
46export function SecretsPage(props: { showProviderInfo?: boolean }) {52export function SecretsPage(props: { showProviderInfo?: boolean }) {
47 useExecutorDocumentTitle("Providers");53 useExecutorDocumentTitle("Providers");
@@ -117,13 +123,17 @@ export function SecretsPage(props: { showProviderInfo?: boolean }) { · 69 unmodified lines
117 <span className="min-w-0 shrink truncate">123 <span className="min-w-0 shrink truncate">
118 {providerLabel(String(key))}124 {providerLabel(String(key))}
119 </span>125 </span>
120 <span className="max-w-40 shrink truncate font-mono text-xs text-muted-foreground">
121 {String(key)}
122 </span>
123 </CardStackEntryTitle>126 </CardStackEntryTitle>
127 <CardStackEntryDescription>
128 {String(key) === "encrypted"
129 ? "Values you paste are encrypted and stored in this instance's database."
130 : `${providerLabel(String(key))} credential provider.`}
131 </CardStackEntryDescription>
124 </CardStackEntryContent>132 </CardStackEntryContent>
125 <CardStackEntryActions>133 <CardStackEntryActions>
126 <Badge variant="secondary">provider</Badge>134 <Badge variant="secondary">
135 {String(key) === "encrypted" ? "default" : "provider"}
136 </Badge>
127 </CardStackEntryActions>137 </CardStackEntryActions>
128 </CardStackEntry>138 </CardStackEntry>
129 ))139 ))