@dahura/super-agent-runtime 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ask.d.ts +75 -0
  3. package/dist/ask.d.ts.map +1 -0
  4. package/dist/ask.js +140 -0
  5. package/dist/ask.js.map +1 -0
  6. package/dist/builder.d.ts +73 -0
  7. package/dist/builder.d.ts.map +1 -0
  8. package/dist/builder.js +477 -0
  9. package/dist/builder.js.map +1 -0
  10. package/dist/env.d.ts +36 -0
  11. package/dist/env.d.ts.map +1 -0
  12. package/dist/env.js +63 -0
  13. package/dist/env.js.map +1 -0
  14. package/dist/errors.d.ts +40 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +43 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +30 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +21 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/loaders.d.ts +39 -0
  23. package/dist/loaders.d.ts.map +1 -0
  24. package/dist/loaders.js +113 -0
  25. package/dist/loaders.js.map +1 -0
  26. package/dist/model.d.ts +64 -0
  27. package/dist/model.d.ts.map +1 -0
  28. package/dist/model.js +2 -0
  29. package/dist/model.js.map +1 -0
  30. package/dist/providers/anthropic.d.ts +14 -0
  31. package/dist/providers/anthropic.d.ts.map +1 -0
  32. package/dist/providers/anthropic.js +19 -0
  33. package/dist/providers/anthropic.js.map +1 -0
  34. package/dist/providers/anthropic.provider.d.ts +22 -0
  35. package/dist/providers/anthropic.provider.d.ts.map +1 -0
  36. package/dist/providers/anthropic.provider.js +62 -0
  37. package/dist/providers/anthropic.provider.js.map +1 -0
  38. package/dist/providers/audio-local.d.ts +21 -0
  39. package/dist/providers/audio-local.d.ts.map +1 -0
  40. package/dist/providers/audio-local.js +451 -0
  41. package/dist/providers/audio-local.js.map +1 -0
  42. package/dist/providers/audio-local.provider.d.ts +15 -0
  43. package/dist/providers/audio-local.provider.d.ts.map +1 -0
  44. package/dist/providers/audio-local.provider.js +137 -0
  45. package/dist/providers/audio-local.provider.js.map +1 -0
  46. package/dist/providers/index.d.ts +30 -0
  47. package/dist/providers/index.d.ts.map +1 -0
  48. package/dist/providers/index.js +56 -0
  49. package/dist/providers/index.js.map +1 -0
  50. package/dist/providers/llama-server.d.ts +57 -0
  51. package/dist/providers/llama-server.d.ts.map +1 -0
  52. package/dist/providers/llama-server.js +231 -0
  53. package/dist/providers/llama-server.js.map +1 -0
  54. package/dist/providers/llama-server.provider.d.ts +34 -0
  55. package/dist/providers/llama-server.provider.d.ts.map +1 -0
  56. package/dist/providers/llama-server.provider.js +147 -0
  57. package/dist/providers/llama-server.provider.js.map +1 -0
  58. package/dist/providers/openai-compatible.d.ts +32 -0
  59. package/dist/providers/openai-compatible.d.ts.map +1 -0
  60. package/dist/providers/openai-compatible.js +53 -0
  61. package/dist/providers/openai-compatible.js.map +1 -0
  62. package/dist/providers/openai-compatible.provider.d.ts +24 -0
  63. package/dist/providers/openai-compatible.provider.d.ts.map +1 -0
  64. package/dist/providers/openai-compatible.provider.js +76 -0
  65. package/dist/providers/openai-compatible.provider.js.map +1 -0
  66. package/dist/providers/openai.d.ts +14 -0
  67. package/dist/providers/openai.d.ts.map +1 -0
  68. package/dist/providers/openai.js +24 -0
  69. package/dist/providers/openai.js.map +1 -0
  70. package/dist/providers/openai.provider.d.ts +23 -0
  71. package/dist/providers/openai.provider.d.ts.map +1 -0
  72. package/dist/providers/openai.provider.js +68 -0
  73. package/dist/providers/openai.provider.js.map +1 -0
  74. package/dist/providers/whisper-cpp.d.ts +23 -0
  75. package/dist/providers/whisper-cpp.d.ts.map +1 -0
  76. package/dist/providers/whisper-cpp.js +110 -0
  77. package/dist/providers/whisper-cpp.js.map +1 -0
  78. package/dist/providers/whisper-cpp.provider.d.ts +27 -0
  79. package/dist/providers/whisper-cpp.provider.d.ts.map +1 -0
  80. package/dist/providers/whisper-cpp.provider.js +139 -0
  81. package/dist/providers/whisper-cpp.provider.js.map +1 -0
  82. package/dist/proxy.d.ts +11 -0
  83. package/dist/proxy.d.ts.map +1 -0
  84. package/dist/proxy.js +12 -0
  85. package/dist/proxy.js.map +1 -0
  86. package/dist/registry.d.ts +111 -0
  87. package/dist/registry.d.ts.map +1 -0
  88. package/dist/registry.js +328 -0
  89. package/dist/registry.js.map +1 -0
  90. package/dist/resolver.d.ts +47 -0
  91. package/dist/resolver.d.ts.map +1 -0
  92. package/dist/resolver.js +365 -0
  93. package/dist/resolver.js.map +1 -0
  94. package/dist/workflow.d.ts +86 -0
  95. package/dist/workflow.d.ts.map +1 -0
  96. package/dist/workflow.js +343 -0
  97. package/dist/workflow.js.map +1 -0
  98. package/package.json +57 -0
@@ -0,0 +1,365 @@
1
+ import { access, readdir } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { matchModelPattern } from "@dahura/super-agent-kit";
5
+ import { ProviderError } from "./errors";
6
+ import { readModelAlias, readScopedEnv } from "./env";
7
+ import { buildOpenAICompatibleModel, } from "./providers/openai-compatible";
8
+ import { buildOpenAIModel } from "./providers/openai";
9
+ import { buildAnthropicModel } from "./providers/anthropic";
10
+ import { audioRuntimeForModel, buildAudioLocalModel, resolveBundledVoiceSidecar, } from "./providers/audio-local";
11
+ import { buildWhisperCppModel } from "./providers/whisper-cpp";
12
+ import { buildLlamaServerModel } from "./providers/llama-server";
13
+ import { LLAMA_SERVER_MODEL_DISCOVERY_PATHS } from "./providers/llama-server.provider";
14
+ import { defaultRegistry } from "./registry";
15
+ const LOCAL_DEFAULTS = {
16
+ /** Ollama default endpoint when nothing else is configured. */
17
+ ollama: "http://localhost:11434/v1",
18
+ /** llama.cpp's llama-server default endpoint. */
19
+ llamaServer: "http://localhost:8080/v1",
20
+ };
21
+ const LLAMA_SERVER_DEFAULTS = {
22
+ host: "127.0.0.1",
23
+ port: 8080,
24
+ };
25
+ /**
26
+ * Common paths where llama-server binary might be installed.
27
+ */
28
+ const LLAMA_SERVER_BIN_PATHS = [
29
+ "/opt/homebrew/bin/llama-server",
30
+ "/usr/local/bin/llama-server",
31
+ "/usr/bin/llama-server",
32
+ join(homedir(), ".local", "bin", "llama-server"),
33
+ join(homedir(), "bin", "llama-server"),
34
+ ];
35
+ /**
36
+ * Find llama-server binary in common locations.
37
+ */
38
+ async function findLlamaServerBin() {
39
+ for (const path of LLAMA_SERVER_BIN_PATHS) {
40
+ try {
41
+ await access(path);
42
+ return path;
43
+ }
44
+ catch {
45
+ continue;
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Find a GGUF model file by its ID using the registry's model discovery.
52
+ * Searches in LM Studio model paths.
53
+ */
54
+ async function findModelPathById(modelId) {
55
+ try {
56
+ const models = await defaultRegistry.discoverModels("llama-server");
57
+ const match = models.find((m) => m.id === modelId);
58
+ return match?.path ?? null;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ /**
65
+ * Find a matching mmproj (multimodal projector) file for vision support.
66
+ * Looks for files matching `mmproj-{ModelName}*.gguf` pattern.
67
+ *
68
+ * For example, for model "Qwen3.5-9B-Q4_K_M" it will look for:
69
+ * - mmproj-Qwen3.5-9B-BF16.gguf
70
+ * - mmproj-Qwen3.5-9B-F32.gguf
71
+ * etc.
72
+ */
73
+ function expandHomePath(path) {
74
+ if (path.startsWith("~/")) {
75
+ return join(homedir(), path.slice(2));
76
+ }
77
+ if (path === "~") {
78
+ return homedir();
79
+ }
80
+ return path;
81
+ }
82
+ async function listMmprojFiles(dir) {
83
+ try {
84
+ const entries = await readdir(dir, { withFileTypes: true });
85
+ return entries
86
+ .filter((entry) => entry.isFile() && /^mmproj-.+\.gguf$/i.test(entry.name))
87
+ .map((entry) => join(dir, entry.name));
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ }
93
+ async function scanMmprojFilesRecursively(dir) {
94
+ try {
95
+ const entries = await readdir(dir, { withFileTypes: true });
96
+ const files = [];
97
+ for (const entry of entries) {
98
+ const fullPath = join(dir, entry.name);
99
+ if (entry.isDirectory()) {
100
+ files.push(...await scanMmprojFilesRecursively(fullPath));
101
+ continue;
102
+ }
103
+ if (entry.isFile() && /^mmproj-.+\.gguf$/i.test(entry.name)) {
104
+ files.push(fullPath);
105
+ }
106
+ }
107
+ return files;
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
113
+ function scoreMmprojCandidate(modelId, candidatePath) {
114
+ const candidateId = candidatePath.split("/").pop()?.replace(/\.gguf$/i, "").toLowerCase() ?? "";
115
+ const baseMatch = modelId.match(/^(.+?)-Q\d/i);
116
+ const baseName = (baseMatch ? baseMatch[1] : modelId).toLowerCase();
117
+ if (candidateId === `mmproj-${baseName}`)
118
+ return 100;
119
+ if (candidateId.includes(baseName))
120
+ return 50;
121
+ return 0;
122
+ }
123
+ export async function __findMmprojForModel(modelId, modelPath, searchPaths = LLAMA_SERVER_MODEL_DISCOVERY_PATHS) {
124
+ try {
125
+ const candidates = new Map();
126
+ if (modelPath) {
127
+ for (const candidate of await listMmprojFiles(dirname(modelPath))) {
128
+ candidates.set(candidate, scoreMmprojCandidate(modelId, candidate) + 1000);
129
+ }
130
+ }
131
+ for (const basePath of searchPaths) {
132
+ for (const candidate of await scanMmprojFilesRecursively(expandHomePath(basePath))) {
133
+ if (!candidates.has(candidate)) {
134
+ candidates.set(candidate, scoreMmprojCandidate(modelId, candidate));
135
+ }
136
+ }
137
+ }
138
+ const bestCandidate = Array.from(candidates.entries())
139
+ .filter(([, score]) => score > 0)
140
+ .sort((a, b) => b[1] - a[1])[0]?.[0];
141
+ return bestCandidate ?? null;
142
+ }
143
+ catch {
144
+ return null;
145
+ }
146
+ }
147
+ /**
148
+ * Build a `ModelResolver` ready to plug into `createAgentClient`. The same
149
+ * function powers both consumer code and the Playground.
150
+ *
151
+ * Local-first priority order applied each time the resolver runs:
152
+ *
153
+ * 1. Honor `override` if given (UI selector / test). Validate against
154
+ * `policy.allow` regardless of where it came from.
155
+ * 2. Otherwise use `policy.default`.
156
+ * 3. Resolve aliases (e.g. local/qwen3.5-2b → Qwen3.5-2B-Q4_K_M).
157
+ * 4. Pick provider:
158
+ * audio-local/* → audio-local custom provider
159
+ * local/* → openai-compatible (or audio-local/whisper by per-agent env)
160
+ * openai/* → openai (cloud, opt-in)
161
+ * anthropic/* → anthropic (cloud, opt-in)
162
+ * Custom per-agent provider override via SUPERAGENT_<EXPORT>_PROVIDER
163
+ * always wins (used by transcriptAgent → audio-local or whisper-cpp).
164
+ * 5. Build the provider config from env and return ResolvedModel.
165
+ */
166
+ export function createResolver(options = {}) {
167
+ const env = options.envSource;
168
+ const localBackend = options.localBackend;
169
+ return async ({ exportName, policy, override }) => {
170
+ const requestedId = override ?? policy.default;
171
+ enforceAllow(requestedId, policy, !!override);
172
+ const aliasedId = readModelAlias(requestedId, env) ?? stripScheme(requestedId);
173
+ const providerHint = readScopedEnv(exportName, "PROVIDER", env);
174
+ if (providerHint === "audio-local" || requestedId.startsWith("audio-local/")) {
175
+ return await materializeAudioLocal(exportName, requestedId, stripScheme(requestedId), env);
176
+ }
177
+ if (providerHint === "whisper-cpp" || hasWhisperCppEnv(exportName, env)) {
178
+ return await materializeWhisperCpp(exportName, requestedId, aliasedId, env);
179
+ }
180
+ if (providerHint === "llama-server") {
181
+ return await materializeLlamaServer(exportName, requestedId, aliasedId, env);
182
+ }
183
+ if (requestedId.startsWith("local/")) {
184
+ if (audioRuntimeForModel(aliasedId)) {
185
+ return await materializeAudioLocal(exportName, requestedId, aliasedId, env);
186
+ }
187
+ // Use explicit localBackend if provided, otherwise default to openai-compatible
188
+ if (localBackend === "llama-server") {
189
+ return await materializeLlamaServer(exportName, requestedId, aliasedId, env);
190
+ }
191
+ return materializeLocalOpenAICompatible(exportName, requestedId, aliasedId, env);
192
+ }
193
+ if (requestedId.startsWith("openai/")) {
194
+ return materializeOpenAI(exportName, requestedId, aliasedId, env);
195
+ }
196
+ if (requestedId.startsWith("anthropic/")) {
197
+ return materializeAnthropic(exportName, requestedId, aliasedId, env);
198
+ }
199
+ // No prefix — assume openai-compatible (most local servers report bare names).
200
+ return materializeLocalOpenAICompatible(exportName, requestedId, aliasedId, env);
201
+ };
202
+ }
203
+ function stripScheme(modelId) {
204
+ const idx = modelId.indexOf("/");
205
+ return idx >= 0 ? modelId.slice(idx + 1) : modelId;
206
+ }
207
+ function enforceAllow(modelId, policy, viaOverride) {
208
+ const allowed = policy.allow.some((pattern) => matchModelPattern(pattern, modelId));
209
+ if (!allowed) {
210
+ throw new ProviderError(viaOverride
211
+ ? `Model override "${modelId}" is not permitted by agent policy ${JSON.stringify(policy.allow)}`
212
+ : `Agent default model "${modelId}" is not in its own allow list ${JSON.stringify(policy.allow)} (compiler bug)`);
213
+ }
214
+ }
215
+ function hasWhisperCppEnv(exportName, env) {
216
+ return Boolean(readScopedEnv(exportName, "BIN", env));
217
+ }
218
+ async function materializeWhisperCpp(exportName, originalModelId, resolvedModelId, env) {
219
+ const cfg = {
220
+ bin: readScopedEnv(exportName, "BIN", env) ?? "",
221
+ modelPath: readScopedEnv(exportName, "MODEL_PATH", env) ?? "",
222
+ language: readScopedEnv(exportName, "LANGUAGE", env),
223
+ threads: parseIntOrUndefined(readScopedEnv(exportName, "THREADS", env)),
224
+ resolvedModelId,
225
+ originalModelId,
226
+ };
227
+ return buildWhisperCppModel(cfg);
228
+ }
229
+ async function materializeAudioLocal(exportName, originalModelId, resolvedModelId, env) {
230
+ const sidecar = readScopedEnv(exportName, "VOICE_SIDECAR", env) ??
231
+ readScopedEnv(exportName, "DIARIZATION_AGENT_BIN", env) ??
232
+ readScopedEnv(exportName, "VOICE_EMBEDDING_BIN", env) ??
233
+ await resolveBundledVoiceSidecar();
234
+ const cfg = {
235
+ sidecar,
236
+ whisperBin: readScopedEnv(exportName, "TRANSCRIPT_AGENT_BIN", env) ?? readScopedEnv(exportName, "BIN", env),
237
+ whisperModelPath: readScopedEnv(exportName, "TRANSCRIPT_AGENT_MODEL_PATH", env) ??
238
+ readScopedEnv(exportName, "MODEL_PATH", env),
239
+ language: readScopedEnv(exportName, "LANGUAGE", env),
240
+ threads: parseIntOrUndefined(readScopedEnv(exportName, "THREADS", env)),
241
+ voiceProfilesDir: readScopedEnv(exportName, "VOICE_PROFILES_DIR", env),
242
+ sortformerModel: readScopedEnv(exportName, "SORTFORMER_MODEL", env),
243
+ sortformerModelPath: readScopedEnv(exportName, "SORTFORMER_MODEL_PATH", env),
244
+ pyannoteModel: readScopedEnv(exportName, "PYANNOTE_MODEL", env),
245
+ ecapaModel: readScopedEnv(exportName, "ECAPA_MODEL", env),
246
+ resolvedModelId,
247
+ originalModelId,
248
+ };
249
+ return buildAudioLocalModel(cfg);
250
+ }
251
+ function materializeLocalOpenAICompatible(exportName, originalModelId, resolvedModelId, env) {
252
+ const baseURL = readScopedEnv(exportName, "BASE_URL", env) ??
253
+ pickLocalDefaultBaseURL();
254
+ const apiKey = readScopedEnv(exportName, "API_KEY", env) ?? "local";
255
+ const cfg = {
256
+ baseURL,
257
+ apiKey,
258
+ resolvedModelId,
259
+ originalModelId,
260
+ };
261
+ return buildOpenAICompatibleModel(cfg);
262
+ }
263
+ function materializeOpenAI(exportName, originalModelId, resolvedModelId, env) {
264
+ const apiKey = readScopedEnv(exportName, "OPENAI_API_KEY", env) ??
265
+ (env ?? defaultEnvLookup)("OPENAI_API_KEY") ??
266
+ "";
267
+ const baseURL = readScopedEnv(exportName, "OPENAI_BASE_URL", env) ??
268
+ (env ?? defaultEnvLookup)("OPENAI_BASE_URL");
269
+ const cfg = {
270
+ apiKey,
271
+ baseURL,
272
+ resolvedModelId,
273
+ originalModelId,
274
+ };
275
+ return buildOpenAIModel(cfg);
276
+ }
277
+ function materializeAnthropic(exportName, originalModelId, resolvedModelId, env) {
278
+ const apiKey = readScopedEnv(exportName, "ANTHROPIC_API_KEY", env) ??
279
+ (env ?? defaultEnvLookup)("ANTHROPIC_API_KEY") ??
280
+ "";
281
+ const cfg = {
282
+ apiKey,
283
+ resolvedModelId,
284
+ originalModelId,
285
+ };
286
+ return buildAnthropicModel(cfg);
287
+ }
288
+ async function materializeLlamaServer(exportName, originalModelId, resolvedModelId, env) {
289
+ const host = readScopedEnv(exportName, "HOST", env) ?? LLAMA_SERVER_DEFAULTS.host;
290
+ const portRaw = readScopedEnv(exportName, "PORT", env);
291
+ const port = portRaw ? (Number.parseInt(portRaw, 10) || LLAMA_SERVER_DEFAULTS.port) : LLAMA_SERVER_DEFAULTS.port;
292
+ // Try to find bin and modelPath automatically if not configured
293
+ let bin = readScopedEnv(exportName, "BIN", env);
294
+ let modelPath = readScopedEnv(exportName, "MODEL_PATH", env);
295
+ // Auto-discover llama-server binary
296
+ if (!bin) {
297
+ const foundBin = await findLlamaServerBin();
298
+ if (foundBin) {
299
+ bin = foundBin;
300
+ }
301
+ }
302
+ // Auto-discover model path from LM Studio models
303
+ if (!modelPath) {
304
+ const foundPath = await findModelPathById(resolvedModelId);
305
+ if (foundPath) {
306
+ modelPath = foundPath;
307
+ }
308
+ }
309
+ if (!bin) {
310
+ throw new ProviderError("llama-server binary not found. Install via 'brew install llama.cpp' or set SUPERAGENT_BIN.");
311
+ }
312
+ if (!modelPath) {
313
+ throw new ProviderError(`Model "${resolvedModelId}" not found in LM Studio paths. ` +
314
+ `Download it in LM Studio or set SUPERAGENT_MODEL_PATH.`);
315
+ }
316
+ // Auto-discover mmproj for vision support
317
+ let mmproj = readScopedEnv(exportName, "MMPROJ", env);
318
+ if (!mmproj) {
319
+ const foundMmproj = await __findMmprojForModel(resolvedModelId, modelPath);
320
+ if (foundMmproj) {
321
+ mmproj = foundMmproj;
322
+ }
323
+ }
324
+ // Default: disable reasoning to avoid thinking blocks in output
325
+ // Set SUPERAGENT_ENABLE_REASONING=true to enable for specific agents
326
+ const enableReasoning = readScopedEnv(exportName, "ENABLE_REASONING", env) === "true";
327
+ const requestedParallel = parseIntOrUndefined(readScopedEnv(exportName, "PARALLEL", env));
328
+ const requestedCtxSize = parseIntOrUndefined(readScopedEnv(exportName, "CTX_SIZE", env));
329
+ const cfg = {
330
+ bin,
331
+ modelPath,
332
+ host,
333
+ port,
334
+ parallel: requestedParallel ?? (mmproj ? 2 : undefined),
335
+ gpuLayers: parseIntOrUndefined(readScopedEnv(exportName, "GPU_LAYERS", env)),
336
+ threads: parseIntOrUndefined(readScopedEnv(exportName, "THREADS", env)),
337
+ ctxSize: requestedCtxSize ?? (mmproj ? 8192 : undefined),
338
+ mmproj,
339
+ noReasoning: !enableReasoning,
340
+ resolvedModelId,
341
+ originalModelId,
342
+ };
343
+ return buildLlamaServerModel(cfg);
344
+ }
345
+ function pickLocalDefaultBaseURL() {
346
+ // Default to Ollama's port; consumers running llama-server will set
347
+ // SUPERAGENT_BASE_URL=http://localhost:8080/v1 in their .env.
348
+ return LOCAL_DEFAULTS.ollama;
349
+ }
350
+ function parseIntOrUndefined(value) {
351
+ if (!value)
352
+ return undefined;
353
+ const n = Number.parseInt(value, 10);
354
+ return Number.isFinite(n) ? n : undefined;
355
+ }
356
+ const defaultEnvLookup = (key) => process.env[key];
357
+ export const RESOLVER_LOCAL_DEFAULTS = LOCAL_DEFAULTS;
358
+ /**
359
+ * Re-export the default registry for consumers who want to:
360
+ * - Register custom providers
361
+ * - Discover models from filesystem
362
+ * - Probe providers for availability (Playground)
363
+ */
364
+ export { defaultRegistry } from "./registry";
365
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { AgentLogger, WorkflowDefinition, WorkflowHostSchema, WorkflowManifest, WorkflowModule } from "@dahura/super-agent-kit";
2
+ import { type ModelResolver } from "./builder";
3
+ export type WorkflowTraceEntry = {
4
+ id: string;
5
+ kind: "lifecycle" | "event" | "node" | "host";
6
+ status: "started" | "scheduled" | "completed" | "failed" | "emitted";
7
+ emittedAt: string;
8
+ eventName?: string;
9
+ nodeId?: string;
10
+ label: string;
11
+ durationMs?: number;
12
+ output?: unknown;
13
+ error?: string;
14
+ };
15
+ export type WorkflowSnapshot = {
16
+ output: unknown;
17
+ pending: number;
18
+ state: unknown;
19
+ trace: WorkflowTraceEntry[];
20
+ };
21
+ export type WorkflowStopResult = {
22
+ output: unknown;
23
+ trace: WorkflowTraceEntry[];
24
+ };
25
+ export type WorkflowTraceListener = (entry: WorkflowTraceEntry, snapshot: WorkflowSnapshot) => void;
26
+ export type WorkflowClientOptions = {
27
+ resolver: ModelResolver;
28
+ logger?: AgentLogger;
29
+ manifest?: WorkflowManifest;
30
+ };
31
+ type WorkflowHostImplementation = Record<string, (...args: any[]) => any>;
32
+ type RunOptions = {
33
+ id: string;
34
+ };
35
+ export declare class WorkflowClient<TEvents extends import("@dahura/super-agent-kit").WorkflowEventSchemas = import("@dahura/super-agent-kit").WorkflowEventSchemas, THost extends WorkflowHostSchema | undefined = WorkflowHostSchema | undefined, TState = unknown> {
36
+ private readonly definition;
37
+ private readonly options;
38
+ private readonly host;
39
+ constructor(definition: WorkflowDefinition<TEvents, THost, TState>, options: WorkflowClientOptions, host?: WorkflowHostImplementation);
40
+ withHost(host: WorkflowHostImplementation): WorkflowClient<TEvents, THost, TState>;
41
+ createRun(options: RunOptions): WorkflowRun<TEvents, THost, TState>;
42
+ }
43
+ export declare class WorkflowRun<TEvents extends import("@dahura/super-agent-kit").WorkflowEventSchemas = import("@dahura/super-agent-kit").WorkflowEventSchemas, THost extends WorkflowHostSchema | undefined = WorkflowHostSchema | undefined, TState = unknown> {
44
+ private readonly definition;
45
+ private readonly options;
46
+ private readonly host;
47
+ private readonly runOptions;
48
+ private readonly log;
49
+ private readonly state;
50
+ private readonly trace;
51
+ private traceCounter;
52
+ private readonly pending;
53
+ private readonly scheduledNodes;
54
+ private readonly traceListeners;
55
+ private modelOverride;
56
+ private started;
57
+ private stopped;
58
+ private readonly startedAt;
59
+ constructor(definition: WorkflowDefinition<TEvents, THost, TState>, options: WorkflowClientOptions, host: WorkflowHostImplementation, runOptions: RunOptions);
60
+ withModel(modelId: string): WorkflowRun<TEvents, THost, TState>;
61
+ start(payload?: Record<string, unknown>): Promise<void>;
62
+ emit(eventName: string, payload: unknown): Promise<void>;
63
+ snapshot(): Promise<WorkflowSnapshot>;
64
+ subscribeTrace(listener: WorkflowTraceListener): () => void;
65
+ private buildSnapshot;
66
+ stop(input?: {
67
+ endedAt?: string;
68
+ waitForPending?: boolean;
69
+ }): Promise<WorkflowStopResult>;
70
+ private dispatchEvent;
71
+ private triggerNode;
72
+ private executeNode;
73
+ private wrapHost;
74
+ private materializeAgent;
75
+ private emitNodeOutputs;
76
+ private parseEvent;
77
+ private validateHost;
78
+ private trackPending;
79
+ private waitForPending;
80
+ private assertStarted;
81
+ private assertNotStopped;
82
+ private recordTrace;
83
+ }
84
+ export declare function createWorkflowClient<TEvents extends import("@dahura/super-agent-kit").WorkflowEventSchemas, THost extends WorkflowHostSchema | undefined, TState>(workflow: WorkflowModule<TEvents, THost, TState>, options: WorkflowClientOptions): WorkflowClient<TEvents, THost, TState>;
85
+ export {};
86
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}