Skip to content

Commit

Permalink
feat: changes for agents
Browse files Browse the repository at this point in the history
  • Loading branch information
saimanoj committed Dec 21, 2024
1 parent 68722c3 commit ce411ec
Show file tree
Hide file tree
Showing 16 changed files with 411 additions and 55 deletions.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ REPLICATION_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB
SUPERTOKEN_CONNECTION_URI=http://localhost:3567


OAUTH_CALLBACK_URL=https://115d-106-215-173-196.ngrok-free.app/v1/oauth/callback
OAUTH_CALLBACK_URL=https://c4d0-2406-7400-63-557d-c47b-5ddf-65ff-52b8.ngrok-free.app/v1/oauth/callback
############# Frontend ###############
# Sync server url used by the frontend to connect to the websocket
NEXT_PUBLIC_BASE_HOST=${FRONTEND_HOST}
Expand Down
2 changes: 1 addition & 1 deletion apps/electron/packages/main/src/integrations-init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const integrationsInit = async () => {
Authorization: `Bearer ${accessToken}`,
},
});

console.log(data);
downloadContentToSystem(data);
};

Expand Down
1 change: 1 addition & 0 deletions apps/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
"@prisma/instrumentation": "^5.21.0",
"@qdrant/js-client-rest": "^1.12.0",
"@sigma/types": "workspace:*",
"@tiptap/html": "^2.10.3",
"@types/multer": "^1.4.11",
"@types/turndown": "^5.0.5",
"@xenova/transformers": "^2.16.1",
Expand Down
46 changes: 46 additions & 0 deletions apps/server/src/common/utils/tiptap.utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Blockquote } from '@tiptap/extension-blockquote';
import { BulletList } from '@tiptap/extension-bullet-list';
import { CodeBlock } from '@tiptap/extension-code-block';
import { Document } from '@tiptap/extension-document';
import { HardBreak } from '@tiptap/extension-hard-break';
import { Heading } from '@tiptap/extension-heading';
import { HorizontalRule } from '@tiptap/extension-horizontal-rule';
import { Image } from '@tiptap/extension-image';
import { Link } from '@tiptap/extension-link';
import { ListItem } from '@tiptap/extension-list-item';
import { OrderedList } from '@tiptap/extension-ordered-list';
import { Paragraph } from '@tiptap/extension-paragraph';
import { TaskItem } from '@tiptap/extension-task-item';
import { TaskList } from '@tiptap/extension-task-list';
import { Text } from '@tiptap/extension-text';
import { Underline } from '@tiptap/extension-underline';
import { generateHTML, generateJSON } from '@tiptap/html';

export const tiptapExtensions = [
Document,
Text,
Paragraph,
Heading,
Blockquote,
ListItem,
OrderedList,
BulletList,
TaskList,
TaskItem,
Image,
CodeBlock,
HardBreak,
HorizontalRule,
Link,
Underline,
];

export function convertHtmlToTiptapJson(html: string) {
const tiptapJson = generateJSON(html, tiptapExtensions);
return tiptapJson;
}

// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function convertTiptapJsonToHtml(tiptapJson: Record<string, any>) {
return generateHTML(tiptapJson, tiptapExtensions);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import {
Activity,
ConversationContext,
ConversationContextIds,
ConversationContextData,
ConversationHistory,
CreateConversationHistoryDto,
Page,
Expand Down Expand Up @@ -90,10 +90,11 @@ export class ConversationHistoryService {
return null;
}
const context =
(conversationHistory.context as ConversationContextIds) || {};
(conversationHistory.context as ConversationContextData) || {};
const { pages, activityIds, ...otherContextData } = context;
// Get pages data if pageIds exist
let page: Page[] = [];
if (context?.pages?.length) {
if (pages?.length) {
page = await Promise.all(
context.pages.map(async (pageContext) => {
const page = await this.prisma.page.findUnique({
Expand All @@ -120,7 +121,7 @@ export class ConversationHistoryService {
// Get activities data if activityIds exist
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let activity: Activity[] = [];
if (context?.activityIds?.length) {
if (activityIds?.length) {
activity = await this.prisma.activity.findMany({
where: {
id: {
Expand All @@ -133,7 +134,7 @@ export class ConversationHistoryService {
// Get previous conversation history message and response
let previousHistory = null;
if (conversationHistory.conversationId) {
const previousMessages = await this.prisma.conversationHistory.findMany({
previousHistory = await this.prisma.conversationHistory.findMany({
where: {
conversationId: conversationHistory.conversationId,
id: {
Expand All @@ -142,20 +143,16 @@ export class ConversationHistoryService {
deleted: null,
},
orderBy: {
createdAt: 'desc',
createdAt: 'asc',
},
take: 1,
});

if (previousMessages.length > 0) {
previousHistory = previousMessages.slice(0, 2);
}
}

return {
page,
activity,
previousHistory,
...otherContextData,
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
import { SessionContainer } from 'supertokens-node/recipe/session';

import { AuthGuard } from 'modules/auth/auth.guard';
import { Session, Workspace } from 'modules/auth/session.decorator';
import { Session, UserId, Workspace } from 'modules/auth/session.decorator';

import { IntegrationAccountService } from './integration-account.service';

Expand Down Expand Up @@ -57,10 +57,12 @@ export class IntegrationAccountController {
async getIntegrationAccountsByName(
@Query('integrations') integrations: string,
@Workspace() workspaceId: string,
@UserId() userId: string,
) {
return await this.integrationAccountService.getIntegrationAccountsByName(
integrations,
workspaceId,
userId,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ import {
loadRemoteModule,
} from 'common/remote-loader';

import { UsersService } from 'modules/users/users.service';

import {
IntegrationAccountSelect,
IntegrationAccountSelectByNames,
} from './integration-account.interface';

@Injectable()
export class IntegrationAccountService {
constructor(private prisma: PrismaService) {}
constructor(
private prisma: PrismaService,
private usersService: UsersService,
) {}

async createIntegrationAccount(
createIntegrationAccountDto: CreateIntegrationAccountDto,
Expand Down Expand Up @@ -184,6 +189,7 @@ export class IntegrationAccountService {
async getIntegrationAccountsByName(
integrations: string,
workspaceId: string,
userId: string,
) {
const accounts = await this.prisma.integrationAccount.findMany({
where: {
Expand All @@ -198,7 +204,22 @@ export class IntegrationAccountService {
select: IntegrationAccountSelectByNames,
});

return accounts.reduce(
const pat = await this.usersService.getOrCreatePat(userId, workspaceId);
const accountsWithTokens = await Promise.all(
accounts.map(async (account) => {
const accountWithToken = await this.getIntegrationAccountWithToken(
account.id,
account.workspaceId,
pat,
);
return {
...account,
integrationConfiguration: { access_token: accountWithToken.token },
};
}),
);

return accountsWithTokens.reduce(
(acc, account) => {
acc[account.integrationDefinition.slug] = account;
return acc;
Expand Down
48 changes: 24 additions & 24 deletions apps/server/src/modules/integrations/integrations.process.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,30 +45,30 @@ export class IntegrationsProcessor extends WorkerHost {
this.logger.log(`Processing integration account ${integrationAccountId}`);

try {
// const integrationAccount =
// await this.prisma.integrationAccount.findUnique({
// where: { id: integrationAccountId },
// include: { integrationDefinition: true },
// });

// const pat = await this.usersService.getOrCreatePat(
// integrationAccount.integratedById,
// integrationAccount.workspaceId,
// );

// const integrationFunction = await loadRemoteModule(
// getRequires(createAxiosInstance(pat)),
// );
// const integration = await integrationFunction(
// `file:///Users/manoj/work/sigma-integrations/${integrationAccount.integrationDefinition.slug}/dist/backend/index.js`,
// );

// await integration.run({
// event: IntegrationPayloadEventType.SCHEDULED_TASK,
// eventBody: {
// integrationAccount,
// },
// });
const integrationAccount =
await this.prisma.integrationAccount.findUnique({
where: { id: integrationAccountId },
include: { integrationDefinition: true },
});

const pat = await this.usersService.getOrCreatePat(
integrationAccount.integratedById,
integrationAccount.workspaceId,
);

const integrationFunction = await loadRemoteModule(
getRequires(createAxiosInstance(pat)),
);
const integration = await integrationFunction(
`${integrationAccount.integrationDefinition.url}/backend/index.js`,
);

await integration.run({
event: IntegrationPayloadEventType.SCHEDULED_TASK,
eventBody: {
integrationAccount,
},
});

this.logger.log(`Successfully completed task ${integrationAccountId}`);
} catch (error) {
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/modules/pages/pages.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export class PagesController {
@Workspace() workspaceId: string,
@Query() getPageByTitleDto: GetPageByTitleDto,
): Promise<Page> {
return await this.pagesService.getPageByTitle(
return await this.pagesService.getOrCreatePageByTitle(
workspaceId,
getPageByTitleDto,
);
Expand Down
13 changes: 13 additions & 0 deletions apps/server/src/modules/pages/pages.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
export const PageSelect = {
id: true,
title: true,
type: true,
description: true,
archived: true,
tags: true,
workspaceId: true,
parentId: true,
deleted: true,
createdAt: true,
updatedAt: true,
};
Loading

0 comments on commit ce411ec

Please sign in to comment.