mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-06-30 17:09:38 +02:00
Use native runtimes for flow entrypoints
This commit is contained in:
parent
54fc21b38d
commit
74955d6041
38 changed files with 233 additions and 134 deletions
|
|
@ -12,12 +12,12 @@ Verified source roots:
|
|||
- Effect v4 subtree: `/home/elpresidank/YeeBois/projects/beep-effect2/.repos/effect-v4`
|
||||
- Installed Effect beta used by this workspace: `ts/node_modules/effect`
|
||||
|
||||
Current signal counts from `ts/packages` after the 2026-06-02 Client socket
|
||||
tagged error slice:
|
||||
Current signal counts from `ts/packages` after the 2026-06-02 Service
|
||||
entrypoint runtime slice:
|
||||
|
||||
| Signal | Count |
|
||||
| --- | ---: |
|
||||
| `Effect.runPromise` | 203 |
|
||||
| `Effect.runPromise` | 185 |
|
||||
| `Map<` | 88 |
|
||||
| `WebSocket` | 72 |
|
||||
| `new Map` | 62 |
|
||||
|
|
@ -58,6 +58,10 @@ Notes:
|
|||
`trustgraph-socket.ts` normal `Error`, raw `JSON.parse`, and listener
|
||||
`try`/`catch` matches. The remaining client socket modernization signal is
|
||||
the shared `newableFactory` constructor assertion pattern.
|
||||
- The service entrypoint runtime slice dropped the `Effect.runPromise` count by
|
||||
replacing remaining flow service `run()` program facades with
|
||||
`ManagedRuntime` and routing local `ts/scripts/run-*` launchers through
|
||||
`runMain()`/`NodeRuntime.runMain`.
|
||||
- `Record<string, any>` and `throwLibrarianServiceError` are now clean in
|
||||
`ts/packages`.
|
||||
|
||||
|
|
@ -457,6 +461,30 @@ Notes:
|
|||
- Current client/root verification from the tagged error slice covers this
|
||||
no-op decision.
|
||||
|
||||
### 2026-06-02: Service Entrypoint Runtime Slice
|
||||
|
||||
- Status: migrated and root-verified.
|
||||
- Completed:
|
||||
- Remaining flow service `run(): Promise<void>` program facades now use
|
||||
`ManagedRuntime.make(Layer.empty)` instead of direct
|
||||
`Effect.runPromise(program)`.
|
||||
- Remaining flow service modules now expose `runMain()` through
|
||||
`NodeRuntime.runMain(program)`.
|
||||
- Local `ts/scripts/run-*` launchers for gateway, prompt, chunker,
|
||||
extractor, PDF decoder, embeddings, triples, graph/document embeddings,
|
||||
text-completion providers, and MCP tool service now delegate directly to
|
||||
`runMain()`.
|
||||
- Direct `Effect.runPromise(program)` matches in `ts/packages/flow/src` are
|
||||
clean. Remaining `Effect.runPromise` matches are callback/Promise
|
||||
compatibility boundaries for later slices.
|
||||
- Verification:
|
||||
- `bun run --cwd ts/packages/flow build`
|
||||
- `git diff --check`
|
||||
- `cd ts && bun run check`
|
||||
- `bun run --cwd ts/packages/flow test`
|
||||
- `cd ts && bun run build`
|
||||
- `cd ts && bun run test`
|
||||
|
||||
## Subagent Findings To Preserve
|
||||
|
||||
- MCP/workbench:
|
||||
|
|
@ -470,6 +498,9 @@ Notes:
|
|||
ref-backed state slices are complete. Follow-up service work should focus
|
||||
on scoped layers, schedules where polling semantics allow, and managed
|
||||
persistence providers rather than direct mutable service fields.
|
||||
- Flow service startup facades now consistently use `ManagedRuntime`, and
|
||||
local scripts should delegate to `runMain()` instead of adding local
|
||||
`.catch(console.error/process.exit)` wrappers.
|
||||
- Persistence IO should move toward `FileSystem` or `KeyValueStore` where
|
||||
the installed beta has the needed provider surface.
|
||||
- Base messaging/processors:
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
export { McpToolService, run } from "./service.js";
|
||||
export { McpToolService, run, runMain } from "./service.js";
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
||||
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
|
||||
import {
|
||||
makeFlowProcessor,
|
||||
|
|
@ -29,7 +30,7 @@ import {
|
|||
type MessagingDeliveryError,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { Context, Effect, Layer, Ref } from "effect";
|
||||
import { Context, Effect, Layer, ManagedRuntime, Ref } from "effect";
|
||||
import * as O from "effect/Option";
|
||||
import * as S from "effect/Schema";
|
||||
|
||||
|
|
@ -315,6 +316,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, McpToolR
|
|||
layer: () => McpToolRuntimeLive,
|
||||
});
|
||||
|
||||
const mcpToolRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return mcpToolRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,9 @@ import {
|
|||
type Triples,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import { recursiveSplit } from "./recursive-splitter.js";
|
||||
|
||||
const DEFAULT_CHUNK_SIZE = 2000;
|
||||
|
|
@ -102,6 +103,12 @@ export const program = makeFlowProcessorProgram({
|
|||
specs: () => makeChunkingSpecs(),
|
||||
});
|
||||
|
||||
const chunkingRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return chunkingRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,8 +36,9 @@ import {
|
|||
type Spec,
|
||||
errorMessage,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Clock, Effect } from "effect";
|
||||
import { Clock, Effect, Layer, ManagedRuntime } from "effect";
|
||||
import * as S from "effect/Schema";
|
||||
|
||||
export class PdfDecoderError extends S.TaggedErrorClass<PdfDecoderError>()(
|
||||
|
|
@ -252,6 +253,12 @@ export const program = makeFlowProcessorProgram({
|
|||
specs: () => makePdfDecoderSpecs(),
|
||||
});
|
||||
|
||||
const pdfDecoderRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return pdfDecoderRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
* Python reference: trustgraph-flow/trustgraph/embeddings/ollama/processor.py
|
||||
*/
|
||||
|
||||
import { Config, Effect, Layer } from "effect";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { Config, Effect, Layer, ManagedRuntime } from "effect";
|
||||
import * as O from "effect/Option";
|
||||
import * as S from "effect/Schema";
|
||||
import {
|
||||
|
|
@ -154,6 +155,12 @@ export const program = makeFlowProcessorProgram<OllamaEmbeddingsConfig, never, E
|
|||
layer: (config) => OllamaEmbeddingsLive(config),
|
||||
});
|
||||
|
||||
const ollamaEmbeddingsRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return ollamaEmbeddingsRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@ import {
|
|||
type EffectRequestResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import * as O from "effect/Option";
|
||||
import * as S from "effect/Schema";
|
||||
|
||||
|
|
@ -386,6 +387,12 @@ export const program = makeFlowProcessorProgram({
|
|||
specs: () => makeKnowledgeExtractSpecs(),
|
||||
});
|
||||
|
||||
const knowledgeExtractRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return knowledgeExtractRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
|
||||
import Fastify, { type FastifyReply } from "fastify";
|
||||
import websocketPlugin from "@fastify/websocket";
|
||||
import { Clock, Config, Effect, Exit, Random, Scope } from "effect";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { Clock, Config, Effect, Exit, Layer, ManagedRuntime, Random, Scope } from "effect";
|
||||
import * as O from "effect/Option";
|
||||
import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
|
||||
import * as EffectSocket from "effect/unstable/socket/Socket";
|
||||
|
|
@ -258,7 +259,11 @@ function headersFrom(headers: Record<string, string | string[] | number | undefi
|
|||
}
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return gatewayRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
||||
export const loadGatewayConfig = Effect.fn("loadGatewayConfig")(function* () {
|
||||
|
|
@ -291,3 +296,5 @@ export const program = Effect.scoped(
|
|||
return yield* Effect.never;
|
||||
}),
|
||||
);
|
||||
|
||||
const gatewayRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
|
||||
import { AzureOpenAI } from "openai";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -20,7 +21,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerStatusError,
|
||||
|
|
@ -229,6 +230,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const azureOpenAITextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return azureOpenAITextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import Anthropic from "@anthropic-ai/sdk";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -16,7 +17,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerStatusError,
|
||||
|
|
@ -209,6 +210,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const claudeTextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return claudeTextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
import { Mistral } from "@mistralai/mistralai";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -18,7 +19,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerStatusError,
|
||||
|
|
@ -208,6 +209,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const mistralTextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return mistralTextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
import { Ollama } from "ollama";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -18,7 +19,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerRuntimeError,
|
||||
|
|
@ -187,6 +188,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const ollamaTextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return ollamaTextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
*/
|
||||
|
||||
import OpenAI from "openai";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -21,7 +22,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerStatusError,
|
||||
|
|
@ -220,6 +221,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const openAICompatibleTextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return openAICompatibleTextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import OpenAI from "openai";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import {
|
||||
Llm,
|
||||
makeLlmService,
|
||||
|
|
@ -16,7 +17,7 @@ import {
|
|||
type LlmResult,
|
||||
type LlmChunk,
|
||||
} from "@trustgraph/base";
|
||||
import { Effect, Layer, Stream } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime, Stream } from "effect";
|
||||
import {
|
||||
optionalStringConfig,
|
||||
providerStatusError,
|
||||
|
|
@ -211,6 +212,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig, never, Llm>({
|
|||
),
|
||||
});
|
||||
|
||||
const openAITextCompletionRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return openAITextCompletionRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,8 +38,9 @@ import {
|
|||
type PromptResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import * as S from "effect/Schema";
|
||||
|
||||
export interface PromptTemplate {
|
||||
|
|
@ -195,6 +196,12 @@ export const program = makeFlowProcessorProgram({
|
|||
configHandlers: (config: PromptTemplateConfig) => promptTemplateRuntime(config).configHandlers,
|
||||
});
|
||||
|
||||
const promptRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return promptRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@ import {
|
|||
type DocumentEmbeddingsResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import {
|
||||
QdrantDocEmbeddingsQueryLive,
|
||||
QdrantDocEmbeddingsQueryService,
|
||||
|
|
@ -113,6 +114,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig & QdrantDocQuery
|
|||
layer: (config) => QdrantDocEmbeddingsQueryLive(config),
|
||||
});
|
||||
|
||||
const docEmbeddingsQueryRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return docEmbeddingsQueryRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@ import {
|
|||
type GraphEmbeddingsResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import {
|
||||
QdrantGraphEmbeddingsQueryLive,
|
||||
QdrantGraphEmbeddingsQueryService,
|
||||
|
|
@ -114,6 +115,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig & QdrantGraphQue
|
|||
layer: (config) => QdrantGraphEmbeddingsQueryLive(config),
|
||||
});
|
||||
|
||||
const graphEmbeddingsQueryRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return graphEmbeddingsQueryRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@ import {
|
|||
type TriplesQueryResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import {
|
||||
FalkorDBTriplesQueryLive,
|
||||
FalkorDBTriplesQueryService,
|
||||
|
|
@ -100,6 +101,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig & FalkorDBQueryC
|
|||
layer: (config) => FalkorDBTriplesQueryLive(config),
|
||||
});
|
||||
|
||||
const triplesQueryRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return triplesQueryRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,9 @@ import {
|
|||
type EmbeddingsResponse,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import {
|
||||
QdrantGraphEmbeddingsStoreLive,
|
||||
QdrantGraphEmbeddingsStoreService,
|
||||
|
|
@ -119,6 +120,12 @@ export const program = makeFlowProcessorProgram<
|
|||
layer: (config) => QdrantGraphEmbeddingsStoreLive(config),
|
||||
});
|
||||
|
||||
const graphEmbeddingsStoreRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return graphEmbeddingsStoreRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,9 @@ import {
|
|||
type Triples,
|
||||
type Spec,
|
||||
} from "@trustgraph/base";
|
||||
import { NodeRuntime } from "@effect/platform-node";
|
||||
import { makeFlowProcessorProgram } from "@trustgraph/base";
|
||||
import { Effect } from "effect";
|
||||
import { Effect, Layer, ManagedRuntime } from "effect";
|
||||
import {
|
||||
FalkorDBTriplesStoreLive,
|
||||
FalkorDBTriplesStoreService,
|
||||
|
|
@ -78,6 +79,12 @@ export const program = makeFlowProcessorProgram<ProcessorConfig & FalkorDBConfig
|
|||
layer: (config) => FalkorDBTriplesStoreLive(config),
|
||||
});
|
||||
|
||||
const triplesStoreRuntime = ManagedRuntime.make(Layer.empty);
|
||||
|
||||
export function run(): Promise<void> {
|
||||
return Effect.runPromise(program);
|
||||
return triplesStoreRuntime.runPromise(program);
|
||||
}
|
||||
|
||||
export function runMain(): void {
|
||||
NodeRuntime.runMain(program);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/chunking/service.js";
|
||||
import { runMain } from "../packages/flow/src/chunking/service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Chunking service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/query/embeddings/qdrant-doc-service.js";
|
||||
import { runMain } from "../packages/flow/src/query/embeddings/qdrant-doc-service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Document embeddings query service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/embeddings/ollama.js";
|
||||
import { runMain } from "../packages/flow/src/embeddings/ollama.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Embeddings service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/extract/knowledge-extract.js";
|
||||
import { runMain } from "../packages/flow/src/extract/knowledge-extract.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Knowledge extract service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
* GATEWAY_PORT (default: 8088)
|
||||
* GATEWAY_SECRET (optional)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/gateway/server.js";
|
||||
import { runMain } from "../packages/flow/src/gateway/server.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Gateway failed to start:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/query/embeddings/qdrant-graph-service.js";
|
||||
import { runMain } from "../packages/flow/src/query/embeddings/qdrant-graph-service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Graph embeddings query service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/storage/embeddings/graph-embeddings-service.js";
|
||||
import { runMain } from "../packages/flow/src/storage/embeddings/graph-embeddings-service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Graph embeddings store service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -10,9 +10,6 @@
|
|||
* AZURE_MODEL (default: gpt-4o)
|
||||
* AZURE_API_VERSION (default: 2024-12-01-preview)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/azure-openai.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/azure-openai.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Azure OpenAI LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@
|
|||
* NATS_URL (default: nats://localhost:4222)
|
||||
* CLAUDE_KEY (required)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/claude.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/claude.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Claude LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
* MISTRAL_TOKEN (required)
|
||||
* MISTRAL_MODEL (default: ministral-8b-latest)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/mistral.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/mistral.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Mistral LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -9,9 +9,6 @@
|
|||
* OPENAI_COMPAT_KEY (default: sk-no-key-required)
|
||||
* OPENAI_COMPAT_MODEL (default: default)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/openai-compatible.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/openai-compatible.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("OpenAI-compatible LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
* OPENAI_TOKEN (required)
|
||||
* OPENAI_BASE_URL (optional)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/openai.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/openai.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("OpenAI LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -6,13 +6,6 @@
|
|||
* Env:
|
||||
* NATS_URL (default: nats://localhost:4222)
|
||||
*/
|
||||
import { run as runMcpToolService } from "../packages/flow/src/agent/mcp-tool/index.js";
|
||||
import { runMain } from "../packages/flow/src/agent/mcp-tool/index.js";
|
||||
|
||||
async function run(): Promise<void> {
|
||||
await runMcpToolService();
|
||||
}
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("MCP tool service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
* OLLAMA_URL (default: http://localhost:11434)
|
||||
* OLLAMA_MODEL (default: qwen2.5:0.5b)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/model/text-completion/ollama.js";
|
||||
import { runMain } from "../packages/flow/src/model/text-completion/ollama.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Ollama LLM service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@
|
|||
* Env:
|
||||
* NATS_URL (default: nats://localhost:4222)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/decoding/pdf-decoder.js";
|
||||
import { runMain } from "../packages/flow/src/decoding/pdf-decoder.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("PDF decoder service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@
|
|||
* Env:
|
||||
* NATS_URL (default: nats://localhost:4222)
|
||||
*/
|
||||
import { run } from "../packages/flow/src/prompt/template.js";
|
||||
import { runMain } from "../packages/flow/src/prompt/template.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Prompt service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/query/triples/falkordb-service.js";
|
||||
import { runMain } from "../packages/flow/src/query/triples/falkordb-service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Triples query service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { run } from "../packages/flow/src/storage/triples/falkordb-service.js";
|
||||
import { runMain } from "../packages/flow/src/storage/triples/falkordb-service.js";
|
||||
|
||||
run().catch((err) => {
|
||||
console.error("Triples store service failed:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
runMain();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue