Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Integrations Setup #185

Merged
merged 49 commits into from
Dec 4, 2024
Merged

Feature: Integrations Setup #185

merged 49 commits into from
Dec 4, 2024

Conversation

alashchev17
Copy link
Collaborator

@alashchev17 alashchev17 commented Nov 6, 2024

Feature: Integrations Setup

Description

  • Provides the UI for configuration of integrations and command-line services & tools.
  • Contains setup of a library for verbose debugging (npm package debug)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactoring (no functional changes, only code improvements)
  • Documentation update

Screenshots (if applicable)

Main integrations setup screen

Main integrations setup screen

PostgreSQL setup screen

PostgreSQL setup screen

Docker Containers section related to integration

Docker Containers section related to integration

Checklist

  • My code follows the code style of this project.
  • I have performed a self-review of my code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • Any dependent changes have been merged and published in downstream modules.
  • I have updated the documentation where necessary.

MarcMcIntosh and others added 6 commits November 6, 2024 13:17
 Conflicts:
	src/app/store.ts

 On branch integrations-api
 Changes to be committed:
	modified:   package-lock.json
	modified:   package.json
	modified:   src/app/middleware.ts
	modified:   src/app/store.ts
	modified:   src/components/Chat/Chat.tsx
	modified:   src/components/ChatContent/ChatContent.tsx
	modified:   src/components/ChatContent/UserInput.tsx
	modified:   src/components/ChatForm/ChatForm.tsx
	modified:   src/components/ChatForm/RetryForm.tsx
	new file:   src/components/Dropzone/Dropzone.tsx
	new file:   src/components/Dropzone/index.tsx
	new file:   src/features/AttachedImages/imagesSlice.ts
	new file:   src/features/AttachedImages/index.ts
	modified:   src/features/Chat/Thread/utils.ts
	modified:   src/features/History/historySlice.ts
	new file:   src/hooks/useAttachedImages.ts
	modified:   src/hooks/useSendChatRequest.ts
	modified:   src/services/refact/chat.ts
	modified:   src/services/refact/types.ts
@alashchev17 alashchev17 self-assigned this Nov 6, 2024
alashchev17 and others added 12 commits November 7, 2024 21:09
 Conflicts:
	src/__fixtures__/index.ts
	src/app/store.ts

 Changes to be committed:
	modified:   .prettierignore
	modified:   .storybook/main.ts
	modified:   .storybook/preview.tsx
	deleted:    TODO.md
	modified:   package-lock.json
	modified:   package.json
	new file:   public/mockServiceWorker.js
	modified:   src/__fixtures__/chat.ts
	modified:   src/__fixtures__/index.ts
	modified:   src/__fixtures__/markdown.ts
	new file:   src/__fixtures__/some_chrome_screenshots.json
	new file:   src/__fixtures__/survey_questions.ts
	new file:   src/__tests__/UserSurvey.test.tsx
	modified:   src/app/middleware.ts
	modified:   src/app/store.ts
	modified:   src/components/Chart/Chart.tsx
	modified:   src/components/Chat/Chat.tsx
	modified:   src/components/ChatContent/ChatContent.stories.tsx
	modified:   src/components/ChatContent/ChatContent.tsx
	modified:   src/components/ChatContent/ToolsContent.tsx
	modified:   src/components/ChatContent/UserInput.tsx
	modified:   src/components/ChatForm/ChatForm.stories.tsx
	modified:   src/components/ChatForm/ChatForm.test.tsx
	modified:   src/components/ChatForm/ChatForm.tsx
	new file:   src/components/ChatForm/ToolConfirmation.module.css
	new file:   src/components/ChatForm/ToolConfirmation.tsx
	modified:   src/components/Command/Command.module.css
	modified:   src/components/Command/Markdown.tsx
	modified:   src/components/Markdown/Markdown.tsx
	modified:   src/components/Reveal/reveal.module.css
	modified:   src/components/Spinner/Spinner.module.css
	modified:   src/components/Spinner/Spinner.stories.tsx
	modified:   src/components/Spinner/Spinner.tsx
	modified:   src/components/StatisticView/StatisticView.tsx
	modified:   src/components/Table/Table.tsx
	modified:   src/components/Toolbar/Toolbar.tsx
	modified:   src/events/index.ts
	modified:   src/features/App.tsx
	modified:   src/features/Chat/Thread/actions.ts
	modified:   src/features/Chat/Thread/utils.ts
	modified:   src/features/TipOfTheDay.tsx
	new file:   src/features/ToolConfirmation/confirmationSlice.ts
	new file:   src/features/UserSurvey/UserSurvey.stories.tsx
	new file:   src/features/UserSurvey/UserSurvey.tsx
	new file:   src/features/UserSurvey/index.ts
	new file:   src/features/UserSurvey/userSurveySlice.ts
	modified:   src/hooks/index.ts
	modified:   src/hooks/useEventBusForIDE.ts
	modified:   src/hooks/useGetToolsQuery.ts
	new file:   src/hooks/useGetUserSurvey.ts
	modified:   src/hooks/usePatchActions.ts
	modified:   src/hooks/useSendChatRequest.ts
	modified:   src/lib/render/index.tsx
	modified:   src/services/refact/chat.ts
	modified:   src/services/refact/consts.ts
	modified:   src/services/refact/path.ts
	modified:   src/services/refact/tools.ts
	modified:   src/services/refact/types.ts
	modified:   src/services/smallcloud/index.ts
	new file:   src/utils/extractFilePathFromPin.ts
	modified:   src/utils/index.ts
	modified:   src/utils/mockServer.ts
	modified:   src/vite-env.d.ts
	modified:   vite.config.ts
