@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.
- package/dist/condition-evaluator.d.ts +69 -0
- package/dist/condition-evaluator.d.ts.map +1 -0
- package/dist/condition-evaluator.js +120 -0
- package/dist/condition-evaluator.js.map +1 -0
- package/dist/graph-executor.d.ts +63 -0
- package/dist/graph-executor.d.ts.map +1 -0
- package/dist/graph-executor.js +245 -0
- package/dist/graph-executor.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +45 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +202 -0
- package/dist/kernel.js.map +1 -0
- package/dist/registries/index.d.ts +3 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js +5 -0
- package/dist/registries/index.js.map +1 -0
- package/dist/registries/mind-registry.d.ts +11 -0
- package/dist/registries/mind-registry.d.ts.map +1 -0
- package/dist/registries/mind-registry.js +31 -0
- package/dist/registries/mind-registry.js.map +1 -0
- package/dist/registries/mode-registry.d.ts +11 -0
- package/dist/registries/mode-registry.d.ts.map +1 -0
- package/dist/registries/mode-registry.js +31 -0
- package/dist/registries/mode-registry.js.map +1 -0
- package/dist/session.d.ts +123 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +403 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +288 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -0
- package/package.json +37 -0
- package/src/condition-evaluator.ts +168 -0
- package/src/graph-executor.ts +315 -0
- package/src/index.ts +50 -0
- package/src/kernel.ts +242 -0
- package/src/registries/index.ts +5 -0
- package/src/registries/mind-registry.ts +38 -0
- package/src/registries/mode-registry.ts +38 -0
- package/src/session.ts +541 -0
- 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 @@
|
|
|
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 @@
|
|
|
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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"}
|