@inf-minds/kernel 0.0.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 (46) hide show
  1. package/dist/condition-evaluator.d.ts +69 -0
  2. package/dist/condition-evaluator.d.ts.map +1 -0
  3. package/dist/condition-evaluator.js +120 -0
  4. package/dist/condition-evaluator.js.map +1 -0
  5. package/dist/graph-executor.d.ts +63 -0
  6. package/dist/graph-executor.d.ts.map +1 -0
  7. package/dist/graph-executor.js +245 -0
  8. package/dist/graph-executor.js.map +1 -0
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +13 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/kernel.d.ts +45 -0
  14. package/dist/kernel.d.ts.map +1 -0
  15. package/dist/kernel.js +202 -0
  16. package/dist/kernel.js.map +1 -0
  17. package/dist/registries/index.d.ts +3 -0
  18. package/dist/registries/index.d.ts.map +1 -0
  19. package/dist/registries/index.js +5 -0
  20. package/dist/registries/index.js.map +1 -0
  21. package/dist/registries/mind-registry.d.ts +11 -0
  22. package/dist/registries/mind-registry.d.ts.map +1 -0
  23. package/dist/registries/mind-registry.js +31 -0
  24. package/dist/registries/mind-registry.js.map +1 -0
  25. package/dist/registries/mode-registry.d.ts +11 -0
  26. package/dist/registries/mode-registry.d.ts.map +1 -0
  27. package/dist/registries/mode-registry.js +31 -0
  28. package/dist/registries/mode-registry.js.map +1 -0
  29. package/dist/session.d.ts +123 -0
  30. package/dist/session.d.ts.map +1 -0
  31. package/dist/session.js +403 -0
  32. package/dist/session.js.map +1 -0
  33. package/dist/types.d.ts +288 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/types.js +14 -0
  36. package/dist/types.js.map +1 -0
  37. package/package.json +37 -0
  38. package/src/condition-evaluator.ts +168 -0
  39. package/src/graph-executor.ts +315 -0
  40. package/src/index.ts +50 -0
  41. package/src/kernel.ts +242 -0
  42. package/src/registries/index.ts +5 -0
  43. package/src/registries/mind-registry.ts +38 -0
  44. package/src/registries/mode-registry.ts +38 -0
  45. package/src/session.ts +541 -0
  46. package/src/types.ts +280 -0
