pikiloom 0.4.36 → 0.4.38
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/drivers/codex.js +20 -3
- package/dist/agent/index.js +2 -2
- package/dist/agent/kernel-bridge.js +206 -0
- package/dist/agent/stream.js +60 -2
- package/dist/cli/kernel-app.js +115 -0
- package/dist/cli/main.js +7 -0
- package/package.json +4 -2
- package/packages/kernel/README.md +107 -0
- package/packages/kernel/dist/contracts/driver.d.ts +95 -0
- package/packages/kernel/dist/contracts/driver.js +1 -0
- package/packages/kernel/dist/contracts/ports.d.ts +84 -0
- package/packages/kernel/dist/contracts/ports.js +1 -0
- package/packages/kernel/dist/contracts/surface.d.ts +75 -0
- package/packages/kernel/dist/contracts/surface.js +1 -0
- package/packages/kernel/dist/drivers/claude.d.ts +23 -0
- package/packages/kernel/dist/drivers/claude.js +453 -0
- package/packages/kernel/dist/drivers/codex.d.ts +14 -0
- package/packages/kernel/dist/drivers/codex.js +346 -0
- package/packages/kernel/dist/drivers/echo.d.ts +20 -0
- package/packages/kernel/dist/drivers/echo.js +61 -0
- package/packages/kernel/dist/drivers/gemini.d.ts +18 -0
- package/packages/kernel/dist/drivers/gemini.js +143 -0
- package/packages/kernel/dist/drivers/hermes.d.ts +14 -0
- package/packages/kernel/dist/drivers/hermes.js +194 -0
- package/packages/kernel/dist/drivers/index.d.ts +5 -0
- package/packages/kernel/dist/drivers/index.js +5 -0
- package/packages/kernel/dist/index.d.ts +18 -0
- package/packages/kernel/dist/index.js +29 -0
- package/packages/kernel/dist/ports/defaults.d.ts +59 -0
- package/packages/kernel/dist/ports/defaults.js +137 -0
- package/packages/kernel/dist/protocol/index.d.ts +309 -0
- package/packages/kernel/dist/protocol/index.js +59 -0
- package/packages/kernel/dist/runtime/hub.d.ts +65 -0
- package/packages/kernel/dist/runtime/hub.js +260 -0
- package/packages/kernel/dist/runtime/loom.d.ts +44 -0
- package/packages/kernel/dist/runtime/loom.js +69 -0
- package/packages/kernel/dist/runtime/pty.d.ts +23 -0
- package/packages/kernel/dist/runtime/pty.js +69 -0
- package/packages/kernel/dist/runtime/session-runner.d.ts +27 -0
- package/packages/kernel/dist/runtime/session-runner.js +210 -0
- package/packages/kernel/dist/runtime/tui.d.ts +8 -0
- package/packages/kernel/dist/runtime/tui.js +35 -0
- package/packages/kernel/dist/runtime/turn.d.ts +17 -0
- package/packages/kernel/dist/runtime/turn.js +16 -0
- package/packages/kernel/dist/surfaces/cli.d.ts +19 -0
- package/packages/kernel/dist/surfaces/cli.js +65 -0
- package/packages/kernel/dist/surfaces/index.d.ts +2 -0
- package/packages/kernel/dist/surfaces/index.js +2 -0
- package/packages/kernel/dist/surfaces/web.d.ts +39 -0
- package/packages/kernel/dist/surfaces/web.js +244 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { UniversalToolCall, UniversalPlan, UniversalUsage, UniversalInteraction, UniversalArtifact, UniversalSubAgent } from '../protocol/index.js';
|
|
2
|
+
export interface AgentTurnInput {
|
|
3
|
+
prompt: string;
|
|
4
|
+
attachments?: string[];
|
|
5
|
+
sessionId?: string | null;
|
|
6
|
+
workdir: string;
|
|
7
|
+
model?: string | null;
|
|
8
|
+
effort?: string | null;
|
|
9
|
+
systemPrompt?: string;
|
|
10
|
+
env?: Record<string, string>;
|
|
11
|
+
extraMcpServers?: McpServerSpec[];
|
|
12
|
+
mcpConfigPath?: string | null;
|
|
13
|
+
permissionMode?: string | null;
|
|
14
|
+
extraArgs?: string[];
|
|
15
|
+
configOverrides?: string[];
|
|
16
|
+
fullAccess?: boolean;
|
|
17
|
+
steerable?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface McpServerSpec {
|
|
20
|
+
name: string;
|
|
21
|
+
type?: 'stdio' | 'http';
|
|
22
|
+
command?: string;
|
|
23
|
+
args?: string[];
|
|
24
|
+
env?: Record<string, string>;
|
|
25
|
+
url?: string;
|
|
26
|
+
headers?: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export type DriverEvent = {
|
|
29
|
+
type: 'session';
|
|
30
|
+
sessionId: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'text';
|
|
33
|
+
delta: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'reasoning';
|
|
36
|
+
delta: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'tool';
|
|
39
|
+
call: UniversalToolCall;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'plan';
|
|
42
|
+
plan: UniversalPlan;
|
|
43
|
+
} | {
|
|
44
|
+
type: 'subagent';
|
|
45
|
+
subagent: UniversalSubAgent;
|
|
46
|
+
} | {
|
|
47
|
+
type: 'usage';
|
|
48
|
+
usage: Partial<UniversalUsage>;
|
|
49
|
+
} | {
|
|
50
|
+
type: 'artifact';
|
|
51
|
+
artifact: UniversalArtifact;
|
|
52
|
+
} | {
|
|
53
|
+
type: 'activity';
|
|
54
|
+
line: string;
|
|
55
|
+
};
|
|
56
|
+
export type SteerFn = (prompt: string, attachments?: string[]) => Promise<boolean>;
|
|
57
|
+
export interface DriverContext {
|
|
58
|
+
signal: AbortSignal;
|
|
59
|
+
emit(event: DriverEvent): void;
|
|
60
|
+
askUser(interaction: UniversalInteraction): Promise<Record<string, string[]>>;
|
|
61
|
+
registerSteer(fn: SteerFn): void;
|
|
62
|
+
}
|
|
63
|
+
export interface DriverResult {
|
|
64
|
+
ok: boolean;
|
|
65
|
+
text: string;
|
|
66
|
+
reasoning?: string;
|
|
67
|
+
error?: string | null;
|
|
68
|
+
stopReason?: string | null;
|
|
69
|
+
sessionId?: string | null;
|
|
70
|
+
usage?: UniversalUsage | null;
|
|
71
|
+
}
|
|
72
|
+
export interface TuiInput {
|
|
73
|
+
workdir: string;
|
|
74
|
+
model?: string | null;
|
|
75
|
+
sessionId?: string | null;
|
|
76
|
+
env?: Record<string, string>;
|
|
77
|
+
extraArgs?: string[];
|
|
78
|
+
}
|
|
79
|
+
export interface TuiSpec {
|
|
80
|
+
command: string;
|
|
81
|
+
args: string[];
|
|
82
|
+
cwd: string;
|
|
83
|
+
env?: Record<string, string>;
|
|
84
|
+
}
|
|
85
|
+
export interface AgentDriver {
|
|
86
|
+
readonly id: string;
|
|
87
|
+
readonly capabilities?: {
|
|
88
|
+
steer?: boolean;
|
|
89
|
+
interact?: boolean;
|
|
90
|
+
resume?: boolean;
|
|
91
|
+
tui?: boolean;
|
|
92
|
+
};
|
|
93
|
+
run(input: AgentTurnInput, ctx: DriverContext): Promise<DriverResult>;
|
|
94
|
+
tui?(input: TuiInput): TuiSpec;
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { UniversalInteraction, UniversalSnapshot, ModelDescriptor, EffortOption, ToolDescriptor, SkillDescriptor } from '../protocol/index.js';
|
|
2
|
+
import type { McpServerSpec, DriverResult } from './driver.js';
|
|
3
|
+
export interface CoreSessionRecord {
|
|
4
|
+
agent: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
nativeSessionId?: string | null;
|
|
7
|
+
workspacePath: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
title?: string | null;
|
|
11
|
+
model?: string | null;
|
|
12
|
+
effort?: string | null;
|
|
13
|
+
runState?: 'running' | 'completed' | 'incomplete';
|
|
14
|
+
runDetail?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface SessionStore {
|
|
17
|
+
ensure(agent: string, opts: {
|
|
18
|
+
sessionId?: string | null;
|
|
19
|
+
title?: string | null;
|
|
20
|
+
workdir: string;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
sessionId: string;
|
|
23
|
+
workspacePath: string;
|
|
24
|
+
}>;
|
|
25
|
+
get(agent: string, sessionId: string): Promise<CoreSessionRecord | null>;
|
|
26
|
+
save(record: CoreSessionRecord): Promise<void>;
|
|
27
|
+
list(agent: string, opts?: {
|
|
28
|
+
limit?: number;
|
|
29
|
+
}): Promise<CoreSessionRecord[]>;
|
|
30
|
+
recordResult(agent: string, sessionId: string, result: DriverResult): Promise<void>;
|
|
31
|
+
appendTurn?(agent: string, sessionId: string, turn: UniversalSnapshot): Promise<void>;
|
|
32
|
+
history?(agent: string, sessionId: string): Promise<UniversalSnapshot[]>;
|
|
33
|
+
}
|
|
34
|
+
export interface ModelInjection {
|
|
35
|
+
model?: string | null;
|
|
36
|
+
env?: Record<string, string>;
|
|
37
|
+
extraArgs?: string[];
|
|
38
|
+
configOverrides?: string[];
|
|
39
|
+
providerName?: string | null;
|
|
40
|
+
contextWindow?: number | null;
|
|
41
|
+
}
|
|
42
|
+
export interface ModelResolver {
|
|
43
|
+
resolve(agent: string, opts: {
|
|
44
|
+
model?: string | null;
|
|
45
|
+
profileId?: string | null;
|
|
46
|
+
}): Promise<ModelInjection | null>;
|
|
47
|
+
}
|
|
48
|
+
export interface ToolProvider {
|
|
49
|
+
provideForSession(opts: {
|
|
50
|
+
agent: string;
|
|
51
|
+
workdir: string;
|
|
52
|
+
workspacePath: string;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
servers: McpServerSpec[];
|
|
55
|
+
env?: Record<string, string>;
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
export interface SystemPromptBuilder {
|
|
59
|
+
compose(opts: {
|
|
60
|
+
agent: string;
|
|
61
|
+
base?: string;
|
|
62
|
+
isFirstTurn: boolean;
|
|
63
|
+
}): string | undefined;
|
|
64
|
+
}
|
|
65
|
+
export interface InteractionHandler {
|
|
66
|
+
askUser(interaction: UniversalInteraction): Promise<Record<string, string[]> | null>;
|
|
67
|
+
}
|
|
68
|
+
export interface Catalog {
|
|
69
|
+
listModels(opts: {
|
|
70
|
+
agent: string;
|
|
71
|
+
}): Promise<ModelDescriptor[]>;
|
|
72
|
+
listEffort(opts: {
|
|
73
|
+
agent: string;
|
|
74
|
+
model?: string | null;
|
|
75
|
+
}): Promise<EffortOption[]>;
|
|
76
|
+
listTools(opts: {
|
|
77
|
+
agent: string;
|
|
78
|
+
workdir: string;
|
|
79
|
+
}): Promise<ToolDescriptor[]>;
|
|
80
|
+
listSkills(opts: {
|
|
81
|
+
agent: string;
|
|
82
|
+
workdir: string;
|
|
83
|
+
}): Promise<SkillDescriptor[]>;
|
|
84
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { UniversalSnapshot, SnapshotPatch, SessionMeta, AgentInfo, ModelDescriptor, EffortOption, ToolDescriptor, SkillDescriptor } from '../protocol/index.js';
|
|
2
|
+
import type { McpServerSpec } from './driver.js';
|
|
3
|
+
export interface PromptInput {
|
|
4
|
+
prompt: string;
|
|
5
|
+
agent?: string;
|
|
6
|
+
sessionKey?: string;
|
|
7
|
+
workdir?: string;
|
|
8
|
+
model?: string | null;
|
|
9
|
+
effort?: string | null;
|
|
10
|
+
attachments?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface LoomIO {
|
|
13
|
+
prompt(input: PromptInput): Promise<{
|
|
14
|
+
sessionKey: string;
|
|
15
|
+
taskId: string;
|
|
16
|
+
}>;
|
|
17
|
+
stop(sessionKey: string): boolean;
|
|
18
|
+
steer(taskId: string, prompt: string, attachments?: string[]): Promise<boolean>;
|
|
19
|
+
interact(promptId: string, action: 'select' | 'text' | 'skip' | 'cancel', value?: string): boolean;
|
|
20
|
+
subscribe(cb: (sessionKey: string, snapshot: UniversalSnapshot, patch: SnapshotPatch, seq: number) => void): () => void;
|
|
21
|
+
onSessionsChanged(cb: (sessions: SessionMeta[]) => void): () => void;
|
|
22
|
+
listSessions(): SessionMeta[];
|
|
23
|
+
getSnapshot(sessionKey: string): {
|
|
24
|
+
snapshot: UniversalSnapshot;
|
|
25
|
+
seq: number;
|
|
26
|
+
} | null;
|
|
27
|
+
getHistory(sessionKey: string): Promise<UniversalSnapshot[]>;
|
|
28
|
+
listAgents(): string[];
|
|
29
|
+
listAgentInfo(): AgentInfo[];
|
|
30
|
+
listModels(agent: string): Promise<ModelDescriptor[]>;
|
|
31
|
+
listEffort(agent: string, model?: string | null): Promise<EffortOption[]>;
|
|
32
|
+
listTools(agent: string, workdir?: string): Promise<ToolDescriptor[]>;
|
|
33
|
+
listSkills(agent: string, workdir?: string): Promise<SkillDescriptor[]>;
|
|
34
|
+
}
|
|
35
|
+
export interface SurfaceCapabilities {
|
|
36
|
+
editMessages?: boolean;
|
|
37
|
+
images?: boolean;
|
|
38
|
+
buttons?: boolean;
|
|
39
|
+
tunnel?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface PtyHandle {
|
|
42
|
+
onData(cb: (data: string) => void): () => void;
|
|
43
|
+
write(data: string): void;
|
|
44
|
+
resize(cols: number, rows: number): void;
|
|
45
|
+
kill(signal?: string): void;
|
|
46
|
+
onExit(cb: (e: {
|
|
47
|
+
exitCode: number;
|
|
48
|
+
signal?: number;
|
|
49
|
+
}) => void): () => void;
|
|
50
|
+
readonly pid: number;
|
|
51
|
+
}
|
|
52
|
+
export interface TuiHost {
|
|
53
|
+
openTui(opts: {
|
|
54
|
+
agent?: string;
|
|
55
|
+
workdir?: string;
|
|
56
|
+
model?: string | null;
|
|
57
|
+
sessionId?: string | null;
|
|
58
|
+
cols?: number;
|
|
59
|
+
rows?: number;
|
|
60
|
+
}): Promise<PtyHandle>;
|
|
61
|
+
}
|
|
62
|
+
export interface Surface {
|
|
63
|
+
readonly id: string;
|
|
64
|
+
readonly capabilities?: SurfaceCapabilities;
|
|
65
|
+
start(io: LoomIO, host?: TuiHost): Promise<void>;
|
|
66
|
+
stop(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
export interface Plugin {
|
|
69
|
+
readonly id: string;
|
|
70
|
+
tools?(opts: {
|
|
71
|
+
agent: string;
|
|
72
|
+
workdir: string;
|
|
73
|
+
}): McpServerSpec[] | Promise<McpServerSpec[]>;
|
|
74
|
+
decorateSnapshot?(snapshot: UniversalSnapshot): UniversalSnapshot;
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AgentDriver, AgentTurnInput, DriverContext, DriverResult, DriverEvent, TuiInput, TuiSpec } from '../contracts/driver.js';
|
|
2
|
+
import type { UniversalPlan } from '../protocol/index.js';
|
|
3
|
+
export declare class ClaudeDriver implements AgentDriver {
|
|
4
|
+
private readonly bin;
|
|
5
|
+
readonly id = "claude";
|
|
6
|
+
readonly capabilities: {
|
|
7
|
+
steer: boolean;
|
|
8
|
+
interact: boolean;
|
|
9
|
+
resume: boolean;
|
|
10
|
+
tui: boolean;
|
|
11
|
+
};
|
|
12
|
+
constructor(bin?: string);
|
|
13
|
+
tui(input: TuiInput): TuiSpec;
|
|
14
|
+
run(input: AgentTurnInput, ctx: DriverContext): Promise<DriverResult>;
|
|
15
|
+
private usage;
|
|
16
|
+
}
|
|
17
|
+
export declare function handleClaudeEvent(ev: any, s: any, emit: (e: DriverEvent) => void): void;
|
|
18
|
+
export declare function claudeUserMessage(text: string): string;
|
|
19
|
+
export declare function emitClaudeImages(blocks: any[], s: any, emit: (e: DriverEvent) => void): void;
|
|
20
|
+
export declare function todoWriteToPlan(input: any): UniversalPlan | null;
|
|
21
|
+
export declare function shortToolValue(value: unknown, max?: number): string;
|
|
22
|
+
export declare function summarizeToolUse(name: string, input: any): string;
|
|
23
|
+
export declare function firstResultLine(content: any): string;
|