Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit 5be9400

Browse files
efritzstefanhenglcesrjimeneztoolmantim
authored
embeddings: Extend policies from code intel (#52326)
Extend the code intel policies service to also describe embeddings re-indexing. We extend the GraphQL API and also copy/share the UI backing the admin pages. --------- Co-authored-by: Stefan Hengl <[email protected]> Co-authored-by: numbers88s <[email protected]> Co-authored-by: Tim Lucas <[email protected]>
1 parent 7e6ca20 commit 5be9400

File tree

44 files changed

+1159
-219
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1159
-219
lines changed

client/web/BUILD.bazel

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/web/src/enterprise/codeintel/configuration/hooks/queryPolicies.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const POLICIES_CONFIGURATION = gql`
2424
$query: String
2525
$forDataRetention: Boolean
2626
$forIndexing: Boolean
27+
$forEmbeddings: Boolean
2728
$first: Int
2829
$after: String
2930
$protected: Boolean
@@ -33,6 +34,7 @@ export const POLICIES_CONFIGURATION = gql`
3334
query: $query
3435
forDataRetention: $forDataRetention
3536
forIndexing: $forIndexing
37+
forEmbeddings: $forEmbeddings
3638
first: $first
3739
after: $after
3840
protected: $protected
@@ -58,6 +60,7 @@ export const queryPolicies = (
5860
query,
5961
forDataRetention,
6062
forIndexing,
63+
forEmbeddings,
6164
after,
6265
protected: varProtected,
6366
}: Partial<CodeIntelligenceConfigurationPoliciesVariables>,
@@ -68,6 +71,7 @@ export const queryPolicies = (
6871
query: query ?? null,
6972
forDataRetention: forDataRetention ?? null,
7073
forIndexing: forIndexing ?? null,
74+
forEmbeddings: forEmbeddings ?? null,
7175
first: first ?? null,
7276
after: after ?? null,
7377
protected: varProtected ?? null,

client/web/src/enterprise/codeintel/configuration/hooks/types.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const nullPolicy = {
1616
indexingEnabled: false,
1717
indexCommitMaxAgeHours: null,
1818
indexIntermediateCommits: false,
19+
embeddingsEnabled: false,
1920
repository: null,
2021
}
2122

@@ -38,5 +39,6 @@ export const defaultCodeIntelligenceConfigurationPolicyFieldsFragment = gql`
3839
indexingEnabled
3940
indexCommitMaxAgeHours
4041
indexIntermediateCommits
42+
embeddingsEnabled
4143
}
4244
`

client/web/src/enterprise/codeintel/configuration/hooks/usePolicyConfigurationById.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const emptyPolicy: CodeIntelligenceConfigurationPolicyFields = {
4141
indexingEnabled: false,
4242
indexCommitMaxAgeHours: null,
4343
indexIntermediateCommits: false,
44+
embeddingsEnabled: false,
4445
}
4546

4647
export const usePolicyConfigurationByID = (id: string): UsePolicyConfigResult => {

client/web/src/enterprise/codeintel/configuration/hooks/useSavePolicyConfiguration.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const CREATE_POLICY_CONFIGURATION = gql`
1717
$indexingEnabled: Boolean!
1818
$indexCommitMaxAgeHours: Int
1919
$indexIntermediateCommits: Boolean!
20+
$embeddingsEnabled: Boolean!
2021
) {
2122
createCodeIntelligenceConfigurationPolicy(
2223
repository: $repositoryId
@@ -30,6 +31,7 @@ const CREATE_POLICY_CONFIGURATION = gql`
3031
indexingEnabled: $indexingEnabled
3132
indexCommitMaxAgeHours: $indexCommitMaxAgeHours
3233
indexIntermediateCommits: $indexIntermediateCommits
34+
embeddingsEnabled: $embeddingsEnabled
3335
) {
3436
id
3537
}
@@ -49,6 +51,7 @@ const UPDATE_POLICY_CONFIGURATION = gql`
4951
$indexingEnabled: Boolean!
5052
$indexCommitMaxAgeHours: Int
5153
$indexIntermediateCommits: Boolean!
54+
$embeddingsEnabled: Boolean!
5255
) {
5356
updateCodeIntelligenceConfigurationPolicy(
5457
id: $id
@@ -62,6 +65,7 @@ const UPDATE_POLICY_CONFIGURATION = gql`
6265
indexingEnabled: $indexingEnabled
6366
indexCommitMaxAgeHours: $indexCommitMaxAgeHours
6467
indexIntermediateCommits: $indexIntermediateCommits
68+
embeddingsEnabled: $embeddingsEnabled
6569
) {
6670
alwaysNil
6771
}

client/web/src/enterprise/codeintel/configuration/pages/CodeIntelConfigurationPage.tsx

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
mdiLock,
1212
mdiPencil,
1313
mdiSourceRepository,
14+
mdiVectorPolyline,
1415
} from '@mdi/js'
1516
import classNames from 'classnames'
1617
import { useNavigate, useLocation } from 'react-router-dom'
@@ -59,12 +60,12 @@ export const CodeIntelConfigurationPage: FunctionComponent<CodeIntelConfiguratio
5960
const apolloClient = useApolloClient()
6061
const queryDefaultPoliciesCallback = useCallback(
6162
(args: FilteredConnectionQueryArguments) =>
62-
queryPolicies({ ...args, repository: repo?.id, protected: true }, apolloClient),
63+
queryPolicies({ ...args, repository: repo?.id, forEmbeddings: false, protected: true }, apolloClient),
6364
[queryPolicies, repo?.id, apolloClient]
6465
)
6566
const queryCustomPoliciesCallback = useCallback(
6667
(args: FilteredConnectionQueryArguments) =>
67-
queryPolicies({ ...args, repository: repo?.id, protected: false }, apolloClient),
68+
queryPolicies({ ...args, repository: repo?.id, forEmbeddings: false, protected: false }, apolloClient),
6869
[queryPolicies, repo?.id, apolloClient]
6970
)
7071