package/dist/kernel.js ADDED
@@ -0,0 +1,202 @@
1
+ // ABOUTME: Kernel factory for creating kernel instances
2
+ // ABOUTME: The kernel manages sessions, minds, and coordination modes
3
+ import { validateGraph } from '@inf-minds/coordination-modes';
4
+ import { JOB_TYPE } from '@inf-minds/jobs';
5
+ import { createMindRegistry, createModeRegistry } from './registries/index.js';
6
+ import { KernelSessionImpl } from './session.js';
7
+ /**
8
+ * Create a new kernel instance.
9
+ *
10
+ * The kernel is the central orchestrator for multi-mind coordination.
11
+ * It manages:
12
+ * - Mind configurations (registered by name)
13
+ * - Coordination modes (execution graphs)
14
+ * - Sessions (executing instances of modes)
15
+ *
16
+ * @param options - Kernel configuration options
17
+ * @returns A new Kernel instance
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const kernel = createKernel({
22
+ * jobManager,
23
+ * eventAppender,
24
+ * artifactManager,
25
+ * });
26
+ *
27
+ * // Register minds
28
+ * kernel.registerMind('researcher', {
29
+ * model: 'claude-sonnet-4-20250514',
30
+ * systemPrompt: 'You are a research assistant...',
31
+ * });
32
+ *
33
+ * // Register modes
34
+ * kernel.registerMode(createPipelineMode({
35
+ * steps: [
36
+ * { id: 'research', mind: { type: 'registered', mindType: 'researcher' } },
37
+ * { id: 'analyze', mind: { type: 'registered', mindType: 'analyzer' } },
38
+ * ],
39
+ * }));
40
+ *
41
+ * // Create and run a session
42
+ * const session = await kernel.createSession({
43
+ * mode: 'pipeline',
44
+ * input: { topic: 'quantum computing' },
45
+ * accountId: 'acc-123',
46
+ * });
47
+ * ```
48
+ */
49
+ export function createKernel(options) {
50
+ const { jobManager, eventAppender, artifactManager, defaultArtifactRouter } = options;
51
+ // Create registries
52
+ const mindRegistry = createMindRegistry();
53
+ const modeRegistry = createModeRegistry();
54
+ /**
55
+ * Resolve a mode from either a name or inline definition.
56
+ */
57
+ function resolveMode(modeRef) {
58
+ if (typeof modeRef === 'string') {
59
+ const mode = modeRegistry.get(modeRef);
60
+ if (!mode) {
61
+ throw new Error(`Mode '${modeRef}' not found in registry`);
62
+ }
63
+ return mode;
64
+ }
65
+ return modeRef;
66
+ }
67
+ /**
68
+ * Create initial graph state for a new session.
69
+ */
70
+ function createInitialGraphState(mode) {
71
+ const nodes = {};
72
+ for (const nodeId of Object.keys(mode.graph.nodes)) {
73
+ nodes[nodeId] = {
74
+ nodeId,
75
+ status: 'pending',
76
+ };
77
+ }
78
+ return {
79
+ nodes,
80
+ activeNodes: [],
81
+ completedNodes: [],
82
+ failedNodes: [],
83
+ skippedNodes: [],
84
+ startedAt: new Date().toISOString(),
85
+ status: 'running',
86
+ };
87
+ }
88
+ /**
89
+ * Wrap a job as a KernelSession.
90
+ */
91
+ async function wrapJobAsSession(job) {
92
+ // Parse the job input to get mode name
93
+ const jobInput = job.input;
94
+ const modeName = jobInput?.mode ?? 'unknown';
95
+ // Get the mode definition if available
96
+ const mode = modeRegistry.get(modeName);
97
+ return new KernelSessionImpl({
98
+ job,
99
+ mode,
100
+ modeName,
101
+ jobManager,
102
+ eventAppender,
103
+ artifactManager,
104
+ artifactRouter: defaultArtifactRouter,
105
+ mindRegistry,
106
+ });
107
+ }
108
+ return {
109
+ async createSession(sessionOptions) {
110
+ // Resolve the coordination mode
111
+ const mode = resolveMode(sessionOptions.mode);
112
+ // Validate the graph
113
+ const validation = validateGraph(mode.graph);
114
+ if (!validation.valid) {
115
+ throw new Error(`Invalid graph: ${validation.errors.join(', ')}`);
116
+ }
117
+ // Warn about issues (but don't fail)
118
+ if (validation.warnings.length > 0) {
119
+ console.warn(`Graph warnings: ${validation.warnings.join(', ')}`);
120
+ }
121
+ // Create initial graph state
122
+ const graphState = createInitialGraphState(mode);
123
+ // Generate artifact base path for this session
124
+ const sessionId = crypto.randomUUID();
125
+ const artifactBasePath = `/sessions/${sessionId}`;
126
+ // Create the parent job
127
+ const job = await jobManager.create({
128
+ type: JOB_TYPE.KERNEL_SESSION,
129
+ accountId: sessionOptions.accountId,
130
+ input: {
131
+ mode: mode.name,
132
+ userInput: sessionOptions.input,
133
+ metadata: sessionOptions.metadata,
134
+ },
135
+ graphState,
136
+ artifactBasePath,
137
+ });
138
+ // Create and return the session wrapper
139
+ const artifactRouter = sessionOptions.artifactRouter ?? defaultArtifactRouter;
140
+ return new KernelSessionImpl({
141
+ job,
142
+ mode,
143
+ modeName: mode.name,
144
+ jobManager,
145
+ eventAppender,
146
+ artifactManager,
147
+ artifactRouter,
148
+ mindRegistry,
149
+ });
150
+ },
151
+ async getSession(sessionId) {
152
+ const job = await jobManager.get(sessionId);
153
+ if (!job) {
154
+ return null;
155
+ }
156
+ // Verify it's a kernel-session job
157
+ if (job.type !== JOB_TYPE.KERNEL_SESSION) {
158
+ return null;
159
+ }
160
+ return wrapJobAsSession(job);
161
+ },
162
+ async listSessions(filter) {
163
+ // Use job manager to list kernel-session jobs
164
+ const result = await jobManager.list({
165
+ accountId: filter?.accountId ?? '', // Required by job manager
166
+ type: JOB_TYPE.KERNEL_SESSION,
167
+ status: filter?.status,
168
+ limit: filter?.limit,
169
+ offset: filter?.offset,
170
+ });
171
+ // Filter by mode if specified
172
+ let jobs = result.jobs;
173
+ if (filter?.mode) {
174
+ jobs = jobs.filter((job) => {
175
+ const input = job.input;
176
+ return input?.mode === filter.mode;
177
+ });
178
+ }
179
+ // Wrap jobs as sessions
180
+ return Promise.all(jobs.map(wrapJobAsSession));
181
+ },
182
+ registerMind(name, config) {
183
+ mindRegistry.register(name, config);
184
+ },
185
+ getMind(name) {
186
+ return mindRegistry.get(name);
187
+ },
188
+ registerMode(mode) {
189
+ modeRegistry.register(mode);
190
+ },
191
+ getMode(name) {
192
+ return modeRegistry.get(name);
193
+ },
194
+ listMindTypes() {
195
+ return mindRegistry.list();
196
+ },
197
+ listModeNames() {
198
+ return modeRegistry.list();
199
+ },
200
+ };
201
+ }
202
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createMindRegistry } from './mind-registry.js';
2
+ export { createModeRegistry } from './mode-registry.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registries/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // ABOUTME: Registry exports
2
+ // ABOUTME: Exports mind and mode registry factories
3
+ export { createMindRegistry } from './mind-registry.js';
4
+ export { createModeRegistry } from './mode-registry.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registries/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,oDAAoD;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MindRegistry } from '../types.js';
2
+ /**
3
+ * Create a new mind registry.
4
+ *
5
+ * The registry stores named mind configurations that can be referenced
6
+ * in coordination mode graph nodes.
7
+ *
8
+ * @returns A new MindRegistry instance
9
+ */
10
+ export declare function createMindRegistry(): MindRegistry;
11
+ //# sourceMappingURL=mind-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mind-registry.d.ts","sourceRoot":"","sources":["../../src/registries/mind-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAuBjD"}
@@ -0,0 +1,31 @@
1
+ // ABOUTME: Mind registry for storing named mind configurations
2
+ // ABOUTME: Allows registering and retrieving mind configs by name
3
+ /**
4
+ * Create a new mind registry.
5
+ *
6
+ * The registry stores named mind configurations that can be referenced
7
+ * in coordination mode graph nodes.
8
+ *
9
+ * @returns A new MindRegistry instance
10
+ */
11
+ export function createMindRegistry() {
12
+ const minds = new Map();
13
+ return {
14
+ register(name, config) {
15
+ if (minds.has(name)) {
16
+ throw new Error(`Mind '${name}' is already registered`);
17
+ }
18
+ minds.set(name, config);
19
+ },
20
+ get(name) {
21
+ return minds.get(name);
22
+ },
23
+ has(name) {
24
+ return minds.has(name);
25
+ },
26
+ list() {
27
+ return Array.from(minds.keys());
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=mind-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mind-registry.js","sourceRoot":"","sources":["../../src/registries/mind-registry.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kEAAkE;AAKlE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,OAAO;QACL,QAAQ,CAAC,IAAY,EAAE,MAAkB;YACvC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,yBAAyB,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,GAAG,CAAC,IAAY;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,GAAG,CAAC,IAAY;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ModeRegistry } from '../types.js';
2
+ /**
3
+ * Create a new mode registry.
4
+ *
5
+ * The registry stores coordination modes that can be used when
6
+ * creating kernel sessions.
7
+ *
8
+ * @returns A new ModeRegistry instance
9
+ */
10
+ export declare function createModeRegistry(): ModeRegistry;
11
+ //# sourceMappingURL=mode-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-registry.d.ts","sourceRoot":"","sources":["../../src/registries/mode-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAuBjD"}
@@ -0,0 +1,31 @@
1
+ // ABOUTME: Mode registry for storing named coordination modes
2
+ // ABOUTME: Allows registering and retrieving modes by name
3
+ /**
4
+ * Create a new mode registry.
5
+ *
6
+ * The registry stores coordination modes that can be used when
7
+ * creating kernel sessions.
8
+ *
9
+ * @returns A new ModeRegistry instance
10
+ */
11
+ export function createModeRegistry() {
12
+ const modes = new Map();
13
+ return {
14
+ register(mode) {
15
+ if (modes.has(mode.name)) {
16
+ throw new Error(`Mode '${mode.name}' is already registered`);
17
+ }
18
+ modes.set(mode.name, mode);
19
+ },
20
+ get(name) {
21
+ return modes.get(name);
22
+ },
23
+ has(name) {
24
+ return modes.has(name);
25
+ },
26
+ list() {
27
+ return Array.from(modes.keys());
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=mode-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-registry.js","sourceRoot":"","sources":["../../src/registries/mode-registry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,2DAA2D;AAK3D;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAElD,OAAO;QACL,QAAQ,CAAC,IAAsB;YAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;YAC/D,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,GAAG,CAAC,IAAY;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,GAAG,CAAC,IAAY;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,123 @@
1
+ import type { CoordinationMode } from '@inf-minds/coordination-modes';
2
+ import type { JobManager, EventAppender, ArtifactManager, ArtifactRef, Job, GraphState } from '@inf-minds/jobs';
3
+ import type { ArtifactRouter, VisibilityHints } from '@inf-minds/jobs';
4
+ import type { KernelSession, SessionStatus, SessionEvent, Unsubscribe, MindRegistry } from './types.js';
5
+ /**
6
+ * Options for creating a KernelSessionImpl.
7
+ */
8
+ export interface KernelSessionImplOptions {
9
+ /** The parent kernel-session job */
10
+ job: Job;
11
+ /** The coordination mode (may be undefined if restored from job) */
12
+ mode?: CoordinationMode;
13
+ /** Mode name for display */
14
+ modeName: string;
15
+ /** JobManager for job lifecycle */
16
+ jobManager: JobManager;
17
+ /** EventAppender for event streaming */
18
+ eventAppender: EventAppender;
19
+ /** ArtifactManager for artifact operations */
20
+ artifactManager: ArtifactManager;
21
+ /** ArtifactRouter for routing decisions */
22
+ artifactRouter?: ArtifactRouter;
23
+ /** MindRegistry for resolving registered minds */
24
+ mindRegistry: MindRegistry;
25
+ }
26
+ /**
27
+ * Implementation of KernelSession.
28
+ *
29
+ * Manages the lifecycle of a kernel session, including:
30
+ * - Graph execution state
31
+ * - Node scheduling
32
+ * - Artifact routing
33
+ * - Event emission
34
+ */
35
+ export declare class KernelSessionImpl implements KernelSession {
36
+ private readonly _job;
37
+ private readonly _mode?;
38
+ private readonly _modeName;
39
+ private readonly _jobManager;
40
+ private readonly _eventAppender;
41
+ private readonly _artifactManager;
42
+ private readonly _artifactRouter?;
43
+ private readonly _mindRegistry;
44
+ private readonly _subscribers;
45
+ private _currentGraphState;
46
+ constructor(options: KernelSessionImplOptions);
47
+ get id(): string;
48
+ get mode(): string;
49
+ get status(): SessionStatus;
50
+ get graphState(): GraphState;
51
+ get artifactBasePath(): string;
52
+ get accountId(): string;
53
+ /**
54
+ * Get the coordination mode for this session.
55
+ * May be undefined if the session was restored from a job without the mode.
56
+ */
57
+ get coordinationMode(): CoordinationMode | undefined;
58
+ /**
59
+ * Get the artifact router for this session.
60
+ */
61
+ get artifactRouter(): ArtifactRouter | undefined;
62
+ /**
63
+ * Get the mind registry for resolving mind configs.
64
+ */
65
+ get mindRegistryRef(): MindRegistry;
66
+ pause(): Promise<void>;
67
+ resume(): Promise<void>;
68
+ cancel(): Promise<void>;
69
+ subscribe(handler: (event: SessionEvent) => void): Unsubscribe;
70
+ getArtifacts(path?: string): Promise<ArtifactRef[]>;
71
+ getNodeOutput(nodeId: string): unknown | null;
72
+ waitForCompletion(): Promise<unknown>;
73
+ /**
74
+ * Emit a session event to all subscribers.
75
+ */
76
+ private _emitEvent;
77
+ /**
78
+ * Start the session by executing the entry node.
79
+ */
80
+ start(): Promise<void>;
81
+ /**
82
+ * Handle completion of a node execution.
83
+ * Called by the coordinator when a mind-execution job completes.
84
+ */
85
+ handleNodeComplete(nodeId: string, output: unknown, artifacts?: Array<{
86
+ ref: ArtifactRef;
87
+ hints: VisibilityHints;
88
+ }>): Promise<void>;
89
+ /**
90
+ * Handle failure of a node execution.
91
+ * Called by the coordinator when a mind-execution job fails.
92
+ */
93
+ handleNodeFailure(nodeId: string, error: string): Promise<void>;
94
+ /**
95
+ * Start execution of a specific node.
96
+ */
97
+ private _startNode;
98
+ /**
99
+ * Complete the session with final output.
100
+ */
101
+ private _completeSession;
102
+ /**
103
+ * Fail the session with error.
104
+ */
105
+ private _failSession;
106
+ /**
107
+ * Get the user input from the job.
108
+ */
109
+ private _getUserInput;
110
+ /**
111
+ * Get the mind type for a node.
112
+ */
113
+ private _getNodeMindType;
114
+ /**
115
+ * Get the current iteration count for a node.
116
+ */
117
+ private _getNodeIteration;
118
+ /**
119
+ * Resolve mind config from a node's mind reference.
120
+ */
121
+ private _resolveMindConfig;
122
+ }
123
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}