@getpaseo/server 0.1.81 → 0.1.82

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 (163) hide show
  1. package/dist/server/client/daemon-client.d.ts +2 -1
  2. package/dist/server/client/daemon-client.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client.js +29 -0
  4. package/dist/server/client/daemon-client.js.map +1 -1
  5. package/dist/server/server/agent/agent-manager.d.ts +9 -7
  6. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  7. package/dist/server/server/agent/agent-manager.js +78 -92
  8. package/dist/server/server/agent/agent-manager.js.map +1 -1
  9. package/dist/server/server/agent/agent-metadata-generator.js +1 -1
  10. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  11. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  12. package/dist/server/server/agent/agent-projections.js +4 -4
  13. package/dist/server/server/agent/agent-projections.js.map +1 -1
  14. package/dist/server/server/agent/agent-prompt.d.ts +2 -9
  15. package/dist/server/server/agent/agent-prompt.d.ts.map +1 -1
  16. package/dist/server/server/agent/agent-prompt.js +7 -18
  17. package/dist/server/server/agent/agent-prompt.js.map +1 -1
  18. package/dist/server/server/agent/agent-sdk-types.d.ts +13 -0
  19. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  20. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  21. package/dist/server/server/agent/agent-storage.d.ts +2 -7
  22. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  23. package/dist/server/server/agent/agent-storage.js +2 -16
  24. package/dist/server/server/agent/agent-storage.js.map +1 -1
  25. package/dist/server/server/agent/agent-timeline-store-types.d.ts +0 -4
  26. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -1
  27. package/dist/server/server/agent/agent-timeline-store.d.ts +0 -5
  28. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -1
  29. package/dist/server/server/agent/agent-timeline-store.js +0 -33
  30. package/dist/server/server/agent/agent-timeline-store.js.map +1 -1
  31. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  32. package/dist/server/server/agent/mcp-server.js +0 -9
  33. package/dist/server/server/agent/mcp-server.js.map +1 -1
  34. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  35. package/dist/server/server/agent/provider-launch-config.js +0 -1
  36. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  37. package/dist/server/server/agent/provider-manifest.d.ts +1 -1
  38. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  39. package/dist/server/server/agent/provider-registry.d.ts +2 -1
  40. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  41. package/dist/server/server/agent/provider-registry.js +5 -1
  42. package/dist/server/server/agent/provider-registry.js.map +1 -1
  43. package/dist/server/server/agent/provider-snapshot-manager.d.ts +2 -2
  44. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  45. package/dist/server/server/agent/provider-snapshot-manager.js +60 -26
  46. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  47. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  48. package/dist/server/server/agent/providers/acp-agent.js +3 -0
  49. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  50. package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
  51. package/dist/server/server/agent/providers/claude/agent.js +275 -85
  52. package/dist/server/server/agent/providers/claude/agent.js.map +1 -1
  53. package/dist/server/server/agent/providers/claude/rewind.d.ts +30 -0
  54. package/dist/server/server/agent/providers/claude/rewind.d.ts.map +1 -0
  55. package/dist/server/server/agent/providers/claude/rewind.js +30 -0
  56. package/dist/server/server/agent/providers/claude/rewind.js.map +1 -0
  57. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts +24 -0
  58. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts.map +1 -0
  59. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js +23 -0
  60. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js.map +1 -0
  61. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +168 -0
  62. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -1
  63. package/dist/server/server/agent/providers/codex/app-server-transport.js +48 -0
  64. package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -1
  65. package/dist/server/server/agent/providers/codex/rewind.d.ts +21 -0
  66. package/dist/server/server/agent/providers/codex/rewind.d.ts.map +1 -0
  67. package/dist/server/server/agent/providers/codex/rewind.js +46 -0
  68. package/dist/server/server/agent/providers/codex/rewind.js.map +1 -0
  69. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +5 -0
  70. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts.map +1 -1
  71. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +45 -0
  72. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js.map +1 -1
  73. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +1 -1
  74. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +11 -11
  76. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  77. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +32 -34
  78. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  79. package/dist/server/server/agent/providers/codex-app-server-agent.js +206 -60
  80. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  81. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  82. package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -0
  83. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  84. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +13 -0
  85. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -1
  86. package/dist/server/server/agent/providers/mock-load-test-agent.js +55 -1
  87. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -1
  88. package/dist/server/server/agent/providers/opencode/rewind.d.ts +18 -0
  89. package/dist/server/server/agent/providers/opencode/rewind.d.ts.map +1 -0
  90. package/dist/server/server/agent/providers/opencode/rewind.js +14 -0
  91. package/dist/server/server/agent/providers/opencode/rewind.js.map +1 -0
  92. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -1
  93. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +110 -2
  94. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -1
  95. package/dist/server/server/agent/providers/opencode-agent.d.ts +18 -0
  96. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  97. package/dist/server/server/agent/providers/opencode-agent.js +265 -38
  98. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  99. package/dist/server/server/agent/providers/pi/agent.d.ts +21 -1
  100. package/dist/server/server/agent/providers/pi/agent.d.ts.map +1 -1
  101. package/dist/server/server/agent/providers/pi/agent.js +355 -13
  102. package/dist/server/server/agent/providers/pi/agent.js.map +1 -1
  103. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +5 -1
  104. package/dist/server/server/agent/providers/pi/history-mapper.d.ts.map +1 -1
  105. package/dist/server/server/agent/providers/pi/history-mapper.js +3 -2
  106. package/dist/server/server/agent/providers/pi/history-mapper.js.map +1 -1
  107. package/dist/server/server/agent/providers/pi/rewind.d.ts +8 -0
  108. package/dist/server/server/agent/providers/pi/rewind.d.ts.map +1 -0
  109. package/dist/server/server/agent/providers/pi/rewind.js +8 -0
  110. package/dist/server/server/agent/providers/pi/rewind.js.map +1 -0
  111. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +10 -0
  112. package/dist/server/server/agent/providers/pi/rpc-types.d.ts.map +1 -1
  113. package/dist/server/server/agent/providers/pi/runtime.d.ts +2 -0
  114. package/dist/server/server/agent/providers/pi/runtime.d.ts.map +1 -1
  115. package/dist/server/server/agent/providers/pi/runtime.js +4 -0
  116. package/dist/server/server/agent/providers/pi/runtime.js.map +1 -1
  117. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +10 -0
  118. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts.map +1 -1
  119. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +49 -1
  120. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js.map +1 -1
  121. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +4 -1
  122. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  123. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +57 -1
  124. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -1
  125. package/dist/server/server/agent/rewind/rewind.d.ts +10 -0
  126. package/dist/server/server/agent/rewind/rewind.d.ts.map +1 -0
  127. package/dist/server/server/agent/rewind/rewind.js +29 -0
  128. package/dist/server/server/agent/rewind/rewind.js.map +1 -0
  129. package/dist/server/server/agent/rewind/test-rewind-session.d.ts +48 -0
  130. package/dist/server/server/agent/rewind/test-rewind-session.d.ts.map +1 -0
  131. package/dist/server/server/agent/rewind/test-rewind-session.js +88 -0
  132. package/dist/server/server/agent/rewind/test-rewind-session.js.map +1 -0
  133. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  134. package/dist/server/server/persistence-hooks.js +0 -2
  135. package/dist/server/server/persistence-hooks.js.map +1 -1
  136. package/dist/server/server/session.d.ts +2 -0
  137. package/dist/server/server/session.d.ts.map +1 -1
  138. package/dist/server/server/session.js +39 -9
  139. package/dist/server/server/session.js.map +1 -1
  140. package/dist/server/server/websocket-server.d.ts.map +1 -1
  141. package/dist/server/server/websocket-server.js +2 -0
  142. package/dist/server/server/websocket-server.js.map +1 -1
  143. package/dist/server/shared/messages.d.ts +281 -0
  144. package/dist/server/shared/messages.d.ts.map +1 -1
  145. package/dist/server/shared/messages.js +27 -0
  146. package/dist/server/shared/messages.js.map +1 -1
  147. package/dist/server/terminal/terminal.d.ts.map +1 -1
  148. package/dist/server/terminal/terminal.js +14 -0
  149. package/dist/server/terminal/terminal.js.map +1 -1
  150. package/dist/src/server/agent/agent-sdk-types.js.map +1 -1
  151. package/dist/src/server/agent/provider-launch-config.js +0 -1
  152. package/dist/src/server/agent/provider-launch-config.js.map +1 -1
  153. package/dist/src/shared/messages.js +27 -0
  154. package/dist/src/shared/messages.js.map +1 -1
  155. package/package.json +3 -3
  156. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +0 -9
  157. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +0 -1
  158. package/dist/server/server/agent/providers/codex-rollout-timeline.js +0 -555
  159. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +0 -1
  160. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +0 -10
  161. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts.map +0 -1
  162. package/dist/server/server/agent/providers/pi/session-descriptor.js +0 -300
  163. package/dist/server/server/agent/providers/pi/session-descriptor.js.map +0 -1