@alashchev17 alashchev17 changed the base branch from integrations-api to integrations-api-self-configure November 18, 2024 19:12
MarcMcIntosh and others added 10 commits November 18, 2024 20:47
- [x] Implemented an `IntegrationForm` with reusable fields for each integration field type
- [x] Schema check in `handleSubmit` to transform formData to corresponding field types
- [x] Added `toPascalCase` utility function
Slight refactoring of apply and return buttons, and some other minor changes.
* wip(configuration chat): send first messages.

* wip(configuration chat): tool use in configuration chat.
alashchev17 and others added 5 commits November 28, 2024 17:38
* wip(configuration chat): handle going back.

* fix(integration chat): change tools setting to explore.

* chore(missing deps in hook): `renderField` function was missing deps.

* feat(integration data cache): add slice for integrations cache.

* fix(integration cache): remove item on save.

* fix(config chat): chat being sent multiple times.

* wip(tool confirmation): skip confirming tool use when running a configuration.

* feat: add apply all button to configuration chat.

* feat: reload old configuration chat and go back to the form

* feat(configuration chat): add error message handler.

* fix(configuration chat): use agentic mode and don't set the model.

---------

Co-authored-by: Andrii Lashchov <84778697+alashchev17@users.noreply.github.com>
* wip: docker containers api handlers

* wip: docker actions API & action buttons

* wip: better action handling

* wip: simplification of dockerApi & action buttons improvements

* chore: fixtures update

* chore: removal of unnecessary esling rule bypass

* wip: docker container card & refactoring of integration form

* feat(configuration): adjusted size of inputs based on f_size & DataList instead of raw flexboxes

* wip: form appearance & responsive layout

* wip: updated docker section

* wip(refactoring): smartlink, availability, renderField, handleSmartlinkClick extracted to separate files and scopes

* wip(form): bool f_type support

* wip(refactoring): making docker within integr_schema optional, conditional rendering of docker section within integration form

* wip(docker): error handling

* wip(refactoring): toolscontent usage summary refactoring

* wip(docker containers): collapsible container details & reveal if large

* wip(refactoring): project name handling for macOS & Windows

* wip(refactoring): docker error card & debounced loaded state

* wip(docker containers): better loading state management

* wip: separation & refactoring of UI, making docker containers cards better & making integrationsview setup better

* fix: error types for docker error cards

* fix: unchecked switch values included to formData

* chore: removal no-console

* chore: removal of unexisting prop

* fix: extra fields showup button conditional rendering

* chore: TODO insertion

* fix:  rule bypass removal

* feat: debug logging library usage for integrations logs

* feat: implementing root debug instance, managing debuggable instances launch

* chore: better logging message

* chore: TODO for tags invalidation docker

* fix: replaced <label/> to <Text as='label' />
const next = createInitialState("agent", action.payload.integration);
next.thread.integration = action.payload.integration;
next.thread.messages = action.payload.messages;

Copy link
Collaborator

Choose a reason for hiding this comment

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

Delete these comments

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

TODO: find out about tool use this one also?

Copy link
Collaborator

Choose a reason for hiding this comment

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

no, I think that's still up in the air with the new chat_mode object in the meta property for chat requests.

}

function isDockerLabels(json: unknown): json is DockerLabels {
// Since DockerPorts is defined as NonNullable<unknown>, we don't have specific structure to validate. Just checking, that it's not null | undefined
Copy link
Collaborator

Choose a reason for hiding this comment

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

Are these unknown or likely to change?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

To be honest, we don't even render them, the only requirement for labels and ports is to be an object (NonNullable<unknown>)

Copy link
Collaborator

@MarcMcIntosh MarcMcIntosh left a comment

Choose a reason for hiding this comment

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

Left some comments.

@alashchev17 alashchev17 changed the base branch from integrations-api-self-configure to alpha December 3, 2024 17:43
@alashchev17 alashchev17 marked this pull request as ready for review December 4, 2024 15:19
@alashchev17 alashchev17 changed the title [WIP]: Integrations Setup Feature: Integrations Setup Dec 4, 2024
const integrationLogo = INTEGRATIONS_WITH_TERMINAL_ICON.includes(
integration.integr_name.split("_")[0],
)
? `/integrations/cmdline.png`
Copy link
Collaborator

Choose a reason for hiding this comment

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

note: test the build to make sure the images are available from the dist folder

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

will do right now

@alashchev17 alashchev17 merged commit cbf1a9a into alpha Dec 4, 2024
2 checks passed
@alashchev17 alashchev17 deleted the feat/setup-integrations branch December 4, 2024 18:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants