experimental-ash 0.2.0-alpha.20 → 0.2.0-alpha.21
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/src/channel/slack-channel.d.ts +7 -14
- package/dist/src/channel/slack-channel.d.ts.map +1 -1
- package/dist/src/channel/slack-channel.js +11 -21
- package/dist/src/channel/slack-channel.js.map +1 -1
- package/dist/src/channel/types.d.ts +9 -6
- package/dist/src/channel/types.d.ts.map +1 -1
- package/dist/src/channel/types.js.map +1 -1
- package/dist/src/context/accessors.d.ts +13 -12
- package/dist/src/context/accessors.d.ts.map +1 -1
- package/dist/src/context/accessors.js +16 -17
- package/dist/src/context/accessors.js.map +1 -1
- package/dist/src/context/container.d.ts +17 -19
- package/dist/src/context/container.d.ts.map +1 -1
- package/dist/src/context/container.js +21 -14
- package/dist/src/context/container.js.map +1 -1
- package/dist/src/context/durable-context.d.ts +18 -0
- package/dist/src/context/durable-context.d.ts.map +1 -0
- package/dist/src/context/durable-context.js +49 -0
- package/dist/src/context/durable-context.js.map +1 -0
- package/dist/src/context/key.d.ts +34 -82
- package/dist/src/context/key.d.ts.map +1 -1
- package/dist/src/context/key.js +58 -80
- package/dist/src/context/key.js.map +1 -1
- package/dist/src/context/keys.d.ts +6 -6
- package/dist/src/context/keys.d.ts.map +1 -1
- package/dist/src/context/keys.js +8 -6
- package/dist/src/context/keys.js.map +1 -1
- package/dist/src/context/provider.d.ts +2 -2
- package/dist/src/context/provider.d.ts.map +1 -1
- package/dist/src/context/run-step.d.ts +6 -8
- package/dist/src/context/run-step.d.ts.map +1 -1
- package/dist/src/context/run-step.js +13 -17
- package/dist/src/context/run-step.js.map +1 -1
- package/dist/src/context/seed-keys.d.ts +7 -7
- package/dist/src/context/seed-keys.d.ts.map +1 -1
- package/dist/src/context/seed-keys.js +19 -7
- package/dist/src/context/seed-keys.js.map +1 -1
- package/dist/src/context/serialize.d.ts +8 -9
- package/dist/src/context/serialize.d.ts.map +1 -1
- package/dist/src/context/serialize.js +28 -16
- package/dist/src/context/serialize.js.map +1 -1
- package/dist/src/execution/continuous-entry.d.ts +6 -8
- package/dist/src/execution/continuous-entry.d.ts.map +1 -1
- package/dist/src/execution/continuous-entry.js +25 -21
- package/dist/src/execution/continuous-entry.js.map +1 -1
- package/dist/src/execution/continuous-runtime.d.ts.map +1 -1
- package/dist/src/execution/continuous-runtime.js +4 -1
- package/dist/src/execution/continuous-runtime.js.map +1 -1
- package/dist/src/execution/step-context.d.ts +27 -0
- package/dist/src/execution/step-context.d.ts.map +1 -0
- package/dist/src/execution/step-context.js +54 -0
- package/dist/src/execution/step-context.js.map +1 -0
- package/dist/src/execution/tool-compaction.d.ts +1 -3
- package/dist/src/execution/tool-compaction.d.ts.map +1 -1
- package/dist/src/execution/tool-compaction.js +6 -17
- package/dist/src/execution/tool-compaction.js.map +1 -1
- package/dist/src/execution/workflow-entry.d.ts +4 -5
- package/dist/src/execution/workflow-entry.d.ts.map +1 -1
- package/dist/src/execution/workflow-entry.js.map +1 -1
- package/dist/src/execution/workflow-runtime.d.ts.map +1 -1
- package/dist/src/execution/workflow-runtime.js +3 -2
- package/dist/src/execution/workflow-runtime.js.map +1 -1
- package/dist/src/execution/workflow-steps.d.ts +2 -2
- package/dist/src/execution/workflow-steps.d.ts.map +1 -1
- package/dist/src/execution/workflow-steps.js +12 -20
- package/dist/src/execution/workflow-steps.js.map +1 -1
- package/dist/src/harness/emission.d.ts +1 -1
- package/dist/src/harness/emission.js +3 -3
- package/dist/src/harness/emission.js.map +1 -1
- package/dist/src/harness/input-requests.d.ts +22 -1
- package/dist/src/harness/input-requests.d.ts.map +1 -1
- package/dist/src/harness/input-requests.js +36 -32
- package/dist/src/harness/input-requests.js.map +1 -1
- package/dist/src/harness/types.d.ts +15 -3
- package/dist/src/harness/types.d.ts.map +1 -1
- package/dist/src/harness/types.js +6 -1
- package/dist/src/harness/types.js.map +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/nitro/routes/runtime-stack.d.ts +3 -3
- package/dist/src/internal/nitro/routes/runtime-stack.js +3 -3
- package/dist/src/public/channels/slack/index.d.ts +5 -0
- package/dist/src/public/channels/slack/index.d.ts.map +1 -1
- package/dist/src/public/channels/slack/index.js.map +1 -1
- package/dist/src/public/definitions/tool.d.ts +3 -4
- package/dist/src/public/definitions/tool.d.ts.map +1 -1
- package/dist/src/public/definitions/tool.js.map +1 -1
- package/dist/src/public/index.d.ts +1 -1
- package/dist/src/public/index.d.ts.map +1 -1
- package/dist/src/public/index.js +1 -1
- package/dist/src/public/index.js.map +1 -1
- package/dist/src/public/tools/defaults.d.ts +4 -4
- package/dist/src/public/tools/defaults.js +4 -4
- package/dist/src/runtime/framework-tools/connection-search.d.ts +2 -2
- package/dist/src/runtime/framework-tools/connection-search.d.ts.map +1 -1
- package/dist/src/runtime/framework-tools/connection-search.js +2 -2
- package/dist/src/runtime/framework-tools/connection-search.js.map +1 -1
- package/dist/src/runtime/framework-tools/file-state.d.ts +5 -5
- package/dist/src/runtime/framework-tools/file-state.d.ts.map +1 -1
- package/dist/src/runtime/framework-tools/file-state.js +6 -8
- package/dist/src/runtime/framework-tools/file-state.js.map +1 -1
- package/dist/src/runtime/framework-tools/skill.d.ts.map +1 -1
- package/dist/src/runtime/framework-tools/skill.js +1 -3
- package/dist/src/runtime/framework-tools/skill.js.map +1 -1
- package/dist/src/runtime/framework-tools/todo.d.ts.map +1 -1
- package/dist/src/runtime/framework-tools/todo.js +2 -4
- package/dist/src/runtime/framework-tools/todo.js.map +1 -1
- package/dist/src/runtime/sessions/auth.d.ts +1 -1
- package/docs/internals/context.md +81 -231
- package/docs/public/README.md +19 -17
- package/docs/public/channels/README.md +4 -0
- package/docs/public/migration-guide.md +71 -0
- package/docs/public/session-context.md +46 -17
- package/docs/public/tools.md +18 -27
- package/docs/public/typescript-api.md +5 -1
- package/package.json +1 -1
- package/dist/src/context/state.d.ts +0 -27
- package/dist/src/context/state.d.ts.map +0 -1
- package/dist/src/context/state.js +0 -53
- package/dist/src/context/state.js.map +0 -1
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { type AshContext } from "./container.js";
|
|
2
2
|
/**
|
|
3
|
-
* Serializes
|
|
4
|
-
*
|
|
5
|
-
* Keys with a codec are run through `codec.serialize`; keys without one
|
|
6
|
-
* are stored as-is (they must already be JSON-safe).
|
|
3
|
+
* Serializes all runtime seed values that must cross durable workflow
|
|
4
|
+
* boundaries.
|
|
7
5
|
*/
|
|
8
|
-
export declare function
|
|
6
|
+
export declare function serializeRuntimeContext(ctx: AshContext): Record<string, unknown>;
|
|
9
7
|
/**
|
|
10
|
-
* Deserializes
|
|
8
|
+
* Deserializes runtime seed values into a fresh context container.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* `ash.bundle` must be restored before keys whose codecs depend on the
|
|
11
|
+
* compiled runtime bundle, such as `ash.channel`.
|
|
14
12
|
*/
|
|
15
|
-
export declare function
|
|
13
|
+
export declare function deserializeRuntimeContext(data: Record<string, unknown>): Promise<AshContext>;
|
|
14
|
+
export declare function assertNoDurableContextInRuntimeSeed(ctx: AshContext): void;
|
|
16
15
|
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/context/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/context/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAQjE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBhF;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAED,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAQzE"}
|
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
import { AshContextImpl } from "./container.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getSerializableRuntimeContextKeys, isRuntimeContextKey, resolveRuntimeContextKey, } from "./key.js";
|
|
3
3
|
import { BundleKey } from "./keys.js";
|
|
4
4
|
/**
|
|
5
|
-
* Serializes
|
|
6
|
-
*
|
|
7
|
-
* Keys with a codec are run through `codec.serialize`; keys without one
|
|
8
|
-
* are stored as-is (they must already be JSON-safe).
|
|
5
|
+
* Serializes all runtime seed values that must cross durable workflow
|
|
6
|
+
* boundaries.
|
|
9
7
|
*/
|
|
10
|
-
export function
|
|
8
|
+
export function serializeRuntimeContext(ctx) {
|
|
11
9
|
const data = {};
|
|
12
|
-
for (const
|
|
10
|
+
for (const key of getSerializableRuntimeContextKeys()) {
|
|
11
|
+
if (!ctx.has(key)) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const value = ctx.get(key);
|
|
15
|
+
if (value === undefined) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
13
18
|
data[key.name] = key.codec ? key.codec.serialize(value) : value;
|
|
14
19
|
}
|
|
15
20
|
return data;
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
|
-
* Deserializes
|
|
23
|
+
* Deserializes runtime seed values into a fresh context container.
|
|
19
24
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
25
|
+
* `ash.bundle` must be restored before keys whose codecs depend on the
|
|
26
|
+
* compiled runtime bundle, such as `ash.channel`.
|
|
22
27
|
*/
|
|
23
|
-
export async function
|
|
28
|
+
export async function deserializeRuntimeContext(data) {
|
|
24
29
|
const ctx = new AshContextImpl();
|
|
25
30
|
const serializedBundle = data[BundleKey.name];
|
|
26
31
|
if (serializedBundle !== undefined) {
|
|
@@ -31,15 +36,22 @@ export async function deserializeContext(data) {
|
|
|
31
36
|
ctx.set(BundleKey, await codec.deserialize(serializedBundle, ctx));
|
|
32
37
|
}
|
|
33
38
|
for (const [name, raw] of Object.entries(data)) {
|
|
34
|
-
if (raw === undefined)
|
|
39
|
+
if (raw === undefined || name === BundleKey.name) {
|
|
35
40
|
continue;
|
|
36
|
-
|
|
41
|
+
}
|
|
42
|
+
const key = resolveRuntimeContextKey(name);
|
|
43
|
+
if (key === undefined) {
|
|
37
44
|
continue;
|
|
38
|
-
const key = resolveKey(name);
|
|
39
|
-
if (key !== undefined) {
|
|
40
|
-
ctx.set(key, key.codec ? await key.codec.deserialize(raw, ctx) : raw);
|
|
41
45
|
}
|
|
46
|
+
ctx.set(key, key.codec ? await key.codec.deserialize(raw, ctx) : raw);
|
|
42
47
|
}
|
|
43
48
|
return ctx;
|
|
44
49
|
}
|
|
50
|
+
export function assertNoDurableContextInRuntimeSeed(ctx) {
|
|
51
|
+
for (const [key] of ctx.entries()) {
|
|
52
|
+
if (!isRuntimeContextKey(key)) {
|
|
53
|
+
throw new Error(`Durable context key "${key.name}" leaked into runtime seed serialization. Durable context must live on session.context, not the serialized runtime seed.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
45
57
|
//# sourceMappingURL=serialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/context/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/context/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACL,iCAAiC,EACjC,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAe;IACrD,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,iCAAiC,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,GAAe;IACjE,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,IAAI,0HAA0H,CAC3J,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { DeliverPayload, SessionAuthContext } from "../channel/types.js";
|
|
2
|
-
import type
|
|
3
|
-
import type { HarnessEmitFn } from "../harness/types.js";
|
|
2
|
+
import { type HarnessEmitFn } from "../harness/types.js";
|
|
4
3
|
import { type CreateRuntime } from "./node-step.js";
|
|
5
4
|
/**
|
|
6
5
|
* One item in the continuous runtime's in-memory delivery queue.
|
|
@@ -16,11 +15,10 @@ export interface QueueItem {
|
|
|
16
15
|
* Input for the continuous (non-durable) entry.
|
|
17
16
|
*
|
|
18
17
|
* The caller — the continuous runtime — provides the durability shell:
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* runtime flavor.
|
|
18
|
+
* one serialized runtime seed context, a composed `emit` function backed by
|
|
19
|
+
* the event stream, the initial user message, the inbound message queue, a
|
|
20
|
+
* `park` function, and a `createRuntime` factory so the subagent tool wrapper
|
|
21
|
+
* can start delegated child runs on the same runtime flavor.
|
|
24
22
|
*
|
|
25
23
|
* Everything else (session construction, node step wiring, provider
|
|
26
24
|
* lifecycle, the turn loop) is owned by this module, mirroring how
|
|
@@ -29,13 +27,13 @@ export interface QueueItem {
|
|
|
29
27
|
*/
|
|
30
28
|
export interface ContinuousEntryInput {
|
|
31
29
|
readonly createRuntime: CreateRuntime;
|
|
32
|
-
readonly ctx: AshContext;
|
|
33
30
|
readonly emit: HarnessEmitFn;
|
|
34
31
|
readonly input: {
|
|
35
32
|
readonly message: string;
|
|
36
33
|
};
|
|
37
34
|
readonly park: () => Promise<void>;
|
|
38
35
|
readonly queue: QueueItem[];
|
|
36
|
+
readonly serializedRuntimeContext: Record<string, unknown>;
|
|
39
37
|
}
|
|
40
38
|
/**
|
|
41
39
|
* Result returned when the continuous entry completes. The continuous
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuous-entry.d.ts","sourceRoot":"","sources":["../../../src/execution/continuous-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"continuous-entry.d.ts","sourceRoot":"","sources":["../../../src/execution/continuous-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9E,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,gBAAgB,CAAC;AAS7E;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5D;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwFjG"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { BundleKey, ContinuationTokenKey, ModeKey, SessionIdKey } from "../context/keys.js";
|
|
2
|
+
import { deserializeRuntimeContext } from "../context/serialize.js";
|
|
3
3
|
import { coalesceTurnInputs } from "../harness/messages.js";
|
|
4
|
+
import { isStepDone, } from "../harness/types.js";
|
|
4
5
|
import { createExecutionNodeStep } from "./node-step.js";
|
|
5
6
|
import { createSession } from "./session.js";
|
|
7
|
+
import { prepareStepContext, runStepWithChannelGuard } from "./step-context.js";
|
|
6
8
|
import { createTaskModeWaitError } from "./task-mode.js";
|
|
7
9
|
/**
|
|
8
10
|
* Main body of a continuous (in-memory) run.
|
|
@@ -14,18 +16,18 @@ import { createTaskModeWaitError } from "./task-mode.js";
|
|
|
14
16
|
* on the queue and coalesce follow-up messages before the next turn.
|
|
15
17
|
*/
|
|
16
18
|
export async function continuousEntry(input) {
|
|
17
|
-
const { createRuntime,
|
|
18
|
-
const
|
|
19
|
-
const
|
|
19
|
+
const { createRuntime, emit, input: entryInput, park, queue, serializedRuntimeContext } = input;
|
|
20
|
+
const seedCtx = await deserializeRuntimeContext(serializedRuntimeContext);
|
|
21
|
+
const bundle = seedCtx.get(BundleKey);
|
|
22
|
+
const mode = seedCtx.get(ModeKey);
|
|
20
23
|
const session = createSession({
|
|
21
24
|
compactionOverrides: {
|
|
22
25
|
thresholdPercent: bundle.resolvedAgent.config.compaction?.thresholdPercent,
|
|
23
26
|
},
|
|
24
|
-
continuationToken:
|
|
25
|
-
sessionId:
|
|
27
|
+
continuationToken: seedCtx.get(ContinuationTokenKey),
|
|
28
|
+
sessionId: seedCtx.get(SessionIdKey),
|
|
26
29
|
turnAgent: bundle.turnAgent,
|
|
27
30
|
});
|
|
28
|
-
const channel = ctx.get(ChannelKey);
|
|
29
31
|
const rawStep = createExecutionNodeStep({
|
|
30
32
|
compiledArtifactsSource: bundle.compiledArtifactsSource,
|
|
31
33
|
createRuntime,
|
|
@@ -34,20 +36,18 @@ export async function continuousEntry(input) {
|
|
|
34
36
|
node: bundle.graph.root,
|
|
35
37
|
});
|
|
36
38
|
/**
|
|
37
|
-
* Wraps
|
|
39
|
+
* Wraps a raw step with context provider lifecycle. When a
|
|
38
40
|
* {@link QueueItem} carries deliver-time auth, it is applied to the
|
|
39
41
|
* in-memory context before the channel's onDeliver hook runs.
|
|
40
|
-
* onDeliver sets custom context and transforms the payload.
|
|
41
42
|
*/
|
|
42
43
|
const deliverStep = (item) => {
|
|
43
|
-
return async (stepSession
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return await runStep(ctx, stepSession, (enrichedSession) => {
|
|
49
|
-
return rawStep(enrichedSession, resolved);
|
|
44
|
+
return async (stepSession) => {
|
|
45
|
+
const prepared = await prepareStepContext({
|
|
46
|
+
delivery: item,
|
|
47
|
+
serializedRuntimeContext,
|
|
48
|
+
session: stepSession,
|
|
50
49
|
});
|
|
50
|
+
return runStepWithChannelGuard(prepared, stepSession, (enrichedSession) => rawStep(enrichedSession, prepared.input));
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
@@ -55,16 +55,20 @@ export async function continuousEntry(input) {
|
|
|
55
55
|
* function (tool-loop continuation). No deliver payload.
|
|
56
56
|
*/
|
|
57
57
|
const wrapContinuation = (innerStep) => {
|
|
58
|
-
return async (stepSession, stepInput) =>
|
|
58
|
+
return async (stepSession, stepInput) => {
|
|
59
|
+
const prepared = await prepareStepContext({
|
|
60
|
+
serializedRuntimeContext,
|
|
61
|
+
session: stepSession,
|
|
62
|
+
});
|
|
63
|
+
return runStepWithChannelGuard(prepared, stepSession, (enrichedSession) => innerStep(enrichedSession, stepInput));
|
|
64
|
+
};
|
|
59
65
|
};
|
|
60
66
|
let currentStep = deliverStep({ payload: { message: entryInput.message } });
|
|
61
67
|
let currentSession = session;
|
|
62
68
|
while (true) {
|
|
63
69
|
const stepResult = await currentStep(currentSession, undefined);
|
|
64
70
|
currentSession = stepResult.session;
|
|
65
|
-
if (stepResult.next
|
|
66
|
-
typeof stepResult.next === "object" &&
|
|
67
|
-
"done" in stepResult.next) {
|
|
71
|
+
if (isStepDone(stepResult.next)) {
|
|
68
72
|
return { output: stepResult.next.output, status: "completed" };
|
|
69
73
|
}
|
|
70
74
|
if (stepResult.next === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuous-entry.js","sourceRoot":"","sources":["../../../src/execution/continuous-entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"continuous-entry.js","sourceRoot":"","sources":["../../../src/execution/continuous-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuous-runtime.d.ts","sourceRoot":"","sources":["../../../src/execution/continuous-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,OAAO,EACR,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"continuous-runtime.d.ts","sourceRoot":"","sources":["../../../src/execution/continuous-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,OAAO,EACR,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAK9F;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,OAAO,CAiGV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertNoDurableContextInRuntimeSeed, serializeRuntimeContext, } from "../context/serialize.js";
|
|
1
2
|
import { getCompiledRuntimeAgentBundle } from "../runtime/sessions/compiled-agent-cache.js";
|
|
2
3
|
import { continuousEntry } from "./continuous-entry.js";
|
|
3
4
|
import { buildRunContext } from "./runtime-context.js";
|
|
@@ -26,6 +27,8 @@ export function createContinuousLoopRuntime(config) {
|
|
|
26
27
|
nodeSelector: config.nodeSelector,
|
|
27
28
|
});
|
|
28
29
|
const ctx = buildRunContext({ bundle, run: input });
|
|
30
|
+
assertNoDurableContextInRuntimeSeed(ctx);
|
|
31
|
+
const serializedRuntimeContext = serializeRuntimeContext(ctx);
|
|
29
32
|
const eventStream = new TransformStream(undefined, undefined, new CountQueuingStrategy({ highWaterMark: 1024 }));
|
|
30
33
|
const queue = [];
|
|
31
34
|
queues.set(input.continuationToken, queue);
|
|
@@ -38,13 +41,13 @@ export function createContinuousLoopRuntime(config) {
|
|
|
38
41
|
try {
|
|
39
42
|
const entryResult = await continuousEntry({
|
|
40
43
|
createRuntime: createContinuousLoopRuntime,
|
|
41
|
-
ctx,
|
|
42
44
|
emit,
|
|
43
45
|
input: input.input,
|
|
44
46
|
park: () => new Promise((resolve) => {
|
|
45
47
|
parked.set(input.continuationToken, resolve);
|
|
46
48
|
}),
|
|
47
49
|
queue,
|
|
50
|
+
serializedRuntimeContext,
|
|
48
51
|
});
|
|
49
52
|
await writer.close();
|
|
50
53
|
queues.delete(input.continuationToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuous-runtime.js","sourceRoot":"","sources":["../../../src/execution/continuous-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"continuous-runtime.js","sourceRoot":"","sources":["../../../src/execution/continuous-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Channel, DeliverPayload, SessionAuthContext } from "../channel/types.js";
|
|
2
|
+
import type { AshContext } from "../context/container.js";
|
|
3
|
+
import type { HarnessSession, StepInput, StepResult } from "../harness/types.js";
|
|
4
|
+
export interface StepDeliveryInput {
|
|
5
|
+
readonly auth?: SessionAuthContext | null;
|
|
6
|
+
readonly payload: DeliverPayload;
|
|
7
|
+
}
|
|
8
|
+
export interface PreparedStepContext {
|
|
9
|
+
readonly channel: Channel;
|
|
10
|
+
readonly channelStateSnapshot: Record<string, unknown>;
|
|
11
|
+
readonly ctx: AshContext;
|
|
12
|
+
readonly input: StepInput | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare function prepareStepContext(input: {
|
|
15
|
+
readonly delivery?: StepDeliveryInput;
|
|
16
|
+
readonly serializedRuntimeContext: Record<string, unknown>;
|
|
17
|
+
readonly session: HarnessSession;
|
|
18
|
+
}): Promise<PreparedStepContext>;
|
|
19
|
+
/**
|
|
20
|
+
* Runs one step inside the provider lifecycle and asserts that the
|
|
21
|
+
* channel's serialized state was not mutated during execution.
|
|
22
|
+
*
|
|
23
|
+
* Combines {@link runStep} with a post-step channel stability check so
|
|
24
|
+
* callers do not need to repeat the three-call sequence themselves.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runStepWithChannelGuard(prepared: PreparedStepContext, session: HarnessSession, callback: (session: HarnessSession) => Promise<StepResult>): Promise<StepResult>;
|
|
27
|
+
//# sourceMappingURL=step-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-context.d.ts","sourceRoot":"","sources":["../../../src/execution/step-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0B/B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,CAQrB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
import { hydrateDurableContext } from "../context/durable-context.js";
|
|
3
|
+
import { AuthKey, ChannelKey } from "../context/keys.js";
|
|
4
|
+
import { runStep } from "../context/run-step.js";
|
|
5
|
+
import { deserializeRuntimeContext } from "../context/serialize.js";
|
|
6
|
+
import { seedPendingInputRequestsContext } from "../harness/input-requests.js";
|
|
7
|
+
export async function prepareStepContext(input) {
|
|
8
|
+
const ctx = await deserializeRuntimeContext(input.serializedRuntimeContext);
|
|
9
|
+
await hydrateDurableContext(ctx, input.session);
|
|
10
|
+
seedPendingInputRequestsContext(ctx, input.session);
|
|
11
|
+
if (input.delivery?.auth !== undefined) {
|
|
12
|
+
ctx.set(AuthKey, input.delivery.auth ?? null);
|
|
13
|
+
}
|
|
14
|
+
const channel = ctx.get(ChannelKey);
|
|
15
|
+
const channelStateSnapshot = channel.serialize();
|
|
16
|
+
const resolved = input.delivery !== undefined ? await channel.onDeliver(ctx, input.delivery.payload) : undefined;
|
|
17
|
+
assertChannelStateIsStable({
|
|
18
|
+
channel,
|
|
19
|
+
phase: "onDeliver",
|
|
20
|
+
serializedState: channelStateSnapshot,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
channel,
|
|
24
|
+
channelStateSnapshot,
|
|
25
|
+
ctx,
|
|
26
|
+
input: resolved,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Runs one step inside the provider lifecycle and asserts that the
|
|
31
|
+
* channel's serialized state was not mutated during execution.
|
|
32
|
+
*
|
|
33
|
+
* Combines {@link runStep} with a post-step channel stability check so
|
|
34
|
+
* callers do not need to repeat the three-call sequence themselves.
|
|
35
|
+
*/
|
|
36
|
+
export async function runStepWithChannelGuard(prepared, session, callback) {
|
|
37
|
+
const stepResult = await runStep(prepared.ctx, session, callback);
|
|
38
|
+
assertChannelStateIsStable({
|
|
39
|
+
channel: prepared.channel,
|
|
40
|
+
phase: "step execution",
|
|
41
|
+
serializedState: prepared.channelStateSnapshot,
|
|
42
|
+
});
|
|
43
|
+
return stepResult;
|
|
44
|
+
}
|
|
45
|
+
function assertChannelStateIsStable(input) {
|
|
46
|
+
const currentState = input.channel.serialize();
|
|
47
|
+
if (isDeepStrictEqual(currentState, input.serializedState)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Channel "${input.channel.kind}" mutated its serialized state during ${input.phase}. ` +
|
|
51
|
+
"Channel constructor state must stay immutable after the run starts. " +
|
|
52
|
+
"Move per-session mutable data into durable context or session.internal instead.");
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=step-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-context.js","sourceRoot":"","sources":["../../../src/execution/step-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAe/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAIxC;IACC,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5E,MAAM,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,+BAA+B,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpD,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACjD,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElG,0BAA0B,CAAC;QACzB,OAAO;QACP,KAAK,EAAE,WAAW;QAClB,eAAe,EAAE,oBAAoB;KACtC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,oBAAoB;QACpB,GAAG;QACH,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAA6B,EAC7B,OAAuB,EACvB,QAA0D;IAE1D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClE,0BAA0B,CAAC;QACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,gBAAgB;QACvB,eAAe,EAAE,QAAQ,CAAC,oBAAoB;KAC/C,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CAAC,KAInC;IACC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/C,IAAI,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CACb,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,yCAAyC,KAAK,CAAC,KAAK,IAAI;QACpF,sEAAsE;QACtE,iFAAiF,CACpF,CAAC;AACJ,CAAC"}
|
|
@@ -9,9 +9,7 @@ import type { ResolvedToolDefinition } from "../runtime/types.js";
|
|
|
9
9
|
* {@link CompactionCallbackResult}:
|
|
10
10
|
*
|
|
11
11
|
* - `messages` from each hook are concatenated in order.
|
|
12
|
-
* -
|
|
13
|
-
* later tools overwrite earlier on key collision.
|
|
14
|
-
* - Hooks may also mutate context directly via the {@link AshContext}
|
|
12
|
+
* - Hooks may mutate durable context directly via the {@link AshContext}
|
|
15
13
|
* handle they receive; later hooks observe the mutation.
|
|
16
14
|
* - A hook returning `void` is treated as a no-op.
|
|
17
15
|
* - Hooks are isolated: if one throws, the dispatcher logs the error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-compaction.d.ts","sourceRoot":"","sources":["../../../src/execution/tool-compaction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-compaction.d.ts","sourceRoot":"","sources":["../../../src/execution/tool-compaction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAIlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GACvC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAsChE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { requireContext } from "../context/container.js";
|
|
2
|
+
const NEVER_ABORT_SIGNAL = new AbortController().signal;
|
|
2
3
|
/**
|
|
3
4
|
* Builds the harness compaction callback for a list of resolved tools.
|
|
4
5
|
*
|
|
@@ -8,9 +9,7 @@ import { requireContext } from "../context/container.js";
|
|
|
8
9
|
* {@link CompactionCallbackResult}:
|
|
9
10
|
*
|
|
10
11
|
* - `messages` from each hook are concatenated in order.
|
|
11
|
-
* -
|
|
12
|
-
* later tools overwrite earlier on key collision.
|
|
13
|
-
* - Hooks may also mutate context directly via the {@link AshContext}
|
|
12
|
+
* - Hooks may mutate durable context directly via the {@link AshContext}
|
|
14
13
|
* handle they receive; later hooks observe the mutation.
|
|
15
14
|
* - A hook returning `void` is treated as a no-op.
|
|
16
15
|
* - Hooks are isolated: if one throws, the dispatcher logs the error
|
|
@@ -32,35 +31,25 @@ export function createToolCompactionHandler(tools) {
|
|
|
32
31
|
// v1 has no real cancellation plumbing through the harness yet — pass
|
|
33
32
|
// a never-aborting signal so hooks can adopt the parameter without a
|
|
34
33
|
// breaking change later when a real signal is threaded through.
|
|
35
|
-
const signal =
|
|
34
|
+
const signal = NEVER_ABORT_SIGNAL;
|
|
36
35
|
const messages = [];
|
|
37
|
-
let state = session.state ?? {};
|
|
38
|
-
let mutated = false;
|
|
39
36
|
for (const tool of participants) {
|
|
40
|
-
const hook = tool.onCompact;
|
|
41
|
-
if (hook === undefined)
|
|
42
|
-
continue;
|
|
43
37
|
let result;
|
|
44
38
|
try {
|
|
45
|
-
|
|
39
|
+
// biome-ignore lint/style/noNonNullAssertion: participants filtered to only include tools with onCompact
|
|
40
|
+
result = (await tool.onCompact({ ctx, session, signal })) ?? {};
|
|
46
41
|
}
|
|
47
42
|
catch (error) {
|
|
48
43
|
console.warn(`[ash] Compaction hook for tool "${tool.name}" threw and was skipped:`, error);
|
|
49
44
|
continue;
|
|
50
45
|
}
|
|
51
|
-
if (result === undefined)
|
|
52
|
-
continue;
|
|
53
46
|
if (result.messages !== undefined && result.messages.length > 0) {
|
|
54
47
|
messages.push(...result.messages);
|
|
55
48
|
}
|
|
56
|
-
if (result.sessionPatch !== undefined) {
|
|
57
|
-
state = { ...state, ...result.sessionPatch };
|
|
58
|
-
mutated = true;
|
|
59
|
-
}
|
|
60
49
|
}
|
|
61
50
|
return {
|
|
62
51
|
messages,
|
|
63
|
-
session
|
|
52
|
+
session,
|
|
64
53
|
};
|
|
65
54
|
};
|
|
66
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-compaction.js","sourceRoot":"","sources":["../../../src/execution/tool-compaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD
|
|
1
|
+
{"version":3,"file":"tool-compaction.js","sourceRoot":"","sources":["../../../src/execution/tool-compaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;AAExD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAwC;IAExC,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,sEAAsE;QACtE,qEAAqE;QACrE,gEAAgE;QAChE,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAElC,MAAM,QAAQ,GAAmB,EAAE,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,MAA6E,CAAC;YAClF,IAAI,CAAC;gBACH,yGAAyG;gBACzG,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,0BAA0B,EAAE,KAAK,CAAC,CAAC;gBAC5F,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Serializable input for the workflow entrypoint.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* by `
|
|
6
|
-
* each `"use step"` boundary.
|
|
7
|
-
*
|
|
8
|
-
* the serialized record.
|
|
4
|
+
* Runtime seed keys are carried inside `serializedContext`, which is produced
|
|
5
|
+
* by `serializeRuntimeContext(ctx)` in the workflow runtime and deserialized
|
|
6
|
+
* at each `"use step"` boundary. Durable authored context is stored
|
|
7
|
+
* separately on `session.context` and rehydrated before each step.
|
|
9
8
|
*/
|
|
10
9
|
export interface WorkflowEntryInput {
|
|
11
10
|
readonly input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-entry.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-entry.ts"],"names":[],"mappings":"AAWA
|
|
1
|
+
{"version":3,"file":"workflow-entry.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-entry.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsF3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-entry.js","sourceRoot":"","sources":["../../../src/execution/workflow-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-entry.js","sourceRoot":"","sources":["../../../src/execution/workflow-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-runtime.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,OAAO,EACR,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-runtime.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,OAAO,EACR,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAQ9F;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,OAAO,CA8CV"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getRun, resumeHook, start } from "workflow/api";
|
|
2
|
-
import {
|
|
2
|
+
import { assertNoDurableContextInRuntimeSeed, serializeRuntimeContext, } from "../context/serialize.js";
|
|
3
3
|
import { resolveInstalledPackageInfo } from "../internal/application/package.js";
|
|
4
4
|
import { getCompiledRuntimeAgentBundle } from "../runtime/sessions/compiled-agent-cache.js";
|
|
5
5
|
import { buildRunContext } from "./runtime-context.js";
|
|
@@ -34,7 +34,8 @@ export function createWorkflowRuntime(config) {
|
|
|
34
34
|
nodeSelector: config.nodeSelector,
|
|
35
35
|
});
|
|
36
36
|
const ctx = buildRunContext({ bundle, run: input });
|
|
37
|
-
|
|
37
|
+
assertNoDurableContextInRuntimeSeed(ctx);
|
|
38
|
+
const serializedContext = serializeRuntimeContext(ctx);
|
|
38
39
|
const run = await start(workflowEntryReference, [
|
|
39
40
|
{
|
|
40
41
|
input: input.input,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-runtime.js","sourceRoot":"","sources":["../../../src/execution/workflow-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAUzD,OAAO,
|
|
1
|
+
{"version":3,"file":"workflow-runtime.js","sourceRoot":"","sources":["../../../src/execution/workflow-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HookPayload } from "../channel/types.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type HarnessSession } from "../harness/types.js";
|
|
3
3
|
import type { RuntimeCompiledArtifactsSource } from "../runtime/compiled-artifacts-source.js";
|
|
4
4
|
import type { DurableStepResult } from "./types.js";
|
|
5
5
|
/**
|
|
@@ -17,7 +17,7 @@ import type { DurableStepResult } from "./types.js";
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function durableRunStep(serializedContext: Record<string, unknown>, session: HarnessSession, input: HookPayload | undefined): Promise<DurableStepResult>;
|
|
19
19
|
/**
|
|
20
|
-
* Creates the durable session
|
|
20
|
+
* Creates the durable harness session inside a step boundary before the
|
|
21
21
|
* workflow enters its long-lived turn loop.
|
|
22
22
|
*
|
|
23
23
|
* The optional `nodeSelector` targets a specific node in the compiled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-steps.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-steps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-steps.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow-steps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAK9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,WAAW,GAAG,SAAS,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAkD5B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;IACjE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,cAAc,CAAC,CAgB1B"}
|