@@ -0,0 +1,30 @@
1
+ import { type Query } from "@anthropic-ai/claude-agent-sdk";
2
+ export interface ClaudeRewindSdk {
3
+ forkSession(sessionId: string, options: {
4
+ upToMessageId: string;
5
+ }): Promise<{
6
+ sessionId: string;
7
+ }>;
8
+ }
9
+ export declare const realClaudeRewindSdk: ClaudeRewindSdk;
10
+ export declare function revertClaudeConversation(input: {
11
+ sdk: ClaudeRewindSdk;
12
+ sessionId: string | null;
13
+ messageId: string;
14
+ resolveMessageId?: (messageId: string) => string | Promise<string>;
15
+ setSessionId: (sessionId: string) => void;
16
+ }): Promise<void>;
17
+ export declare function revertClaudeFiles(input: {
18
+ query: Query;
19
+ messageId: string;
20
+ resolveMessageId?: (messageId: string) => string | Promise<string>;
21
+ }): Promise<void>;
22
+ export declare function revertClaudeConversationAndFiles(input: {
23
+ sdk: ClaudeRewindSdk;
24
+ query: Query;
25
+ sessionId: string | null;
26
+ messageId: string;
27
+ resolveMessageId?: (messageId: string) => string | Promise<string>;
28
+ setSessionId: (sessionId: string) => void;
29
+ }): Promise<void>;
30
+ //# sourceMappingURL=rewind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/claude/rewind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE9F,MAAM,WAAW,eAAe;IAC9B,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,mBAAmB,EAAE,eAEjC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,CAShB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB;AAED,wBAAsB,gCAAgC,CAAC,KAAK,EAAE;IAC5D,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB"}
@@ -0,0 +1,30 @@
1
+ import { forkSession as claudeForkSession } from "@anthropic-ai/claude-agent-sdk";
2
+ export const realClaudeRewindSdk = {
3
+ forkSession: claudeForkSession,
4
+ };
5
+ export async function revertClaudeConversation(input) {
6
+ if (!input.sessionId) {
7
+ throw new Error("Claude session is not ready for rewind");
8
+ }
9
+ const messageId = (await input.resolveMessageId?.(input.messageId)) ?? input.messageId;
10
+ const fork = await input.sdk.forkSession(input.sessionId, {
11
+ upToMessageId: messageId,
12
+ });
13
+ input.setSessionId(fork.sessionId);
14
+ }
15
+ export async function revertClaudeFiles(input) {
16
+ const messageId = (await input.resolveMessageId?.(input.messageId)) ?? input.messageId;
17
+ const result = await input.query.rewindFiles(messageId, { dryRun: false });
18
+ if (!result.canRewind) {
19
+ throw new Error(result.error ?? `No file checkpoint found for message ${messageId}`);
20
+ }
21
+ }
22
+ export async function revertClaudeConversationAndFiles(input) {
23
+ await revertClaudeFiles({
24
+ query: input.query,
25
+ messageId: input.messageId,
26
+ resolveMessageId: input.resolveMessageId,
27
+ });
28
+ await revertClaudeConversation(input);
29
+ }
30
+ //# sourceMappingURL=rewind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/claude/rewind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAc,MAAM,gCAAgC,CAAC;AAS9F,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAM9C;IACC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE;QACxD,aAAa,EAAE,SAAS;KACzB,CAAC,CAAC;IACH,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAIvC;IACC,MAAM,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wCAAwC,SAAS,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,KAOtD;IACC,MAAM,iBAAiB,CAAC;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;KACzC,CAAC,CAAC;IACH,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ClaudeRewindSdk } from "./rewind.js";
2
+ export declare class FakeClaudeSdk implements ClaudeRewindSdk {
3
+ readonly recordedForks: Array<{
4
+ upToMessageId: string;
5
+ }>;
6
+ readonly recordedFileRewinds: Array<{
7
+ userMessageId: string;
8
+ }>;
9
+ private nextSessionId;
10
+ setNextSessionId(sessionId: string): void;
11
+ forkSession(_sessionId: string, options: {
12
+ upToMessageId: string;
13
+ }): Promise<{
14
+ sessionId: string;
15
+ }>;
16
+ createQuery(): {
17
+ rewindFiles: (userMessageId: string, options?: {
18
+ dryRun?: boolean;
19
+ }) => Promise<{
20
+ canRewind: boolean;
21
+ }>;
22
+ };
23
+ }
24
+ //# sourceMappingURL=test-rewind-claude-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-rewind-claude-sdk.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/claude/test-rewind-claude-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAEpE,OAAO,CAAC,aAAa,CAAsB;IAE3C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInC,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAKjC,WAAW,IAAI;QACb,WAAW,EAAE,CACX,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,OAAO,CAAA;SAAE,KAC3B,OAAO,CAAC;YACX,SAAS,EAAE,OAAO,CAAC;SACpB,CAAC,CAAC;KACJ;CAQF"}
@@ -0,0 +1,23 @@
1
+ export class FakeClaudeSdk {
2
+ constructor() {
3
+ this.recordedForks = [];
4
+ this.recordedFileRewinds = [];
5
+ this.nextSessionId = "forked-session-1";
6
+ }
7
+ setNextSessionId(sessionId) {
8
+ this.nextSessionId = sessionId;
9
+ }
10
+ async forkSession(_sessionId, options) {
11
+ this.recordedForks.push({ upToMessageId: options.upToMessageId });
12
+ return { sessionId: this.nextSessionId };
13
+ }
14
+ createQuery() {
15
+ return {
16
+ rewindFiles: async (userMessageId) => {
17
+ this.recordedFileRewinds.push({ userMessageId });
18
+ return { canRewind: true };
19
+ },
20
+ };
21
+ }
22
+ }
23
+ //# sourceMappingURL=test-rewind-claude-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-rewind-claude-sdk.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/claude/test-rewind-claude-sdk.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAA1B;QACW,kBAAa,GAAqC,EAAE,CAAC;QACrD,wBAAmB,GAAqC,EAAE,CAAC;QAE5D,kBAAa,GAAG,kBAAkB,CAAC;IA6B7C,CAAC;IA3BC,gBAAgB,CAAC,SAAiB;QAChC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,OAAkC;QAElC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,WAAW;QAQT,OAAO;YACL,WAAW,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;gBAC3C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,7 +1,173 @@
1
1
  import type { ChildProcessWithoutNullStreams } from "node:child_process";
