@paperclipai/adapter-utils 2026.1005.0 → 2026.1006.0-beta.0

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 (117) hide show
  1. package/README.md +13 -0
  2. package/dist/acpx-engine/ephemeral-session-environment.d.ts +4 -0
  3. package/dist/acpx-engine/ephemeral-session-environment.d.ts.map +1 -0
  4. package/dist/acpx-engine/ephemeral-session-environment.js +29 -0
  5. package/dist/acpx-engine/ephemeral-session-environment.js.map +1 -0
  6. package/dist/acpx-engine/ephemeral-session-environment.test.d.ts +2 -0
  7. package/dist/acpx-engine/ephemeral-session-environment.test.d.ts.map +1 -0
  8. package/dist/acpx-engine/ephemeral-session-environment.test.js +177 -0
  9. package/dist/acpx-engine/ephemeral-session-environment.test.js.map +1 -0
  10. package/dist/acpx-engine/execute.d.ts.map +1 -1
  11. package/dist/acpx-engine/execute.js +66 -42
  12. package/dist/acpx-engine/execute.js.map +1 -1
  13. package/dist/acpx-engine/execute.test.js +162 -4
  14. package/dist/acpx-engine/execute.test.js.map +1 -1
  15. package/dist/acpx-engine/session-codec.d.ts.map +1 -1
  16. package/dist/acpx-engine/session-codec.js +1 -0
  17. package/dist/acpx-engine/session-codec.js.map +1 -1
  18. package/dist/acpx-engine/settlement-characterization.test.js +105 -0
  19. package/dist/acpx-engine/settlement-characterization.test.js.map +1 -1
  20. package/dist/acpx-engine/terminal-session-failure.d.ts +6 -0
  21. package/dist/acpx-engine/terminal-session-failure.d.ts.map +1 -1
  22. package/dist/acpx-engine/terminal-session-failure.js +14 -0
  23. package/dist/acpx-engine/terminal-session-failure.js.map +1 -1
  24. package/dist/acpx-engine/terminal-session-failure.test.js +21 -1
  25. package/dist/acpx-engine/terminal-session-failure.test.js.map +1 -1
  26. package/dist/command-redaction.d.ts +2 -0
  27. package/dist/command-redaction.d.ts.map +1 -1
  28. package/dist/command-redaction.js +20 -10
  29. package/dist/command-redaction.js.map +1 -1
  30. package/dist/command-redaction.test.js +20 -1
  31. package/dist/command-redaction.test.js.map +1 -1
  32. package/dist/directory-merge-lock.test.d.ts +2 -0
  33. package/dist/directory-merge-lock.test.d.ts.map +1 -0
  34. package/dist/directory-merge-lock.test.js +166 -0
  35. package/dist/directory-merge-lock.test.js.map +1 -0
  36. package/dist/execution-phase.d.ts +10 -0
  37. package/dist/execution-phase.d.ts.map +1 -0
  38. package/dist/execution-phase.js +27 -0
  39. package/dist/execution-phase.js.map +1 -0
  40. package/dist/execution-phase.test.d.ts +2 -0
  41. package/dist/execution-phase.test.d.ts.map +1 -0
  42. package/dist/execution-phase.test.js +26 -0
  43. package/dist/execution-phase.test.js.map +1 -0
  44. package/dist/execution-target-sandbox.test.js +48 -6
  45. package/dist/execution-target-sandbox.test.js.map +1 -1
  46. package/dist/execution-target-stdin-race.test.js +4 -0
  47. package/dist/execution-target-stdin-race.test.js.map +1 -1
  48. package/dist/execution-target.d.ts.map +1 -1
  49. package/dist/execution-target.js +6 -10
  50. package/dist/execution-target.js.map +1 -1
  51. package/dist/git-workspace-sync.d.ts +2 -0
  52. package/dist/git-workspace-sync.d.ts.map +1 -1
  53. package/dist/git-workspace-sync.js +100 -24
  54. package/dist/git-workspace-sync.js.map +1 -1
  55. package/dist/git-workspace-sync.test.js +261 -7
  56. package/dist/git-workspace-sync.test.js.map +1 -1
  57. package/dist/github-launcher.d.ts.map +1 -1
  58. package/dist/github-launcher.js +26 -11
  59. package/dist/github-launcher.js.map +1 -1
  60. package/dist/github-launcher.test.js +34 -1
  61. package/dist/github-launcher.test.js.map +1 -1
  62. package/dist/prompt-sections.test.js +7 -6
  63. package/dist/prompt-sections.test.js.map +1 -1
  64. package/dist/remote-managed-runtime.d.ts.map +1 -1
  65. package/dist/remote-managed-runtime.js +18 -2
  66. package/dist/remote-managed-runtime.js.map +1 -1
  67. package/dist/sandbox-callback-bridge.d.ts +2 -0
  68. package/dist/sandbox-callback-bridge.d.ts.map +1 -1
  69. package/dist/sandbox-callback-bridge.js +12 -3
  70. package/dist/sandbox-callback-bridge.js.map +1 -1
  71. package/dist/sandbox-callback-bridge.test.js +100 -0
  72. package/dist/sandbox-callback-bridge.test.js.map +1 -1
  73. package/dist/sandbox-managed-runtime.d.ts.map +1 -1
  74. package/dist/sandbox-managed-runtime.js +56 -48
  75. package/dist/sandbox-managed-runtime.js.map +1 -1
  76. package/dist/sandbox-managed-runtime.test.js +144 -6
  77. package/dist/sandbox-managed-runtime.test.js.map +1 -1
  78. package/dist/server-utils.d.ts +6 -1
  79. package/dist/server-utils.d.ts.map +1 -1
  80. package/dist/server-utils.js +22 -47
  81. package/dist/server-utils.js.map +1 -1
  82. package/dist/server-utils.test.js +46 -48
  83. package/dist/server-utils.test.js.map +1 -1
  84. package/dist/session-compaction.d.ts.map +1 -1
  85. package/dist/session-compaction.js +6 -0
  86. package/dist/session-compaction.js.map +1 -1
  87. package/dist/ssh-fixture.test.js +172 -0
  88. package/dist/ssh-fixture.test.js.map +1 -1
  89. package/dist/ssh.d.ts +5 -0
  90. package/dist/ssh.d.ts.map +1 -1
  91. package/dist/ssh.js +138 -20
  92. package/dist/ssh.js.map +1 -1
  93. package/dist/types.d.ts +8 -1
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/workspace-restore-diagnostics.d.ts +29 -1
  96. package/dist/workspace-restore-diagnostics.d.ts.map +1 -1
  97. package/dist/workspace-restore-diagnostics.js +180 -8
  98. package/dist/workspace-restore-diagnostics.js.map +1 -1
  99. package/dist/workspace-restore-diagnostics.test.js +192 -1
  100. package/dist/workspace-restore-diagnostics.test.js.map +1 -1
  101. package/dist/workspace-restore-merge.d.ts +4 -2
  102. package/dist/workspace-restore-merge.d.ts.map +1 -1
  103. package/dist/workspace-restore-merge.js +89 -66
  104. package/dist/workspace-restore-merge.js.map +1 -1
  105. package/dist/workspace-restore-merge.test.js +8 -5
  106. package/dist/workspace-restore-merge.test.js.map +1 -1
  107. package/dist/workspace-restore-result.d.ts.map +1 -1
  108. package/dist/workspace-restore-result.js +44 -39
  109. package/dist/workspace-restore-result.js.map +1 -1
  110. package/dist/workspace-restore-result.test.js +25 -0
  111. package/dist/workspace-restore-result.test.js.map +1 -1
  112. package/dist/workspace-restore-teardown.d.ts.map +1 -1
  113. package/dist/workspace-restore-teardown.js +5 -3
  114. package/dist/workspace-restore-teardown.js.map +1 -1
  115. package/dist/workspace-restore-teardown.test.js +24 -0
  116. package/dist/workspace-restore-teardown.test.js.map +1 -1
  117. package/package.json +2 -2
