Use native runtimes for flow entrypoints

This commit is contained in:
elpresidank 2026-06-02 02:34:03 -05:00
parent 54fc21b38d
commit 74955d6041
38 changed files with 233 additions and 134 deletions

View file

@ -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:

View file

@ -1 +1 @@
export { McpToolService, run } from "./service.js";
export { McpToolService, run, runMain } from "./service.js";

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();