@flomatai/core 0.1.0
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.
- package/dist/agent.d.ts +92 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +137 -0
- package/dist/agent.js.map +1 -0
- package/dist/cli-utils.d.ts +41 -0
- package/dist/cli-utils.d.ts.map +1 -0
- package/dist/cli-utils.js +64 -0
- package/dist/cli-utils.js.map +1 -0
- package/dist/errors.d.ts +52 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +105 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-provider.d.ts +29 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +44 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/logger.d.ts +32 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +75 -0
- package/dist/logger.js.map +1 -0
- package/dist/mock-llm.d.ts +70 -0
- package/dist/mock-llm.d.ts.map +1 -0
- package/dist/mock-llm.js +385 -0
- package/dist/mock-llm.js.map +1 -0
- package/dist/orchestrator-helpers.d.ts +20 -0
- package/dist/orchestrator-helpers.d.ts.map +1 -0
- package/dist/orchestrator-helpers.js +38 -0
- package/dist/orchestrator-helpers.js.map +1 -0
- package/dist/orchestrator.d.ts +124 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +349 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/pipeline-registry.d.ts +120 -0
- package/dist/pipeline-registry.d.ts.map +1 -0
- package/dist/pipeline-registry.js +171 -0
- package/dist/pipeline-registry.js.map +1 -0
- package/dist/pipeline.d.ts +122 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +152 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/skill.d.ts +112 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +12 -0
- package/dist/skill.js.map +1 -0
- package/dist/skills/io-skill.d.ts +49 -0
- package/dist/skills/io-skill.d.ts.map +1 -0
- package/dist/skills/io-skill.js +103 -0
- package/dist/skills/io-skill.js.map +1 -0
- package/dist/skills/llm-skill.d.ts +64 -0
- package/dist/skills/llm-skill.d.ts.map +1 -0
- package/dist/skills/llm-skill.js +112 -0
- package/dist/skills/llm-skill.js.map +1 -0
- package/dist/skills/transform-skill.d.ts +27 -0
- package/dist/skills/transform-skill.d.ts.map +1 -0
- package/dist/skills/transform-skill.js +32 -0
- package/dist/skills/transform-skill.js.map +1 -0
- package/dist/state/file-store.d.ts +25 -0
- package/dist/state/file-store.d.ts.map +1 -0
- package/dist/state/file-store.js +92 -0
- package/dist/state/file-store.js.map +1 -0
- package/dist/state/memory-store.d.ts +24 -0
- package/dist/state/memory-store.d.ts.map +1 -0
- package/dist/state/memory-store.js +65 -0
- package/dist/state/memory-store.js.map +1 -0
- package/dist/state/types.d.ts +40 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +8 -0
- package/dist/state/types.js.map +1 -0
- package/dist/strategies/custom.d.ts +12 -0
- package/dist/strategies/custom.d.ts.map +1 -0
- package/dist/strategies/custom.js +14 -0
- package/dist/strategies/custom.js.map +1 -0
- package/dist/strategies/plan-and-execute.d.ts +27 -0
- package/dist/strategies/plan-and-execute.d.ts.map +1 -0
- package/dist/strategies/plan-and-execute.js +195 -0
- package/dist/strategies/plan-and-execute.js.map +1 -0
- package/dist/strategies/react.d.ts +27 -0
- package/dist/strategies/react.d.ts.map +1 -0
- package/dist/strategies/react.js +172 -0
- package/dist/strategies/react.js.map +1 -0
- package/dist/strategies/router.d.ts +11 -0
- package/dist/strategies/router.d.ts.map +1 -0
- package/dist/strategies/router.js +70 -0
- package/dist/strategies/router.js.map +1 -0
- package/dist/strategies/sequential.d.ts +12 -0
- package/dist/strategies/sequential.d.ts.map +1 -0
- package/dist/strategies/sequential.js +39 -0
- package/dist/strategies/sequential.js.map +1 -0
- package/dist/strategies/types.d.ts +62 -0
- package/dist/strategies/types.d.ts.map +1 -0
- package/dist/strategies/types.js +5 -0
- package/dist/strategies/types.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +28 -0
- package/src/agent.ts +243 -0
- package/src/cli-utils.ts +73 -0
- package/src/errors.ts +146 -0
- package/src/index.ts +124 -0
- package/src/llm-provider.ts +88 -0
- package/src/logger.ts +97 -0
- package/src/mock-llm.ts +433 -0
- package/src/orchestrator-helpers.ts +40 -0
- package/src/orchestrator.ts +522 -0
- package/src/pipeline-registry.ts +253 -0
- package/src/pipeline.ts +265 -0
- package/src/skill.ts +127 -0
- package/src/skills/io-skill.ts +133 -0
- package/src/skills/llm-skill.ts +207 -0
- package/src/skills/transform-skill.ts +61 -0
- package/src/state/file-store.ts +119 -0
- package/src/state/memory-store.ts +82 -0
- package/src/state/types.ts +53 -0
- package/src/strategies/custom.ts +24 -0
- package/src/strategies/plan-and-execute.ts +268 -0
- package/src/strategies/react.ts +239 -0
- package/src/strategies/router.ts +101 -0
- package/src/strategies/sequential.ts +55 -0
- package/src/strategies/types.ts +97 -0
- package/src/types.ts +102 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent strategy types — shared across all strategy implementations.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { Skill, SkillContext } from '../skill.js';
|
|
6
|
+
import type { LLMProvider } from '../llm-provider.js';
|
|
7
|
+
import type { Logger } from '../logger.js';
|
|
8
|
+
import type { StateStore } from '../state/types.js';
|
|
9
|
+
|
|
10
|
+
// ── Agent Trace ───────────────────────────────────────────────────────────────
|
|
11
|
+
|
|
12
|
+
export type AgentTraceEntryType =
|
|
13
|
+
| 'thought'
|
|
14
|
+
| 'action'
|
|
15
|
+
| 'observation'
|
|
16
|
+
| 'plan'
|
|
17
|
+
| 'replan'
|
|
18
|
+
| 'reflection'
|
|
19
|
+
| 'finish'
|
|
20
|
+
| 'route'
|
|
21
|
+
| 'spawn';
|
|
22
|
+
|
|
23
|
+
export interface AgentTraceEntry {
|
|
24
|
+
type: AgentTraceEntryType;
|
|
25
|
+
iteration?: number;
|
|
26
|
+
skill?: string;
|
|
27
|
+
input?: unknown;
|
|
28
|
+
output?: unknown;
|
|
29
|
+
content?: unknown;
|
|
30
|
+
timestamp: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ── Agent Result ──────────────────────────────────────────────────────────────
|
|
34
|
+
|
|
35
|
+
export interface AgentResult {
|
|
36
|
+
output: unknown;
|
|
37
|
+
trace: AgentTraceEntry[];
|
|
38
|
+
tokensUsed: number;
|
|
39
|
+
durationMs: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ── Agent Context ─────────────────────────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
export interface AgentContext {
|
|
45
|
+
agentName: string;
|
|
46
|
+
agentRole: string;
|
|
47
|
+
llm: LLMProvider;
|
|
48
|
+
getLLM: (key: string) => LLMProvider;
|
|
49
|
+
logger: Logger;
|
|
50
|
+
state: StateStore;
|
|
51
|
+
config: Record<string, unknown>;
|
|
52
|
+
abortSignal: AbortSignal;
|
|
53
|
+
runId: string;
|
|
54
|
+
depth: number;
|
|
55
|
+
maxDepth: number;
|
|
56
|
+
totalTokens: number;
|
|
57
|
+
addTokens: (n: number) => void;
|
|
58
|
+
emit: (event: string, data: unknown) => void;
|
|
59
|
+
/** Spawn a sub-agent. */
|
|
60
|
+
spawnAgent: (config: SpawnAgentConfig) => AgentRunner;
|
|
61
|
+
/** Get a SkillContext from this AgentContext. */
|
|
62
|
+
toSkillContext(): SkillContext;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface SpawnAgentConfig {
|
|
66
|
+
name: string;
|
|
67
|
+
role: string;
|
|
68
|
+
skills: Skill[];
|
|
69
|
+
strategy: StrategyName;
|
|
70
|
+
llm?: string;
|
|
71
|
+
maxIterations?: number;
|
|
72
|
+
customStrategy?: CustomStrategyFn;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export type StrategyName =
|
|
76
|
+
| 'sequential'
|
|
77
|
+
| 'router'
|
|
78
|
+
| 'plan-and-execute'
|
|
79
|
+
| 'react'
|
|
80
|
+
| 'custom';
|
|
81
|
+
|
|
82
|
+
export type CustomStrategyFn = (
|
|
83
|
+
skills: Skill[],
|
|
84
|
+
input: unknown,
|
|
85
|
+
ctx: AgentContext,
|
|
86
|
+
) => Promise<AgentResult>;
|
|
87
|
+
|
|
88
|
+
// ── Strategy Interface ────────────────────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
export interface Strategy {
|
|
91
|
+
execute(skills: Skill[], input: unknown, ctx: AgentContext): Promise<AgentResult>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Minimal agent runner interface (to avoid circular imports). */
|
|
95
|
+
export interface AgentRunner {
|
|
96
|
+
run(input: unknown, ctx: AgentContext): Promise<AgentResult>;
|
|
97
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core shared types used across all flomatai packages.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// ── LLM Messages ────────────────────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
8
|
+
|
|
9
|
+
export interface Message {
|
|
10
|
+
role: MessageRole;
|
|
11
|
+
content: string;
|
|
12
|
+
name?: string; // for tool messages
|
|
13
|
+
toolCallId?: string; // for tool result messages
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// ── LLM Options ─────────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
export interface LLMOptions {
|
|
19
|
+
/** Sampling temperature (0-2). Lower = more deterministic. */
|
|
20
|
+
temperature?: number;
|
|
21
|
+
/** Maximum tokens to generate. */
|
|
22
|
+
maxTokens?: number;
|
|
23
|
+
/** Force JSON output mode if supported by provider. */
|
|
24
|
+
responseFormat?: 'text' | 'json';
|
|
25
|
+
/** Tool definitions for function calling. */
|
|
26
|
+
tools?: ToolDefinition[];
|
|
27
|
+
/** Stop sequences. */
|
|
28
|
+
stop?: string[];
|
|
29
|
+
/** Timeout in milliseconds. */
|
|
30
|
+
timeout?: number;
|
|
31
|
+
/** Number of retry attempts on failure. */
|
|
32
|
+
retries?: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ── LLM Response ────────────────────────────────────────────────────────────
|
|
36
|
+
|
|
37
|
+
export interface LLMResponse {
|
|
38
|
+
/** The generated text content. */
|
|
39
|
+
content: string;
|
|
40
|
+
/** Model identifier used. */
|
|
41
|
+
model: string;
|
|
42
|
+
/** Token usage statistics. */
|
|
43
|
+
usage: {
|
|
44
|
+
inputTokens: number;
|
|
45
|
+
outputTokens: number;
|
|
46
|
+
totalTokens: number;
|
|
47
|
+
};
|
|
48
|
+
/** Stop reason from the model. */
|
|
49
|
+
stopReason?: 'stop' | 'max_tokens' | 'tool_use' | string;
|
|
50
|
+
/** Tool calls requested by the model. */
|
|
51
|
+
toolCalls?: ToolCall[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface LLMChunk {
|
|
55
|
+
content: string;
|
|
56
|
+
done: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Tools / Function Calling ─────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
export interface ToolDefinition {
|
|
62
|
+
name: string;
|
|
63
|
+
description: string;
|
|
64
|
+
parameters: Record<string, unknown>; // JSON Schema object
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface ToolCall {
|
|
68
|
+
id: string;
|
|
69
|
+
name: string;
|
|
70
|
+
arguments: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ── Run / Execution ──────────────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
export type RunStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
76
|
+
|
|
77
|
+
export interface PipelineRun {
|
|
78
|
+
id: string;
|
|
79
|
+
pipelineName: string;
|
|
80
|
+
status: RunStatus;
|
|
81
|
+
input: unknown;
|
|
82
|
+
output?: unknown;
|
|
83
|
+
error?: string;
|
|
84
|
+
startedAt: string; // ISO 8601
|
|
85
|
+
completedAt?: string;
|
|
86
|
+
durationMs?: number;
|
|
87
|
+
tokensUsed: number;
|
|
88
|
+
steps: StepRecord[];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface StepRecord {
|
|
92
|
+
name: string;
|
|
93
|
+
status: RunStatus;
|
|
94
|
+
input?: unknown;
|
|
95
|
+
output?: unknown;
|
|
96
|
+
error?: string;
|
|
97
|
+
startedAt: string;
|
|
98
|
+
completedAt?: string;
|
|
99
|
+
durationMs?: number;
|
|
100
|
+
tokensUsed: number;
|
|
101
|
+
attempt: number;
|
|
102
|
+
}
|