@gencode/agents 0.0.4 → 0.0.5

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 (59) hide show
  1. package/dist/plugins/hooks.d.ts +20 -1
  2. package/dist/plugins/hooks.d.ts.map +1 -1
  3. package/dist/plugins/hooks.js.map +1 -1
  4. package/dist/plugins/index.d.ts +1 -1
  5. package/dist/plugins/index.d.ts.map +1 -1
  6. package/dist/plugins/index.js.map +1 -1
  7. package/dist/runner/agent-runtime.d.ts +62 -0
  8. package/dist/runner/agent-runtime.d.ts.map +1 -0
  9. package/dist/runner/agent-runtime.js +179 -0
  10. package/dist/runner/agent-runtime.js.map +1 -0
  11. package/dist/runner/announce-loop.d.ts +41 -0
  12. package/dist/runner/announce-loop.d.ts.map +1 -0
  13. package/dist/runner/announce-loop.js +94 -0
  14. package/dist/runner/announce-loop.js.map +1 -0
  15. package/dist/runner/event-dispatcher.d.ts +31 -0
  16. package/dist/runner/event-dispatcher.d.ts.map +1 -0
  17. package/dist/runner/event-dispatcher.js +87 -0
  18. package/dist/runner/event-dispatcher.js.map +1 -0
  19. package/dist/runner/finalizer.d.ts +30 -0
  20. package/dist/runner/finalizer.d.ts.map +1 -0
  21. package/dist/runner/finalizer.js +75 -0
  22. package/dist/runner/finalizer.js.map +1 -0
  23. package/dist/runner/invocation-resolver.d.ts +67 -0
  24. package/dist/runner/invocation-resolver.d.ts.map +1 -0
  25. package/dist/runner/invocation-resolver.js +224 -0
  26. package/dist/runner/invocation-resolver.js.map +1 -0
  27. package/dist/runner/plugin-context.d.ts +18 -0
  28. package/dist/runner/plugin-context.d.ts.map +1 -0
  29. package/dist/runner/plugin-context.js +26 -0
  30. package/dist/runner/plugin-context.js.map +1 -0
  31. package/dist/runner/run-context.d.ts +38 -0
  32. package/dist/runner/run-context.d.ts.map +1 -0
  33. package/dist/runner/run-context.js +159 -0
  34. package/dist/runner/run-context.js.map +1 -0
  35. package/dist/runner/runner-session.d.ts +34 -0
  36. package/dist/runner/runner-session.d.ts.map +1 -0
  37. package/dist/runner/runner-session.js +61 -0
  38. package/dist/runner/runner-session.js.map +1 -0
  39. package/dist/runner/runner.d.ts +1 -2
  40. package/dist/runner/runner.d.ts.map +1 -1
  41. package/dist/runner/runner.js +115 -889
  42. package/dist/runner/runner.js.map +1 -1
  43. package/dist/runner/runtime.d.ts +7 -0
  44. package/dist/runner/runtime.d.ts.map +1 -0
  45. package/dist/runner/runtime.js +21 -0
  46. package/dist/runner/runtime.js.map +1 -0
  47. package/dist/runner/session-lifecycle.d.ts +31 -0
  48. package/dist/runner/session-lifecycle.d.ts.map +1 -0
  49. package/dist/runner/session-lifecycle.js +46 -0
  50. package/dist/runner/session-lifecycle.js.map +1 -0
  51. package/dist/runner/title.d.ts +3 -0
  52. package/dist/runner/title.d.ts.map +1 -0
  53. package/dist/runner/title.js +6 -0
  54. package/dist/runner/title.js.map +1 -0
  55. package/dist/runner/turn-executor.d.ts +51 -0
  56. package/dist/runner/turn-executor.d.ts.map +1 -0
  57. package/dist/runner/turn-executor.js +255 -0
  58. package/dist/runner/turn-executor.js.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-dispatcher.js","sourceRoot":"","sources":["../../src/runner/event-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { PluginHookAgentContext, PluginHookRegistry } from "../plugins/hooks.js";
