@openclaw/codex 2026.9.6 → 2026.9.7

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 (158) hide show
  1. package/README.md +2 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/.setup/{account-usage-runtime-Eem_WGqY.mjs → account-usage-runtime-DFhbh1zz.mjs} +5 -5
  4. package/dist/.setup/{apply-DDOi8uNx.mjs → apply-D3GcSoSa.mjs} +22 -36
  5. package/dist/.setup/{attempt-client-cleanup-CEv1cKwF.mjs → attempt-client-cleanup-DOP-cW5j.mjs} +128 -37
  6. package/dist/.setup/attempt-workspace-context-C5HigshI.mjs +164 -0
  7. package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
  8. package/dist/.setup/{auth-cache-key-B2mpaI9D.mjs → auth-cache-key-Dbvq-QgB.mjs} +36 -34
  9. package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
  10. package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
  11. package/dist/.setup/{binding-connection-ThoatDcb.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
  12. package/dist/.setup/{binding-connection.runtime-yoHrABt-.mjs → binding-connection.runtime-6TpgD1M6.mjs} +4 -4
  13. package/dist/.setup/{bounded-turn-B2HScEgT.mjs → bounded-turn-CbjoN2OW.mjs} +15 -18
  14. package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
  15. package/dist/.setup/{build-state-C7EnDVgr.mjs → build-state-Da1_z0kd.mjs} +1 -1
  16. package/dist/.setup/{capabilities-CDXOOFdZ.mjs → capabilities-B3WEZl4e.mjs} +2 -10
  17. package/dist/.setup/{client-Cs08OXVQ.mjs → client-N0JpgSzF.mjs} +138 -399
  18. package/dist/.setup/{client-catalog-response-BMgt_4q4.mjs → client-catalog-response-5HHLdcde.mjs} +1 -1
  19. package/dist/.setup/{command-dispatch-B4JuOsOk.mjs → command-dispatch-BeAoaovI.mjs} +5 -8
  20. package/dist/.setup/{command-formatters-Bmqvr9tO.mjs → command-formatters-R3ckE3Co.mjs} +29 -61
  21. package/dist/.setup/{command-handlers-DW7Lx9oH.mjs → command-handlers-ylTMS00z.mjs} +222 -343
  22. package/dist/.setup/{command-rpc-DixIj3HW.mjs → command-rpc-CGJGUQ6Y.mjs} +15 -18
  23. package/dist/.setup/compact-C2WamavS.mjs +776 -0
  24. package/dist/.setup/{config-BoTP_mrL.mjs → config-DKhXquav.mjs} +26 -28
  25. package/dist/.setup/{config-options-BvaRs51b.mjs → config-options-CzyWLTJt.mjs} +24 -37
  26. package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
  27. package/dist/.setup/{config-runtime-C8Rw1m1m.mjs → config-runtime-C0NbLms1.mjs} +2 -2
  28. package/dist/.setup/{config-security-BEReZ6go.mjs → config-security-CE-FcGw9.mjs} +32 -111
  29. package/dist/.setup/{config-utils-DujwEnhg.mjs → config-utils-D0CXecki.mjs} +3 -13
  30. package/dist/.setup/context-engine-projection-PezSESth.mjs +387 -0
  31. package/dist/.setup/{conversation-binding-DP-gMrBP.mjs → conversation-binding-3Min8qvP.mjs} +67 -90
  32. package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
  33. package/dist/.setup/{conversation-control-uK9Jomlc.mjs → conversation-control-CEP8X5JC.mjs} +8 -8
  34. package/dist/.setup/{cyber-failover-DYwbmf1o.mjs → cyber-failover-XV0nNRZu.mjs} +1 -1
  35. package/dist/.setup/{cyber-failover-notice-e9G3J9-e.mjs → cyber-failover-notice-RNpGpTyP.mjs} +1 -1
  36. package/dist/.setup/{dynamic-tools-BDXl-8Cw.mjs → dynamic-tools-DzlsLUuS.mjs} +2305 -2606
  37. package/dist/.setup/{effective-mcp-catalog-CvnvnGIe.mjs → effective-mcp-catalog-CxUtC-xG.mjs} +8 -17
  38. package/dist/.setup/{ephemeral-turn-poidXgek.mjs → ephemeral-turn-CDsPJOa2.mjs} +3 -3
  39. package/dist/.setup/event-projector-assistant-message-CigreO4K.mjs +69 -0
  40. package/dist/.setup/{event-projector-usage-CnBS8Wa3.mjs → event-projector-usage-03R0I2dM.mjs} +3 -25
  41. package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
  42. package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
  43. package/dist/.setup/{inference-context-D96l9-ew.mjs → inference-context-D-9gWlTR.mjs} +16 -18
  44. package/dist/.setup/inference-dispatch-CMZtjQyz.mjs +359 -0
  45. package/dist/.setup/inference-metadata-CgIf7sOx.mjs +81 -0
  46. package/dist/.setup/{inference-proxy-b-aJMSxm.mjs → inference-proxy-DhcXOgUE.mjs} +174 -214
  47. package/dist/.setup/{isolated-completion-BIZFhTNG.mjs → isolated-completion-Dm3PzxJk.mjs} +9 -12
  48. package/dist/.setup/{managed-binary-BnshlFag.mjs → managed-binary-kiWRhNRE.mjs} +8 -12
  49. package/dist/.setup/{model-catalog-CfXJf9Ay.mjs → model-catalog-PAuZgJC6.mjs} +11 -10
  50. package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
  51. package/dist/.setup/{models-KnqBv0hE.mjs → models-DHXZtVVk.mjs} +9 -18
  52. package/dist/.setup/{native-auth-rWbGbMn3.mjs → native-auth-CuG53tu4.mjs} +4 -4
  53. package/dist/.setup/{native-execution-policy-umd0tgh4.mjs → native-execution-policy-BxZJy5mP.mjs} +5 -30
  54. package/dist/.setup/{native-subagent-monitor-D3filLY2.mjs → native-subagent-monitor-Dpsmf2wz.mjs} +4395 -3609
  55. package/dist/.setup/native-subagent-pending-assignments-DwkCzLvD.mjs +203 -0
  56. package/dist/.setup/native-task-assignments-DMQ0g3hu.mjs +194 -0
  57. package/dist/.setup/{node-cli-sessions-r3avj02l.mjs → node-cli-sessions-HC4W6FLI.mjs} +19 -49
  58. package/dist/.setup/{node-exec-server.runtime-BDwWXVpK.mjs → node-exec-server.runtime-BgBfWQqo.mjs} +3 -6
  59. package/dist/.setup/{plan-CN3VwfNU.mjs → plan-Y-QIvrKB.mjs} +49 -92
  60. package/dist/.setup/{plugin-activation-DT3MNtqj.mjs → plugin-activation-cNHRfaxU.mjs} +8 -36
  61. package/dist/.setup/{plugin-app-cache-key-B2CsSdnV.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +6 -23
  62. package/dist/.setup/{plugin-inventory-BoRei8Z4.mjs → plugin-inventory-Cky2XJUw.mjs} +21 -21
  63. package/dist/.setup/{plugin-marketplace-discovery-CDOi8IFs.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +18 -24
  64. package/dist/.setup/{plugin-metadata-cache-Ctmo83k_.mjs → plugin-metadata-cache-DsjsL1dr.mjs} +115 -175
  65. package/dist/.setup/{provider-BOsxQHOM.mjs → provider-DH8NSzGt.mjs} +11 -14
  66. package/dist/.setup/{provider-capabilities-BfE88FZ5.mjs → provider-capabilities-CAxoF-X1.mjs} +13 -18
  67. package/dist/.setup/{rate-limits-CMU3DUD0.mjs → rate-limits-B7-X2TgG.mjs} +9 -31
  68. package/dist/.setup/{request-D2L0zMrq.mjs → request-BHZ1nz8d.mjs} +7 -6
  69. package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
  70. package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
  71. package/dist/.setup/{run-attempt-BHu11r7h.mjs → run-attempt-D8RZUOzY.mjs} +1035 -1023
  72. package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
  73. package/dist/.setup/{runtime-artifact-CLZ8udh-.mjs → runtime-artifact-DDQ-HGXf.mjs} +16 -4
  74. package/dist/.setup/runtime-artifact-connection-D68qQn1m.mjs +78 -0
  75. package/dist/.setup/sandbox-guard-DjCz2eOw.mjs +126 -0
  76. package/dist/.setup/scope-DOC1Xjc8.mjs +6 -0
  77. package/dist/.setup/session-binding-DGCYAfvD.mjs +443 -0
  78. package/dist/.setup/{session-binding-record-BGoz8wOK.mjs → session-binding-record-Oe9L-CNY.mjs} +52 -130
  79. package/dist/.setup/{session-binding-sidecars-BlB5EvIS.mjs → session-binding-sidecars-jo6H8dFr.mjs} +196 -17
  80. package/dist/.setup/{session-catalog-Pno1xGcl.mjs → session-catalog-4sCdv5qx.mjs} +170 -324
  81. package/dist/.setup/{session-catalog-adoption-BI6UTDZT.mjs → session-catalog-adoption-BU_pHWG7.mjs} +7 -6
  82. package/dist/.setup/{session-catalog-archive-lHBqzhaO.mjs → session-catalog-archive-spHfihri.mjs} +6 -6
  83. package/dist/.setup/session-catalog-events-DePDzzjc.mjs +139 -0
  84. package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
  85. package/dist/.setup/{session-catalog-index-B9_VQIUz.mjs → session-catalog-index-CZvDzC6z.mjs} +126 -122
  86. package/dist/.setup/{session-catalog-index-order-hcdz07yN.mjs → session-catalog-index-order-BcQpHks3.mjs} +1 -1
  87. package/dist/.setup/{session-catalog-index-state-Dgh8ORJm.mjs → session-catalog-index-state-TeO7EyO-.mjs} +3 -2
  88. package/dist/.setup/session-catalog-limits-DDxOsQeC.mjs +14 -0
  89. package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +170 -0
  90. package/dist/.setup/session-catalog-native-projection-DjhwGL6x.mjs +178 -0
  91. package/dist/.setup/{session-catalog-node-adoption-ITddWx_X.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +10 -27
  92. package/dist/.setup/{session-catalog-node-continue-6g6qi4A9.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +8 -10
  93. package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
  94. package/dist/.setup/{session-catalog-native-projection-DowriLid.mjs → session-catalog-parsing-CPGaPYr-.mjs} +11 -194
  95. package/dist/.setup/{session-catalog-projection-zK_PUsiE.mjs → session-catalog-projection-Cr5qP5Dj.mjs} +6 -4
  96. package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
  97. package/dist/.setup/{session-cli-irrD-uo7.mjs → session-cli-Cn_nCqfq.mjs} +9 -22
  98. package/dist/.setup/{session-history-BrqhSCf9.mjs → session-history-D83lJWHG.mjs} +4 -6
  99. package/dist/.setup/{session-history-import-D-3wAgOP.mjs → session-history-import-WhX-X33a.mjs} +7 -10
  100. package/dist/.setup/session-history-read-Ov3StuL4.mjs +133 -0
  101. package/dist/.setup/{session-history.worker-CaCh0xF_.mjs → session-history.worker-MnPKncqP.mjs} +9 -5
  102. package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
  103. package/dist/.setup/{session-permission-policy-BI1QK_98.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
  104. package/dist/.setup/{session-retirement-BH-S6qkJ.mjs → session-retirement-qMTxkNx2.mjs} +17 -17
  105. package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
  106. package/dist/.setup/{settled-turn-finalizer-DiAi6Kx6.mjs → settled-turn-finalizer-BsvEabkw.mjs} +14 -10
  107. package/dist/.setup/{shared-client-DA4VR4Eb.mjs → shared-client-DqyTMYug.mjs} +783 -412
  108. package/dist/.setup/shared-client-lifecycle-DJIgqgMw.mjs +153 -0
  109. package/dist/.setup/{side-question-BJ1wSDcB.mjs → side-question-C4kCmQy1.mjs} +79 -143
  110. package/dist/.setup/{source-CUzJq5WN.mjs → source-CS_7GFJZ.mjs} +80 -137
  111. package/dist/.setup/{thread-lifecycle-B3mfz1TG.mjs → thread-lifecycle-DPflntEJ.mjs} +294 -737
  112. package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
  113. package/dist/.setup/{thread-ownership-DcTtAcXj.mjs → thread-ownership-roNP0l1c.mjs} +45 -10
  114. package/dist/.setup/{thread-policy-DGuQsuFC.mjs → thread-policy-DTd-DtkX.mjs} +46 -7
  115. package/dist/.setup/{thread-requests-BLvGkP2R.mjs → thread-requests-B_bRnMGN.mjs} +199 -302
  116. package/dist/.setup/{thread-resume-DIBXwOpE.mjs → thread-resume-CdDaoc7T.mjs} +6 -6
  117. package/dist/.setup/{timeout-C910MdAB.mjs → timeout-CXOfNoaX.mjs} +1 -35
  118. package/dist/.setup/{transcript-history-projection-ZZpkFkJ_.mjs → transcript-history-projection-DRSifI-1.mjs} +17 -89
  119. package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
  120. package/dist/.setup/{transcript-mirror-BtHDBp1G.mjs → transcript-mirror-kxmCYsuF.mjs} +7 -9
  121. package/dist/.setup/{transport-stdio-h2VHOskC.mjs → transport-stdio-Bdegpn2V.mjs} +5 -22
  122. package/dist/.setup/transport-websocket-BTBE-LD9.mjs +211 -0
  123. package/dist/.setup/{upstream-prompt-provenance-LphB8slG.mjs → upstream-prompt-provenance-fXkKbPVC.mjs} +3 -9
  124. package/dist/.setup/{upstream-session-fork-BUr4OUbC.mjs → upstream-session-fork-CBeVjBpT.mjs} +23 -23
  125. package/dist/.setup/{usage-BML0r-ua.mjs → usage-BMzNxeR_.mjs} +4 -4
  126. package/dist/.setup/{usage-limit-error-DUMbefVY.mjs → usage-limit-error-QXerDo3i.mjs} +4 -19
  127. package/dist/.setup/{web-search-provider.runtime-CDKlN-Rv.mjs → web-search-provider.runtime-P77OUeoo.mjs} +8 -19
  128. package/dist/api.js +9 -11
  129. package/dist/catalog-page.worker.js +1 -1
  130. package/dist/cli-metadata.js +1 -1
  131. package/dist/doctor-contract-api.js +50 -8
  132. package/dist/harness.js +344 -1
  133. package/dist/index.js +193 -245
  134. package/dist/media-understanding-provider.js +9 -22
  135. package/dist/migration-provider-api.js +1 -1
  136. package/dist/provider-discovery.js +1 -1
  137. package/dist/session-history-worker-runtime.js +3 -3
  138. package/dist/session-history.worker.js +1 -1
  139. package/openclaw.plugin.json +14 -2
  140. package/package.json +7 -6
  141. package/dist/.setup/attempt-workspace-context-DUVEn_CS.mjs +0 -331
  142. package/dist/.setup/compact-Du5UvtxA.mjs +0 -680
  143. package/dist/.setup/event-projector-assistant-message-BsruvNrH.mjs +0 -103
  144. package/dist/.setup/event-projector-items-C6L_5ZiT.mjs +0 -234
  145. package/dist/.setup/harness-a_MsE4-_.mjs +0 -355
  146. package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
  147. package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
  148. package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
  149. package/dist/.setup/native-subagent-history-0nYYgo0k.mjs +0 -148
  150. package/dist/.setup/native-subagent-task-ids-wb8CKZGN.mjs +0 -441
  151. package/dist/.setup/plugin-approval-roundtrip-C0MZzCuP.mjs +0 -122
  152. package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
  153. package/dist/.setup/sandbox-guard-C2sRMOEY.mjs +0 -166
  154. package/dist/.setup/session-binding-Cm0apEbd.mjs +0 -692
  155. package/dist/.setup/session-catalog-events-Bj6j94E_.mjs +0 -347
  156. package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
  157. package/dist/.setup/session-initialization-rcgbZiid.mjs +0 -75
  158. package/dist/.setup/thread-history-page-DoVpnHim.mjs +0 -83
@@ -1,13 +0,0 @@
1
- //#region extensions/codex/src/app-server/history-rejection.ts
2
- /** Only an owning rejection site can supply a diagnostic; exception text is never evidence. */
3
- var CodexHistoryRejection = class extends Error {
4
- constructor(reason) {
5
- super(`Codex history rejected: ${reason}`);
6
- this.reason = reason;
7
- }
8
- };
9
- function codexHistoryRejectionReason(error) {
10
- return error instanceof CodexHistoryRejection ? error.reason : "history_read_failed";
11
- }
12
- //#endregion
13
- export { codexHistoryRejectionReason as n, CodexHistoryRejection as t };
@@ -1,79 +0,0 @@
1
- import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
2
- import { INLINE_IMAGE_DATA_URL_PREFIX, sanitizeInlineImageDataUrl } from "openclaw/plugin-sdk/inline-image-data-url-runtime";
3
- //#region extensions/codex/src/app-server/image-payload-sanitizer.ts
4
- /**
5
- * Sanitizes inline image payloads mirrored through Codex history so invalid
6
- * base64 data becomes readable text instead of poisoning replayed transcripts.
7
- */
8
- const IMAGE_OMITTED_TEXT = "omitted image payload: invalid inline image data";
9
- /** Validates and normalizes an inline image data URL for Codex history payloads. */
10
- function sanitizeInlineImageDataUrl$1(imageUrl) {
11
- return sanitizeInlineImageDataUrl(imageUrl);
12
- }
13
- /** Builds the replacement text inserted when an inline image payload is invalid. */
14
- function invalidInlineImageText(label) {
15
- return `[${label}] ${IMAGE_OMITTED_TEXT}`;
16
- }
17
- function sanitizeImageContentRecord(record, label) {
18
- if (record.type === "image" && typeof record.data === "string") {
19
- const mimeType = typeof record.mimeType === "string" ? record.mimeType : "image/png";
20
- const imageUrl = sanitizeInlineImageDataUrl$1(`data:${mimeType};base64,${record.data}`);
21
- if (!imageUrl) return {
22
- type: "text",
23
- text: invalidInlineImageText(label)
24
- };
25
- const commaIndex = imageUrl.indexOf(",");
26
- const mime = imageUrl.slice(INLINE_IMAGE_DATA_URL_PREFIX.length, commaIndex).split(";")[0] ?? mimeType;
27
- const data = imageUrl.slice(commaIndex + 1);
28
- return mime === record.mimeType && data === record.data ? record : {
29
- ...record,
30
- mimeType: mime,
31
- data
32
- };
33
- }
34
- if (record.type === "inputImage" && typeof record.imageUrl === "string") {
35
- const imageUrl = sanitizeInlineImageDataUrl$1(record.imageUrl);
36
- if (!imageUrl) return {
37
- type: "inputText",
38
- text: invalidInlineImageText(label)
39
- };
40
- return imageUrl === record.imageUrl ? record : {
41
- ...record,
42
- imageUrl
43
- };
44
- }
45
- if (record.type === "input_image" && typeof record.image_url === "string") {
46
- const imageUrl = sanitizeInlineImageDataUrl$1(record.image_url);
47
- if (!imageUrl) return {
48
- type: "input_text",
49
- text: invalidInlineImageText(label)
50
- };
51
- return imageUrl === record.image_url ? record : {
52
- ...record,
53
- image_url: imageUrl
54
- };
55
- }
56
- }
57
- /** Sanitizes images without copying unchanged history or mutating its owned snapshot. */
58
- function sanitizeCodexHistoryImagePayloads(value, label) {
59
- if (Array.isArray(value)) {
60
- let next;
61
- for (let index = 0; index < value.length; index++) {
62
- const child = sanitizeCodexHistoryImagePayloads(value[index], label);
63
- if (child !== value[index]) (next ??= value.slice())[index] = child;
64
- }
65
- return next ?? value;
66
- }
67
- if (!isRecord(value)) return value;
68
- const imageRecord = sanitizeImageContentRecord(value, label);
69
- if (imageRecord) return imageRecord;
70
- let next;
71
- for (const key in value) {
72
- if (!Object.hasOwn(value, key)) continue;
73
- const child = sanitizeCodexHistoryImagePayloads(value[key], label);
74
- if (child !== value[key]) (next ??= { ...value })[key] = child;
75
- }
76
- return next ?? value;
77
- }
78
- //#endregion
79
- export { sanitizeCodexHistoryImagePayloads as n, sanitizeInlineImageDataUrl$1 as r, invalidInlineImageText as t };
@@ -1,19 +0,0 @@
1
- import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
2
- //#region extensions/codex/src/app-server/local-runtime-attribution.ts
3
- const OPENAI_PROVIDER_ID = "openai";
4
- const OPENAI_RESPONSES_API = "openai-responses";
5
- const OPENAI_CODEX_RESPONSES_API = "openai-chatgpt-responses";
6
- /** Maps local Codex runtime plans onto the provider/api pair exposed to event projection. */
7
- function resolveCodexLocalRuntimeAttribution(params) {
8
- const authProfileProvider = normalizeLowercaseStringOrEmpty(params.runtimePlan?.auth?.authProfileProviderForAuth);
9
- if (normalizeLowercaseStringOrEmpty(params.runtimePlan?.observability.harnessId) === "codex" && authProfileProvider !== OPENAI_PROVIDER_ID && normalizeLowercaseStringOrEmpty(params.model.provider) === OPENAI_PROVIDER_ID && normalizeLowercaseStringOrEmpty(params.model.api) === OPENAI_RESPONSES_API) return {
10
- provider: OPENAI_PROVIDER_ID,
11
- api: OPENAI_CODEX_RESPONSES_API
12
- };
13
- return {
14
- provider: params.provider,
15
- api: params.model.api
16
- };
17
- }
18
- //#endregion
19
- export { resolveCodexLocalRuntimeAttribution as t };
@@ -1,148 +0,0 @@
1
- import { C as readCodexNativeSubagentHistoryOwner, b as codexNativeSubagentHistoryConnectionFingerprint, m as sessionBindingIdentity } from "./session-binding-record-BGoz8wOK.mjs";
2
- import { t as readCodexThreadHistoryPage } from "./thread-history-page-DoVpnHim.mjs";
3
- import { l as itemStatus } from "./event-projector-items-C6L_5ZiT.mjs";
4
- import { r as readMirrorIdentity } from "./upstream-prompt-provenance-LphB8slG.mjs";
5
- import { r as projectCodexThreadHistoryItem } from "./transcript-history-projection-ZZpkFkJ_.mjs";
6
- import { n as buildCodexAppServerRuntimeFingerprint, t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-B2CsSdnV.mjs";
7
- import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-ThoatDcb.mjs";
8
- import { c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient } from "./shared-client-DA4VR4Eb.mjs";
9
- import { a as readCodexNativeSubagentRunId, f as itemToolArgs, g as projectCodexToolActivity, h as itemTranscriptResultText } from "./native-subagent-task-ids-wb8CKZGN.mjs";
10
- import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
11
- import { getSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
12
- //#region extensions/codex/src/app-server/native-subagent-history.ts
13
- const MAX_SUBAGENT_ANCESTRY_READS = 32;
14
- const taskHistoryToolItems = {
15
- itemToolArgs,
16
- itemTranscriptResultText
17
- };
18
- function parentThreadId(thread) {
19
- const source = thread.source;
20
- const spawn = source && typeof source === "object" && "subAgent" in source && typeof source.subAgent === "object" && "thread_spawn" in source.subAgent ? source.subAgent.thread_spawn : void 0;
21
- return thread.parentThreadId?.trim() ?? spawn?.parent_thread_id.trim();
22
- }
23
- /** Resolves history from the parent binding's native store without adopting the child. */
24
- async function readCodexNativeSubagentHistory(params, options) {
25
- params.assertCurrent();
26
- const { task, cfg } = params;
27
- const sessionKey = task.requesterSessionKey;
28
- const agentId = task.agentId;
29
- const threadId = readCodexNativeSubagentRunId(task.runId)?.threadId;
30
- if (task.taskKind !== "codex-native" || !sessionKey || !agentId || !threadId) throw new Error("Subagent transcript owner is unavailable.");
31
- const storePath = resolveStorePath(cfg.session?.store, { agentId });
32
- const readSession = () => getSessionEntry({
33
- agentId,
34
- sessionKey,
35
- storePath,
36
- hydrateSkillPromptRefs: false,
37
- readConsistency: "latest"
38
- });
39
- const session = readSession();
40
- if (!session?.sessionId) throw new Error("Subagent parent session is unavailable.");
41
- const sessionId = session.sessionId;
42
- const lifecycleRevision = session.lifecycleRevision;
43
- const historyOwner = readCodexNativeSubagentHistoryOwner(task.detail);
44
- if (historyOwner && (historyOwner.lifecycleRevision ? historyOwner.lifecycleRevision !== lifecycleRevision : historyOwner.sessionId !== sessionId)) throw new Error("Subagent history owner changed; reconnect its parent session.");
45
- const identity = sessionBindingIdentity({
46
- agentId,
47
- sessionId,
48
- sessionKey,
49
- config: cfg
50
- });
51
- const binding = options.bindingStore.read(identity);
52
- if (!binding || binding.pendingSupervisionBranch) throw new Error("Subagent parent thread is unavailable.");
53
- if (historyOwner && historyOwner.connectionFingerprint !== codexNativeSubagentHistoryConnectionFingerprint(binding)) throw new Error("Subagent history owner changed; reconnect its parent session.");
54
- const historyParentThreadId = historyOwner?.parentThreadId ?? binding.threadId;
55
- const assertCurrent = () => {
56
- params.assertCurrent();
57
- const currentSession = readSession();
58
- const current = options.bindingStore.read(identity);
59
- if (currentSession?.sessionId !== sessionId || currentSession?.lifecycleRevision !== lifecycleRevision || current?.threadId !== binding.threadId || current?.appServerRuntimeFingerprint !== binding.appServerRuntimeFingerprint || current?.connectionScope !== binding.connectionScope || current?.authProfileId !== binding.authProfileId) throw new Error("Subagent parent changed; refresh its transcript.");
60
- };
61
- const agentDir = resolveAgentDir(cfg, agentId);
62
- const connection = await resolveCodexBindingAppServerConnection({
63
- binding,
64
- pluginConfig: options.pluginConfig,
65
- agentDir,
66
- config: cfg,
67
- assertCurrent,
68
- authProfileId: binding.authProfileId
69
- });
70
- const client = await getLeasedSharedCodexAppServerClient({
71
- startOptions: connection.appServer.start,
72
- timeoutMs: connection.appServer.requestTimeoutMs,
73
- authProfileId: connection.clientAuthProfileId,
74
- agentDir,
75
- config: cfg,
76
- assertCurrent
77
- });
78
- try {
79
- assertCurrent();
80
- const fingerprint = binding.connectionScope === "supervision" ? buildCodexAppServerConnectionFingerprint(connection.appServer, agentDir) : buildCodexAppServerRuntimeFingerprint({
81
- appServer: connection.appServer,
82
- appServerVersion: client.getServerVersion(),
83
- runtimeIdentity: client.getRuntimeIdentity()
84
- });
85
- if (!binding.appServerRuntimeFingerprint || fingerprint !== binding.appServerRuntimeFingerprint) throw new Error("Subagent connection changed; reconnect its parent session.");
86
- const read = async (method, request) => {
87
- assertCurrent();
88
- const result = await client.request(method, request, { assertCurrent });
89
- assertCurrent();
90
- return result;
91
- };
92
- const { thread } = await read("thread/read", {
93
- threadId,
94
- includeTurns: false
95
- });
96
- if (thread.id !== threadId || threadId === historyParentThreadId) throw new Error("Subagent transcript does not belong to this parent session.");
97
- const visited = /* @__PURE__ */ new Set([threadId]);
98
- let ancestor = thread;
99
- for (;;) {
100
- const parentId = parentThreadId(ancestor);
101
- if (parentId === historyParentThreadId) break;
102
- if (!parentId || visited.has(parentId) || visited.size >= MAX_SUBAGENT_ANCESTRY_READS) throw new Error("Subagent transcript does not belong to this parent session.");
103
- visited.add(parentId);
104
- const response = await read("thread/read", {
105
- threadId: parentId,
106
- includeTurns: false
107
- });
108
- if (response.thread.id !== parentId) throw new Error("Subagent transcript does not belong to this parent session.");
109
- ancestor = response.thread;
110
- }
111
- const page = await readCodexThreadHistoryPage({
112
- listItemPage: (request) => read("thread/items/list", request),
113
- listTurnPage: (request) => read("thread/turns/list", request)
114
- }, thread, {
115
- threadId,
116
- cursor: params.cursor,
117
- limit: Math.max(1, Math.floor(Math.min(params.limit, 200) / 2))
118
- }, {
119
- project: (entries) => entries.map((entry) => {
120
- const item = projectCodexToolActivity(entry.item, itemStatus(entry.item) === "running" ? "start" : "result");
121
- const messages = projectCodexThreadHistoryItem(thread, entry, taskHistoryToolItems).map((message) => {
122
- const messageIdentity = readMirrorIdentity(message);
123
- if (!messageIdentity) throw new Error("Subagent history message is missing its native identity.");
124
- return Object.assign(message, { messageId: JSON.stringify([threadId, messageIdentity]) });
125
- });
126
- return {
127
- messages,
128
- activity: item ? messages.map(({ messageId }) => ({
129
- messageId,
130
- items: item.hideFromChannelProgress ? [] : [item]
131
- })) : []
132
- };
133
- }),
134
- fits: (result) => Buffer.byteLength(JSON.stringify(result), "utf8") <= 524288
135
- });
136
- assertCurrent();
137
- const rows = page.items.toReversed();
138
- return {
139
- messages: rows.flatMap((row) => row.messages),
140
- activity: rows.flatMap((row) => row.activity),
141
- ...page.nextCursor ? { nextCursor: page.nextCursor } : {}
142
- };
143
- } finally {
144
- releaseLeasedSharedCodexAppServerClient(client);
145
- }
146
- }
147
- //#endregion
148
- export { readCodexNativeSubagentHistory };