package/README.md CHANGED
@@ -9,6 +9,19 @@ For the adapter-author guide see
9
9
  [`docs/adapters/creating-an-adapter.md`](../../docs/adapters/creating-an-adapter.md)
10
10
  and the in-repo notes at [`packages/adapters/AUTHORING.md`](../adapters/AUTHORING.md).
11
11
 
12
+ ## Sandbox bridge deadlines
13
+
14
+ Command-managed bridge control operations (queue reads, input delivery, setup,
15
+ and cleanup) have a host-enforced deadline of at most 30 seconds per shell
16
+ command. A shorter configured timeout still applies. These operations cannot
17
+ inherit the agent run's hours-long lifetime or wait forever on a provider that
18
+ ignores its timeout. Long-lived agent session commands keep their own limits.
19
+
20
+ A control timeout reports a transport failure. It does not prove that the
21
+ remote command stopped and does not replay an uncertain write. The process
22
+ session closes failed input delivery and uses its existing shutdown path;
23
+ normal execution settlement must still verify termination.
24
+
12
25
  ## No-remote-git contract
13
26
 
14
27
  The local execution-workspace cwd is the only persistence boundary across
@@ -0,0 +1,4 @@
1
+ import type { AcpSessionStore } from "acpx/runtime";
2
+ /** Keep the current run's environment in memory, outside persisted conversation state. */
3
+ export declare function createEphemeralSessionEnvironmentStore(persistedStore: AcpSessionStore, currentEnvironment: Readonly<Record<string, string>>): AcpSessionStore;
4
+ //# sourceMappingURL=ephemeral-session-environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-session-environment.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/ephemeral-session-environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,0FAA0F;AAC1F,wBAAgB,sCAAsC,CACpD,cAAc,EAAE,eAAe,EAC/B,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACnD,eAAe,CAyBjB"}
@@ -0,0 +1,29 @@
1
+ /** Keep the current run's environment in memory, outside persisted conversation state. */
2
+ export function createEphemeralSessionEnvironmentStore(persistedStore, currentEnvironment) {
3
+ return {
4
+ async load(id) {
5
+ const record = await persistedStore.load(id);
6
+ if (!record)
7
+ return undefined;
8
+ return {
9
+ ...record,
10
+ acpx: {
11
+ ...record.acpx,
12
+ session_options: {
13
+ ...record.acpx?.session_options,
14
+ env: { ...currentEnvironment },
15
+ },
16
+ },
17
+ };
18
+ },
19
+ save(record) {
20
+ const persisted = { ...record };
21
+ if (record.acpx?.session_options !== undefined) {
22
+ const { env: _environment, ...sessionOptions } = record.acpx.session_options;
23
+ persisted.acpx = { ...record.acpx, session_options: sessionOptions };
24
+ }
25
+ return persistedStore.save(persisted);
26
+ },
27
+ };
28
+ }
29
+ //# sourceMappingURL=ephemeral-session-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-session-environment.js","sourceRoot":"","sources":["../../src/acpx-engine/ephemeral-session-environment.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,MAAM,UAAU,sCAAsC,CACpD,cAA+B,EAC/B,kBAAoD;IAEpD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,EAAE;YACX,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC9B,OAAO;gBACL,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,GAAG,MAAM,CAAC,IAAI;oBACd,eAAe,EAAE;wBACf,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe;wBAC/B,GAAG,EAAE,EAAE,GAAG,kBAAkB,EAAE;qBAC/B;iBACF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM;YACT,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC7E,SAAS,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;YACvE,CAAC;YACD,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ephemeral-session-environment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-session-environment.test.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/ephemeral-session-environment.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,177 @@
1
+ import { mkdtemp, readFile, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { createRuntimeStore } from "acpx/runtime";
5
+ import { afterEach, describe, expect, it, vi } from "vitest";
6
+ import { createEphemeralSessionEnvironmentStore } from "./ephemeral-session-environment.js";
7
+ const currentEnvironment = Object.freeze({
8
+ PAPERCLIP_API_KEY: "current-credential-fixture",
9
+ PAPERCLIP_RUN_ID: "current-run-fixture",
10
+ PATH: "/fixture/current-bin",
11
+ });
12
+ const oldEnvironment = { PAPERCLIP_API_KEY: "old-credential-fixture", OLD_RUN_PATH: "/fixture/old-run" };
13
+ function record() {
14
+ return {
15
+ schema: "acpx.session.v1",
16
+ acpxRecordId: "fixture-record",
17
+ acpSessionId: "fixture-session",
18
+ agentSessionId: "fixture-agent-session",
19
+ agentCommand: "fixture-provider",
20
+ cwd: "/fixture/project",
21
+ name: "fixture-name",
22
+ createdAt: "2026-10-03T00:00:00.000Z",
23
+ lastUsedAt: "2026-10-03T00:00:01.000Z",
24
+ lastSeq: 3,
25
+ eventLog: { active_path: "/fixture/events.jsonl", segment_count: 1, max_segment_bytes: 1024, max_segments: 2 },
26
+ messages: [{ User: { id: "message-1", content: [{ Text: "Retained conversation" }] } }],
27
+ updated_at: "2026-10-03T00:00:01.000Z",
28
+ cumulative_token_usage: { input_tokens: 11, output_tokens: 7 },
29
+ request_token_usage: { request_1: { input_tokens: 11 } },
30
+ importedFrom: { recordId: "origin-record", cwdOriginal: "/fixture/origin", exportedBy: "fixture-caller", exportedAt: "2026-10-03T00:00:00.000Z" },
31
+ acpx: {
32
+ current_mode_id: "code",
33
+ desired_config_options: { effort: "high" },
34
+ session_options: { model: "fixture-model", allowed_tools: ["Read", "Write"], max_turns: 4, system_prompt: { append: "Retained caller option" }, env: { ...currentEnvironment } },
35
+ },
36
+ };
37
+ }
38
+ function freeze(value) {
39
+ for (const child of Object.values(value))
40
+ if (typeof child === "object" && child !== null)
41
+ freeze(child);
42
+ return Object.freeze(value);
43
+ }
44
+ function stubStore(loaded) {
45
+ const load = vi.fn().mockResolvedValue(loaded);
46
+ const save = vi.fn().mockResolvedValue(undefined);
47
+ return { load, save };
48
+ }
49
+ const directories = [];
50
+ afterEach(async () => { await Promise.all(directories.splice(0).map(directory => rm(directory, { recursive: true, force: true }))); });
51
+ async function diskStore() {
52
+ const stateDir = await mkdtemp(join(tmpdir(), "paperclip-session-env-"));
53
+ directories.push(stateDir);
54
+ return { store: createRuntimeStore({ stateDir }), file: join(stateDir, "sessions", "fixture-record.json") };
55
+ }
56
+ describe("ephemeral ACPX session environment", () => {
57
+ it("saves a fresh session to the actual file store without persisting its live environment", async () => {
58
+ const disk = await diskStore(), input = freeze(record());
59
+ const wrapper = createEphemeralSessionEnvironmentStore(disk.store, currentEnvironment);
60
+ await wrapper.save(input);
61
+ const text = await readFile(disk.file, "utf8"), saved = JSON.parse(text);
62
+ expect(saved.acpx.session_options).not.toHaveProperty("env");
63
+ for (const value of Object.values(currentEnvironment))
64
+ expect(text).not.toContain(value);
65
+ expect(input.acpx?.session_options?.env).toEqual(currentEnvironment);
66
+ expect(saved.acpx.current_mode_id).toBe("code");
67
+ expect(saved.acpx.desired_config_options).toEqual(input.acpx?.desired_config_options);
68
+ expect(saved.acpx.session_options).toEqual({ model: "fixture-model", allowed_tools: ["Read", "Write"], max_turns: 4, system_prompt: { append: "Retained caller option" } });
69
+ expect(saved.messages).toEqual(input.messages);
70
+ expect(saved.imported_from.record_id).toBe("origin-record");
71
+ const loaded = await wrapper.load(input.acpxRecordId);
72
+ expect(loaded?.acpx?.session_options?.env).toEqual(currentEnvironment);
73
+ expect(loaded?.messages).toEqual(input.messages);
74
+ });
75
+ it("loads an old env-bearing file with rotated credentials without writing, then saves neither environment", async () => {
76
+ const disk = await diskStore(), legacy = record();
77
+ legacy.acpx.session_options.env = { ...oldEnvironment };
78
+ await disk.store.save(legacy);
79
+ const before = await readFile(disk.file, "utf8");
80
+ const wrapper = createEphemeralSessionEnvironmentStore(disk.store, currentEnvironment);
81
+ const loaded = await wrapper.load(legacy.acpxRecordId);
82
+ expect(loaded?.acpx?.session_options?.env).toEqual(currentEnvironment);
83
+ expect(loaded?.acpx?.session_options?.env).not.toHaveProperty("OLD_RUN_PATH");
84
+ expect(await readFile(disk.file, "utf8")).toBe(before);
85
+ expect(legacy.acpx?.session_options?.env).toEqual(oldEnvironment);
86
+ await wrapper.save(loaded);
87
+ const after = await readFile(disk.file, "utf8");
88
+ for (const value of [...Object.values(oldEnvironment), ...Object.values(currentEnvironment)])
89
+ expect(after).not.toContain(value);
90
+ expect(JSON.parse(after).acpx.session_options).not.toHaveProperty("env");
91
+ expect(loaded?.acpx?.session_options?.env).toEqual(currentEnvironment);
92
+ });
93
+ it("loads an env-free persisted session into the current environment without writing", async () => {
94
+ const disk = await diskStore(), input = record();
95
+ delete input.acpx.session_options.env;
96
+ await disk.store.save(input);
97
+ const before = await readFile(disk.file, "utf8");
98
+ const loaded = await createEphemeralSessionEnvironmentStore(disk.store, currentEnvironment).load(input.acpxRecordId);
99
+ expect(loaded?.acpx?.session_options?.env).toEqual(currentEnvironment);
100
+ expect(loaded?.acpx?.session_options?.model).toBe("fixture-model");
101
+ expect(await readFile(disk.file, "utf8")).toBe(before);
102
+ });
103
+ it("copies loaded records, options and current env without mutating stored or caller-owned objects", async () => {
104
+ const stored = record();
105
+ stored.acpx.session_options.env = { ...oldEnvironment };
106
+ freeze(stored);
107
+ const backing = stubStore(stored), wrapper = createEphemeralSessionEnvironmentStore(backing, currentEnvironment);
108
+ const loaded = await wrapper.load("fixture-record");
109
+ expect(backing.load).toHaveBeenCalledWith("fixture-record");
110
+ expect(backing.save).not.toHaveBeenCalled();
111
+ expect(loaded).not.toBe(stored);
112
+ expect(loaded?.acpx).not.toBe(stored.acpx);
113
+ expect(loaded?.acpx?.session_options).not.toBe(stored.acpx?.session_options);
114
+ expect(loaded?.acpx?.session_options?.env).not.toBe(currentEnvironment);
115
+ expect(stored.acpx?.session_options?.env).toEqual(oldEnvironment);
116
+ loaded.acpx.session_options.env.PAPERCLIP_API_KEY = "isolated-loaded-fixture";
117
+ expect(currentEnvironment.PAPERCLIP_API_KEY).toBe("current-credential-fixture");
118
+ });
119
+ it("saves only a copied env-free projection, preserving unrelated and caller metadata", async () => {
120
+ const input = freeze(Object.assign(record(), { caller_metadata: { keep: "caller-state", env: { preserve: "unrelated caller metadata" } } }));
121
+ const backing = stubStore(undefined), wrapper = createEphemeralSessionEnvironmentStore(backing, currentEnvironment);
122
+ await wrapper.save(input);
123
+ const saved = backing.save.mock.calls[0][0];
124
+ const { env: _environment, ...expectedOptions } = input.acpx.session_options;
125
+ expect(saved).toEqual({ ...input, acpx: { ...input.acpx, session_options: expectedOptions } });
126
+ expect(saved).not.toBe(input);
127
+ expect(saved.acpx).not.toBe(input.acpx);
128
+ expect(saved.acpx?.session_options).not.toBe(input.acpx?.session_options);
129
+ expect(saved.acpx?.session_options).not.toHaveProperty("env");
130
+ expect(input.acpx?.session_options?.env).toEqual(currentEnvironment);
131
+ });
132
+ for (const [name, acpx] of [
133
+ ["absent acpx", undefined],
134
+ ["explicit undefined acpx", undefined],
135
+ ["absent session options", { current_mode_id: "code" }],
136
+ ["undefined session options", { session_options: undefined }],
137
+ ["empty session options", { session_options: {} }],
138
+ ["undefined env", { session_options: { env: undefined, model: "fixture-model" } }],
139
+ ])
140
+ it(`preserves ${name} when saving and retains existing load injection semantics`, async () => {
141
+ const input = record();
142
+ if (name === "absent acpx")
143
+ delete input.acpx;
144
+ else
145
+ input.acpx = acpx;
146
+ freeze(input);
147
+ const backing = stubStore(input), wrapper = createEphemeralSessionEnvironmentStore(backing, currentEnvironment);
148
+ await wrapper.save(input);
149
+ const saved = backing.save.mock.calls[0][0];
150
+ if (name === "undefined env")
151
+ expect(saved.acpx?.session_options).toEqual({ model: "fixture-model" });
152
+ else
153
+ expect(saved).toEqual(input);
154
+ expect(Object.hasOwn(saved, "acpx")).toBe(Object.hasOwn(input, "acpx"));
155
+ if (saved.acpx && input.acpx)
156
+ expect(Object.hasOwn(saved.acpx, "session_options")).toBe(Object.hasOwn(input.acpx, "session_options"));
157
+ const loaded = await wrapper.load(input.acpxRecordId);
158
+ expect(loaded?.acpx?.session_options?.env).toEqual(currentEnvironment);
159
+ expect(backing.save).toHaveBeenCalledTimes(1);
160
+ });
161
+ it("returns a missing record without saving or creating conversation state", async () => {
162
+ const backing = stubStore(undefined);
163
+ expect(await createEphemeralSessionEnvironmentStore(backing, currentEnvironment).load("missing")).toBeUndefined();
164
+ expect(backing.save).not.toHaveBeenCalled();
165
+ });
166
+ it("propagates load and save errors unchanged", async () => {
167
+ const failure = new Error("fixture store failure"), backing = stubStore(undefined);
168
+ backing.load.mockRejectedValue(failure);
169
+ backing.save.mockRejectedValue(failure);
170
+ const wrapper = createEphemeralSessionEnvironmentStore(backing, currentEnvironment);
171
+ await expect(wrapper.load("fixture-record")).rejects.toBe(failure);
172
+ const input = freeze(record());
173
+ await expect(wrapper.save(input)).rejects.toBe(failure);
174
+ expect(input.acpx?.session_options?.env).toEqual(currentEnvironment);
175
+ });
176
+ });
177
+ //# sourceMappingURL=ephemeral-session-environment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-session-environment.test.js","sourceRoot":"","sources":["../../src/acpx-engine/ephemeral-session-environment.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAA+C,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAC;AAE5F,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,iBAAiB,EAAE,4BAA4B;IAC/C,gBAAgB,EAAE,qBAAqB;IACvC,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEzG,SAAS,MAAM;IACb,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,YAAY,EAAE,gBAAgB;QAC9B,YAAY,EAAE,iBAAiB;QAC/B,cAAc,EAAE,uBAAuB;QACvC,YAAY,EAAE,kBAAkB;QAChC,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,0BAA0B;QACrC,UAAU,EAAE,0BAA0B;QACtC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;QAC9G,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE,EAAE,CAAC;QACvF,UAAU,EAAE,0BAA0B;QACtC,sBAAsB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC9D,mBAAmB,EAAE,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;QACxD,YAAY,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,0BAA0B,EAAE;QACjJ,IAAI,EAAE;YACJ,eAAe,EAAE,MAAM;YACvB,sBAAsB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC1C,eAAe,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,kBAAkB,EAAE,EAAE;SACjL;KACF,CAAC;AACJ,CAAC;AACD,SAAS,MAAM,CAAmB,KAAQ;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACzG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AACD,SAAS,SAAS,CAAC,MAAoC;IACrD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AACD,MAAM,WAAW,GAAa,EAAE,CAAC;AACjC,SAAS,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvI,KAAK,UAAU,SAAS;IACtB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrG,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,sCAAsC,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACvF,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAC5K,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;QACtH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,IAAK,CAAC,eAAgB,CAAC,GAAG,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAC7G,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,sCAAsC,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC,IAAK,CAAC,eAAgB,CAAC,GAAG,CAAC;QAC1F,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,sCAAsC,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrH,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC9G,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,IAAK,CAAC,eAAgB,CAAC,GAAG,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnG,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sCAAsC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClE,MAAO,CAAC,IAAK,CAAC,eAAgB,CAAC,GAAI,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;QAClF,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7I,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,sCAAsC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACpH,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC,IAAK,CAAC,eAAgB,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC/F,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;QACzB,CAAC,aAAa,EAAE,SAAS,CAAC;QAC1B,CAAC,yBAAyB,EAAE,SAAS,CAAC;QACtC,CAAC,wBAAwB,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QACvD,CAAC,2BAA2B,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;QAClD,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;KAC1E;QAAE,EAAE,CAAC,aAAa,IAAI,4DAA4D,EAAE,KAAK,IAAI,EAAE;YACvG,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,aAAa;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;;gBAAM,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,sCAAsC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAChH,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,eAAe;gBAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;;gBACjG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;gBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACtI,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,sCAAsC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAClH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,sCAAsC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/execute.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAcL,KAAK,sBAAsB,EAI3B,KAAK,0BAA0B,EAC/B,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EAEtC,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAIL,KAAK,0BAA0B,EAEhC,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAA+B,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAuC1G,OAAO,EAML,KAAK,UAAU,EAGf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGrB,KAAK,wBAAwB,EAE9B,MAAM,cAAc,CAAC;AAYtB,OAAO,KAAK,EAGV,iBAAiB,EACjB,6BAA6B,EAE7B,0BAA0B,EAC1B,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAIL,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAEL,KAAK,wBAAwB,EAG7B,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAaL,KAAK,kBAAkB,EAGxB,MAAM,qBAAqB,CAAC;AAiC7B,KAAK,0BAA0B,GAAG,iBAAiB,GAAG;IACpD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAKjE,uBAAuB,CAAC,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,0BAA0B,KAAK,UAAU,CAAC;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,qCAAqC,CAAC;IACrD;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;;;OAQG;IACH,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,yEAAyE;IACzE,eAAe,EAAE,sBAAsB,CAAC;IACxC,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACxC,iBAAiB,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAChE;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,KAAK,EAAE,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,OAAO,CAAC,qCAAqC,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,qCAAqC,CAAC;IACrD;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAClD;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,sBAAsB,EACtB,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAC/C,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,6FAA6F;IAC7F,8BAA8B,CAAC,EAAE,CAC/B,OAAO,EAAE,0BAA0B,EACnC,GAAG,EAAE,IAAI,KACN,iCAAiC,GAAG,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACtD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,CACvB,GAAG,EAAE,uBAAuB,KACzB,yBAAyB,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAClF;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,4BAA4B,KAChC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1C;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI,CAAC;CACzE;AAwGD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAEpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzF;AAoFD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,CAAC,UAAU,EAC/B,SAAS,EAAE,MAAM,EACjB,sBAAsB,EAAE,OAAO,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,SAAS,6BAA6B,EAAE,EACvD,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;CACpC,GACA,iBAAiB,CAQnB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gCAAgC,GACjD,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAmCD,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAc/F;AAqCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAI1F;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAOlF;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,CAO1G;AAsoED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,MAAM,CAOT;AAuID;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG;IACF,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAyDA;AAijBD,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,yBAA8B,SAS9B,uBAAuB,KAAG,OAAO,CAAC,sBAAsB,CAAC,CAqnDvG;AAGD,eAAO,MAAM,OAAO,QAxnD2B,uBAAuB,KAAG,OAAO,CAAC,sBAAsB,CAwnDtD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cancellableSandboxStartup } from "./startup-cancellation.js";
2
+ import { withAdapterExecutionPhase } from "../execution-phase.js";
2
3
  import fs from "node:fs/promises";
3
4
  import fsSync from "node:fs";
4
5
  import os from "node:os";
@@ -6,14 +7,16 @@ import path from "node:path";
6
7
  import { execFile } from "node:child_process";
7
8
  import { promisify } from "node:util";
8
9
  import { createHash, randomUUID } from "node:crypto";
10
+ import { parseFrontmatterMarkdown } from "@paperclipai/shared";
9
11
  import { fileURLToPath } from "node:url";
10
12
  import { adapterExecutionTargetSessionIdentity, describeAdapterExecutionTarget, adapterExecutionTargetDuplexObservabilityRecorder, adapterExecutionTargetEnablesSandboxDuplexBridge, formatAdapterExecutionTimeoutErrorMessage, formatAdapterExecutionTimeoutStartLogLine, prepareAdapterExecutionTargetRuntime, readAdapterExecutionTarget, resolveAdapterExecutionTargetTimeout, resolveReferencedSourceIgnore, runAdapterExecutionTargetShellCommand, startAdapterExecutionTargetPaperclipBridge, startAdapterExecutionTargetProcessSessionBridge, } from "@paperclipai/adapter-utils/execution-target";
11
13
  import { captureLocalProcess, capturedProcessExited, killCapturedLocalProcess } from "./local-process-control.js";
12
14
  import { DUPLEX_CHANNEL_LOST_ERROR_CODE } from "../bridge-transport-contract.js";
13
- import { formatTerminalSessionFailure, sanitizeTerminalSessionFailure, } from "./terminal-session-failure.js";
15
+ import { classifyToolDefinitionFailure, formatTerminalSessionFailure, sanitizeTerminalSessionFailure, } from "./terminal-session-failure.js";
14
16
  import { classifyWorkspaceRestoreFailure, describeWorkspaceRestoreFailure, } from "../workspace-restore-merge.js";
15
- import { DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE, applyPaperclipWorkspaceEnv, asNumber, asString, buildInvocationEnvForLogs, buildPaperclipEnv, ensureAbsoluteDirectory, ensurePathInEnv, ensurePaperclipSkillSymlink, isForbiddenConfigEnvKey, isPaperclipExternalChatTurn, isPaperclipRuntimeEnvKey, joinPromptSections, materializePaperclipSkillCopy, parseObject, isPaperclipSkillSourceMissing, readPaperclipRuntimeSkillEntries, readPaperclipIssueWorkModeFromContext, renderTemplate, resolvePaperclipInstanceRootForAdapter, selectPaperclipPromptSections, resolveLegacyPaperclipDesiredSkillNames, removeMaintainerOnlySkillSymlinks, rewriteWorkspaceCwdEnvVarsForExecution, shapePaperclipWorkspaceEnvForExecution, } from "@paperclipai/adapter-utils/server-utils";
17
+ import { DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE, applyPaperclipWorkspaceEnv, asNumber, asString, buildInvocationEnvForLogs, buildPaperclipEnv, ensureAbsoluteDirectory, ensurePathInEnv, ensurePaperclipSkillSymlink, isForbiddenConfigEnvKey, isPaperclipExternalChatTurn, isPaperclipRuntimeEnvKey, joinPromptSections, materializePaperclipSkillCopy, parseObject, isPaperclipSkillSourceMissing, readPaperclipRuntimeSkillEntries, readPaperclipIssueWorkModeFromContext, renderTemplate, resolvePaperclipInstanceRootForAdapter, hydrateFreshSessionHandoff, selectInitialCommunicationGuidance, selectPaperclipPromptSections, resolveLegacyPaperclipDesiredSkillNames, removeMaintainerOnlySkillSymlinks, rewriteWorkspaceCwdEnvVarsForExecution, shapePaperclipWorkspaceEnvForExecution, } from "@paperclipai/adapter-utils/server-utils";
16
18
  import { shellQuote } from "@paperclipai/adapter-utils/ssh";
19
+ import { createEphemeralSessionEnvironmentStore } from "./ephemeral-session-environment.js";
17
20
  import { createAcpRuntime, createAgentRegistry, createRuntimeStore, isAcpRuntimeError, } from "acpx/runtime";
18
21
  import { ACPX_DUPLEX_LOSS_CANCEL_DEADLINE_MS, ACPX_HANDSHAKE_TIMEOUT_MS, ACPX_HANDSHAKE_TRANSPORT_POLL_MS, DEFAULT_ACP_ENGINE_AGENT, DEFAULT_ACP_ENGINE_MODE, DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS, DEFAULT_ACP_ENGINE_PERMISSION_MODE, DEFAULT_ACP_ENGINE_TIMEOUT_SEC, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS, } from "./constants.js";
19
22
  import { createRunResourceLedger } from "./run-resource-ledger.js";
@@ -622,11 +625,25 @@ async function prepareClaudeSkillRuntime(input) {
622
625
  }
623
626
  }
