mirror of
https://github.com/zadam/trilium.git
synced 2026-01-15 11:04:30 +01:00
chore(core): integrate events service
This commit is contained in:
parent
14e2e85da7
commit
c20da77f83
@ -1,25 +1,26 @@
|
||||
import express from "express";
|
||||
import path from "path";
|
||||
import favicon from "serve-favicon";
|
||||
import cookieParser from "cookie-parser";
|
||||
import helmet from "helmet";
|
||||
import compression from "compression";
|
||||
import config from "./services/config.js";
|
||||
import utils, { getResourceDir, isDev } from "./services/utils.js";
|
||||
import assets from "./routes/assets.js";
|
||||
import routes from "./routes/routes.js";
|
||||
import custom from "./routes/custom.js";
|
||||
import error_handlers from "./routes/error_handlers.js";
|
||||
import { startScheduledCleanup } from "./services/erase.js";
|
||||
import sql_init from "./services/sql_init.js";
|
||||
import { auth } from "express-openid-connect";
|
||||
import openID from "./services/open_id.js";
|
||||
import { t } from "i18next";
|
||||
import eventService from "./services/events.js";
|
||||
import log from "./services/log.js";
|
||||
import "./services/handlers.js";
|
||||
import "./becca/becca_loader.js";
|
||||
|
||||
import compression from "compression";
|
||||
import cookieParser from "cookie-parser";
|
||||
import express from "express";
|
||||
import { auth } from "express-openid-connect";
|
||||
import helmet from "helmet";
|
||||
import { t } from "i18next";
|
||||
import path from "path";
|
||||
import favicon from "serve-favicon";
|
||||
|
||||
import assets from "./routes/assets.js";
|
||||
import custom from "./routes/custom.js";
|
||||
import error_handlers from "./routes/error_handlers.js";
|
||||
import routes from "./routes/routes.js";
|
||||
import config from "./services/config.js";
|
||||
import { startScheduledCleanup } from "./services/erase.js";
|
||||
import log from "./services/log.js";
|
||||
import openID from "./services/open_id.js";
|
||||
import { RESOURCE_DIR } from "./services/resource_dir.js";
|
||||
import sql_init from "./services/sql_init.js";
|
||||
import utils, { getResourceDir, isDev } from "./services/utils.js";
|
||||
|
||||
export default async function buildApp() {
|
||||
const app = express();
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
import sql from "../services/sql.js";
|
||||
import eventService from "../services/events.js";
|
||||
import becca from "./becca.js";
|
||||
import log from "../services/log.js";
|
||||
import BNote from "./entities/bnote.js";
|
||||
import BBranch from "./entities/bbranch.js";
|
||||
import BAttribute from "./entities/battribute.js";
|
||||
import BOption from "./entities/boption.js";
|
||||
import BEtapiToken from "./entities/betapi_token.js";
|
||||
import cls from "../services/cls.js";
|
||||
import entityConstructor from "../becca/entity_constructor.js";
|
||||
import type { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from "@triliumnext/commons";
|
||||
import type AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
|
||||
import ws from "../services/ws.js";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import entityConstructor from "../becca/entity_constructor.js";
|
||||
import cls from "../services/cls.js";
|
||||
import log from "../services/log.js";
|
||||
import sql from "../services/sql.js";
|
||||
import { dbReady } from "../services/sql_init.js";
|
||||
import ws from "../services/ws.js";
|
||||
import becca from "./becca.js";
|
||||
import type AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
|
||||
import BAttribute from "./entities/battribute.js";
|
||||
import BBranch from "./entities/bbranch.js";
|
||||
import BEtapiToken from "./entities/betapi_token.js";
|
||||
import BNote from "./entities/bnote.js";
|
||||
import BOption from "./entities/boption.js";
|
||||
|
||||
export const beccaLoaded = new Promise<void>(async (res, rej) => {
|
||||
// We have to import async since options init requires keyboard actions which require translations.
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import blobService from "../../services/blob.js";
|
||||
import cls from "../../services/cls.js";
|
||||
import dateUtils from "../../services/date_utils.js";
|
||||
import entityChangesService from "../../services/entity_changes.js";
|
||||
import eventService from "../../services/events.js";
|
||||
import log from "../../services/log.js";
|
||||
import protectedSessionService from "../../services/protected_session.js";
|
||||
import sql from "../../services/sql.js";
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import type { AttachmentRow, AttributeType, CloneResponse, NoteRow, NoteType, RevisionRow } from "@triliumnext/commons";
|
||||
import { dayjs } from "@triliumnext/commons";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import cloningService from "../../services/cloning.js";
|
||||
import dateUtils from "../../services/date_utils.js";
|
||||
import eraseService from "../../services/erase.js";
|
||||
import eventService from "../../services/events.js";
|
||||
import handlers from "../../services/handlers.js";
|
||||
import log from "../../services/log.js";
|
||||
import noteService from "../../services/notes.js";
|
||||
|
||||
@ -1,18 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
import sql from "../../services/sql.js";
|
||||
import utils from "../../services/utils.js";
|
||||
import entityChangesService from "../../services/entity_changes.js";
|
||||
import treeService from "../../services/tree.js";
|
||||
import eraseService from "../../services/erase.js";
|
||||
import becca from "../../becca/becca.js";
|
||||
import TaskContext from "../../services/task_context.js";
|
||||
import branchService from "../../services/branches.js";
|
||||
import log from "../../services/log.js";
|
||||
import ValidationError from "../../errors/validation_error.js";
|
||||
import eventService from "../../services/events.js";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
import type { Request } from "express";
|
||||
|
||||
import becca from "../../becca/becca.js";
|
||||
import ValidationError from "../../errors/validation_error.js";
|
||||
import branchService from "../../services/branches.js";
|
||||
import entityChangesService from "../../services/entity_changes.js";
|
||||
import eraseService from "../../services/erase.js";
|
||||
import log from "../../services/log.js";
|
||||
import sql from "../../services/sql.js";
|
||||
import TaskContext from "../../services/task_context.js";
|
||||
import treeService from "../../services/tree.js";
|
||||
import utils from "../../services/utils.js";
|
||||
|
||||
/**
|
||||
* Code in this file deals with moving and cloning branches. The relationship between note and parent note is unique
|
||||
* for not deleted branches. There may be multiple deleted note-parent note relationships.
|
||||
@ -256,7 +255,7 @@ function deleteBranch(req: Request) {
|
||||
}
|
||||
|
||||
return {
|
||||
noteDeleted: noteDeleted
|
||||
noteDeleted
|
||||
};
|
||||
}
|
||||
|
||||
@ -272,7 +271,7 @@ function setPrefix(req: Request) {
|
||||
|
||||
function setPrefixBatch(req: Request) {
|
||||
const { branchIds, prefix } = req.body;
|
||||
|
||||
|
||||
if (!Array.isArray(branchIds)) {
|
||||
throw new ValidationError("branchIds must be an array");
|
||||
}
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
import options from "../../services/options.js";
|
||||
import utils from "../../services/utils.js";
|
||||
import dateUtils from "../../services/date_utils.js";
|
||||
import instanceId from "../../services/instance_id.js";
|
||||
import passwordEncryptionService from "../../services/encryption/password_encryption.js";
|
||||
import protectedSessionService from "../../services/protected_session.js";
|
||||
import appInfo from "../../services/app_info.js";
|
||||
import eventService from "../../services/events.js";
|
||||
import sqlInit from "../../services/sql_init.js";
|
||||
import sql from "../../services/sql.js";
|
||||
import ws from "../../services/ws.js";
|
||||
import etapiTokenService from "../../services/etapi_tokens.js";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
import type { Request } from "express";
|
||||
import totp from "../../services/totp";
|
||||
|
||||
import appInfo from "../../services/app_info.js";
|
||||
import dateUtils from "../../services/date_utils.js";
|
||||
import passwordEncryptionService from "../../services/encryption/password_encryption.js";
|
||||
import recoveryCodeService from "../../services/encryption/recovery_codes";
|
||||
import etapiTokenService from "../../services/etapi_tokens.js";
|
||||
import instanceId from "../../services/instance_id.js";
|
||||
import options from "../../services/options.js";
|
||||
import protectedSessionService from "../../services/protected_session.js";
|
||||
import sql from "../../services/sql.js";
|
||||
import sqlInit from "../../services/sql_init.js";
|
||||
import totp from "../../services/totp";
|
||||
import utils from "../../services/utils.js";
|
||||
import ws from "../../services/ws.js";
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
@ -115,7 +114,7 @@ function loginSync(req: Request) {
|
||||
req.session.loggedIn = true;
|
||||
|
||||
return {
|
||||
instanceId: instanceId,
|
||||
instanceId,
|
||||
maxEntityChangeId: sql.getValue("SELECT COALESCE(MAX(id), 0) FROM entity_changes WHERE isSynced = 1")
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,14 +1,15 @@
|
||||
import sql from "./sql.js";
|
||||
import dateUtils from "./date_utils.js";
|
||||
import log from "./log.js";
|
||||
import cls from "./cls.js";
|
||||
import { randomString } from "./utils.js";
|
||||
import instanceId from "./instance_id.js";
|
||||
import type { EntityChange } from "@triliumnext/commons";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import becca from "../becca/becca.js";
|
||||
import blobService from "../services/blob.js";
|
||||
import type { EntityChange } from "@triliumnext/commons";
|
||||
import type { Blob } from "./blob-interface.js";
|
||||
import eventService from "./events.js";
|
||||
import cls from "./cls.js";
|
||||
import dateUtils from "./date_utils.js";
|
||||
import instanceId from "./instance_id.js";
|
||||
import log from "./log.js";
|
||||
import sql from "./sql.js";
|
||||
import { randomString } from "./utils.js";
|
||||
|
||||
let maxEntityChangeId = 0;
|
||||
|
||||
|
||||
@ -1,14 +1,15 @@
|
||||
import eventService from "./events.js";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import becca from "../becca/becca.js";
|
||||
import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
|
||||
import BAttribute from "../becca/entities/battribute.js";
|
||||
import type BNote from "../becca/entities/bnote.js";
|
||||
import hiddenSubtreeService from "./hidden_subtree.js";
|
||||
import noteService from "./notes.js";
|
||||
import oneTimeTimer from "./one_time_timer.js";
|
||||
import type { DefinitionObject } from "./promoted_attribute_definition_interface.js";
|
||||
import scriptService from "./script.js";
|
||||
import treeService from "./tree.js";
|
||||
import noteService from "./notes.js";
|
||||
import becca from "../becca/becca.js";
|
||||
import BAttribute from "../becca/entities/battribute.js";
|
||||
import hiddenSubtreeService from "./hidden_subtree.js";
|
||||
import oneTimeTimer from "./one_time_timer.js";
|
||||
import type BNote from "../becca/entities/bnote.js";
|
||||
import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
|
||||
import type { DefinitionObject } from "./promoted_attribute_definition_interface.js";
|
||||
|
||||
type Handler = (definition: DefinitionObject, note: BNote, targetNote: BNote) => void;
|
||||
|
||||
|
||||
@ -1,32 +1,28 @@
|
||||
import options from '../options.js';
|
||||
import eventService from '../events.js';
|
||||
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
|
||||
import { AnthropicService } from './providers/anthropic_service.js';
|
||||
import { ContextExtractor } from './context/index.js';
|
||||
import agentTools from './context_extractors/index.js';
|
||||
import contextService from './context/services/context_service.js';
|
||||
import log from '../log.js';
|
||||
import { OllamaService } from './providers/ollama_service.js';
|
||||
import { OpenAIService } from './providers/openai_service.js';
|
||||
|
||||
// Import interfaces
|
||||
import type {
|
||||
ServiceProviders,
|
||||
IAIServiceManager,
|
||||
ProviderMetadata
|
||||
} from './interfaces/ai_service_interfaces.js';
|
||||
import type { NoteSearchResult } from './interfaces/context_interfaces.js';
|
||||
|
||||
import options from '../options.js';
|
||||
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
|
||||
// Import new configuration system
|
||||
import {
|
||||
getSelectedProvider,
|
||||
parseModelIdentifier,
|
||||
isAIEnabled,
|
||||
getDefaultModelForProvider,
|
||||
clearConfigurationCache,
|
||||
getDefaultModelForProvider,
|
||||
getSelectedProvider,
|
||||
isAIEnabled,
|
||||
parseModelIdentifier,
|
||||
validateConfiguration
|
||||
} from './config/configuration_helpers.js';
|
||||
import { ContextExtractor } from './context/index.js';
|
||||
import contextService from './context/services/context_service.js';
|
||||
import agentTools from './context_extractors/index.js';
|
||||
// Import interfaces
|
||||
import type {
|
||||
IAIServiceManager,
|
||||
ProviderMetadata,
|
||||
ServiceProviders} from './interfaces/ai_service_interfaces.js';
|
||||
import type { ProviderType } from './interfaces/configuration_interfaces.js';
|
||||
import type { NoteSearchResult } from './interfaces/context_interfaces.js';
|
||||
import { AnthropicService } from './providers/anthropic_service.js';
|
||||
import { OllamaService } from './providers/ollama_service.js';
|
||||
import { OpenAIService } from './providers/openai_service.js';
|
||||
|
||||
/**
|
||||
* Interface representing relevant note context
|
||||
@ -173,7 +169,7 @@ export class AIServiceManager implements IAIServiceManager {
|
||||
/**
|
||||
* Get list of available providers
|
||||
*/
|
||||
getAvailableProviders(): ServiceProviders[] {
|
||||
getAvailableProviders(): ServiceProviders[] {
|
||||
this.ensureInitialized();
|
||||
|
||||
const allProviders: ServiceProviders[] = ['openai', 'anthropic', 'ollama'];
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import type { AttachmentRow, AttributeRow, BranchRow, NoteRow } from "@triliumnext/commons";
|
||||
import { dayjs } from "@triliumnext/commons";
|
||||
import { date_utils } from "@triliumnext/core";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
import fs from "fs";
|
||||
import html2plaintext from "html2plaintext";
|
||||
import { t } from "i18next";
|
||||
@ -18,7 +19,6 @@ import log from "../services/log.js";
|
||||
import protectedSessionService from "../services/protected_session.js";
|
||||
import { newEntityId, quoteRegex, toMap,unescapeHtml } from "../services/utils.js";
|
||||
import entityChangesService from "./entity_changes.js";
|
||||
import eventService from "./events.js";
|
||||
import htmlSanitizer from "./html_sanitizer.js";
|
||||
import imageService from "./image.js";
|
||||
import noteTypesService from "./note_types.js";
|
||||
|
||||
@ -1,24 +1,25 @@
|
||||
import log from "./log.js";
|
||||
import { deferred, type OptionRow } from "@triliumnext/commons";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
import fs from "fs";
|
||||
import resourceDir from "./resource_dir.js";
|
||||
import sql from "./sql.js";
|
||||
import { isElectron } from "./utils.js";
|
||||
import optionService from "./options.js";
|
||||
import port from "./port.js";
|
||||
import { t } from "i18next";
|
||||
|
||||
import BBranch from "../becca/entities/bbranch.js";
|
||||
import BNote from "../becca/entities/bnote.js";
|
||||
import BOption from "../becca/entities/boption.js";
|
||||
import TaskContext from "./task_context.js";
|
||||
import migrationService from "./migration.js";
|
||||
import backup from "./backup.js";
|
||||
import cls from "./cls.js";
|
||||
import config from "./config.js";
|
||||
import { deferred, type OptionRow } from "@triliumnext/commons";
|
||||
import BNote from "../becca/entities/bnote.js";
|
||||
import BBranch from "../becca/entities/bbranch.js";
|
||||
import zipImportService from "./import/zip.js";
|
||||
import password from "./encryption/password.js";
|
||||
import backup from "./backup.js";
|
||||
import eventService from "./events.js";
|
||||
import { t } from "i18next";
|
||||
import hidden_subtree from "./hidden_subtree.js";
|
||||
import zipImportService from "./import/zip.js";
|
||||
import log from "./log.js";
|
||||
import migrationService from "./migration.js";
|
||||
import optionService from "./options.js";
|
||||
import port from "./port.js";
|
||||
import resourceDir from "./resource_dir.js";
|
||||
import sql from "./sql.js";
|
||||
import TaskContext from "./task_context.js";
|
||||
import { isElectron } from "./utils.js";
|
||||
|
||||
export const dbReady = deferred<void>();
|
||||
|
||||
@ -65,7 +66,7 @@ async function initDbConnection() {
|
||||
isSetup TEXT DEFAULT "false",
|
||||
UNIQUE (tmpID),
|
||||
PRIMARY KEY (tmpID)
|
||||
);`)
|
||||
);`);
|
||||
|
||||
dbReady.resolve();
|
||||
}
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
import sql from "./sql.js";
|
||||
import log from "./log.js";
|
||||
import entityChangesService from "./entity_changes.js";
|
||||
import eventService from "./events.js";
|
||||
import entityConstructor from "../becca/entity_constructor.js";
|
||||
import ws from "./ws.js";
|
||||
import type { EntityChange, EntityChangeRecord, EntityRow } from "@triliumnext/commons";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import entityConstructor from "../becca/entity_constructor.js";
|
||||
import entityChangesService from "./entity_changes.js";
|
||||
import log from "./log.js";
|
||||
import sql from "./sql.js";
|
||||
import ws from "./ws.js";
|
||||
|
||||
interface UpdateContext {
|
||||
alreadyErased: number;
|
||||
|
||||
@ -1,15 +1,14 @@
|
||||
"use strict";
|
||||
import { events as eventService } from "@triliumnext/core";
|
||||
|
||||
import sql from "../sql.js";
|
||||
import shaca from "./shaca.js";
|
||||
import log from "../../services/log.js";
|
||||
import SNote from "./entities/snote.js";
|
||||
import SBranch from "./entities/sbranch.js";
|
||||
import SAttribute from "./entities/sattribute.js";
|
||||
import SAttachment from "./entities/sattachment.js";
|
||||
import shareRoot from "../share_root.js";
|
||||
import eventService from "../../services/events.js";
|
||||
import sql from "../sql.js";
|
||||
import type { SAttachmentRow, SAttributeRow, SBranchRow, SNoteRow } from "./entities/rows.js";
|
||||
import SAttachment from "./entities/sattachment.js";
|
||||
import SAttribute from "./entities/sattribute.js";
|
||||
import SBranch from "./entities/sbranch.js";
|
||||
import SNote from "./entities/snote.js";
|
||||
import shaca from "./shaca.js";
|
||||
|
||||
function load() {
|
||||
const start = Date.now();
|
||||
|
||||
@ -10,6 +10,7 @@ export * as protected_session from "./services/encryption/protected_session";
|
||||
export { default as data_encryption } from "./services/encryption/data_encryption"
|
||||
export * as binary_utils from "./services/utils/binary";
|
||||
export { default as date_utils } from "./services/utils/date";
|
||||
export { default as events } from "./services/events";
|
||||
export { getContext, type ExecutionContext } from "./services/context";
|
||||
export type { CryptoProvider } from "./services/encryption/crypto";
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user