2
+ import type { AgentRunParams, AgentRunResult, CompactionEntry } from "../types.js";
3
+ import { RunEventDispatcher } from "./event-dispatcher.js";
4
+ type Usage = {
5
+ input: number;
6
+ output: number;
7
+ total: number;
8
+ };
9
+ type FinalizeSharedParams = {
10
+ sessionId: string;
11
+ isNewSession: boolean;
12
+ transcriptMessage: string;
13
+ runParams: AgentRunParams;
14
+ hookRegistry: PluginHookRegistry;
15
+ hookContext: PluginHookAgentContext;
16
+ startTime: number;
17
+ eventDispatcher: RunEventDispatcher;
18
+ };
19
+ export declare function finalizeShortCircuitRun(params: FinalizeSharedParams & {
20
+ replyText: string;
21
+ initialUserEntryPersisted?: boolean;
22
+ compactionEntry?: CompactionEntry;
23
+ }): Promise<AgentRunResult>;
24
+ export declare function finalizeCompletedRun(params: FinalizeSharedParams & {
25
+ text: string;
26
+ usage: Usage;
27
+ error?: string;
28
+ }): Promise<AgentRunResult>;
29
+ export {};
30
+ //# sourceMappingURL=finalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalizer.d.ts","sourceRoot":"","sources":["../../src/runner/finalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,KAAK,oBAAoB,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,OAAO,CAAC,cAAc,CAAC,CA2D1B;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyC1B"}
@@ -0,0 +1,75 @@
1
+ import { appendTranscriptEntry, saveSessionMetadata } from "../session/session.js";
2
+ import { generateSessionTitle } from "./title.js";
3
+ import { RunEventDispatcher } from "./event-dispatcher.js";
4
+ import { buildNewSessionMetadata } from "./run-context.js";
5
+ import { finishSessionLifecycle } from "./session-lifecycle.js";
6
+ export async function finalizeShortCircuitRun(params) {
7
+ const { replyText, sessionId, isNewSession, transcriptMessage, initialUserEntryPersisted = false, runParams, hookRegistry, hookContext, startTime, compactionEntry, eventDispatcher, } = params;
8
+ if (!initialUserEntryPersisted) {
9
+ await appendTranscriptEntry(runParams.dataDir, sessionId, {
10
+ role: "user",
11
+ content: transcriptMessage,
12
+ timestamp: new Date().toISOString(),
13
+ });
14
+ }
15
+ if (compactionEntry) {
16
+ await appendTranscriptEntry(runParams.dataDir, sessionId, compactionEntry);
17
+ }
18
+ await appendTranscriptEntry(runParams.dataDir, sessionId, {
19
+ role: "assistant",
20
+ content: replyText,
21
+ timestamp: new Date().toISOString(),
22
+ });
23
+ if (isNewSession) {
24
+ const titleSource = transcriptMessage.trim() ? transcriptMessage : "New session";
25
+ await saveSessionMetadata(runParams.dataDir, buildNewSessionMetadata({
26
+ sessionId,
27
+ title: generateSessionTitle(titleSource),
28
+ channel: runParams.channel,
29
+ }));
30
+ }
31
+ const durationMs = Date.now() - startTime;
32
+ const usage = { input: 0, output: 0, total: 0 };
33
+ const result = {
34
+ sessionId,
35
+ text: replyText,
36
+ usage,
37
+ durationMs,
38
+ };
39
+ await finishSessionLifecycle({
40
+ sessionId,
41
+ result,
42
+ runParams,
43
+ hookRegistry,
44
+ hookContext,
45
+ eventDispatcher,
46
+ });
47
+ return result;
48
+ }
49
+ export async function finalizeCompletedRun(params) {
50
+ const { sessionId, isNewSession, transcriptMessage, runParams, hookRegistry, hookContext, startTime, text, usage, error, eventDispatcher, } = params;
51
+ if (isNewSession) {
52
+ await saveSessionMetadata(runParams.dataDir, buildNewSessionMetadata({
53
+ sessionId,
54
+ title: generateSessionTitle(transcriptMessage),
55
+ channel: runParams.channel,
56
+ }));
57
+ }
58
+ const result = {
59
+ sessionId,
60
+ text,
61
+ usage,
62
+ durationMs: Date.now() - startTime,
63
+ error,
64
+ };
65
+ await finishSessionLifecycle({
66
+ sessionId,
67
+ result,
68
+ runParams,
69
+ hookRegistry,
70
+ hookContext,
71
+ eventDispatcher,
72
+ });
73
+ return result;
74
+ }
75
+ //# sourceMappingURL=finalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalizer.js","sourceRoot":"","sources":["../../src/runner/finalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Message } from "@mariozechner/pi-ai";
2
+ import type { Skill } from "../skills/skills.js";
3
+ import type { AgentRunParams, AgentRunResult } from "../types.js";
4
+ import type { PluginHookRegistry } from "../plugins/hooks.js";
5
+ import { RunEventDispatcher } from "./event-dispatcher.js";
6
+ export type PreparedInvocation = {
7
+ inputMode: "text" | "messages";
8
+ rawMessage?: string;
9
+ promptInput: string | Message[];
10
+ transcriptMessage: string;
11
+ slashCommandSource?: string;
12
+ messageForRun?: string;
13
+ requestedSessionId?: string;
14
+ previousSessionId?: string;
15
+ resetCommand?: {
16
+ action: "new" | "reset";
17
+ remainder: string;
18
+ };
19
+ resetShortCircuit: boolean;
20
+ };
21
+ export type ResolvedSlashInvocation = {
22
+ kind: "run";
23
+ effectivePrompt: string | Message[];
24
+ transcriptMessage: string;
25
+ } | {
26
+ kind: "reply";
27
+ replyText: string;
28
+ transcriptMessage: string;
29
+ initialUserEntryPersisted?: boolean;
30
+ } | {
31
+ kind: "compact";
32
+ transcriptMessage: string;
33
+ instructions?: string;
34
+ initialUserEntryPersisted?: boolean;
35
+ } | {
36
+ kind: "reset_reply";
37
+ action: "new" | "reset";
38
+ transcriptMessage: string;
39
+ initialUserEntryPersisted: true;
40
+ };
41
+ export type InvocationExecutionResult = {
42
+ kind: "continue";
43
+ effectivePrompt: string | Message[];
44
+ transcriptMessage: string;
45
+ } | {
46
+ kind: "completed";
47
+ result: AgentRunResult;
48
+ };
49
+ export declare function prepareInvocation(params: AgentRunParams): PreparedInvocation;
50
+ export declare function resolveSlashInvocation(invocation: PreparedInvocation, skills: Skill[]): ResolvedSlashInvocation;
51
+ export declare function handleInvocation(params: {
52
+ invocation: PreparedInvocation;
53
+ skills: Skill[];
54
+ sessionId: string;
55
+ isNewSession: boolean;
56
+ initialUserEntryPersisted: boolean;
57
+ runParams: AgentRunParams;
58
+ hookRegistry: PluginHookRegistry;
59
+ hookContext: {
60
+ sessionId?: string;
61
+ workspaceDir?: string;
62
+ channel?: AgentRunParams["channel"];
63
+ };
64
+ startTime: number;
65
+ eventDispatcher: RunEventDispatcher;
66
+ }): Promise<InvocationExecutionResult>;
67
+ //# sourceMappingURL=invocation-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-resolver.d.ts","sourceRoot":"","sources":["../../src/runner/invocation-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAO3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,IAAI,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,yBAAyB,GACjC;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEN,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAiC5E;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,KAAK,EAAE,GACd,uBAAuB,CAsDzB;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,UAAU,EAAE,kBAAkB,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,kBAAkB,CAAC;CACrC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAoFrC"}
@@ -0,0 +1,224 @@
1
+ import { handleSlashCommand, parseResetCommand } from "../commands/index.js";
2
+ import { compactTranscriptNow } from "../commands/compact.js";
3
+ import { handleNewCommand } from "../commands/new.js";
4
+ import { handleResetCommand } from "../commands/reset.js";
5
+ import { loadTranscript } from "../session/session.js";
6
+ import { finalizeShortCircuitRun } from "./finalizer.js";
7
+ import { RunEventDispatcher } from "./event-dispatcher.js";
8
+ export function prepareInvocation(params) {
9
+ const inputMode = isTextRunParams(params) ? "text" : "messages";
10
+ const rawMessage = inputMode === "text" ? params.message : undefined;
11
+ const inputMessages = inputMode === "messages" ? params.messages : undefined;
12
+ const structuredUserText = inputMessages ? extractLeadingUserTextMessage(inputMessages) : null;
13
+ const slashCommandSource = rawMessage ?? structuredUserText?.text;
14
+ const resetCommand = slashCommandSource ? parseResetCommand(slashCommandSource) : null;
15
+ const resetRemainder = resetCommand?.remainder ?? "";
16
+ const resetShortCircuit = Boolean(resetCommand && !resetRemainder);
17
+ const messageForRun = resetCommand && resetRemainder ? resetRemainder : slashCommandSource;
18
+ const promptInput = inputMode === "text"
19
+ ? (messageForRun ?? "")
20
+ : (resetCommand && resetRemainder && inputMessages
21
+ ? replaceLeadingUserTextMessage(inputMessages, resetRemainder)
22
+ : inputMessages);
23
+ const transcriptMessage = inputMode === "text"
24
+ ? (resetShortCircuit ? rawMessage : (messageForRun ?? ""))
25
+ : serializeUserInput(promptInput);
26
+ return {
27
+ inputMode,
28
+ rawMessage,
29
+ promptInput,
30
+ transcriptMessage,
31
+ slashCommandSource,
32
+ messageForRun,
33
+ requestedSessionId: resetCommand ? undefined : params.sessionId,
34
+ previousSessionId: resetCommand ? params.sessionId : undefined,
35
+ resetCommand: resetCommand ?? undefined,
36
+ resetShortCircuit,
37
+ };
38
+ }
39
+ export function resolveSlashInvocation(invocation, skills) {
40
+ if (invocation.resetShortCircuit) {
41
+ return {
42
+ kind: "reset_reply",
43
+ action: invocation.resetCommand?.action ?? "new",
44
+ transcriptMessage: invocation.transcriptMessage,
45
+ initialUserEntryPersisted: true,
46
+ };
47
+ }
48
+ if (!invocation.slashCommandSource) {
49
+ return {
50
+ kind: "run",
51
+ effectivePrompt: invocation.promptInput,
52
+ transcriptMessage: invocation.transcriptMessage,
53
+ };
54
+ }
55
+ const slashResult = handleSlashCommand({ message: invocation.messageForRun ?? "", skills });
56
+ if (slashResult.kind === "reply") {
57
+ return {
58
+ kind: "reply",
59
+ replyText: slashResult.text,
60
+ transcriptMessage: invocation.transcriptMessage,
61
+ };
62
+ }
63
+ if (slashResult.kind === "compact") {
64
+ return {
65
+ kind: "compact",
66
+ transcriptMessage: invocation.transcriptMessage,
67
+ instructions: slashResult.instructions,
68
+ initialUserEntryPersisted: invocation.resetCommand ? true : undefined,
69
+ };
70
+ }
71
+ if (slashResult.kind === "rewrite") {
72
+ const effectivePrompt = invocation.inputMode === "text"
73
+ ? slashResult.message
74
+ : replaceLeadingUserTextMessage(invocation.promptInput, slashResult.message);
75
+ return {
76
+ kind: "run",
77
+ effectivePrompt,
78
+ transcriptMessage: serializeUserInput(effectivePrompt),
79
+ };
80
+ }
81
+ return {
82
+ kind: "run",
83
+ effectivePrompt: invocation.inputMode === "text" ? (invocation.messageForRun ?? "") : invocation.promptInput,
84
+ transcriptMessage: invocation.inputMode === "text"
85
+ ? (invocation.messageForRun ?? "")
86
+ : invocation.transcriptMessage,
87
+ };
88
+ }
89
+ export async function handleInvocation(params) {
90
+ const resolvedInvocation = resolveSlashInvocation(params.invocation, params.skills);
91
+ if (resolvedInvocation.kind === "run") {
92
+ return {
93
+ kind: "continue",
94
+ effectivePrompt: resolvedInvocation.effectivePrompt,
95
+ transcriptMessage: resolvedInvocation.transcriptMessage,
96
+ };
97
+ }
98
+ if (resolvedInvocation.kind === "reset_reply") {
99
+ const resetReply = resolvedInvocation.action === "reset" ? handleResetCommand() : handleNewCommand();
100
+ return {
101
+ kind: "completed",
102
+ result: await finalizeShortCircuitRun({
103
+ replyText: resetReply.text,
104
+ sessionId: params.sessionId,
105
+ isNewSession: params.isNewSession,
106
+ transcriptMessage: resolvedInvocation.transcriptMessage,
107
+ initialUserEntryPersisted: resolvedInvocation.initialUserEntryPersisted || params.initialUserEntryPersisted,
108
+ runParams: params.runParams,
109
+ hookRegistry: params.hookRegistry,
110
+ hookContext: params.hookContext,
111
+ startTime: params.startTime,
112
+ eventDispatcher: params.eventDispatcher,
113
+ }),
114
+ };
115
+ }
116
+ if (resolvedInvocation.kind === "reply") {
117
+ return {
118
+ kind: "completed",
119
+ result: await finalizeShortCircuitRun({
120
+ replyText: resolvedInvocation.replyText,
121
+ sessionId: params.sessionId,
122
+ isNewSession: params.isNewSession,
123
+ transcriptMessage: resolvedInvocation.transcriptMessage,
124
+ initialUserEntryPersisted: resolvedInvocation.initialUserEntryPersisted || params.initialUserEntryPersisted,
125
+ runParams: params.runParams,
126
+ hookRegistry: params.hookRegistry,
127
+ hookContext: params.hookContext,
128
+ startTime: params.startTime,
129
+ eventDispatcher: params.eventDispatcher,
130
+ }),
131
+ };
132
+ }
133
+ const rawHistory = params.runParams.channel === "CRON" ? [] : await loadTranscript(params.runParams.dataDir, params.sessionId);
134
+ const compactResult = await compactTranscriptNow({
135
+ entries: rawHistory,
136
+ contextWindowTokens: params.runParams.llm.contextWindow ?? 200_000,
137
+ llm: {
138
+ baseUrl: params.runParams.llm.baseUrl,
139
+ apiKey: params.runParams.llm.apiKey,
140
+ model: params.runParams.llm.model,
141
+ },
142
+ instructions: resolvedInvocation.instructions,
143
+ signal: params.runParams.abortSignal,
144
+ hooks: params.hookRegistry,
145
+ hookCtx: params.hookContext,
146
+ });
147
+ const compactText = compactResult.status === "compacted"
148
+ ? `⚙️ Compacted (kept ${compactResult.keptCount}, dropped ${compactResult.droppedCount}).`
149
+ : `⚙️ Compaction skipped: ${compactResult.reason}`;
150
+ return {
151
+ kind: "completed",
152
+ result: await finalizeShortCircuitRun({
153
+ replyText: compactText,
154
+ sessionId: params.sessionId,
155
+ isNewSession: params.isNewSession,
156
+ transcriptMessage: resolvedInvocation.transcriptMessage,
157
+ initialUserEntryPersisted: resolvedInvocation.initialUserEntryPersisted || params.initialUserEntryPersisted,
158
+ runParams: params.runParams,
159
+ hookRegistry: params.hookRegistry,
160
+ hookContext: params.hookContext,
161
+ startTime: params.startTime,
162
+ compactionEntry: compactResult.status === "compacted" ? compactResult.entry : undefined,
163
+ eventDispatcher: params.eventDispatcher,
164
+ }),
165
+ };
166
+ }
167
+ function isTextRunParams(params) {
168
+ return typeof params.message === "string";
169
+ }
170
+ function extractLeadingUserTextMessage(messages) {
171
+ for (let index = 0; index < messages.length; index += 1) {
172
+ const candidate = messages[index];
173
+ if (candidate.role !== "user") {
174
+ continue;
175
+ }
176
+ if (typeof candidate.content === "string") {
177
+ return { index, text: candidate.content };
178
+ }
179
+ if (!Array.isArray(candidate.content) || candidate.content.length === 0) {
180
+ return null;
181
+ }
182
+ const firstBlock = candidate.content[0];
183
+ if (firstBlock?.type === "text" && typeof firstBlock.text === "string") {
184
+ return { index, text: firstBlock.text };
185
+ }
186
+ return null;
187
+ }
188
+ return null;
189
+ }
190
+ function replaceLeadingUserTextMessage(messages, replacement) {
191
+ const match = extractLeadingUserTextMessage(messages);
192
+ if (!match) {
193
+ return messages;
194
+ }
195
+ return messages.map((message, index) => {
196
+ if (index !== match.index) {
197
+ return message;
198
+ }
199
+ const candidate = message;
200
+ if (typeof candidate.content === "string") {
201
+ return { ...message, content: replacement };
202
+ }
203
+ if (Array.isArray(candidate.content) && candidate.content.length > 0) {
204
+ return {
205
+ ...message,
206
+ content: candidate.content.map((block, blockIndex) => {
207
+ if (blockIndex !== 0) {
208
+ return block;
209
+ }
210
+ const typedBlock = block;
211
+ if (typedBlock?.type === "text" && typeof typedBlock.text === "string") {
212
+ return { ...typedBlock, text: replacement };
213
+ }
214
+ return block;
215
+ }),
216
+ };
217
+ }
218
+ return message;
219
+ });
220
+ }
221
+ function serializeUserInput(input) {
222
+ return typeof input === "string" ? input : JSON.stringify(input);
223
+ }
224
+ //# sourceMappingURL=invocation-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-resolver.js","sourceRoot":"","sources":["../../src/runner/invocation-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { PluginHookRegistry, type PluginHookAgentContext } from "../plugins/hooks.js";
2
+ import type { AgentRunParams } from "../types.js";
3
+ import type { AgentTool } from "@mariozechner/pi-agent-core";
4
+ export type RunnerPluginContext = {
5
+ hookRegistry: PluginHookRegistry;
6
+ pluginSkillDirs: string[];
7
+ pluginTools: AgentTool[];
8
+ memoryPluginId?: string;
9
+ };
10
+ /**
11
+ * Resolves all runner-facing plugin derivatives in one place so the caller
12
+ * does not need to understand the plugin registry layout.
13
+ */
14
+ export declare function createRunnerPluginContext(params: {
15
+ runParams: AgentRunParams;
16
+ hookContext: PluginHookAgentContext;
17
+ }): RunnerPluginContext;
18
+ //# sourceMappingURL=plugin-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-context.d.ts","sourceRoot":"","sources":["../../src/runner/plugin-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,kBAAkB,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,sBAAsB,CAAC;CACrC,GAAG,mBAAmB,CAoBtB"}
@@ -0,0 +1,26 @@
1
+ import { initializePluginSystem } from "../plugins/manager.js";
2
+ import { PluginHookRegistry } from "../plugins/hooks.js";
3
+ /**
4
+ * Resolves all runner-facing plugin derivatives in one place so the caller
5
+ * does not need to understand the plugin registry layout.
6
+ */
7
+ export function createRunnerPluginContext(params) {
8
+ const { runParams, hookContext } = params;
9
+ const pluginSystem = runParams.plugins
10
+ ? initializePluginSystem({
11
+ ...runParams.plugins,
12
+ runtime: {
13
+ llm: runParams.llm,
14
+ hookCtx: hookContext,
15
+ llmAllowlist: runParams.plugins.llmAllowlist,
16
+ },
17
+ })
18
+ : undefined;
19
+ return {
20
+ hookRegistry: pluginSystem?.registry.hooks ?? new PluginHookRegistry(),
21
+ pluginSkillDirs: pluginSystem?.registry.skills ?? [],
22
+ pluginTools: pluginSystem?.registry.tools.resolveEnabled(runParams.plugins?.toolAllowlist) ?? [],
23
+ memoryPluginId: runParams.memory?.pluginId ?? pluginSystem?.normalizedConfig.slots?.memory,
24
+ };
25
+ }
26
+ //# sourceMappingURL=plugin-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-context.js","sourceRoot":"","sources":["../../src/runner/plugin-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAA+B,MAAM,qBAAqB,CAAC;AAWtF;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAGzC;IACC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE1C,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO;QACpC,CAAC,CAAC,sBAAsB,CAAC;YACrB,GAAG,SAAS,CAAC,OAAO;YACpB,OAAO,EAAE;gBACP,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY;aAC7C;SACF,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,kBAAkB,EAAE;QACtE,eAAe,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QACpD,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE;QAChG,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,IAAI,YAAY,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM;KAC3F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type SessionMetadata } from "../session/session.js";
2
+ import type { PluginHookAgentContext, PluginHookRegistry } from "../plugins/hooks.js";
3
+ import type { AgentRunParams, TranscriptEntry } from "../types.js";
4
+ import { RunEventDispatcher } from "./event-dispatcher.js";
5
+ /**
6
+ * Owns the runner's session-local side effects: transcript writes, initial
7
+ * user-turn persistence, and memory watch bridging. Callers use this as a
8
+ * single session context and do not need to know how transcript writes trigger
9
+ * memory sync or deduped memory_changed notifications.
10
+ */
11
+ export type AgentRunContext = {
12
+ workspaceDir: string;
13
+ memoryProviderId?: string;
14
+ memoryPluginId?: string;
15
+ appendTranscriptEntry: (entry: TranscriptEntry) => Promise<void>;
16
+ persistInitialUserEntry: (content: string) => Promise<boolean>;
17
+ stop: () => void;
18
+ };
19
+ /**
20
+ * Creates the session-scoped runtime context used by the runner. The returned
21
+ * object hides memory provider resolution, transcript write options, and the
22
+ * watch bridge lifecycle behind a small interface.
23
+ */
24
+ export declare function createRunContext(params: {
25
+ runParams: AgentRunParams;
26
+ sessionId: string;
27
+ hookContext: PluginHookAgentContext;
28
+ memoryProviderId?: string;
29
+ memoryPluginId?: string;
30
+ eventDispatcher: RunEventDispatcher;
31
+ hookRegistry: PluginHookRegistry;
32
+ }): Promise<AgentRunContext>;
33
+ export declare function buildNewSessionMetadata(params: {
34
+ sessionId: string;
35
+ title: string;
36
+ channel: AgentRunParams["channel"];
37
+ }): SessionMetadata;
38
+ //# sourceMappingURL=run-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-context.d.ts","sourceRoot":"","sources":["../../src/runner/run-context.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,sBAAsB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,kBAAkB,CAAC;CAClC,GAAG,OAAO,CAAC,eAAe,CAAC,CAyH3B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CACpC,GAAG,eAAe,CASlB"}