624
627
  const selectedNames = materializedNames.sort();
628
+ const skillDescriptions = await Promise.all(selectedNames.map(async (name) => {
629
+ const file = path.join(skillsHome, name, "SKILL.md");
630
+ let description = "";
631
+ try {
632
+ const parsed = parseFrontmatterMarkdown(await fs.readFile(file, "utf8"));
633
+ description = asString(parsed.frontmatter.description, "").replace(/\s+/g, " ").trim().slice(0, 512);
634
+ }
635
+ catch {
636
+ // A readable skill without valid routing metadata remains available.
637
+ // Do not substitute its body for a missing description.
638
+ }
639
+ return `- ${name}${description ? `: ${description}` : ""} (file: ${file})`;
640
+ }));
625
641
  const promptInstructions = selectedNames.length > 0
626
642
  ? [
627
643
  "Paperclip has materialized selected runtime skills for this ACPX Claude session.",
628
644
  `Skill root: ${skillsHome}`,
629
645
  `Selected skills: ${selectedNames.join(", ")}`,
646
+ ...skillDescriptions,
630
647
  "When a task calls for one of these skills, read its SKILL.md from that root and follow it.",
631
648
  ].join("\n")
632
649
  : "";
@@ -908,6 +925,7 @@ function buildSessionParams(input) {
908
925
  mode: prepared.mode,
909
926
  stateDir: prepared.stateDir,
910
927
  configFingerprint: prepared.fingerprint,
928
+ mcpFingerprint: shortHash(prepared.mcpIdentity),
911
929
  ...(prepared.requestedModel ? { model: prepared.requestedModel } : {}),
912
930
  ...(prepared.requestedThinkingEffort ? { thinkingEffort: prepared.requestedThinkingEffort } : {}),
913
931
  ...(prepared.fastMode ? { fastMode: true } : {}),
@@ -1453,7 +1471,9 @@ async function buildRuntime(input) {
1453
1471
  defaultMode: paperclipClaudeSettings.defaultMode,
1454
1472
  }
1455
1473
  : null,
1456
- mcpServers: mcpIdentity,
1474
+ // Qualified built-in ACP harnesses reconnect to the supplied MCP servers
1475
+ // on session/load. Keep their conversation identity independent of tools.
1476
+ mcpServers: ["claude", "codex", "grok", "gemini", "kimi"].includes(acpxAgent) ? [] : mcpIdentity,
1457
1477
  secretManifestHash: shortHash(secretManifest),
1458
1478
  // Fold the resolved adapter env (all applied user-configured values —
1459
1479
  // plain, secret_ref, and stable PAPERCLIP_* config such as an explicit
@@ -2153,7 +2173,8 @@ async function buildPrompt(ctx, resumedSession, env) {
2153
2173
  const renderedBootstrapPrompt = !resumedSession && bootstrapPromptTemplate.trim().length > 0
2154
2174
  ? renderTemplate(bootstrapPromptTemplate, templateData).trim()
2155
2175
  : "";
2156
- const { taskContextNote, wakePrompt } = selectPaperclipPromptSections(context, { resumedSession });
2176
+ await hydrateFreshSessionHandoff(ctx, { resumedSession });
2177
+ const { taskContextNote, wakePrompt } = selectPaperclipPromptSections(context, { resumedSession, includeCommunicationGuidance: false });
2157
2178
  const externalChatTurn = isPaperclipExternalChatTurn(context.paperclipWake);
2158
2179
  const shouldUseResumeDeltaPrompt = resumedSession && wakePrompt.length > 0;
2159
2180
  const promptInstructionsPrefix = shouldUseResumeDeltaPrompt ? "" : instructionsPrefix;
@@ -2166,6 +2187,7 @@ async function buildPrompt(ctx, resumedSession, env) {
2166
2187
  const prompt = joinPromptSections([
2167
2188
  promptInstructionsPrefix,
2168
2189
  renderedBootstrapPrompt,
2190
+ selectInitialCommunicationGuidance(context, { resumedSession }),
2169
2191
  wakePrompt,
2170
2192
  sessionHandoffNote,
2171
2193
  taskContextNote,
@@ -3072,9 +3094,9 @@ export function createAcpxEngineExecutor(deps = {}) {
3072
3094
  : teardownErr instanceof Error
3073
3095
  ? teardownErr.message
3074
3096
  : String(teardownErr);
3075
- await ctx
3097
+ await withAdapterExecutionPhase(ctx, "phase_reporting", () => ctx
3076
3098
  .onLog("stderr", `[paperclip] ACPX teardown step "${step}" failed: ${reason}\n`)
3077
- .catch(() => { });
3099
+ .catch(() => { }));
3078
3100
  };
3079
3101
  // Emit one per-phase timing run-log event. It is not an OpenTelemetry
3080
3102
  // export and it is not a Telemetry event: it carries the phase name
@@ -3087,13 +3109,13 @@ export function createAcpxEngineExecutor(deps = {}) {
3087
3109
  const timedPhase = async (phase, run) => {
3088
3110
  const start = now();
3089
3111
  try {
3090
- await run();
3112
+ await withAdapterExecutionPhase(ctx, phase, run);
3091
3113
  }
3092
3114
  catch (error) {
3093
- await emitPhase(phase, start, "failed");
3115
+ await withAdapterExecutionPhase(ctx, "phase_reporting", () => emitPhase(phase, start, "failed"));
3094
3116
  throw error;
3095
3117
  }
3096
- await emitPhase(phase, start, "ok");
3118
+ await withAdapterExecutionPhase(ctx, "phase_reporting", () => emitPhase(phase, start, "ok"));
3097
3119
  };
3098
3120
  // The turn the run started. It is hoisted to the run scope so the settlement
3099
3121
  // `endSession` step can cancel a running turn before it closes the runtime
@@ -3211,7 +3233,14 @@ export function createAcpxEngineExecutor(deps = {}) {
3211
3233
  // same session still sees it. The borrow clears the entry's idle timer, so
3212
3234
  // the reused runtime cannot expire under its own timer while this run uses
3213
3235
  // it (today's `clearWarmHandleTimer(cached)` after the reuse decision).
3214
- const cached = canResume ? hostStore.borrow(prepared.sessionKey) : undefined;
3236
+ let cached = canResume ? hostStore.borrow(prepared.sessionKey) : undefined;
3237
+ if (cached && (ctx.context.refreshTools === true
3238
+ || asString(previousParams.mcpFingerprint, "") !== shortHash(prepared.mcpIdentity)
3239
+ // MCP bearer credentials are run-scoped, even for an unchanged catalog.
3240
+ || prepared.mcpServers.length > 0)) {
3241
+ await hostStore.discard(prepared.sessionKey);
3242
+ cached = undefined;
3243
+ }
3215
3244
  childStderrState = cached?.childStderrState ?? { logPath: null, pendingLiveLine: "" };
3216
3245
  processIdentitySink = cached?.processIdentitySink ?? {
3217
3246
  current: ctx.onSpawn,
@@ -3224,27 +3253,9 @@ export function createAcpxEngineExecutor(deps = {}) {
3224
3253
  flushChildStderr(childStderrState);
3225
3254
  childStderrState.logPath = prepared.childStderrLogPath;
3226
3255
  const persistedRuntimeStore = createRuntimeStore({ stateDir: prepared.stateDir });
3227
- const runtimeStore = {
3228
- async load(id) {
3229
- const record = await persistedRuntimeStore.load(id);
3230
- if (!record)
3231
- return undefined;
3232
- // ACPX resumes from the stored session options rather than the
3233
- // options passed to ensureSession. Keep conversation state, but
3234
- // launch the provider with this run's credentials and scratch paths.
3235
- return {
3236
- ...record,
3237
- acpx: {
3238
- ...record.acpx,
3239
- session_options: {
3240
- ...record.acpx?.session_options,
3241
- env: { ...prepared.env },
3242
- },
3243
- },
3244
- };
3245
- },
3246
- save: (record) => persistedRuntimeStore.save(record),
3247
- };
3256
+ // Resume with this run's launch environment; keep it out of the saved
3257
+ // conversation record without mutating the live runtime's options.
3258
+ const runtimeStore = createEphemeralSessionEnvironmentStore(persistedRuntimeStore, prepared.env);
3248
3259
  const runtimeOptions = {
3249
3260
  cwd: prepared.cwd,
3250
3261
  // Host-only spawn cwd for the relay proxy on the remote process-session
@@ -3768,8 +3779,9 @@ export function createAcpxEngineExecutor(deps = {}) {
3768
3779
  // Diagnostics are retained even when an adapter has no recovery
3769
3780
  // classifier. Redact before bounding so partial secrets cannot leak.
3770
3781
  onTerminalSessionFailure: (failure) => {
3782
+ terminalFailureClassification = classifyToolDefinitionFailure(failure)
3783
+ ?? deps.classifyTerminalSessionFailure?.(failure, new Date(now())) ?? null;
3771
3784
  terminalSessionFailure = sanitizeTerminalSessionFailure(failure, prepared.env, ctx.authToken, parseObject(ctx.config.env));
3772
- terminalFailureClassification = deps.classifyTerminalSessionFailure?.(failure, new Date(now())) ?? null;
3773
3785
  },
3774
3786
  });
3775
3787
  activeTurn = turn;
@@ -3827,7 +3839,7 @@ export function createAcpxEngineExecutor(deps = {}) {
3827
3839
  armStopDeadline();
3828
3840
  return {
3829
3841
  cancel: async (reason) => {
3830
- await turn.cancel({ reason });
3842
+ await withAdapterExecutionPhase(ctx, "cancel_turn", () => turn.cancel({ reason }));
3831
3843
  },
3832
3844
  };
3833
3845
  };
@@ -4283,7 +4295,7 @@ export function createAcpxEngineExecutor(deps = {}) {
4283
4295
  : baseSettlement;
4284
4296
  // Cancel a running turn before the close (the turn-error path).
4285
4297
  if (settlement.cancelTurnReason && activeTurn) {
4286
- await activeTurn.cancel({ reason: settlement.cancelTurnReason }).catch(() => { });
4298
+ await withAdapterExecutionPhase(ctx, "cancel_turn", () => activeTurn.cancel({ reason: settlement.cancelTurnReason }).catch(() => { }));
4287
4299
  }
4288
4300
  const existing = warmHandles.get(prepared.sessionKey);
4289
4301
  // Re-read the duplex control-channel disposition here, at the
@@ -4320,26 +4332,26 @@ export function createAcpxEngineExecutor(deps = {}) {
4320
4332
  existing) {
4321
4333
  // A matching warm entry closes through the warm store, which also
4322
4334
  // clears its idle timer and flushes its child stderr.
4323
- runtimeStopConfirmed = await closeWarmHandle({
4335
+ runtimeStopConfirmed = await withAdapterExecutionPhase(ctx, "close_session", () => closeWarmHandle({
4324
4336
  handles: warmHandles,
4325
4337
  key: prepared.sessionKey,
4326
4338
  entry: existing,
4327
4339
  reason: settlement.reason,
4328
4340
  discardPersistentState: settlement.discardPersistentState,
4329
- });
4341
+ }));
4330
4342
  return;
4331
4343
  }
4332
4344
  const onCloseError = settlement.recordCloseError || ctx.signal?.aborted
4333
4345
  ? (closeErr) => recordTeardownError("runtime-close", closeErr)
4334
4346
  : () => { };
4335
- await runtime
4347
+ await withAdapterExecutionPhase(ctx, "close_session", () => runtime
4336
4348
  .close({
4337
4349
  handle: settlement.handle,
4338
4350
  reason: settlement.reason,
4339
4351
  discardPersistentState: settlement.discardPersistentState,
4340
4352
  })
4341
4353
  .then(() => { runtimeStopConfirmed = true; })
4342
- .catch(onCloseError);
4354
+ .catch(onCloseError));
4343
4355
  if (settlement.dropWarmEntry && warmHandleMatches(existing, runtime, settlement.handle) && existing) {
4344
4356
  clearWarmHandleTimer(existing);
4345
4357
  warmHandles.delete(prepared.sessionKey);
@@ -4372,7 +4384,7 @@ export function createAcpxEngineExecutor(deps = {}) {
4372
4384
  const stopped = runtimeStopConfirmed || (!prepared.processSessionBridge && capturedProcessExited(processIdentitySink?.localProcess));
4373
4385
  try {
4374
4386
  if (stopped)
4375
- await ctx.onProviderStopped?.();
4387
+ await withAdapterExecutionPhase(ctx, "instruction_collection", () => ctx.onProviderStopped?.());
4376
4388
  }
4377
4389
  catch {
4378
4390
  // Match ACP's fail-soft teardown policy without describing this as
@@ -4380,12 +4392,15 @@ export function createAcpxEngineExecutor(deps = {}) {
4380
4392
  await recordTeardownError("instruction-collection", new Error("Instruction collection failed after provider stop. No instruction save is claimed."));
4381
4393
  }
4382
4394
  finally {
4383
- await runRuntimeSpan("sandbox.syncBack", async () => {
4395
+ await withAdapterExecutionPhase(ctx, "workspace_restore", () => runRuntimeSpan("sandbox.syncBack", async () => {
4384
4396
  const restoreOutcome = await syncBackManagedHome(prepared);
4385
4397
  if (!restoreOutcome.ok) {
4386
- workspaceRestoreFailureField = { workspaceRestoreFailure: restoreOutcome.code };
4398
+ workspaceRestoreFailureField = {
4399
+ workspaceRestoreFailure: restoreOutcome.code,
4400
+ ...(restoreOutcome.diagnostic ? { workspaceRestoreDiagnostic: restoreOutcome.diagnostic } : {}),
4401
+ };
4387
4402
  }
4388
- });
4403
+ }));
4389
4404
  }
4390
4405
  }),
4391
4406
  // The staging lease releases as the run's final act, AFTER the coordinator
@@ -4455,6 +4470,15 @@ export function createAcpxEngineExecutor(deps = {}) {
4455
4470
  } },
4456
4471
  };
4457
4472
  }
4473
+ // Preserve the policy resolved for this execution target. The server
4474
+ // cannot reconstruct sandbox defaults from the stored agent config.
4475
+ capturedResult = {
4476
+ ...capturedResult,
4477
+ resultJson: {
4478
+ ...capturedResult.resultJson,
4479
+ adapterExecutionTimeout: { ...prepared.timeoutResolution },
4480
+ },
4481
+ };
4458
4482
  // The sync-back settlement step runs before this reproduces the result
4459
4483
  // (settlement precedes reproduction), so a failed workspace restore is
4460
4484
  // already recorded by the time we get here. Merge it into `resultJson`