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.
Files changed (119) hide show
  1. package/dist/src/channel/slack-channel.d.ts +7 -14
  2. package/dist/src/channel/slack-channel.d.ts.map +1 -1
  3. package/dist/src/channel/slack-channel.js +11 -21
  4. package/dist/src/channel/slack-channel.js.map +1 -1
  5. package/dist/src/channel/types.d.ts +9 -6
  6. package/dist/src/channel/types.d.ts.map +1 -1
  7. package/dist/src/channel/types.js.map +1 -1
  8. package/dist/src/context/accessors.d.ts +13 -12
  9. package/dist/src/context/accessors.d.ts.map +1 -1
  10. package/dist/src/context/accessors.js +16 -17
  11. package/dist/src/context/accessors.js.map +1 -1
  12. package/dist/src/context/container.d.ts +17 -19
  13. package/dist/src/context/container.d.ts.map +1 -1
  14. package/dist/src/context/container.js +21 -14
  15. package/dist/src/context/container.js.map +1 -1
  16. package/dist/src/context/durable-context.d.ts +18 -0
  17. package/dist/src/context/durable-context.d.ts.map +1 -0
  18. package/dist/src/context/durable-context.js +49 -0
  19. package/dist/src/context/durable-context.js.map +1 -0
  20. package/dist/src/context/key.d.ts +34 -82
  21. package/dist/src/context/key.d.ts.map +1 -1
  22. package/dist/src/context/key.js +58 -80
  23. package/dist/src/context/key.js.map +1 -1
  24. package/dist/src/context/keys.d.ts +6 -6
  25. package/dist/src/context/keys.d.ts.map +1 -1
  26. package/dist/src/context/keys.js +8 -6
  27. package/dist/src/context/keys.js.map +1 -1
  28. package/dist/src/context/provider.d.ts +2 -2
  29. package/dist/src/context/provider.d.ts.map +1 -1
  30. package/dist/src/context/run-step.d.ts +6 -8
  31. package/dist/src/context/run-step.d.ts.map +1 -1
  32. package/dist/src/context/run-step.js +13 -17
  33. package/dist/src/context/run-step.js.map +1 -1
  34. package/dist/src/context/seed-keys.d.ts +7 -7
  35. package/dist/src/context/seed-keys.d.ts.map +1 -1
  36. package/dist/src/context/seed-keys.js +19 -7
  37. package/dist/src/context/seed-keys.js.map +1 -1
  38. package/dist/src/context/serialize.d.ts +8 -9
  39. package/dist/src/context/serialize.d.ts.map +1 -1
  40. package/dist/src/context/serialize.js +28 -16
  41. package/dist/src/context/serialize.js.map +1 -1
  42. package/dist/src/execution/continuous-entry.d.ts +6 -8
  43. package/dist/src/execution/continuous-entry.d.ts.map +1 -1
  44. package/dist/src/execution/continuous-entry.js +25 -21
  45. package/dist/src/execution/continuous-entry.js.map +1 -1
  46. package/dist/src/execution/continuous-runtime.d.ts.map +1 -1
  47. package/dist/src/execution/continuous-runtime.js +4 -1
  48. package/dist/src/execution/continuous-runtime.js.map +1 -1
  49. package/dist/src/execution/step-context.d.ts +27 -0
  50. package/dist/src/execution/step-context.d.ts.map +1 -0
  51. package/dist/src/execution/step-context.js +54 -0
  52. package/dist/src/execution/step-context.js.map +1 -0
  53. package/dist/src/execution/tool-compaction.d.ts +1 -3
  54. package/dist/src/execution/tool-compaction.d.ts.map +1 -1
  55. package/dist/src/execution/tool-compaction.js +6 -17
  56. package/dist/src/execution/tool-compaction.js.map +1 -1
  57. package/dist/src/execution/workflow-entry.d.ts +4 -5
  58. package/dist/src/execution/workflow-entry.d.ts.map +1 -1
  59. package/dist/src/execution/workflow-entry.js.map +1 -1
  60. package/dist/src/execution/workflow-runtime.d.ts.map +1 -1
  61. package/dist/src/execution/workflow-runtime.js +3 -2
  62. package/dist/src/execution/workflow-runtime.js.map +1 -1
  63. package/dist/src/execution/workflow-steps.d.ts +2 -2
  64. package/dist/src/execution/workflow-steps.d.ts.map +1 -1
  65. package/dist/src/execution/workflow-steps.js +12 -20
  66. package/dist/src/execution/workflow-steps.js.map +1 -1
  67. package/dist/src/harness/emission.d.ts +1 -1
  68. package/dist/src/harness/emission.js +3 -3
  69. package/dist/src/harness/emission.js.map +1 -1
  70. package/dist/src/harness/input-requests.d.ts +22 -1
  71. package/dist/src/harness/input-requests.d.ts.map +1 -1
  72. package/dist/src/harness/input-requests.js +36 -32
  73. package/dist/src/harness/input-requests.js.map +1 -1
  74. package/dist/src/harness/types.d.ts +15 -3
  75. package/dist/src/harness/types.d.ts.map +1 -1
  76. package/dist/src/harness/types.js +6 -1
  77. package/dist/src/harness/types.js.map +1 -1
  78. package/dist/src/internal/application/package.js +1 -1
  79. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +3 -3
  80. package/dist/src/internal/nitro/routes/runtime-stack.js +3 -3
  81. package/dist/src/public/channels/slack/index.d.ts +5 -0
  82. package/dist/src/public/channels/slack/index.d.ts.map +1 -1
  83. package/dist/src/public/channels/slack/index.js.map +1 -1
  84. package/dist/src/public/definitions/tool.d.ts +3 -4
  85. package/dist/src/public/definitions/tool.d.ts.map +1 -1
  86. package/dist/src/public/definitions/tool.js.map +1 -1
  87. package/dist/src/public/index.d.ts +1 -1
  88. package/dist/src/public/index.d.ts.map +1 -1
  89. package/dist/src/public/index.js +1 -1
  90. package/dist/src/public/index.js.map +1 -1
  91. package/dist/src/public/tools/defaults.d.ts +4 -4
  92. package/dist/src/public/tools/defaults.js +4 -4
  93. package/dist/src/runtime/framework-tools/connection-search.d.ts +2 -2
  94. package/dist/src/runtime/framework-tools/connection-search.d.ts.map +1 -1
  95. package/dist/src/runtime/framework-tools/connection-search.js +2 -2
  96. package/dist/src/runtime/framework-tools/connection-search.js.map +1 -1
  97. package/dist/src/runtime/framework-tools/file-state.d.ts +5 -5
  98. package/dist/src/runtime/framework-tools/file-state.d.ts.map +1 -1
  99. package/dist/src/runtime/framework-tools/file-state.js +6 -8
  100. package/dist/src/runtime/framework-tools/file-state.js.map +1 -1
  101. package/dist/src/runtime/framework-tools/skill.d.ts.map +1 -1
  102. package/dist/src/runtime/framework-tools/skill.js +1 -3
  103. package/dist/src/runtime/framework-tools/skill.js.map +1 -1
  104. package/dist/src/runtime/framework-tools/todo.d.ts.map +1 -1
  105. package/dist/src/runtime/framework-tools/todo.js +2 -4
  106. package/dist/src/runtime/framework-tools/todo.js.map +1 -1
  107. package/dist/src/runtime/sessions/auth.d.ts +1 -1
  108. package/docs/internals/context.md +81 -231
  109. package/docs/public/README.md +19 -17
  110. package/docs/public/channels/README.md +4 -0
  111. package/docs/public/migration-guide.md +71 -0
  112. package/docs/public/session-context.md +46 -17
  113. package/docs/public/tools.md +18 -27
  114. package/docs/public/typescript-api.md +5 -1
  115. package/package.json +1 -1
  116. package/dist/src/context/state.d.ts +0 -27
  117. package/dist/src/context/state.d.ts.map +0 -1
  118. package/dist/src/context/state.js +0 -53
  119. 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 every value in the context to a plain JSON record.
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 serializeContext(ctx: AshContext): Record<string, unknown>;
6
+ export declare function serializeRuntimeContext(ctx: AshContext): Record<string, unknown>;
9
7
  /**
10
- * Deserializes a plain JSON record into a fresh context container.
8
+ * Deserializes runtime seed values into a fresh context container.
11
9
  *
12
- * Each entry is matched to a registered {@link ContextKey} by name.
13
- * Unknown entries (no registered key) are stored as-is.
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 deserializeContext(data: Record<string, unknown>): Promise<AshContext>;
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;AAIjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAqB3F"}
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 { resolveKey } from "./key.js";
2
+ import { getSerializableRuntimeContextKeys, isRuntimeContextKey, resolveRuntimeContextKey, } from "./key.js";
3
3
  import { BundleKey } from "./keys.js";
4
4
  /**
5
- * Serializes every value in the context to a plain JSON record.
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 serializeContext(ctx) {
8
+ export function serializeRuntimeContext(ctx) {
11
9
  const data = {};
12
- for (const [key, value] of ctx.entries()) {
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 a plain JSON record into a fresh context container.
23
+ * Deserializes runtime seed values into a fresh context container.
19
24
  *
20
- * Each entry is matched to a registered {@link ContextKey} by name.
21
- * Unknown entries (no registered key) are stored as-is.
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 deserializeContext(data) {
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
- if (name === BundleKey.name)
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,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,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;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA6B;IACpE,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;YAAE,SAAS;QAChC,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI;YAAE,SAAS;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,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;QACxE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
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 { AshContext } from "../context/container.js";
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
- * the pre-seeded {@link AshContext}, a composed `emit` function backed
20
- * by the event stream, the initial user message, the inbound message
21
- * queue, a `park` function, and a `createRuntime` factory so the
22
- * subagent tool wrapper can start delegated child runs on the same
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;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAW1D,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,gBAAgB,CAAC;AAQ7E;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,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;CAC7B;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,CAqFjG"}
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 { AuthKey, BundleKey, ChannelKey, ContinuationTokenKey, ModeKey, SessionIdKey, } from "../context/keys.js";
2
- import { runStep } from "../context/run-step.js";
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, ctx, emit, input: entryInput, park, queue } = input;
18
- const bundle = ctx.get(BundleKey);
19
- const mode = ctx.get(ModeKey);
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: ctx.get(ContinuationTokenKey),
25
- sessionId: ctx.get(SessionIdKey),
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 the raw step with context provider lifecycle. When a
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, _stepInput) => {
44
- if (item.auth !== undefined) {
45
- ctx.set(AuthKey, item.auth ?? null);
46
- }
47
- const resolved = await channel.onDeliver(ctx, item.payload);
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) => await runStep(ctx, stepSession, (enrichedSession) => innerStep(enrichedSession, 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 !== null &&
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":"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"}
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;AAG7B,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,CA+FV"}
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":"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"}
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
- * - `sessionPatch` from each hook is shallow-merged into `session.state`;
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;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GACvC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAiDhE"}
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
- * - `sessionPatch` from each hook is shallow-merged into `session.state`;
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 = new AbortController().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
- result = (await hook({ ctx, session, signal })) ?? {};
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: mutated ? { ...session, state } : 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;;;;;;;;;;;;;;;;;;;;GAoBG;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,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;QAE5C,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,IAAI,MAA6E,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,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,KAAK,SAAS;gBAAE,SAAS;YAEnC,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;YAED,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO;SACnD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
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
- * All runtime state is carried inside `serializedContext`, which is produced
5
- * by `serializeContext(ctx)` in the workflow runtime and deserialized at
6
- * each `"use step"` boundary. The workflow body extracts values it needs
7
- * for plumbing (continuation token, mode, bundle source) directly from
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;;;;;;;;GAQG;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
+ {"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":"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"}
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;AAI7B,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,CA6CV"}
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 { serializeContext } from "../context/serialize.js";
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
- const serializedContext = serializeContext(ctx);
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":"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"}
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 { HarnessSession } from "../harness/types.js";
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 state inside a step boundary before the
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;AAIvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAI9F,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,CA8D5B;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"}
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"}