@jingyi0605/codingns 0.3.0 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/bin/codingns.mjs +880 -9
- package/dist/public/assets/{TerminalPage-Dfw1QUqW.js → TerminalPage-D00S4KM6.js} +19 -19
- package/dist/public/assets/index-BlOinYqR.js +122 -0
- package/dist/public/assets/index-Dg_7g6lA.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +2 -0
- package/dist/server/config/env.js +35 -0
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/config/opencode-base-url-resolver.d.ts +7 -0
- package/dist/server/config/opencode-base-url-resolver.js +48 -11
- package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
- package/dist/server/config/opencode-system-probe-helper-client.d.ts +4 -0
- package/dist/server/config/opencode-system-probe-helper-client.js +29 -0
- package/dist/server/config/opencode-system-probe-helper-client.js.map +1 -1
- package/dist/server/config/opencode-system-probe-helper-process.d.ts +12 -0
- package/dist/server/config/opencode-system-probe-helper-process.js +34 -7
- package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +144 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +242 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +133 -2
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +395 -2
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
- package/dist/server/modules/auth/auth-service.d.ts +18 -1
- package/dist/server/modules/auth/auth-service.js +168 -7
- package/dist/server/modules/auth/auth-service.js.map +1 -1
- package/dist/server/modules/butler/butler-codex-model-policy.d.ts +1 -0
- package/dist/server/modules/butler/butler-codex-model-policy.js +36 -0
- package/dist/server/modules/butler/butler-codex-model-policy.js.map +1 -0
- package/dist/server/modules/butler/butler-control-session-service.d.ts +13 -1
- package/dist/server/modules/butler/butler-control-session-service.js +55 -231
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-controller.d.ts +17 -0
- package/dist/server/modules/butler/butler-controller.js +20 -1
- package/dist/server/modules/butler/butler-controller.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-service.js +7 -3
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
- package/dist/server/modules/butler/butler-inbox-analysis-service.d.ts +36 -0
- package/dist/server/modules/butler/butler-inbox-analysis-service.js +375 -0
- package/dist/server/modules/butler/butler-inbox-analysis-service.js.map +1 -0
- package/dist/server/modules/butler/butler-inbox-instruction-adapter.d.ts +23 -0
- package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +97 -0
- package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/butler-inbox-service.d.ts +39 -2
- package/dist/server/modules/butler/butler-inbox-service.js +392 -2
- package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.d.ts +8 -0
- package/dist/server/modules/butler/butler-session-service.js +205 -53
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
- package/dist/server/modules/butler/butler-session-summary-service.js +48 -23
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/butler-workspace-context.d.ts +13 -0
- package/dist/server/modules/butler/butler-workspace-context.js +234 -0
- package/dist/server/modules/butler/butler-workspace-context.js.map +1 -0
- package/dist/server/modules/client/client-controller.d.ts +6 -0
- package/dist/server/modules/client/client-controller.js +30 -8
- package/dist/server/modules/client/client-controller.js.map +1 -1
- package/dist/server/modules/client/client-service.d.ts +22 -10
- package/dist/server/modules/client/client-service.js +77 -100
- package/dist/server/modules/client/client-service.js.map +1 -1
- package/dist/server/modules/client/npm-global-package-service.d.ts +21 -0
- package/dist/server/modules/client/npm-global-package-service.js +210 -0
- package/dist/server/modules/client/npm-global-package-service.js.map +1 -0
- package/dist/server/modules/client/service-update-task-service.d.ts +15 -0
- package/dist/server/modules/client/service-update-task-service.js +147 -0
- package/dist/server/modules/client/service-update-task-service.js.map +1 -0
- package/dist/server/modules/client/service-update-types.d.ts +30 -0
- package/dist/server/modules/client/service-update-types.js +2 -0
- package/dist/server/modules/client/service-update-types.js.map +1 -0
- package/dist/server/modules/debug-target/debug-target-controller.d.ts +13 -0
- package/dist/server/modules/debug-target/debug-target-controller.js +77 -2
- package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -1
- package/dist/server/modules/debug-target/debug-target-service.d.ts +11 -2
- package/dist/server/modules/debug-target/debug-target-service.js +138 -3
- package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
- package/dist/server/modules/git/git-command-helper-client.d.ts +2 -0
- package/dist/server/modules/git/git-command-helper-client.js +52 -3
- package/dist/server/modules/git/git-command-helper-client.js.map +1 -1
- package/dist/server/modules/git/git-command-helper-process.js +62 -9
- package/dist/server/modules/git/git-command-helper-process.js.map +1 -1
- package/dist/server/modules/git/git-command-runner.d.ts +1 -0
- package/dist/server/modules/git/git-command-runner.js +25 -0
- package/dist/server/modules/git/git-command-runner.js.map +1 -1
- package/dist/server/modules/git/git-controller.js +8 -7
- package/dist/server/modules/git/git-controller.js.map +1 -1
- package/dist/server/modules/git/git-read-service.d.ts +7 -7
- package/dist/server/modules/git/git-read-service.js +41 -24
- package/dist/server/modules/git/git-read-service.js.map +1 -1
- package/dist/server/modules/model-switch/cc-switch-adapter.d.ts +36 -0
- package/dist/server/modules/model-switch/cc-switch-adapter.js +321 -0
- package/dist/server/modules/model-switch/cc-switch-adapter.js.map +1 -0
- package/dist/server/modules/model-switch/model-switch-controller.d.ts +11 -0
- package/dist/server/modules/model-switch/model-switch-controller.js +30 -0
- package/dist/server/modules/model-switch/model-switch-controller.js.map +1 -0
- package/dist/server/modules/model-switch/model-switch-service.d.ts +16 -0
- package/dist/server/modules/model-switch/model-switch-service.js +29 -0
- package/dist/server/modules/model-switch/model-switch-service.js.map +1 -0
- package/dist/server/modules/preferences/profile-service.d.ts +1 -0
- package/dist/server/modules/preferences/profile-service.js +9 -0
- package/dist/server/modules/preferences/profile-service.js.map +1 -1
- package/dist/server/modules/provider/codex-model-options.js +2 -3
- package/dist/server/modules/provider/codex-model-options.js.map +1 -1
- package/dist/server/modules/provider/opencode-model-options.js +2 -3
- package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +9 -4
- package/dist/server/modules/provider/provider-discovery-helper-client.js +87 -11
- package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-process.js +52 -47
- package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-runtime.d.ts +4 -0
- package/dist/server/modules/provider/provider-discovery-runtime.js +65 -0
- package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -0
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +3 -0
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-activity-authority-service.d.ts +3 -1
- package/dist/server/modules/sessions/session-activity-authority-service.js +3 -0
- package/dist/server/modules/sessions/session-activity-authority-service.js.map +1 -1
- package/dist/server/modules/sessions/session-activity-inspector.d.ts +1 -1
- package/dist/server/modules/sessions/session-activity-inspector.js +43 -16
- package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +3 -3
- package/dist/server/modules/sessions/session-controller.js +3 -3
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +8 -2
- package/dist/server/modules/sessions/session-history-service.js +473 -65
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +9 -3
- package/dist/server/modules/sessions/session-live-runtime-service.js +114 -34
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-message-attachment-service.d.ts +8 -8
- package/dist/server/modules/sessions/session-message-attachment-service.js +25 -34
- package/dist/server/modules/sessions/session-message-attachment-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +7 -0
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/modules/skills/builtin-skill-service.d.ts +12 -0
- package/dist/server/modules/skills/builtin-skill-service.js +49 -0
- package/dist/server/modules/skills/builtin-skill-service.js.map +1 -0
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +75 -0
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/agents/openai.yaml +4 -0
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +130 -0
- package/dist/server/modules/skills/skill-manager-service.d.ts +7 -0
- package/dist/server/modules/skills/skill-manager-service.js +98 -0
- package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
- package/dist/server/modules/tailscale/tailscale-helper-client.d.ts +1 -0
- package/dist/server/modules/tailscale/tailscale-helper-client.js +12 -0
- package/dist/server/modules/tailscale/tailscale-helper-client.js.map +1 -1
- package/dist/server/modules/tailscale/tailscale-manager.js +5 -1
- package/dist/server/modules/tailscale/tailscale-manager.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-client.d.ts +5 -0
- package/dist/server/modules/tasks/task-helper-client.js +45 -0
- package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +10 -3
- package/dist/server/modules/tasks/task-helper-process-handlers.js +7 -5
- package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-process.js +11 -1
- package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
- package/dist/server/modules/tasks/task-lane-executors.js +5 -2
- package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +3 -0
- package/dist/server/modules/tasks/task-types.js +4 -1
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/modules/terminal/command-template-service.d.ts +2 -2
- package/dist/server/modules/terminal/command-template-service.js +14 -5
- package/dist/server/modules/terminal/command-template-service.js.map +1 -1
- package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +1 -1
- package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -1
- package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +160 -11
- package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -1
- package/dist/server/modules/terminal/template-port-runtime.d.ts +13 -2
- package/dist/server/modules/terminal/template-port-runtime.js +266 -44
- package/dist/server/modules/terminal/template-port-runtime.js.map +1 -1
- package/dist/server/modules/terminal/terminal-service.d.ts +4 -0
- package/dist/server/modules/terminal/terminal-service.js +65 -4
- package/dist/server/modules/terminal/terminal-service.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.js +3 -3
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -0
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +118 -39
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
- package/dist/server/modules/workspace/workspace-code-composition.d.ts +1 -0
- package/dist/server/modules/workspace/workspace-code-composition.js +277 -2
- package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -1
- package/dist/server/modules/workspace/workspace-service.js +54 -17
- package/dist/server/modules/workspace/workspace-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +1 -1
- package/dist/server/modules/worktree/worktree-cleanup-service.js +22 -17
- package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-controller.js +6 -5
- package/dist/server/modules/worktree/worktree-controller.js.map +1 -1
- package/dist/server/modules/worktree/worktree-manager.d.ts +1 -1
- package/dist/server/modules/worktree/worktree-manager.js +26 -19
- package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
- package/dist/server/modules/worktree/worktree-merge-service.d.ts +2 -2
- package/dist/server/modules/worktree/worktree-merge-service.js +34 -27
- package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-sync-service.d.ts +1 -1
- package/dist/server/modules/worktree/worktree-sync-service.js +5 -3
- package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -1
- package/dist/server/routes/assistant.js +24 -0
- package/dist/server/routes/assistant.js.map +1 -1
- package/dist/server/routes/butler.js +4 -0
- package/dist/server/routes/butler.js.map +1 -1
- package/dist/server/routes/client.js +2 -0
- package/dist/server/routes/client.js.map +1 -1
- package/dist/server/routes/sessions.js +1 -1
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/routes/system.d.ts +2 -1
- package/dist/server/routes/system.js +3 -1
- package/dist/server/routes/system.js.map +1 -1
- package/dist/server/server/create-server.d.ts +4 -0
- package/dist/server/server/create-server.js +67 -8
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/errors/app-error.d.ts +2 -0
- package/dist/server/shared/errors/app-error.js +2 -0
- package/dist/server/shared/errors/app-error.js.map +1 -1
- package/dist/server/shared/http/error-handler.d.ts +2 -1
- package/dist/server/shared/http/error-handler.js +3 -2
- package/dist/server/shared/http/error-handler.js.map +1 -1
- package/dist/server/shared/http/request-abort.d.ts +2 -0
- package/dist/server/shared/http/request-abort.js +38 -0
- package/dist/server/shared/http/request-abort.js.map +1 -0
- package/dist/server/storage/repositories/auth-login-attempt-repository.d.ts +9 -0
- package/dist/server/storage/repositories/auth-login-attempt-repository.js +59 -0
- package/dist/server/storage/repositories/auth-login-attempt-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-control-session-repository.d.ts +3 -0
- package/dist/server/storage/repositories/butler-control-session-repository.js +80 -4
- package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-inbox-item-repository.js +54 -3
- package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -1
- package/dist/server/storage/repositories/terminal-instance-repository.js +1 -1
- package/dist/server/storage/repositories/terminal-instance-repository.js.map +1 -1
- package/dist/server/storage/repositories/user-preference-profile-repository.js +6 -3
- package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -1
- package/dist/server/storage/sqlite/client.js +127 -0
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +19 -1
- package/dist/server/types/domain.d.ts +37 -1
- package/dist/server/ws/workbench-ws-hub.d.ts +1 -0
- package/dist/server/ws/workbench-ws-hub.js +25 -3
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +23 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +162 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +89 -33
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +18 -2
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +3 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +238 -53
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +1 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +6 -2
- package/node_modules/@codingns/session-sync-core/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/scripts/postinstall.mjs +33 -0
- package/dist/public/assets/index-DR2rPNi7.css +0 -1
- package/dist/public/assets/index-DTOruahn.js +0 -114
|
@@ -7,6 +7,7 @@ import { basename, dirname, join, resolve } from "node:path";
|
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
8
8
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
9
9
|
import { appendJsonLine, createRawRef, ensureDirectory, extractTextBlocks, messageIdFromRawRef, nextTimestamp, normalizeWorkspacePath, readJsonLines } from "../providers/utils.js";
|
|
10
|
+
import { buildApplyPatchFromFileChangeList, extractApplyPatchTargetPathsFromToolOutput, normalizeApplyPatchText } from "../patch-builder.js";
|
|
10
11
|
import { loadDatabaseSync } from "../sqlite/node-sqlite.js";
|
|
11
12
|
import { createCodexThreadPermissionOptions } from "./codex-permissions.js";
|
|
12
13
|
const CODEX_RUNTIME_DEBUG_ENABLED = /^(1|true|yes)$/i.test(process.env.CODINGNS_PERF_DEBUG?.trim() ?? "");
|
|
@@ -80,7 +81,7 @@ export class CodexRuntimeAdapter {
|
|
|
80
81
|
})();
|
|
81
82
|
const providerSessionId = startedSession.providerSessionId;
|
|
82
83
|
const syntheticRawStoreRef = buildRuntimeRawStoreRef(resolveRuntimeStoreKey(providerSessionId, request.sessionId));
|
|
83
|
-
const rawStoreRef = pickAvailableCodexRawStoreRef(resumedSyntheticSession
|
|
84
|
+
const rawStoreRef = pickAvailableCodexRawStoreRef(providerSessionId, resumedSyntheticSession
|
|
84
85
|
? [resumedSyntheticSession.rawStoreRef]
|
|
85
86
|
: [startedSession.rawStoreRef, request.rawStoreRef], syntheticRawStoreRef);
|
|
86
87
|
logCodexRuntimeStep("start_session.raw_store_ref_ready", launchPerfStartedAtMs, {
|
|
@@ -108,8 +109,8 @@ export class CodexRuntimeAdapter {
|
|
|
108
109
|
if (translated.turnId) {
|
|
109
110
|
eventQueue.setTurnId(translated.turnId);
|
|
110
111
|
}
|
|
111
|
-
|
|
112
|
-
eventQueue.push(
|
|
112
|
+
for (const event of translated.events) {
|
|
113
|
+
eventQueue.push(event);
|
|
113
114
|
}
|
|
114
115
|
if (translated.terminal) {
|
|
115
116
|
eventQueue.close();
|
|
@@ -136,7 +137,20 @@ export class CodexRuntimeAdapter {
|
|
|
136
137
|
eventQueue.close();
|
|
137
138
|
});
|
|
138
139
|
const startTurnStartedAtMs = performance.now();
|
|
139
|
-
await transport.startTurn(request, providerSessionId);
|
|
140
|
+
const startTurnResult = await transport.startTurn(request, providerSessionId);
|
|
141
|
+
const startTurnNotification = startTurnResult?.notification ?? null;
|
|
142
|
+
if (startTurnNotification) {
|
|
143
|
+
const translated = translateCodexAppServerNotification(startTurnNotification);
|
|
144
|
+
if (translated.turnId) {
|
|
145
|
+
eventQueue.setTurnId(translated.turnId);
|
|
146
|
+
}
|
|
147
|
+
for (const event of translated.events) {
|
|
148
|
+
eventQueue.push(event);
|
|
149
|
+
}
|
|
150
|
+
if (translated.terminal) {
|
|
151
|
+
eventQueue.close();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
140
154
|
logCodexRuntimeStep("start_session.turn_start", startTurnStartedAtMs, {
|
|
141
155
|
sessionId: request.sessionId,
|
|
142
156
|
providerSessionId
|
|
@@ -203,7 +217,7 @@ export class CodexRuntimeAdapter {
|
|
|
203
217
|
sessionId: request.sessionId,
|
|
204
218
|
providerSessionId: resolvedSessionId
|
|
205
219
|
});
|
|
206
|
-
const rawStoreRef = pickAvailableCodexRawStoreRef([request.rawStoreRef, resumed.rawStoreRef], syntheticRawStoreRef);
|
|
220
|
+
const rawStoreRef = pickAvailableCodexRawStoreRef(resolvedSessionId, [request.rawStoreRef, resumed.rawStoreRef], syntheticRawStoreRef);
|
|
207
221
|
const abortController = new AbortController();
|
|
208
222
|
const eventQueue = createAsyncEventQueue();
|
|
209
223
|
logCodexRuntimeStep("continue_session.raw_store_ref_ready", runtimeStartedAtMs, {
|
|
@@ -232,8 +246,8 @@ export class CodexRuntimeAdapter {
|
|
|
232
246
|
if (translated.turnId) {
|
|
233
247
|
eventQueue.setTurnId(translated.turnId);
|
|
234
248
|
}
|
|
235
|
-
|
|
236
|
-
eventQueue.push(
|
|
249
|
+
for (const event of translated.events) {
|
|
250
|
+
eventQueue.push(event);
|
|
237
251
|
}
|
|
238
252
|
if (translated.terminal) {
|
|
239
253
|
eventQueue.close();
|
|
@@ -260,7 +274,20 @@ export class CodexRuntimeAdapter {
|
|
|
260
274
|
eventQueue.close();
|
|
261
275
|
});
|
|
262
276
|
const startTurnStartedAtMs = performance.now();
|
|
263
|
-
await transport.startTurn(request, resolvedSessionId);
|
|
277
|
+
const startTurnResult = await transport.startTurn(request, resolvedSessionId);
|
|
278
|
+
const startTurnNotification = startTurnResult?.notification ?? null;
|
|
279
|
+
if (startTurnNotification) {
|
|
280
|
+
const translated = translateCodexAppServerNotification(startTurnNotification);
|
|
281
|
+
if (translated.turnId) {
|
|
282
|
+
eventQueue.setTurnId(translated.turnId);
|
|
283
|
+
}
|
|
284
|
+
for (const event of translated.events) {
|
|
285
|
+
eventQueue.push(event);
|
|
286
|
+
}
|
|
287
|
+
if (translated.terminal) {
|
|
288
|
+
eventQueue.close();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
264
291
|
logCodexRuntimeStep("continue_session.turn_start", startTurnStartedAtMs, {
|
|
265
292
|
sessionId: request.sessionId,
|
|
266
293
|
providerSessionId: resolvedSessionId
|
|
@@ -332,6 +359,7 @@ export class CodexRuntimeAdapter {
|
|
|
332
359
|
await sink.emit({
|
|
333
360
|
type: "interrupted",
|
|
334
361
|
status: "interrupted",
|
|
362
|
+
interruptSource: "user",
|
|
335
363
|
providerSessionId: context.providerSessionId,
|
|
336
364
|
rawStoreRef: context.rawStoreRef,
|
|
337
365
|
detail: "codex turn interrupted",
|
|
@@ -391,6 +419,7 @@ export class CodexRuntimeAdapter {
|
|
|
391
419
|
await context.sink.emit({
|
|
392
420
|
type: "interrupted",
|
|
393
421
|
status: "interrupted",
|
|
422
|
+
interruptSource: interrupted ? "user" : "runtime",
|
|
394
423
|
providerSessionId: context.providerSessionId,
|
|
395
424
|
rawStoreRef: context.rawStoreRef,
|
|
396
425
|
detail: "codex turn interrupted",
|
|
@@ -443,7 +472,7 @@ export class CodexRuntimeAdapter {
|
|
|
443
472
|
const callId = pickFirstNonEmpty(ensureText(readProp(item, "id")).trim(), ensureText(readProp(item, "call_id")).trim(), `${itemType}-${randomUUID()}`);
|
|
444
473
|
const name = pickFirstNonEmpty(ensureText(readProp(item, "name")).trim(), ensureText(readProp(item, "tool")).trim(), itemType);
|
|
445
474
|
if (eventType === "item.started") {
|
|
446
|
-
const input =
|
|
475
|
+
const input = resolveCodexToolInput(name, item);
|
|
447
476
|
const toolCall = {
|
|
448
477
|
callId,
|
|
449
478
|
name,
|
|
@@ -464,11 +493,12 @@ export class CodexRuntimeAdapter {
|
|
|
464
493
|
return;
|
|
465
494
|
}
|
|
466
495
|
if (eventType === "item.updated") {
|
|
496
|
+
const knownName = context.toolNameByCallId.get(callId) ?? name;
|
|
497
|
+
const input = resolveCodexToolInput(knownName, item);
|
|
467
498
|
const output = pickFirstNonEmpty(extractTextBlocks(readProp(item, "result")).trim(), extractTextBlocks(readProp(item, "output")).trim(), extractTextBlocks(readProp(item, "aggregated_output")).trim(), extractTextBlocks(readProp(item, "error")).trim());
|
|
468
499
|
if (output.length === 0) {
|
|
469
500
|
return;
|
|
470
501
|
}
|
|
471
|
-
const knownName = context.toolNameByCallId.get(callId) ?? name;
|
|
472
502
|
context.toolNameByCallId.set(callId, knownName);
|
|
473
503
|
await this.emitStableMessage(context, {
|
|
474
504
|
identity: `tool:result:${callId}`,
|
|
@@ -479,7 +509,7 @@ export class CodexRuntimeAdapter {
|
|
|
479
509
|
toolCall: {
|
|
480
510
|
callId,
|
|
481
511
|
name: knownName,
|
|
482
|
-
input
|
|
512
|
+
input,
|
|
483
513
|
output,
|
|
484
514
|
error: null,
|
|
485
515
|
status: "running"
|
|
@@ -488,13 +518,14 @@ export class CodexRuntimeAdapter {
|
|
|
488
518
|
return;
|
|
489
519
|
}
|
|
490
520
|
if (eventType === "item.completed") {
|
|
521
|
+
const knownName = context.toolNameByCallId.get(callId) ?? name;
|
|
522
|
+
const input = resolveCodexToolInput(knownName, item);
|
|
491
523
|
const output = pickFirstNonEmpty(extractTextBlocks(readProp(item, "result")).trim(), extractTextBlocks(readProp(item, "output")).trim(), extractTextBlocks(readProp(item, "aggregated_output")).trim(), extractTextBlocks(readProp(item, "error")).trim());
|
|
492
524
|
const success = inferToolSuccess(item, output);
|
|
493
|
-
const knownName = context.toolNameByCallId.get(callId) ?? name;
|
|
494
525
|
const toolCall = {
|
|
495
526
|
callId,
|
|
496
527
|
name: knownName,
|
|
497
|
-
input
|
|
528
|
+
input,
|
|
498
529
|
output: success ? output : null,
|
|
499
530
|
error: success ? null : output,
|
|
500
531
|
status: success ? "completed" : "failed"
|
|
@@ -938,12 +969,16 @@ function createCodexAppServerTransport(options) {
|
|
|
938
969
|
method: "turn/start",
|
|
939
970
|
params: createTurnStartParams(request, providerSessionId)
|
|
940
971
|
});
|
|
941
|
-
|
|
972
|
+
const turn = toRecord(result.turn);
|
|
973
|
+
activeTurnId = ensureText(readProp(turn, "id")).trim() || activeTurnId;
|
|
942
974
|
logCodexRuntimeStep("transport.turn_start", startedAtMs, {
|
|
943
975
|
sessionId: request.sessionId,
|
|
944
976
|
providerSessionId,
|
|
945
977
|
turnId: activeTurnId
|
|
946
978
|
});
|
|
979
|
+
return {
|
|
980
|
+
notification: buildCodexTurnCompletionNotification(turn, providerSessionId)
|
|
981
|
+
};
|
|
947
982
|
},
|
|
948
983
|
async interruptTurn() {
|
|
949
984
|
if (!activeThreadId || !activeTurnId) {
|
|
@@ -983,6 +1018,19 @@ function createCodexAppServerTransport(options) {
|
|
|
983
1018
|
}
|
|
984
1019
|
};
|
|
985
1020
|
}
|
|
1021
|
+
function buildCodexTurnCompletionNotification(turn, threadId) {
|
|
1022
|
+
const status = ensureText(readProp(turn, "status")).trim();
|
|
1023
|
+
if (status !== "completed" && status !== "failed" && status !== "interrupted") {
|
|
1024
|
+
return null;
|
|
1025
|
+
}
|
|
1026
|
+
return {
|
|
1027
|
+
method: "turn/completed",
|
|
1028
|
+
params: {
|
|
1029
|
+
threadId,
|
|
1030
|
+
turn
|
|
1031
|
+
}
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
986
1034
|
function createAsyncEventQueue() {
|
|
987
1035
|
const values = [];
|
|
988
1036
|
const waiters = [];
|
|
@@ -1047,7 +1095,7 @@ function translateCodexAppServerNotification(notification) {
|
|
|
1047
1095
|
const params = toRecord(notification.params) ?? {};
|
|
1048
1096
|
if (method === "turn/started") {
|
|
1049
1097
|
return {
|
|
1050
|
-
|
|
1098
|
+
events: [],
|
|
1051
1099
|
terminal: false,
|
|
1052
1100
|
turnId: ensureText(readProp(readProp(params, "turn"), "id")).trim() || null
|
|
1053
1101
|
};
|
|
@@ -1055,32 +1103,42 @@ function translateCodexAppServerNotification(notification) {
|
|
|
1055
1103
|
if (method === "turn/completed") {
|
|
1056
1104
|
const turn = toRecord(params.turn);
|
|
1057
1105
|
const status = ensureText(turn?.status).trim();
|
|
1106
|
+
const itemEvents = translateCodexAppServerTurnItems(turn, "item.completed");
|
|
1058
1107
|
if (status === "failed") {
|
|
1059
1108
|
return {
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1109
|
+
events: [
|
|
1110
|
+
...itemEvents,
|
|
1111
|
+
{
|
|
1112
|
+
type: "turn.failed",
|
|
1113
|
+
timestamp: nextTimestamp(),
|
|
1114
|
+
error: ensureText(readProp(turn?.error, "message")).trim() || "codex turn failed"
|
|
1115
|
+
}
|
|
1116
|
+
],
|
|
1065
1117
|
terminal: true,
|
|
1066
1118
|
turnId: ensureText(turn?.id).trim() || null
|
|
1067
1119
|
};
|
|
1068
1120
|
}
|
|
1069
1121
|
if (status === "interrupted") {
|
|
1070
1122
|
return {
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1123
|
+
events: [
|
|
1124
|
+
...itemEvents,
|
|
1125
|
+
{
|
|
1126
|
+
type: "turn.interrupted",
|
|
1127
|
+
timestamp: nextTimestamp()
|
|
1128
|
+
}
|
|
1129
|
+
],
|
|
1075
1130
|
terminal: true,
|
|
1076
1131
|
turnId: ensureText(turn?.id).trim() || null
|
|
1077
1132
|
};
|
|
1078
1133
|
}
|
|
1079
1134
|
return {
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1135
|
+
events: [
|
|
1136
|
+
...itemEvents,
|
|
1137
|
+
{
|
|
1138
|
+
type: "turn.completed",
|
|
1139
|
+
timestamp: nextTimestamp()
|
|
1140
|
+
}
|
|
1141
|
+
],
|
|
1084
1142
|
terminal: true,
|
|
1085
1143
|
turnId: ensureText(turn?.id).trim() || null
|
|
1086
1144
|
};
|
|
@@ -1090,17 +1148,19 @@ function translateCodexAppServerNotification(notification) {
|
|
|
1090
1148
|
const detail = buildCodexAppServerErrorDetail(error);
|
|
1091
1149
|
if (params.willRetry === true) {
|
|
1092
1150
|
return {
|
|
1093
|
-
|
|
1151
|
+
events: [],
|
|
1094
1152
|
terminal: false,
|
|
1095
1153
|
turnId: ensureText(params.turnId).trim() || null
|
|
1096
1154
|
};
|
|
1097
1155
|
}
|
|
1098
1156
|
return {
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1157
|
+
events: [
|
|
1158
|
+
{
|
|
1159
|
+
type: "turn.failed",
|
|
1160
|
+
timestamp: nextTimestamp(),
|
|
1161
|
+
error: detail
|
|
1162
|
+
}
|
|
1163
|
+
],
|
|
1104
1164
|
terminal: true,
|
|
1105
1165
|
turnId: ensureText(params.turnId).trim() || null
|
|
1106
1166
|
};
|
|
@@ -1109,31 +1169,78 @@ function translateCodexAppServerNotification(notification) {
|
|
|
1109
1169
|
const item = translateCodexAppServerItem(toRecord(params.item));
|
|
1110
1170
|
if (!item) {
|
|
1111
1171
|
return {
|
|
1112
|
-
|
|
1172
|
+
events: [],
|
|
1113
1173
|
terminal: false,
|
|
1114
1174
|
turnId: null
|
|
1115
1175
|
};
|
|
1116
1176
|
}
|
|
1117
1177
|
return {
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1178
|
+
events: [
|
|
1179
|
+
{
|
|
1180
|
+
type: method === "item/started"
|
|
1181
|
+
? "item.started"
|
|
1182
|
+
: method === "item/updated"
|
|
1183
|
+
? "item.updated"
|
|
1184
|
+
: "item.completed",
|
|
1185
|
+
item,
|
|
1186
|
+
timestamp: nextTimestamp()
|
|
1187
|
+
}
|
|
1188
|
+
],
|
|
1127
1189
|
terminal: false,
|
|
1128
1190
|
turnId: null
|
|
1129
1191
|
};
|
|
1130
1192
|
}
|
|
1131
1193
|
return {
|
|
1132
|
-
|
|
1194
|
+
events: [],
|
|
1133
1195
|
terminal: false,
|
|
1134
1196
|
turnId: null
|
|
1135
1197
|
};
|
|
1136
1198
|
}
|
|
1199
|
+
function translateCodexAppServerTurnItems(turn, eventType) {
|
|
1200
|
+
const rawItems = Array.isArray(turn?.items) ? turn.items : [];
|
|
1201
|
+
const translatedItems = rawItems
|
|
1202
|
+
.map((item) => translateCodexAppServerItem(toRecord(item)))
|
|
1203
|
+
.filter((item) => item !== null)
|
|
1204
|
+
.map((item) => ({
|
|
1205
|
+
type: eventType,
|
|
1206
|
+
item,
|
|
1207
|
+
timestamp: nextTimestamp()
|
|
1208
|
+
}));
|
|
1209
|
+
if (translatedItems.length > 0) {
|
|
1210
|
+
return translatedItems;
|
|
1211
|
+
}
|
|
1212
|
+
const lastAgentMessage = normalizeCodexTurnLastAgentMessage(turn);
|
|
1213
|
+
if (!lastAgentMessage) {
|
|
1214
|
+
return [];
|
|
1215
|
+
}
|
|
1216
|
+
return [
|
|
1217
|
+
{
|
|
1218
|
+
type: eventType,
|
|
1219
|
+
item: {
|
|
1220
|
+
type: "agent_message",
|
|
1221
|
+
id: ensureText(turn?.id).trim() || "turn-final-message",
|
|
1222
|
+
text: lastAgentMessage
|
|
1223
|
+
},
|
|
1224
|
+
timestamp: nextTimestamp()
|
|
1225
|
+
}
|
|
1226
|
+
];
|
|
1227
|
+
}
|
|
1228
|
+
function normalizeCodexTurnLastAgentMessage(turn) {
|
|
1229
|
+
const candidate = readProp(turn, "lastAgentMessage")
|
|
1230
|
+
?? readProp(turn, "last_agent_message")
|
|
1231
|
+
?? readProp(turn, "lastMessage")
|
|
1232
|
+
?? readProp(turn, "last_message");
|
|
1233
|
+
if (typeof candidate === "string") {
|
|
1234
|
+
const normalized = candidate.trim();
|
|
1235
|
+
return normalized.length > 0 ? normalized : null;
|
|
1236
|
+
}
|
|
1237
|
+
const record = toRecord(candidate);
|
|
1238
|
+
if (!record) {
|
|
1239
|
+
return null;
|
|
1240
|
+
}
|
|
1241
|
+
const content = pickFirstNonEmpty(ensureText(record.text).trim(), extractTextBlocks(readProp(record, "content")).trim(), ensureText(readProp(record, "message")).trim());
|
|
1242
|
+
return content.length > 0 ? content : null;
|
|
1243
|
+
}
|
|
1137
1244
|
function buildCodexAppServerErrorDetail(error) {
|
|
1138
1245
|
const message = ensureText(error?.message).trim();
|
|
1139
1246
|
const additionalDetails = ensureText(error?.additionalDetails).trim();
|
|
@@ -1348,6 +1455,9 @@ function createCodexInput(request) {
|
|
|
1348
1455
|
});
|
|
1349
1456
|
}
|
|
1350
1457
|
request.options.attachments.forEach((attachment) => {
|
|
1458
|
+
if (attachment.kind !== "image") {
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1351
1461
|
input.push({
|
|
1352
1462
|
type: "local_image",
|
|
1353
1463
|
path: attachment.filePath
|
|
@@ -1365,6 +1475,9 @@ function createCodexAppServerInput(request) {
|
|
|
1365
1475
|
});
|
|
1366
1476
|
}
|
|
1367
1477
|
for (const attachment of request.options.attachments) {
|
|
1478
|
+
if (attachment.kind !== "image") {
|
|
1479
|
+
continue;
|
|
1480
|
+
}
|
|
1368
1481
|
input.push({
|
|
1369
1482
|
type: "localImage",
|
|
1370
1483
|
path: attachment.filePath
|
|
@@ -1415,18 +1528,51 @@ function resolveNodeModulesCandidate(currentDirectory, relativeSegments) {
|
|
|
1415
1528
|
function buildRuntimeRawStoreRef(providerSessionId) {
|
|
1416
1529
|
return resolve(process.cwd(), "runtime", "codex", `${providerSessionId}.stream`);
|
|
1417
1530
|
}
|
|
1418
|
-
function pickAvailableCodexRawStoreRef(candidates, fallbackRawStoreRef) {
|
|
1531
|
+
function pickAvailableCodexRawStoreRef(providerSessionId, candidates, fallbackRawStoreRef) {
|
|
1532
|
+
const normalizedProviderSessionId = providerSessionId.trim();
|
|
1533
|
+
const normalizedCandidates = [];
|
|
1534
|
+
const seen = new Set();
|
|
1419
1535
|
for (const candidate of candidates) {
|
|
1420
1536
|
const normalized = candidate?.trim();
|
|
1421
|
-
if (!normalized) {
|
|
1537
|
+
if (!normalized || seen.has(normalized) || !existsSync(normalized)) {
|
|
1422
1538
|
continue;
|
|
1423
1539
|
}
|
|
1424
|
-
|
|
1425
|
-
|
|
1540
|
+
seen.add(normalized);
|
|
1541
|
+
normalizedCandidates.push(normalized);
|
|
1542
|
+
}
|
|
1543
|
+
if (!normalizedProviderSessionId) {
|
|
1544
|
+
return normalizedCandidates[0] ?? fallbackRawStoreRef;
|
|
1545
|
+
}
|
|
1546
|
+
for (const candidate of normalizedCandidates) {
|
|
1547
|
+
if (readSessionMeta(candidate)?.threadId === normalizedProviderSessionId) {
|
|
1548
|
+
return candidate;
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
for (const candidate of normalizedCandidates) {
|
|
1552
|
+
if (doesRawStorePathLookLikeThread(candidate, normalizedProviderSessionId)) {
|
|
1553
|
+
return candidate;
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
for (const candidate of normalizedCandidates) {
|
|
1557
|
+
if (isSyntheticRawStoreRef(candidate)) {
|
|
1558
|
+
return candidate;
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
for (const candidate of normalizedCandidates) {
|
|
1562
|
+
if (!readSessionMeta(candidate)) {
|
|
1563
|
+
return candidate;
|
|
1426
1564
|
}
|
|
1427
1565
|
}
|
|
1428
1566
|
return fallbackRawStoreRef;
|
|
1429
1567
|
}
|
|
1568
|
+
function doesRawStorePathLookLikeThread(rawStoreRef, providerSessionId) {
|
|
1569
|
+
const fileName = basename(rawStoreRef, ".jsonl").trim().toLowerCase();
|
|
1570
|
+
const normalizedProviderSessionId = providerSessionId.trim().toLowerCase();
|
|
1571
|
+
if (!fileName || !normalizedProviderSessionId) {
|
|
1572
|
+
return false;
|
|
1573
|
+
}
|
|
1574
|
+
return fileName === normalizedProviderSessionId || fileName.includes(normalizedProviderSessionId);
|
|
1575
|
+
}
|
|
1430
1576
|
function resolveRuntimeStoreKey(providerSessionId, sessionId) {
|
|
1431
1577
|
return providerSessionId.trim() || sessionId;
|
|
1432
1578
|
}
|
|
@@ -1506,13 +1652,13 @@ function readJsonRpcResult(parsed) {
|
|
|
1506
1652
|
}
|
|
1507
1653
|
function resolveResumeThreadId(providerSessionId, rawStoreRef) {
|
|
1508
1654
|
const normalizedProviderSessionId = ensureText(providerSessionId).trim();
|
|
1655
|
+
if (normalizedProviderSessionId.length > 0) {
|
|
1656
|
+
return normalizedProviderSessionId;
|
|
1657
|
+
}
|
|
1509
1658
|
const fromRawStore = readThreadIdFromRawStore(rawStoreRef);
|
|
1510
1659
|
if (fromRawStore) {
|
|
1511
1660
|
return fromRawStore;
|
|
1512
1661
|
}
|
|
1513
|
-
if (normalizedProviderSessionId.length > 0) {
|
|
1514
|
-
return normalizedProviderSessionId;
|
|
1515
|
-
}
|
|
1516
1662
|
return null;
|
|
1517
1663
|
}
|
|
1518
1664
|
function buildSyntheticResumeHistory(rawStoreRef) {
|
|
@@ -1919,7 +2065,7 @@ function toSyntheticRuntimeRecord(event, providerSessionId) {
|
|
|
1919
2065
|
const callId = pickFirstNonEmpty(ensureText(readProp(item, "id")).trim(), ensureText(readProp(item, "call_id")).trim(), `${itemType}-${providerSessionId}`);
|
|
1920
2066
|
const name = pickFirstNonEmpty(ensureText(readProp(item, "name")).trim(), ensureText(readProp(item, "tool")).trim(), itemType);
|
|
1921
2067
|
if (eventType === "item.started") {
|
|
1922
|
-
const input =
|
|
2068
|
+
const input = resolveCodexToolInput(name, item);
|
|
1923
2069
|
return {
|
|
1924
2070
|
timestamp,
|
|
1925
2071
|
record: {
|
|
@@ -1977,6 +2123,16 @@ function buildCodexFileChangeOutput(value) {
|
|
|
1977
2123
|
if (!Array.isArray(value)) {
|
|
1978
2124
|
return "";
|
|
1979
2125
|
}
|
|
2126
|
+
const structuredPatch = buildApplyPatchFromFileChangeList(value.map((change) => {
|
|
2127
|
+
const record = toRecord(change);
|
|
2128
|
+
return {
|
|
2129
|
+
path: ensureText(record?.path).trim() || null,
|
|
2130
|
+
kind: ensureText(record?.kind).trim() || null
|
|
2131
|
+
};
|
|
2132
|
+
}));
|
|
2133
|
+
if (structuredPatch) {
|
|
2134
|
+
return structuredPatch;
|
|
2135
|
+
}
|
|
1980
2136
|
return value
|
|
1981
2137
|
.map((change) => {
|
|
1982
2138
|
const record = toRecord(change);
|
|
@@ -1993,4 +2149,33 @@ function buildCodexFileChangeOutput(value) {
|
|
|
1993
2149
|
.filter((entry) => entry.length > 0)
|
|
1994
2150
|
.join("\n\n");
|
|
1995
2151
|
}
|
|
2152
|
+
function resolveCodexToolInput(name, item) {
|
|
2153
|
+
const rawInput = pickFirstNonEmpty(extractTextBlocks(readProp(item, "arguments")).trim(), extractTextBlocks(readProp(item, "input")).trim(), extractTextBlocks(readProp(item, "command")).trim());
|
|
2154
|
+
if (name.trim().toLowerCase() !== "apply_patch") {
|
|
2155
|
+
return rawInput;
|
|
2156
|
+
}
|
|
2157
|
+
return (normalizeApplyPatchText(rawInput, {
|
|
2158
|
+
fallbackPaths: collectCodexApplyPatchFallbackPaths(item)
|
|
2159
|
+
}) ?? rawInput);
|
|
2160
|
+
}
|
|
2161
|
+
function collectCodexApplyPatchFallbackPaths(item) {
|
|
2162
|
+
const directPaths = [
|
|
2163
|
+
ensureText(readProp(item, "path")).trim(),
|
|
2164
|
+
ensureText(readProp(item, "filePath")).trim(),
|
|
2165
|
+
ensureText(readProp(item, "file_path")).trim()
|
|
2166
|
+
].filter((value) => value.length > 0);
|
|
2167
|
+
const rawChanges = readProp(item, "changes");
|
|
2168
|
+
const changes = Array.isArray(rawChanges) ? rawChanges : [];
|
|
2169
|
+
const changePaths = changes
|
|
2170
|
+
.map((change) => ensureText(readProp(change, "path")).trim())
|
|
2171
|
+
.filter((value) => value.length > 0);
|
|
2172
|
+
const outputText = pickFirstNonEmpty(extractTextBlocks(readProp(item, "result")).trim(), extractTextBlocks(readProp(item, "output")).trim(), extractTextBlocks(readProp(item, "aggregated_output")).trim(), extractTextBlocks(readProp(item, "error")).trim());
|
|
2173
|
+
return [
|
|
2174
|
+
...new Set([
|
|
2175
|
+
...directPaths,
|
|
2176
|
+
...changePaths,
|
|
2177
|
+
...extractApplyPatchTargetPathsFromToolOutput(outputText)
|
|
2178
|
+
])
|
|
2179
|
+
];
|
|
2180
|
+
}
|
|
1996
2181
|
//# sourceMappingURL=codex-runtime.js.map
|