@parall/agent-core 1.26.0 → 1.26.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/dispatch-adapter.d.ts +3 -0
- package/dist/dispatch-adapter.d.ts.map +1 -1
- package/dist/event-format.d.ts +1 -0
- package/dist/event-format.d.ts.map +1 -1
- package/dist/event-format.js +6 -0
- package/dist/gateway-base.d.ts.map +1 -1
- package/dist/gateway-base.js +13 -4
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/dispatch-adapter.ts +4 -0
- package/src/event-format.ts +7 -0
- package/src/gateway-base.ts +13 -4
- package/src/types.ts +2 -0
|
@@ -65,6 +65,7 @@ export type ForkSessionHandle = {
|
|
|
65
65
|
export type ForkOpts = {
|
|
66
66
|
sessionKey: string;
|
|
67
67
|
context: DispatchContext;
|
|
68
|
+
preDispatchBranchPoint?: string;
|
|
68
69
|
};
|
|
69
70
|
export type CleanupForkOpts = {
|
|
70
71
|
fork: ForkSessionHandle;
|
|
@@ -77,5 +78,7 @@ export interface DispatchAdapter {
|
|
|
77
78
|
forkSession?(opts: ForkOpts): Promise<ForkSessionHandle | null> | ForkSessionHandle | null;
|
|
78
79
|
/** Clean up a fork session created by forkSession(). */
|
|
79
80
|
cleanupFork?(opts: CleanupForkOpts): Promise<void> | void;
|
|
81
|
+
/** Return the current on-disk branch point (leaf ID) for the given session, if available. */
|
|
82
|
+
getBranchPoint?(sessionKey: string): string | undefined;
|
|
80
83
|
}
|
|
81
84
|
//# sourceMappingURL=dispatch-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-adapter.d.ts","sourceRoot":"","sources":["../src/dispatch-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9G;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACjI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch-adapter.d.ts","sourceRoot":"","sources":["../src/dispatch-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/event-format.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ForkResult, ParallEvent } from "./types.js";
|
|
2
2
|
export declare function buildEventBody(event: ParallEvent): string;
|
|
3
|
+
export declare function buildForkScopePrefix(event: ParallEvent): string;
|
|
3
4
|
export declare function buildForkResultPrefix(results: ForkResult[]): string;
|
|
4
5
|
//# sourceMappingURL=event-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-format.d.ts","sourceRoot":"","sources":["../src/event-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAgDzD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CASnE"}
|
|
1
|
+
{"version":3,"file":"event-format.d.ts","sourceRoot":"","sources":["../src/event-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAgDzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAK/D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CASnE"}
|
package/dist/event-format.js
CHANGED
|
@@ -58,6 +58,12 @@ export function buildEventBody(event) {
|
|
|
58
58
|
}
|
|
59
59
|
return lines.join("\n");
|
|
60
60
|
}
|
|
61
|
+
export function buildForkScopePrefix(event) {
|
|
62
|
+
const targetLabel = event.targetName
|
|
63
|
+
? `"${event.targetName}" (prll://${event.targetId})`
|
|
64
|
+
: `prll://${event.targetId}`;
|
|
65
|
+
return `[Fork scope: You are a parallel worker handling ${targetLabel} only. The conversation history above is inherited context — do NOT complete unfinished work, retry failed tool calls, or send messages to other chats from that history. Only act on the event below.]\n\n`;
|
|
66
|
+
}
|
|
61
67
|
export function buildForkResultPrefix(results) {
|
|
62
68
|
if (!results.length)
|
|
63
69
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-base.d.ts","sourceRoot":"","sources":["../src/gateway-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gateway-base.d.ts","sourceRoot":"","sources":["../src/gateway-base.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway-base.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { MENTION_ALL_USER_ID } from "@parall/sdk";
|
|
6
|
-
import { buildEventBody, buildForkResultPrefix } from "./event-format.js";
|
|
6
|
+
import { buildEventBody, buildForkResultPrefix, buildForkScopePrefix } from "./event-format.js";
|
|
7
7
|
import { routeTrigger } from "./routing.js";
|
|
8
8
|
import { clearDispatchMessageId, clearDispatchNoReply, clearSessionMessageId, setDispatchMessageId, setDispatchNoReply, setSessionChatId, setSessionMessageId, } from "./session-state.js";
|
|
9
9
|
// Parse PRLL_SHUTDOWN_DEADLINE_MS (or any string env value) into a positive
|
|
@@ -543,7 +543,7 @@ export class ParallAgentGateway {
|
|
|
543
543
|
const last = events[events.length - 1];
|
|
544
544
|
const earlier = events.slice(0, -1);
|
|
545
545
|
try {
|
|
546
|
-
const dispatched = await this.runDispatch(last, fork.fork.sessionKey, buildEventBody(last), earlier);
|
|
546
|
+
const dispatched = await this.runDispatch(last, fork.fork.sessionKey, buildForkScopePrefix(last) + buildEventBody(last), earlier);
|
|
547
547
|
if (!dispatched) {
|
|
548
548
|
// Shutdown short-circuit — resolve un-acked so the server requeues
|
|
549
549
|
// for the replacement pod and stop draining further items.
|
|
@@ -634,6 +634,8 @@ export class ParallAgentGateway {
|
|
|
634
634
|
body: "[Orchestrator: fork session(s) completed — review results above]",
|
|
635
635
|
};
|
|
636
636
|
this.dispatchState.mainCurrentTargetId = undefined;
|
|
637
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
638
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
637
639
|
const dispatched = await this.runDispatch(syntheticEvent, this.opts.runtimeKey, forkPrefix + buildEventBody(syntheticEvent));
|
|
638
640
|
if (!dispatched) {
|
|
639
641
|
// Shutdown: put the fork results back at the head so the synthetic
|
|
@@ -654,8 +656,8 @@ export class ParallAgentGateway {
|
|
|
654
656
|
const pendingFork = this.dispatchState.pendingForkResults.splice(0);
|
|
655
657
|
const forkPrefix = buildForkResultPrefix(pendingFork);
|
|
656
658
|
this.dispatchState.mainCurrentTargetId = event.targetId;
|
|
657
|
-
|
|
658
|
-
|
|
659
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
660
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
659
661
|
const dispatched = await this.runDispatch(event, this.opts.runtimeKey, forkPrefix + buildEventBody(event), earlier);
|
|
660
662
|
if (!dispatched) {
|
|
661
663
|
// Shutdown: skip the ack so the server redelivers these buffered
|
|
@@ -679,6 +681,7 @@ export class ParallAgentGateway {
|
|
|
679
681
|
this.draining = false;
|
|
680
682
|
this.dispatchState.mainDispatching = false;
|
|
681
683
|
this.dispatchState.mainCurrentTargetId = undefined;
|
|
684
|
+
this.dispatchState.mainPreDispatchBranchPoint = undefined;
|
|
682
685
|
}
|
|
683
686
|
}
|
|
684
687
|
async handleInboundEvent(event) {
|
|
@@ -689,6 +692,11 @@ export class ParallAgentGateway {
|
|
|
689
692
|
const forkPrefix = buildForkResultPrefix(pendingFork);
|
|
690
693
|
this.dispatchState.mainDispatching = true;
|
|
691
694
|
this.dispatchState.mainCurrentTargetId = event.targetId;
|
|
695
|
+
// Snapshot the on-disk branch point BEFORE runDispatch starts writing
|
|
696
|
+
// to the session file. Fork sessions created while main is in-flight
|
|
697
|
+
// use this to branch from the clean pre-dispatch state.
|
|
698
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
699
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
692
700
|
let dispatched = false;
|
|
693
701
|
try {
|
|
694
702
|
dispatched = await this.runDispatch(event, this.opts.runtimeKey, forkPrefix + buildEventBody(event));
|
|
@@ -728,6 +736,7 @@ export class ParallAgentGateway {
|
|
|
728
736
|
const fork = await this.opts.dispatchAdapter.forkSession({
|
|
729
737
|
sessionKey: this.opts.runtimeKey,
|
|
730
738
|
context: this.buildDispatchContext(event, this.opts.runtimeKey),
|
|
739
|
+
preDispatchBranchPoint: this.dispatchState.mainPreDispatchBranchPoint,
|
|
731
740
|
});
|
|
732
741
|
if (!fork) {
|
|
733
742
|
this.opts.log?.warn(`parall[${this.opts.accountId}]: fork failed, buffering event for main session`);
|
package/dist/types.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export type DispatchState = {
|
|
|
15
15
|
activeForks: Map<string, string>;
|
|
16
16
|
pendingForkResults: ForkResult[];
|
|
17
17
|
mainBuffer: ParallEvent[];
|
|
18
|
+
/** Snapshot of the session branch point taken BEFORE runDispatch starts on main. */
|
|
19
|
+
mainPreDispatchBranchPoint?: string;
|
|
18
20
|
};
|
|
19
21
|
/** Normalized inbound event from Parall. */
|
|
20
22
|
export type ParallEvent = {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,UAAU,EAAE,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/agent-core",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"description": "Shared agent runtime orchestration helpers for Parall",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"src"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@parall/sdk": "1.26.
|
|
29
|
+
"@parall/sdk": "1.26.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^22.0.0",
|
package/src/dispatch-adapter.ts
CHANGED
|
@@ -49,6 +49,7 @@ export type ForkSessionHandle = {
|
|
|
49
49
|
export type ForkOpts = {
|
|
50
50
|
sessionKey: string;
|
|
51
51
|
context: DispatchContext;
|
|
52
|
+
preDispatchBranchPoint?: string;
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
export type CleanupForkOpts = {
|
|
@@ -65,4 +66,7 @@ export interface DispatchAdapter {
|
|
|
65
66
|
|
|
66
67
|
/** Clean up a fork session created by forkSession(). */
|
|
67
68
|
cleanupFork?(opts: CleanupForkOpts): Promise<void> | void;
|
|
69
|
+
|
|
70
|
+
/** Return the current on-disk branch point (leaf ID) for the given session, if available. */
|
|
71
|
+
getBranchPoint?(sessionKey: string): string | undefined;
|
|
68
72
|
}
|
package/src/event-format.ts
CHANGED
|
@@ -54,6 +54,13 @@ export function buildEventBody(event: ParallEvent): string {
|
|
|
54
54
|
return lines.join("\n");
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
export function buildForkScopePrefix(event: ParallEvent): string {
|
|
58
|
+
const targetLabel = event.targetName
|
|
59
|
+
? `"${event.targetName}" (prll://${event.targetId})`
|
|
60
|
+
: `prll://${event.targetId}`;
|
|
61
|
+
return `[Fork scope: You are a parallel worker handling ${targetLabel} only. The conversation history above is inherited context — do NOT complete unfinished work, retry failed tool calls, or send messages to other chats from that history. Only act on the event below.]\n\n`;
|
|
62
|
+
}
|
|
63
|
+
|
|
57
64
|
export function buildForkResultPrefix(results: ForkResult[]): string {
|
|
58
65
|
if (!results.length) return "";
|
|
59
66
|
const blocks = results.map((result) => {
|
package/src/gateway-base.ts
CHANGED
|
@@ -17,7 +17,7 @@ import type {
|
|
|
17
17
|
TaskAssignedData,
|
|
18
18
|
TextContent,
|
|
19
19
|
} from "@parall/sdk";
|
|
20
|
-
import { buildEventBody, buildForkResultPrefix } from "./event-format.js";
|
|
20
|
+
import { buildEventBody, buildForkResultPrefix, buildForkScopePrefix } from "./event-format.js";
|
|
21
21
|
import type {
|
|
22
22
|
CleanupForkOpts,
|
|
23
23
|
DispatchAdapter,
|
|
@@ -658,7 +658,7 @@ export class ParallAgentGateway {
|
|
|
658
658
|
const last = events[events.length - 1];
|
|
659
659
|
const earlier = events.slice(0, -1);
|
|
660
660
|
try {
|
|
661
|
-
const dispatched = await this.runDispatch(last, fork.fork.sessionKey, buildEventBody(last), earlier);
|
|
661
|
+
const dispatched = await this.runDispatch(last, fork.fork.sessionKey, buildForkScopePrefix(last) + buildEventBody(last), earlier);
|
|
662
662
|
if (!dispatched) {
|
|
663
663
|
// Shutdown short-circuit — resolve un-acked so the server requeues
|
|
664
664
|
// for the replacement pod and stop draining further items.
|
|
@@ -750,6 +750,8 @@ export class ParallAgentGateway {
|
|
|
750
750
|
body: "[Orchestrator: fork session(s) completed — review results above]",
|
|
751
751
|
};
|
|
752
752
|
this.dispatchState.mainCurrentTargetId = undefined;
|
|
753
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
754
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
753
755
|
const dispatched = await this.runDispatch(syntheticEvent, this.opts.runtimeKey, forkPrefix + buildEventBody(syntheticEvent));
|
|
754
756
|
if (!dispatched) {
|
|
755
757
|
// Shutdown: put the fork results back at the head so the synthetic
|
|
@@ -772,8 +774,8 @@ export class ParallAgentGateway {
|
|
|
772
774
|
const pendingFork = this.dispatchState.pendingForkResults.splice(0);
|
|
773
775
|
const forkPrefix = buildForkResultPrefix(pendingFork);
|
|
774
776
|
this.dispatchState.mainCurrentTargetId = event.targetId;
|
|
775
|
-
|
|
776
|
-
|
|
777
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
778
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
777
779
|
const dispatched = await this.runDispatch(event, this.opts.runtimeKey, forkPrefix + buildEventBody(event), earlier);
|
|
778
780
|
if (!dispatched) {
|
|
779
781
|
// Shutdown: skip the ack so the server redelivers these buffered
|
|
@@ -796,6 +798,7 @@ export class ParallAgentGateway {
|
|
|
796
798
|
this.draining = false;
|
|
797
799
|
this.dispatchState.mainDispatching = false;
|
|
798
800
|
this.dispatchState.mainCurrentTargetId = undefined;
|
|
801
|
+
this.dispatchState.mainPreDispatchBranchPoint = undefined;
|
|
799
802
|
}
|
|
800
803
|
}
|
|
801
804
|
|
|
@@ -808,6 +811,11 @@ export class ParallAgentGateway {
|
|
|
808
811
|
const forkPrefix = buildForkResultPrefix(pendingFork);
|
|
809
812
|
this.dispatchState.mainDispatching = true;
|
|
810
813
|
this.dispatchState.mainCurrentTargetId = event.targetId;
|
|
814
|
+
// Snapshot the on-disk branch point BEFORE runDispatch starts writing
|
|
815
|
+
// to the session file. Fork sessions created while main is in-flight
|
|
816
|
+
// use this to branch from the clean pre-dispatch state.
|
|
817
|
+
this.dispatchState.mainPreDispatchBranchPoint =
|
|
818
|
+
this.opts.dispatchAdapter.getBranchPoint?.(this.opts.runtimeKey);
|
|
811
819
|
let dispatched = false;
|
|
812
820
|
try {
|
|
813
821
|
dispatched = await this.runDispatch(event, this.opts.runtimeKey, forkPrefix + buildEventBody(event));
|
|
@@ -850,6 +858,7 @@ export class ParallAgentGateway {
|
|
|
850
858
|
const fork = await this.opts.dispatchAdapter.forkSession({
|
|
851
859
|
sessionKey: this.opts.runtimeKey,
|
|
852
860
|
context: this.buildDispatchContext(event, this.opts.runtimeKey),
|
|
861
|
+
preDispatchBranchPoint: this.dispatchState.mainPreDispatchBranchPoint,
|
|
853
862
|
});
|
|
854
863
|
|
|
855
864
|
if (!fork) {
|
package/src/types.ts
CHANGED
|
@@ -12,6 +12,8 @@ export type DispatchState = {
|
|
|
12
12
|
activeForks: Map<string, string>;
|
|
13
13
|
pendingForkResults: ForkResult[];
|
|
14
14
|
mainBuffer: ParallEvent[];
|
|
15
|
+
/** Snapshot of the session branch point taken BEFORE runDispatch starts on main. */
|
|
16
|
+
mainPreDispatchBranchPoint?: string;
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
/** Normalized inbound event from Parall. */
|