2
2
  import type { Logger } from "pino";
3
+ import { z } from "zod";
3
4
  type RequestHandler = (params: unknown) => unknown;
4
5
  type NotificationHandler = (method: string, params: unknown) => void;
6
+ export interface CodexThreadForkParams {
7
+ threadId: string;
8
+ path?: string | null;
9
+ model?: string | null;
10
+ modelProvider?: string | null;
11
+ serviceTier?: string | null;
12
+ cwd?: string | null;
13
+ runtimeWorkspaceRoots?: string[] | null;
14
+ approvalPolicy?: unknown;
15
+ approvalsReviewer?: unknown;
16
+ sandbox?: unknown;
17
+ permissions?: string | null;
18
+ config?: Record<string, unknown> | null;
19
+ baseInstructions?: string | null;
20
+ developerInstructions?: string | null;
21
+ ephemeral?: boolean;
22
+ threadSource?: unknown;
23
+ excludeTurns?: boolean;
24
+ persistExtendedHistory?: boolean;
25
+ }
26
+ declare const CodexThreadForkResponseSchema: z.ZodObject<{
27
+ thread: z.ZodObject<{
28
+ id: z.ZodString;
29
+ sessionId: z.ZodOptional<z.ZodString>;
30
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
32
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
33
+ id: z.ZodString;
34
+ sessionId: z.ZodOptional<z.ZodString>;
35
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
37
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
38
+ id: z.ZodString;
39
+ sessionId: z.ZodOptional<z.ZodString>;
40
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
41
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
42
+ }, z.ZodTypeAny, "passthrough">>;
43
+ model: z.ZodString;
44
+ modelProvider: z.ZodString;
45
+ serviceTier: z.ZodNullable<z.ZodString>;
46
+ cwd: z.ZodString;
47
+ runtimeWorkspaceRoots: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
48
+ instructionSources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
49
+ approvalPolicy: z.ZodUnknown;
50
+ approvalsReviewer: z.ZodUnknown;
51
+ sandbox: z.ZodUnknown;
52
+ activePermissionProfile: z.ZodOptional<z.ZodUnknown>;
53
+ reasoningEffort: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
55
+ thread: z.ZodObject<{
56
+ id: z.ZodString;
57
+ sessionId: z.ZodOptional<z.ZodString>;
58
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
59
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
60
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
61
+ id: z.ZodString;
62
+ sessionId: z.ZodOptional<z.ZodString>;
63
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
65
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
66
+ id: z.ZodString;
67
+ sessionId: z.ZodOptional<z.ZodString>;
68
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
69
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
70
+ }, z.ZodTypeAny, "passthrough">>;
71
+ model: z.ZodString;
72
+ modelProvider: z.ZodString;
73
+ serviceTier: z.ZodNullable<z.ZodString>;
74
+ cwd: z.ZodString;
75
+ runtimeWorkspaceRoots: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
76
+ instructionSources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
77
+ approvalPolicy: z.ZodUnknown;
78
+ approvalsReviewer: z.ZodUnknown;
79
+ sandbox: z.ZodUnknown;
80
+ activePermissionProfile: z.ZodOptional<z.ZodUnknown>;
81
+ reasoningEffort: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
83
+ thread: z.ZodObject<{
84
+ id: z.ZodString;
85
+ sessionId: z.ZodOptional<z.ZodString>;
86
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
87
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
88
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
89
+ id: z.ZodString;
90
+ sessionId: z.ZodOptional<z.ZodString>;
91
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
93
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
94
+ id: z.ZodString;
95
+ sessionId: z.ZodOptional<z.ZodString>;
96
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
97
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
98
+ }, z.ZodTypeAny, "passthrough">>;
99
+ model: z.ZodString;
100
+ modelProvider: z.ZodString;
101
+ serviceTier: z.ZodNullable<z.ZodString>;
102
+ cwd: z.ZodString;
103
+ runtimeWorkspaceRoots: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
104
+ instructionSources: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
105
+ approvalPolicy: z.ZodUnknown;
106
+ approvalsReviewer: z.ZodUnknown;
107
+ sandbox: z.ZodUnknown;
108
+ activePermissionProfile: z.ZodOptional<z.ZodUnknown>;
109
+ reasoningEffort: z.ZodOptional<z.ZodNullable<z.ZodString>>;
110
+ }, z.ZodTypeAny, "passthrough">>;
111
+ export type CodexThreadForkResponse = z.infer<typeof CodexThreadForkResponseSchema>;
112
+ export declare function parseCodexThreadForkResponse(response: unknown): CodexThreadForkResponse;
113
+ export interface CodexThreadRollbackParams {
114
+ threadId: string;
115
+ numTurns: number;
116
+ }
117
+ declare const CodexThreadRollbackResponseSchema: z.ZodObject<{
118
+ thread: z.ZodObject<{
119
+ id: z.ZodString;
120
+ sessionId: z.ZodOptional<z.ZodString>;
121
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
123
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
124
+ id: z.ZodString;
125
+ sessionId: z.ZodOptional<z.ZodString>;
126
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
127
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
128
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
129
+ id: z.ZodString;
130
+ sessionId: z.ZodOptional<z.ZodString>;
131
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
132
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
133
+ }, z.ZodTypeAny, "passthrough">>;
134
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
135
+ thread: z.ZodObject<{
136
+ id: z.ZodString;
137
+ sessionId: z.ZodOptional<z.ZodString>;
138
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
139
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
140
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
141
+ id: z.ZodString;
142
+ sessionId: z.ZodOptional<z.ZodString>;
143
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
144
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
145
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
146
+ id: z.ZodString;
147
+ sessionId: z.ZodOptional<z.ZodString>;
148
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
149
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
150
+ }, z.ZodTypeAny, "passthrough">>;
151
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
152
+ thread: z.ZodObject<{
153
+ id: z.ZodString;
154
+ sessionId: z.ZodOptional<z.ZodString>;
155
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
156
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
157
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
158
+ id: z.ZodString;
159
+ sessionId: z.ZodOptional<z.ZodString>;
160
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
162
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
163
+ id: z.ZodString;
164
+ sessionId: z.ZodOptional<z.ZodString>;
165
+ forkedFromId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
166
+ turns: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
167
+ }, z.ZodTypeAny, "passthrough">>;
168
+ }, z.ZodTypeAny, "passthrough">>;
169
+ export type CodexThreadRollbackResponse = z.infer<typeof CodexThreadRollbackResponseSchema>;
170
+ export declare function parseCodexThreadRollbackResponse(response: unknown): CodexThreadRollbackResponse;
5
171
  export interface CodexAppServerTraceContext {
6
172
  agentId?: string;
7
173
  sessionId?: string;
@@ -22,6 +188,8 @@ export declare class CodexAppServerClient {
22
188
  setNotificationHandler(handler: NotificationHandler): void;
23
189
  setRequestHandler(method: string, handler: RequestHandler): void;
24
190
  request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown>;
191
+ forkThread(params: CodexThreadForkParams): Promise<CodexThreadForkResponse>;
192
+ rollbackThread(params: CodexThreadRollbackParams): Promise<CodexThreadRollbackResponse>;
25
193
  notify(method: string, params?: unknown): void;
26
194
  dispose(): Promise<void>;
27
195
  private writeJsonRpcResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"app-server-transport.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAgCnC,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AACnD,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAErE,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD,qBAAa,oBAAoB;IAU7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAXlC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;gBAGP,KAAK,EAAE,8BAA8B,EACrC,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAM,0BAAuC;IAyCjF,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,SAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3F,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B,OAAO,CAAC,oBAAoB;YAWd,UAAU;IAqDxB,OAAO,CAAC,aAAa;CAetB"}
1
+ {"version":3,"file":"app-server-transport.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,51 @@
1
1
  import readline from "node:readline";
2
+ import { z } from "zod";
2
3
  import { terminateWithTreeKill } from "../../../../utils/tree-kill.js";
3
4
  const DEFAULT_TIMEOUT_MS = 14 * 24 * 60 * 60 * 1000;
4
5
  const APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS = 2000;
5
6
  const APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS = 1000;
6
7
  const STDERR_BUFFER_LIMIT = 8192;
8
+ const CodexThreadForkResponseSchema = z
9
+ .object({
10
+ thread: z
11
+ .object({
12
+ id: z.string(),
13
+ sessionId: z.string().optional(),
14
+ forkedFromId: z.string().nullable().optional(),
15
+ turns: z.array(z.unknown()).optional(),
16
+ })
17
+ .passthrough(),
18
+ model: z.string(),
19
+ modelProvider: z.string(),
20
+ serviceTier: z.string().nullable(),
21
+ cwd: z.string(),
22
+ runtimeWorkspaceRoots: z.array(z.string()).optional().default([]),
23
+ instructionSources: z.array(z.string()).optional().default([]),
24
+ approvalPolicy: z.unknown(),
25
+ approvalsReviewer: z.unknown(),
26
+ sandbox: z.unknown(),
27
+ activePermissionProfile: z.unknown().optional(),
28
+ reasoningEffort: z.string().nullable().optional(),
29
+ })
30
+ .passthrough();
31
+ export function parseCodexThreadForkResponse(response) {
32
+ return CodexThreadForkResponseSchema.parse(response);
33
+ }
34
+ const CodexThreadRollbackResponseSchema = z
35
+ .object({
36
+ thread: z
37
+ .object({
38
+ id: z.string(),
39
+ sessionId: z.string().optional(),
40
+ forkedFromId: z.string().nullable().optional(),
41
+ turns: z.array(z.unknown()).optional(),
42
+ })
43
+ .passthrough(),
44
+ })
45
+ .passthrough();
46
+ export function parseCodexThreadRollbackResponse(response) {
47
+ return CodexThreadRollbackResponseSchema.parse(response);
48
+ }
7
49
  function isRecord(value) {
8
50
  return value != null && typeof value === "object" && !Array.isArray(value);
9
51
  }
@@ -105,6 +147,12 @@ export class CodexAppServerClient {
105
147
  this.pending.set(id, { resolve, reject, timer });
106
148
  });
107
149
  }