@@ -212,38 +213,44 @@ export const CodeIntelConfigurationPage: FunctionComponent<CodeIntelConfiguratio
212213
interface ProtectedPoliciesNodeProps {
213214
node: CodeIntelligenceConfigurationPolicyFields
214215
indexingEnabled?: boolean
216+
domain?: 'scip' | 'embeddings'
215217
}
216218

217-
interface UnprotectedPoliciesNodeProps {
219+
export interface UnprotectedPoliciesNodeProps {
218220
node: CodeIntelligenceConfigurationPolicyFields
219221
isDeleting: boolean
220222
onDelete: (id: string, name: string) => Promise<void>
221223
indexingEnabled?: boolean
224+
domain?: 'scip' | 'embeddings'
222225
}
223226

224227
type PoliciesNodeProps = ProtectedPoliciesNodeProps | UnprotectedPoliciesNodeProps
225228

226-
const PoliciesNode: FunctionComponent<React.PropsWithChildren<PoliciesNodeProps>> = ({
229+
export const PoliciesNode: FunctionComponent<React.PropsWithChildren<PoliciesNodeProps>> = ({
227230
node: policy,
228231
indexingEnabled = false,
232+
domain = 'scip',
229233
...props
230234
}) => (
231235
<>
232236
<span className={styles.separator} />
233237

234238
<div className={classNames(styles.name, 'd-flex flex-column')}>
235-
<PolicyDescription policy={policy} indexingEnabled={indexingEnabled} />
239+
<PolicyDescription policy={policy} indexingEnabled={indexingEnabled} domain={domain} />
236240
<RepositoryAndGitObjectDescription policy={policy} />
237241
{policy.indexingEnabled && indexingEnabled && <AutoIndexingDescription policy={policy} />}
238242
{policy.retentionEnabled && <RetentionDescription policy={policy} />}
243+
{policy.embeddingsEnabled && <EmbeddingsDescription policy={policy} />}
239244
</div>
240245

241246
<div className="h-100">
242247
<Link
243248
to={
244249
policy.repository === null
245-
? `/site-admin/code-graph/configuration/${policy.id}`
246-
: `/${policy.repository.name}/-/code-graph/configuration/${policy.id}`
250+
? `/site-admin/${domain === 'scip' ? 'code-graph' : 'embeddings'}/configuration/${policy.id}`
251+
: `/${policy.repository.name}/-/${
252+
domain === 'scip' ? 'code-graph' : 'embeddings'
253+
}/configuration/${policy.id}`
247254
}
248255
>
249256
<Tooltip content="Edit this policy">
@@ -283,27 +290,31 @@ interface PolicyDescriptionProps {
283290
policy: CodeIntelligenceConfigurationPolicyFields
284291
indexingEnabled?: boolean
285292
allowGlobalPolicies?: boolean
293+
domain?: 'scip' | 'embeddings'
286294
}
287295

288296
const PolicyDescription: FunctionComponent<PolicyDescriptionProps> = ({
289297
policy,
290298
indexingEnabled = false,
291299
allowGlobalPolicies = window.context?.codeIntelAutoIndexingAllowGlobalPolicies,
300+
domain = 'scip',
292301
}) => (
293302
<div className={styles.policyDescription}>
294303
<Link
295304
to={
296305
policy.repository === null
297-
? `/site-admin/code-graph/configuration/${policy.id}`
298-
: `/${policy.repository.name}/-/code-graph/configuration/${policy.id}`
306+
? `/site-admin/${domain === 'scip' ? 'code-graph' : 'embeddings'}/configuration/${policy.id}`
307+
: `/${policy.repository.name}/-/${domain === 'scip' ? 'code-graph' : 'embeddings'}/configuration/${
308+
policy.id
309+
}`
299310
}
300311
>
301312
<Text weight="bold" className="mb-0">
302313
{policy.name}
303314
</Text>
304315
</Link>
305316

306-
{!policy.retentionEnabled && !(indexingEnabled && policy.indexingEnabled) && (
317+
{!policy.retentionEnabled && !(indexingEnabled && policy.indexingEnabled) && !policy.embeddingsEnabled && (
307318
<Tooltip content="This policy has no enabled behaviors.">
308319
<Icon
309320
svgPath={mdiCircleOffOutline}
@@ -359,11 +370,11 @@ const RepositoryAndGitObjectDescription: FunctionComponent<RepositoryAndGitObjec
359370
</div>
360371
)
361372

362-
interface RepositoryDescriptionProps {
373+
interface GitObjectDescriptionProps {
363374
policy: CodeIntelligenceConfigurationPolicyFields
364375
}
365376

366-
const RepositoryDescription: FunctionComponent<RepositoryDescriptionProps> = ({ policy }) => {
377+
const GitObjectDescription: FunctionComponent<GitObjectDescriptionProps> = ({ policy }) => {
367378
if (policy.type === GitObjectType.GIT_COMMIT) {
368379
if (policy.pattern === 'HEAD') {
369380
return (
@@ -407,11 +418,11 @@ const RepositoryDescription: FunctionComponent<RepositoryDescriptionProps> = ({
407418
return <></>
408419
}
409420

410-
interface GitObjectDescriptionProps {
421+
interface RepositoryDescriptionProps {
411422
policy: CodeIntelligenceConfigurationPolicyFields
412423
}
413424

414-
const GitObjectDescription: FunctionComponent<GitObjectDescriptionProps> = ({ policy }) => {
425+
const RepositoryDescription: FunctionComponent<RepositoryDescriptionProps> = ({ policy }) => {
415426
if (policy.repository) {
416427
return (
417428
<Badge variant="outlineSecondary">
@@ -520,3 +531,22 @@ const RetentionDescription: FunctionComponent<RetentionDescriptionProps> = ({ po
520531
</span>
521532
</div>
522533
)
534+
535+
interface EmbeddingsDescriptionProps {
536+
policy: CodeIntelligenceConfigurationPolicyFields
537+
}
538+
539+
const EmbeddingsDescription: FunctionComponent<EmbeddingsDescriptionProps> = ({ policy }) => (
540+
<div>
541+
<Tooltip content="This policy affects embeddings.">
542+
<Icon
543+
svgPath={mdiVectorPolyline}
544+
inline={true}
545+
aria-label="This policy affects embeddings."
546+
className="mr-2"
547+
/>
548+
</Tooltip>
549+
550+
<span>Maintains embeddings.</span>
551+
</div>
552+
)

0 commit comments

Comments
 (0)