150
+ async forkThread(params) {
151
+ return parseCodexThreadForkResponse(await this.request("thread/fork", params));
152
+ }
153
+ async rollbackThread(params) {
154
+ return parseCodexThreadRollbackResponse(await this.request("thread/rollback", params));
155
+ }
108
156
  notify(method, params) {
109
157
  if (this.disposed) {
110
158
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"app-server-transport.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-server-transport.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CodexThreadForkParams, CodexThreadForkResponse, CodexThreadRollbackParams, CodexThreadRollbackResponse } from "./app-server-transport.js";
2
+ export interface CodexRewindClient {
3
+ forkThread?(params: CodexThreadForkParams): Promise<CodexThreadForkResponse>;
4
+ rollbackThread?(params: CodexThreadRollbackParams): Promise<CodexThreadRollbackResponse>;
5
+ request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown>;
6
+ }
7
+ export interface CodexUserMessageTurnIndex {
8
+ resolve(messageId: string): number | null;
9
+ count(): number;
10
+ }
11
+ export declare function revertCodexConversation(input: {
12
+ client: CodexRewindClient;
13
+ threadId: string | null;
14
+ messageId: string;
15
+ cwd?: string | null;
16
+ model?: string | null;
17
+ serviceTier?: string | null;
18
+ userMessageTurns: CodexUserMessageTurnIndex;
19
+ setThreadId: (threadId: string) => void | Promise<void>;
20
+ }): Promise<void>;
21
+ //# sourceMappingURL=rewind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/rewind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AAMnC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E,cAAc,CAAC,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACzF,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjF;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,MAAM,CAAC;CACjB;AAsBD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB"}
@@ -0,0 +1,46 @@
1
+ import { parseCodexThreadForkResponse, parseCodexThreadRollbackResponse, } from "./app-server-transport.js";
2
+ async function forkCodexThread(client, params) {
3
+ if (client.forkThread) {
4
+ return client.forkThread(params);
5
+ }
6
+ return parseCodexThreadForkResponse(await client.request("thread/fork", params));
7
+ }
8
+ async function rollbackCodexThread(client, params) {
9
+ if (client.rollbackThread) {
10
+ return client.rollbackThread(params);
11
+ }
12
+ return parseCodexThreadRollbackResponse(await client.request("thread/rollback", params));
13
+ }
14
+ export async function revertCodexConversation(input) {
15
+ if (!input.threadId) {
16
+ throw new Error("Codex thread is not ready for rewind");
17
+ }
18
+ const targetTurnIndex = input.userMessageTurns.resolve(input.messageId);
19
+ if (targetTurnIndex === null) {
20
+ throw new Error(`Codex could not find user message ${input.messageId} in the current thread`);
21
+ }
22
+ const currentUserTurnCount = input.userMessageTurns.count();
23
+ const numTurns = currentUserTurnCount - targetTurnIndex;
24
+ if (numTurns < 0) {
25
+ throw new Error(`Codex user message ${input.messageId} is outside the current thread`);
26
+ }
27
+ // Fork is non-destructive: the old thread file stays on disk and remains
28
+ // recoverable with `codex resume <old-uuid>` if the rewind target was wrong.
29
+ const forked = await forkCodexThread(input.client, {
30
+ threadId: input.threadId,
31
+ cwd: input.cwd ?? null,
32
+ model: input.model ?? null,
33
+ serviceTier: input.serviceTier ?? null,
34
+ excludeTurns: false,
35
+ persistExtendedHistory: true,
36
+ });
37
+ const forkedThreadId = forked.thread.id;
38
+ // Codex rollback is chat-only by design. File edits from rewound turns stay
39
+ // on disk; a future file primitive would be a separate capability.
40
+ const rolledBack = await rollbackCodexThread(input.client, {
41
+ threadId: forkedThreadId,
42
+ numTurns,
43
+ });
44
+ await input.setThreadId(rolledBack.thread.id);
45
+ }
46
+ //# sourceMappingURL=rewind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/rewind.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AAanC,KAAK,UAAU,eAAe,CAC5B,MAAyB,EACzB,MAA6B;IAE7B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,4BAA4B,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAyB,EACzB,MAAiC;IAEjC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,gCAAgC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAS7C;IACC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,SAAS,wBAAwB,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,oBAAoB,GAAG,eAAe,CAAC;IACxD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,SAAS,gCAAgC,CAAC,CAAC;IACzF,CAAC;IAED,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE;QACjD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;QACtC,YAAY,EAAE,KAAK;QACnB,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAExC,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE;QACzD,QAAQ,EAAE,cAAc;QACxB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -10,8 +10,13 @@ type CodexAppServerChildProcess = ChildProcessWithoutNullStreams & {
10
10
  };
11
11
  export interface FakeCodexAppServer {
12
12
  readonly child: CodexAppServerChildProcess;
13
+ readonly recordedRollbacks: JsonObject[];
13
14
  assertNoErrors(): void;
14
15
  waitForTurnStart(): Promise<JsonObject>;
16
+ nextResponse(): Promise<string>;
17
+ completeTurn(params?: {
18
+ threadId?: string;
19
+ }): void;
15
20
  requestCommandApproval(params: {
16
21
  itemId: string;
17
22
  threadId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fake-app-server.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/agent/providers/codex/test-utils/fake-app-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAElF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,yBAAyB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAC9D,KAAK,0BAA0B,GAAG,8BAA8B,GAAG;IACjE,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,sBAAsB,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;IACT,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,wBAAgB,gCAAgC,IAAI,0BAA0B,CAa7E;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAM,GACvD,kBAAkB,CA2JpB;AASD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAAC,CAetE"}
1
+ {"version":3,"file":"fake-app-server.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/agent/providers/codex/test-utils/fake-app-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAElF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,yBAAyB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAC9D,KAAK,0BAA0B,GAAG,8BAA8B,GAAG;IACjE,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC;IACzC,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnD,sBAAsB,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;IACT,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,wBAAgB,gCAAgC,IAAI,0BAA0B,CAa7E;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAM,GACvD,kBAAkB,CA0MpB;AASD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAAC,CAetE"}
@@ -16,6 +16,7 @@ export function createCodexAppServerChildProcess() {
16
16
  }
17
17
  export function createFakeCodexAppServer(handlers = {}) {
18
18
  const child = createCodexAppServerChildProcess();
19
+ const recordedRollbacks = [];
19
20
  const responseHandlers = {
20
21
  initialize: () => ({}),
21
22
  "collaborationMode/list": () => ({ data: [] }),
@@ -35,6 +36,38 @@ export function createFakeCodexAppServer(handlers = {}) {
35
36
  "thread/loaded/list": () => ({ data: [] }),
36
37
  "thread/resume": () => ({}),
37
38
  "turn/start": () => ({}),
39
+ "thread/fork": (params) => ({
40
+ thread: {
41
+ id: "forked-thread",
42
+ sessionId: "forked-session",
43
+ forkedFromId: toJsonObject(params).threadId,
44
+ turns: [],
45
+ },
46
+ model: "gpt-5.4",
47
+ modelProvider: "openai",
48
+ serviceTier: null,
49
+ cwd: "/workspace/project",
50
+ runtimeWorkspaceRoots: [],
51
+ instructionSources: [],
52
+ approvalPolicy: "on-request",
53
+ approvalsReviewer: null,
54
+ sandbox: { type: "workspaceWrite", networkAccess: false },
55
+ activePermissionProfile: null,
56
+ reasoningEffort: null,
57
+ }),
58
+ "thread/rollback": (params) => {
59
+ const rollback = toJsonObject(params);
60
+ recordedRollbacks.push(rollback);
61
+ return {
62
+ thread: {
63
+ id: typeof rollback.threadId === "string" ? rollback.threadId : "forked-thread",
64
+ sessionId: "forked-session",
65
+ forkedFromId: "thread-1",
66
+ turns: [],
67
+ },
68
+ };
69
+ },
70
+ "thread/read": () => ({ thread: { turns: [] } }),
38
71
  ...handlers,
39
72
  };
40
73
  const messages = [];
@@ -117,6 +150,7 @@ export function createFakeCodexAppServer(handlers = {}) {
117
150
  }
118
151
  return {
119
152
  child,
153
+ recordedRollbacks,
120
154
  assertNoErrors() {
121
155
  if (errors.length > 0) {
122
156
  throw errors[0];
@@ -126,6 +160,17 @@ export function createFakeCodexAppServer(handlers = {}) {
126
160
  const message = await waitForMessage((candidate) => candidate.method === "turn/start", "turn start request");
127
161
  return toJsonObject(message.params);
128
162
  },
163
+ nextResponse() {
164
+ return new Promise((resolve) => {
165
+ child.stdin.once("data", (chunk) => resolve(chunk.toString()));
166
+ });
167
+ },
168
+ completeTurn(params = {}) {
169
+ child.stdout.write(`${JSON.stringify({
170
+ method: "turn/completed",
171
+ params: { threadId: params.threadId ?? "thread-1", turn: { status: "completed" } },
172
+ })}\n`);
173
+ },
129
174
  requestCommandApproval(params) {
130
175
  const requestId = nextServerRequestId;
131
176
  nextServerRequestId += 1;