@jingyi0605/codingns 0.3.6 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/bin/codingns.mjs +913 -1
- package/dist/public/assets/AdaptiveButlerPage-B153lk5H.css +1 -0
- package/dist/public/assets/AdaptiveButlerPage-R-XZw7pd.js +3 -0
- package/dist/public/assets/App-DUAg5urj.css +1 -0
- package/dist/public/assets/App-DkvE5EyM.js +30 -0
- package/dist/public/assets/BootstrapPage-Vu5oEJ8z.js +1 -0
- package/dist/public/assets/ConversationPage-Cjpg6g0J.js +2 -0
- package/dist/public/assets/DesktopDetachPreviewPage-BgeEqbc5.js +1 -0
- package/dist/public/assets/DesktopWindowPage-1WelvxdH.js +2 -0
- package/dist/public/assets/FileContextPanel-D_ghXJuW.js +1 -0
- package/dist/public/assets/GitSidebar-D9f9Jxwr.js +6 -0
- package/dist/public/assets/MobileCreateSessionSheet-DLq5qPkx.js +1 -0
- package/dist/public/assets/MobileSheet-DLg-gX1t.js +1 -0
- package/dist/public/assets/MobileTopHeaderFrame-DArgZI7L.js +1 -0
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-0ywJKfBQ.js +1 -0
- package/dist/public/assets/ServerSettingsModal-izoYMx9U.js +1 -0
- package/dist/public/assets/SessionIndexPage-C5aG8FIv.js +1 -0
- package/dist/public/assets/SettingsPage-HJIC-P-4.js +1 -0
- package/dist/public/assets/TerminalManagerPanel-DpyUTo9k.js +1 -0
- package/dist/public/assets/{TerminalPage-D00S4KM6.js → TerminalPage-CtKXIU0h.js} +19 -19
- package/dist/public/assets/TerminalRuntimeFallbackModal-CRhOQOsT.js +1 -0
- package/dist/public/assets/ToolFilesPage-DcYPsS-e.js +1 -0
- package/dist/public/assets/ToolGitPage-CsPl89ty.js +1 -0
- package/dist/public/assets/ToolProcessesPage-D0dvR8xK.js +1 -0
- package/dist/public/assets/ToolsHomePage-4fP-KRiv.js +1 -0
- package/dist/public/assets/WorkbenchLandingPage-kvlfyxRo.js +1 -0
- package/dist/public/assets/WorkbenchLayout-ByFw4eeu.js +3 -0
- package/dist/public/assets/WorkbenchModal-Ctob14VR.js +1 -0
- package/dist/public/assets/WorkbenchShellRoute-BUITtdAg.css +1 -0
- package/dist/public/assets/WorkbenchShellRoute-Kw7JEZI3.js +1 -0
- package/dist/public/assets/WorkspaceDebugDetailPage-Com5kEXJ.js +1 -0
- package/dist/public/assets/WorkspaceDetailPage-D0Lrx4Uz.js +1 -0
- package/dist/public/assets/WorkspaceHomePage-wR8d3aP9.js +1 -0
- package/dist/public/assets/butler-records-events-DgWCG364.js +1 -0
- package/dist/public/assets/default-session-permission-mode-CcGwR4Kk.js +1 -0
- package/dist/public/assets/event-DvH9tcej.js +1 -0
- package/dist/public/assets/file-tree-icon-UFVoVzhM.js +31 -0
- package/dist/public/assets/index-Byp9hJ0c.js +42 -0
- package/dist/public/assets/index-_52jxu4a.css +1 -0
- package/dist/public/assets/preferences-service-KIYeE2gk.js +1 -0
- package/dist/public/assets/session-runtime-machine-0KNSSPp5.js +17 -0
- package/dist/public/assets/styles-BWPBZvze.css +1 -0
- package/dist/public/assets/styles-CSUx5LGe.js +1 -0
- package/dist/public/assets/terminal-runtime-meta-AWXJpN4r.js +1 -0
- package/dist/public/assets/useRegisteredDebugTemplates-DBDRdptr.js +1 -0
- package/dist/public/assets/window-BWqRixxq.js +1 -0
- package/dist/public/index.html +2 -2
- package/dist/server/middlewares/auth-guard.d.ts +4 -0
- package/dist/server/middlewares/auth-guard.js +42 -4
- package/dist/server/middlewares/auth-guard.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +234 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +365 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +262 -2
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +737 -3
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
- package/dist/server/modules/auth/auth-controller.d.ts +11 -1
- package/dist/server/modules/auth/auth-controller.js +61 -2
- package/dist/server/modules/auth/auth-controller.js.map +1 -1
- package/dist/server/modules/auth/auth-device-display-name.d.ts +10 -0
- package/dist/server/modules/auth/auth-device-display-name.js +190 -0
- package/dist/server/modules/auth/auth-device-display-name.js.map +1 -0
- package/dist/server/modules/auth/auth-service.d.ts +80 -5
- package/dist/server/modules/auth/auth-service.js +333 -23
- package/dist/server/modules/auth/auth-service.js.map +1 -1
- package/dist/server/modules/butler/assistant-automation-service.d.ts +112 -0
- package/dist/server/modules/butler/assistant-automation-service.js +832 -0
- package/dist/server/modules/butler/assistant-automation-service.js.map +1 -0
- package/dist/server/modules/butler/assistant-automation-trigger.d.ts +94 -0
- package/dist/server/modules/butler/assistant-automation-trigger.js +400 -0
- package/dist/server/modules/butler/assistant-automation-trigger.js.map +1 -0
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
- package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
- package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
- package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
- package/dist/server/modules/butler/butler-action-context-service.d.ts +4 -1
- package/dist/server/modules/butler/butler-action-context-service.js +8 -2
- package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
- package/dist/server/modules/butler/butler-auth-service.js +7 -2
- package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
- package/dist/server/modules/butler/butler-control-session-service.d.ts +11 -1
- package/dist/server/modules/butler/butler-control-session-service.js +173 -40
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-control-timer-scheduler.d.ts +32 -0
- package/dist/server/modules/butler/butler-control-timer-scheduler.js +93 -0
- package/dist/server/modules/butler/butler-control-timer-scheduler.js.map +1 -0
- package/dist/server/modules/butler/butler-control-timer-service.d.ts +42 -0
- package/dist/server/modules/butler/butler-control-timer-service.js +132 -0
- package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -0
- package/dist/server/modules/butler/butler-controller.d.ts +42 -2
- package/dist/server/modules/butler/butler-controller.js +79 -12
- package/dist/server/modules/butler/butler-controller.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +2 -1
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +27 -25
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-service.d.ts +41 -5
- package/dist/server/modules/butler/butler-follow-up-service.js +568 -371
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
- package/dist/server/modules/butler/butler-inbox-analysis-service.d.ts +4 -1
- package/dist/server/modules/butler/butler-inbox-analysis-service.js +18 -4
- package/dist/server/modules/butler/butler-inbox-analysis-service.js.map +1 -1
- package/dist/server/modules/butler/butler-inbox-service.js +1 -0
- package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
- package/dist/server/modules/butler/butler-profile-service.js +2 -5
- package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
- package/dist/server/modules/butler/butler-project-service.d.ts +3 -1
- package/dist/server/modules/butler/butler-project-service.js +7 -1
- package/dist/server/modules/butler/butler-project-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.d.ts +5 -1
- package/dist/server/modules/butler/butler-session-service.js +26 -1
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.js +2 -1
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/butler-workspace-context.d.ts +4 -1
- package/dist/server/modules/butler/butler-workspace-context.js +204 -58
- package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
- package/dist/server/modules/butler/patrol-execution-service.js +2 -1
- package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
- package/dist/server/modules/butler/provider-adapter-registry.d.ts +3 -0
- package/dist/server/modules/butler/provider-adapter-registry.js +18 -1
- package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -1
- package/dist/server/modules/butler/verification-run-service.d.ts +9 -2
- package/dist/server/modules/butler/verification-run-service.js +188 -34
- package/dist/server/modules/butler/verification-run-service.js.map +1 -1
- package/dist/server/modules/debug-target/debug-target-controller.js +1 -1
- package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -1
- package/dist/server/modules/debug-target/debug-target-service.d.ts +7 -2
- package/dist/server/modules/debug-target/debug-target-service.js +563 -100
- package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
- package/dist/server/modules/git/git-command-helper-client.d.ts +1 -0
- package/dist/server/modules/git/git-command-helper-client.js +19 -26
- package/dist/server/modules/git/git-command-helper-client.js.map +1 -1
- package/dist/server/modules/git/git-command-runner.js +19 -1
- package/dist/server/modules/git/git-command-runner.js.map +1 -1
- package/dist/server/modules/preferences/profile-service.d.ts +3 -1
- package/dist/server/modules/preferences/profile-service.js +74 -3
- package/dist/server/modules/preferences/profile-service.js.map +1 -1
- package/dist/server/modules/provider/provider-controller.d.ts +1 -1
- package/dist/server/modules/provider/provider-controller.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +5 -3
- package/dist/server/modules/provider/provider-discovery-helper-client.js +129 -43
- package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-process.js +44 -0
- package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-runtime.js +83 -3
- package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.d.ts +10 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.js +48 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.js.map +1 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +48 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js +11 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +74 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +302 -0
- package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-controller.d.ts +33 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-controller.js +57 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-controller.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.d.ts +9 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.js +25 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +18 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +230 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +41 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +443 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +111 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +771 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -0
- package/dist/server/modules/sessions/claude-runtime-helper-client.js +23 -1
- package/dist/server/modules/sessions/claude-runtime-helper-client.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +2 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.js +78 -0
- package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +84 -2
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/provider-session-delete-cli.d.ts +15 -0
- package/dist/server/modules/sessions/provider-session-delete-cli.js +148 -0
- package/dist/server/modules/sessions/provider-session-delete-cli.js.map +1 -0
- package/dist/server/modules/sessions/session-controller.d.ts +4 -1
- package/dist/server/modules/sessions/session-controller.js +4 -0
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +24 -1
- package/dist/server/modules/sessions/session-history-service.js +401 -42
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-router-service.d.ts +25 -0
- package/dist/server/modules/sessions/session-live-runtime-router-service.js +42 -0
- package/dist/server/modules/sessions/session-live-runtime-router-service.js.map +1 -0
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +6 -0
- package/dist/server/modules/sessions/session-live-runtime-service.js +130 -28
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-message-attachment-service.d.ts +1 -0
- package/dist/server/modules/sessions/session-message-attachment-service.js +22 -0
- package/dist/server/modules/sessions/session-message-attachment-service.js.map +1 -1
- package/dist/server/modules/sessions/session-message-origin-utils.d.ts +12 -0
- package/dist/server/modules/sessions/session-message-origin-utils.js +45 -0
- package/dist/server/modules/sessions/session-message-origin-utils.js.map +1 -0
- package/dist/server/modules/sessions/session-permission-request-service.d.ts +1 -0
- package/dist/server/modules/sessions/session-permission-request-service.js +367 -5
- package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +32 -0
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-usage-guard-service.d.ts +37 -0
- package/dist/server/modules/sessions/session-provider-usage-guard-service.js +179 -0
- package/dist/server/modules/sessions/session-provider-usage-guard-service.js.map +1 -0
- package/dist/server/modules/sessions/session-provider-usage-limit.d.ts +17 -0
- package/dist/server/modules/sessions/session-provider-usage-limit.js +465 -0
- package/dist/server/modules/sessions/session-provider-usage-limit.js.map +1 -0
- package/dist/server/modules/skills/assistant-runtime-skill-catalog.d.ts +8 -0
- package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +26 -0
- package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -0
- package/dist/server/modules/skills/assistant-runtime-skill-cleanup.d.ts +9 -0
- package/dist/server/modules/skills/assistant-runtime-skill-cleanup.js +55 -0
- package/dist/server/modules/skills/assistant-runtime-skill-cleanup.js.map +1 -0
- package/dist/server/modules/skills/builtin-skill-service.js +1 -6
- package/dist/server/modules/skills/builtin-skill-service.js.map +1 -1
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +19 -12
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +9 -3
- package/dist/server/modules/skills/skill-controller.d.ts +2 -2
- package/dist/server/modules/skills/skill-controller.js +9 -1
- package/dist/server/modules/skills/skill-controller.js.map +1 -1
- package/dist/server/modules/skills/skill-manager-service.d.ts +26 -1
- package/dist/server/modules/skills/skill-manager-service.js +346 -90
- package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
- package/dist/server/modules/skills/skill-name-policy.d.ts +2 -0
- package/dist/server/modules/skills/skill-name-policy.js +10 -0
- package/dist/server/modules/skills/skill-name-policy.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-service.d.ts +2 -0
- package/dist/server/modules/tailscale/tailscale-service.js +21 -8
- package/dist/server/modules/tailscale/tailscale-service.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-client.d.ts +5 -2
- package/dist/server/modules/tasks/task-helper-client.js +118 -38
- package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-process.js +94 -3
- package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +6 -0
- package/dist/server/modules/tasks/task-types.js +7 -1
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/modules/terminal/command-template-service.d.ts +9 -0
- package/dist/server/modules/terminal/command-template-service.js +87 -5
- package/dist/server/modules/terminal/command-template-service.js.map +1 -1
- package/dist/server/modules/terminal/template-reverse-proxy-service.js +71 -3
- package/dist/server/modules/terminal/template-reverse-proxy-service.js.map +1 -1
- package/dist/server/modules/terminal/terminal-controller.d.ts +3 -0
- package/dist/server/modules/terminal/terminal-controller.js +41 -0
- package/dist/server/modules/terminal/terminal-controller.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +3 -0
- package/dist/server/modules/workbench/workbench-service.js +4 -3
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workbench/workspace-file-watcher.d.ts +14 -6
- package/dist/server/modules/workbench/workspace-file-watcher.js +267 -57
- package/dist/server/modules/workbench/workspace-file-watcher.js.map +1 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +2 -0
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +32 -3
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-manager.d.ts +9 -1
- package/dist/server/modules/worktree/worktree-manager.js +9 -1
- package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
- package/dist/server/routes/assistant.js +49 -0
- package/dist/server/routes/assistant.js.map +1 -1
- package/dist/server/routes/auth.js +4 -0
- package/dist/server/routes/auth.js.map +1 -1
- package/dist/server/routes/butler.js +5 -0
- package/dist/server/routes/butler.js.map +1 -1
- package/dist/server/routes/sessions.js +1 -0
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/routes/system.d.ts +2 -1
- package/dist/server/routes/system.js +13 -1
- package/dist/server/routes/system.js.map +1 -1
- package/dist/server/server/create-server.d.ts +18 -0
- package/dist/server/server/create-server.js +113 -20
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/utils/tokens.d.ts +3 -1
- package/dist/server/shared/utils/tokens.js +9 -2
- package/dist/server/shared/utils/tokens.js.map +1 -1
- package/dist/server/storage/repositories/assistant-automation-run-repository.d.ts +12 -0
- package/dist/server/storage/repositories/assistant-automation-run-repository.js +139 -0
- package/dist/server/storage/repositories/assistant-automation-run-repository.js.map +1 -0
- package/dist/server/storage/repositories/assistant-automation-task-repository.d.ts +17 -0
- package/dist/server/storage/repositories/assistant-automation-task-repository.js +179 -0
- package/dist/server/storage/repositories/assistant-automation-task-repository.js.map +1 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
- package/dist/server/storage/repositories/auth-device-repository.d.ts +22 -0
- package/dist/server/storage/repositories/auth-device-repository.js +97 -0
- package/dist/server/storage/repositories/auth-device-repository.js.map +1 -0
- package/dist/server/storage/repositories/auth-device-session-repository.d.ts +17 -0
- package/dist/server/storage/repositories/auth-device-session-repository.js +82 -0
- package/dist/server/storage/repositories/auth-device-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/auth-login-event-repository.d.ts +9 -0
- package/dist/server/storage/repositories/auth-login-event-repository.js +53 -0
- package/dist/server/storage/repositories/auth-login-event-repository.js.map +1 -0
- package/dist/server/storage/repositories/auth-token-repository.d.ts +4 -0
- package/dist/server/storage/repositories/auth-token-repository.js +58 -5
- package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-control-session-repository.js +27 -3
- package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-control-timer-repository.d.ts +15 -0
- package/dist/server/storage/repositories/butler-control-timer-repository.js +157 -0
- package/dist/server/storage/repositories/butler-control-timer-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js +21 -3
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -1
- package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.d.ts +8 -0
- package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.js +52 -0
- package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.js.map +1 -0
- package/dist/server/storage/repositories/instance-relay-tunnel-repository.d.ts +10 -0
- package/dist/server/storage/repositories/instance-relay-tunnel-repository.js +153 -0
- package/dist/server/storage/repositories/instance-relay-tunnel-repository.js.map +1 -0
- package/dist/server/storage/repositories/instance-tailscale-repository.js +6 -3
- package/dist/server/storage/repositories/instance-tailscale-repository.js.map +1 -1
- package/dist/server/storage/repositories/managed-skill-repository.d.ts +2 -1
- package/dist/server/storage/repositories/managed-skill-repository.js +14 -4
- package/dist/server/storage/repositories/managed-skill-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +2 -0
- package/dist/server/storage/repositories/session-message-attachment-repository.js +24 -0
- package/dist/server/storage/repositories/session-message-attachment-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 +534 -2
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +228 -4
- package/dist/server/types/domain.d.ts +170 -2
- package/dist/server/ws/workbench-ws-hub.d.ts +14 -8
- package/dist/server/ws/workbench-ws-hub.js +369 -209
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/dist/server/ws/ws-auth-guard.js +1 -4
- package/dist/server/ws/ws-auth-guard.js.map +1 -1
- package/dist/server/ws/ws-server.d.ts +1 -1
- package/dist/server/ws/ws-server.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +80 -0
- package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +5 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +122 -4
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +17 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +437 -51
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +7 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +240 -27
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +5 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +108 -2
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +3 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +101 -8
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +4 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +44 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +5 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +153 -60
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/services.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/services.js +24 -8
- package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/types.d.ts +6 -0
- package/package.json +1 -1
- package/scripts/postinstall.mjs +0 -33
- package/dist/public/assets/index-BlOinYqR.js +0 -122
- package/dist/public/assets/index-Dg_7g6lA.css +0 -1
|
@@ -6,7 +6,8 @@ import { performance } from "node:perf_hooks";
|
|
|
6
6
|
import { basename, dirname, join, resolve } from "node:path";
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
8
8
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
9
|
-
import { appendJsonLine, createRawRef, ensureDirectory, extractTextBlocks, messageIdFromRawRef, nextTimestamp, normalizeWorkspacePath
|
|
9
|
+
import { appendJsonLine, createRawRef, ensureDirectory, extractTextBlocks, messageIdFromStableKey, messageIdFromRawRef, nextTimestamp, normalizeWorkspacePath } from "../providers/utils.js";
|
|
10
|
+
import { buildCodexResumeHistoryFromRawStore } from "../codex-resume-history.js";
|
|
10
11
|
import { buildApplyPatchFromFileChangeList, extractApplyPatchTargetPathsFromToolOutput, normalizeApplyPatchText } from "../patch-builder.js";
|
|
11
12
|
import { loadDatabaseSync } from "../sqlite/node-sqlite.js";
|
|
12
13
|
import { createCodexThreadPermissionOptions } from "./codex-permissions.js";
|
|
@@ -162,6 +163,9 @@ export class CodexRuntimeAdapter {
|
|
|
162
163
|
return {
|
|
163
164
|
providerSessionId,
|
|
164
165
|
rawStoreRef,
|
|
166
|
+
submitDuringRun: async (options) => {
|
|
167
|
+
await transport.steerTurn(options);
|
|
168
|
+
},
|
|
165
169
|
interrupt: async () => {
|
|
166
170
|
abortController.abort();
|
|
167
171
|
await transport.interruptTurn().catch(() => {
|
|
@@ -210,14 +214,48 @@ export class CodexRuntimeAdapter {
|
|
|
210
214
|
providerSessionId
|
|
211
215
|
});
|
|
212
216
|
const syntheticRawStoreRef = buildRuntimeRawStoreRef(providerSessionId);
|
|
213
|
-
|
|
217
|
+
let resolvedSessionId = providerSessionId;
|
|
218
|
+
let resolvedFallbackHistoryRawStoreRef = null;
|
|
214
219
|
const resumeThreadStartedAtMs = performance.now();
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
220
|
+
let resumed;
|
|
221
|
+
try {
|
|
222
|
+
resumed = await transport.resumeThread(request, resolvedSessionId);
|
|
223
|
+
logCodexRuntimeStep("continue_session.thread_resume", resumeThreadStartedAtMs, {
|
|
224
|
+
sessionId: request.sessionId,
|
|
225
|
+
providerSessionId: resolvedSessionId,
|
|
226
|
+
fallback: false
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
const fallbackHistorySource = await this.resolveContinueFallbackHistorySource({
|
|
231
|
+
providerSessionId,
|
|
232
|
+
rawStoreRef: request.rawStoreRef,
|
|
233
|
+
workspacePath: request.workspacePath
|
|
234
|
+
});
|
|
235
|
+
const resumeHistory = fallbackHistorySource?.history ?? [];
|
|
236
|
+
if (!shouldFallbackCodexContinueFromHistory(error, resumeHistory)) {
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
resolvedFallbackHistoryRawStoreRef = fallbackHistorySource?.rawStoreRef ?? null;
|
|
240
|
+
const resumeFallbackStartedAtMs = performance.now();
|
|
241
|
+
resumed = await transport.resumeThreadFromHistory({
|
|
242
|
+
providerSessionId: null,
|
|
243
|
+
workspacePath: request.workspacePath,
|
|
244
|
+
history: resumeHistory,
|
|
245
|
+
model: request.options.model
|
|
246
|
+
});
|
|
247
|
+
resolvedSessionId = resumed.providerSessionId;
|
|
248
|
+
logCodexRuntimeStep("continue_session.thread_resume_from_history_fallback", resumeFallbackStartedAtMs, {
|
|
249
|
+
sessionId: request.sessionId,
|
|
250
|
+
requestedProviderSessionId: providerSessionId,
|
|
251
|
+
providerSessionId: resolvedSessionId,
|
|
252
|
+
historyLength: resumeHistory.length
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
const pickedRawStoreRef = pickAvailableCodexRawStoreRef(resolvedSessionId, [resolvedFallbackHistoryRawStoreRef, request.rawStoreRef, resumed.rawStoreRef], syntheticRawStoreRef);
|
|
256
|
+
const rawStoreRef = !resumed.rawStoreRef?.trim() && resolvedFallbackHistoryRawStoreRef
|
|
257
|
+
? resolvedFallbackHistoryRawStoreRef
|
|
258
|
+
: pickedRawStoreRef;
|
|
221
259
|
const abortController = new AbortController();
|
|
222
260
|
const eventQueue = createAsyncEventQueue();
|
|
223
261
|
logCodexRuntimeStep("continue_session.raw_store_ref_ready", runtimeStartedAtMs, {
|
|
@@ -299,6 +337,9 @@ export class CodexRuntimeAdapter {
|
|
|
299
337
|
return {
|
|
300
338
|
providerSessionId: resolvedSessionId,
|
|
301
339
|
rawStoreRef,
|
|
340
|
+
submitDuringRun: async (options) => {
|
|
341
|
+
await transport.steerTurn(options);
|
|
342
|
+
},
|
|
302
343
|
interrupt: async () => {
|
|
303
344
|
abortController.abort();
|
|
304
345
|
await transport.interruptTurn().catch(() => {
|
|
@@ -312,6 +353,41 @@ export class CodexRuntimeAdapter {
|
|
|
312
353
|
})
|
|
313
354
|
};
|
|
314
355
|
}
|
|
356
|
+
async resolveContinueFallbackHistorySource(input) {
|
|
357
|
+
const candidates = [];
|
|
358
|
+
const seen = new Set();
|
|
359
|
+
const pushCandidate = (candidate) => {
|
|
360
|
+
const normalized = candidate?.trim();
|
|
361
|
+
if (!normalized || seen.has(normalized) || !existsSync(normalized)) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
seen.add(normalized);
|
|
365
|
+
candidates.push(normalized);
|
|
366
|
+
};
|
|
367
|
+
pushCandidate(input.rawStoreRef);
|
|
368
|
+
// 旧会话的 binding 可能只剩 synthetic stream,或者已经指到了父线程 transcript。
|
|
369
|
+
// 继续会话失败时,额外按真实 thread id 扫一次本地 transcript,尽量把历史恢复链路救回来。
|
|
370
|
+
pushCandidate(await this.resolveRealRawStoreRef(input.providerSessionId.trim(), input.workspacePath));
|
|
371
|
+
let fallbackMatch = null;
|
|
372
|
+
for (const candidate of candidates) {
|
|
373
|
+
const history = buildCodexResumeHistoryFromRawStore(candidate);
|
|
374
|
+
if (history.length === 0) {
|
|
375
|
+
continue;
|
|
376
|
+
}
|
|
377
|
+
const meta = readSessionMeta(candidate);
|
|
378
|
+
if (meta?.threadId === input.providerSessionId.trim()) {
|
|
379
|
+
return {
|
|
380
|
+
rawStoreRef: candidate,
|
|
381
|
+
history
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
fallbackMatch ??= {
|
|
385
|
+
rawStoreRef: candidate,
|
|
386
|
+
history
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
return fallbackMatch;
|
|
390
|
+
}
|
|
315
391
|
async runTurn(thread, request, sink, providerSessionId, rawStoreRef, abortController, preparedEvents, bufferedEvents = [], launchedAtMs = Date.now(), launchPerfStartedAtMs = performance.now()) {
|
|
316
392
|
const context = {
|
|
317
393
|
providerSessionId,
|
|
@@ -542,6 +618,7 @@ export class CodexRuntimeAdapter {
|
|
|
542
618
|
}
|
|
543
619
|
async emitStableMessage(context, input) {
|
|
544
620
|
const message = this.buildMessage(context, {
|
|
621
|
+
timestamp: input.timestamp,
|
|
545
622
|
role: input.role,
|
|
546
623
|
kind: input.kind,
|
|
547
624
|
content: input.content,
|
|
@@ -721,7 +798,7 @@ export class CodexRuntimeAdapter {
|
|
|
721
798
|
kind: input.kind,
|
|
722
799
|
content: input.content,
|
|
723
800
|
toolCall: input.toolCall ?? null,
|
|
724
|
-
timestamp:
|
|
801
|
+
timestamp: input.timestamp,
|
|
725
802
|
sequence,
|
|
726
803
|
rawRef
|
|
727
804
|
};
|
|
@@ -739,7 +816,7 @@ export class CodexRuntimeAdapter {
|
|
|
739
816
|
const created = {
|
|
740
817
|
sequence: context.sequence,
|
|
741
818
|
rawRef,
|
|
742
|
-
messageId:
|
|
819
|
+
messageId: messageIdFromStableKey(buildCodexStableMessageKey(context.providerSessionId, stableIdentity))
|
|
743
820
|
};
|
|
744
821
|
context.stableMessageRefByIdentity.set(stableIdentity, created);
|
|
745
822
|
return created;
|
|
@@ -980,6 +1057,27 @@ function createCodexAppServerTransport(options) {
|
|
|
980
1057
|
notification: buildCodexTurnCompletionNotification(turn, providerSessionId)
|
|
981
1058
|
};
|
|
982
1059
|
},
|
|
1060
|
+
async steerTurn(options) {
|
|
1061
|
+
if (!activeThreadId || !activeTurnId) {
|
|
1062
|
+
throw new Error("SESSION_NOT_RUNNING");
|
|
1063
|
+
}
|
|
1064
|
+
try {
|
|
1065
|
+
const result = await sendJsonRpcRequest(child, pendingResponses, () => nextJsonRpcId("turn-steer", () => ++requestSequence), {
|
|
1066
|
+
method: "turn/steer",
|
|
1067
|
+
params: createTurnSteerParams(activeThreadId, activeTurnId, options)
|
|
1068
|
+
});
|
|
1069
|
+
const turnId = ensureText(readProp(result, "turnId")).trim();
|
|
1070
|
+
if (turnId) {
|
|
1071
|
+
activeTurnId = turnId;
|
|
1072
|
+
}
|
|
1073
|
+
return {
|
|
1074
|
+
turnId: turnId || activeTurnId
|
|
1075
|
+
};
|
|
1076
|
+
}
|
|
1077
|
+
catch (error) {
|
|
1078
|
+
throw normalizeCodexTurnSteerError(error);
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
983
1081
|
async interruptTurn() {
|
|
984
1082
|
if (!activeThreadId || !activeTurnId) {
|
|
985
1083
|
return;
|
|
@@ -1425,6 +1523,13 @@ function createTurnStartParams(request, providerSessionId) {
|
|
|
1425
1523
|
}
|
|
1426
1524
|
return params;
|
|
1427
1525
|
}
|
|
1526
|
+
function createTurnSteerParams(providerSessionId, activeTurnId, options) {
|
|
1527
|
+
return {
|
|
1528
|
+
threadId: providerSessionId,
|
|
1529
|
+
expectedTurnId: activeTurnId,
|
|
1530
|
+
input: createCodexAppServerInputFromOptions(options)
|
|
1531
|
+
};
|
|
1532
|
+
}
|
|
1428
1533
|
function normalizeCodexReasoningEffort(value) {
|
|
1429
1534
|
const normalized = value?.trim().toLowerCase() ?? null;
|
|
1430
1535
|
if (!normalized) {
|
|
@@ -1466,15 +1571,18 @@ function createCodexInput(request) {
|
|
|
1466
1571
|
return input;
|
|
1467
1572
|
}
|
|
1468
1573
|
function createCodexAppServerInput(request) {
|
|
1574
|
+
return createCodexAppServerInputFromOptions(request.options);
|
|
1575
|
+
}
|
|
1576
|
+
function createCodexAppServerInputFromOptions(options) {
|
|
1469
1577
|
const input = [];
|
|
1470
|
-
const promptText = (
|
|
1578
|
+
const promptText = (options.providerPrompt ?? options.content).trim();
|
|
1471
1579
|
if (promptText.length > 0) {
|
|
1472
1580
|
input.push({
|
|
1473
1581
|
type: "text",
|
|
1474
1582
|
text: promptText
|
|
1475
1583
|
});
|
|
1476
1584
|
}
|
|
1477
|
-
for (const attachment of
|
|
1585
|
+
for (const attachment of options.attachments) {
|
|
1478
1586
|
if (attachment.kind !== "image") {
|
|
1479
1587
|
continue;
|
|
1480
1588
|
}
|
|
@@ -1485,6 +1593,23 @@ function createCodexAppServerInput(request) {
|
|
|
1485
1593
|
}
|
|
1486
1594
|
return input;
|
|
1487
1595
|
}
|
|
1596
|
+
function normalizeCodexTurnSteerError(error) {
|
|
1597
|
+
const detail = error instanceof Error ? error.message.trim() : String(error).trim();
|
|
1598
|
+
const normalized = detail.toLowerCase();
|
|
1599
|
+
if (normalized.includes("method not found")
|
|
1600
|
+
|| (normalized.includes("turn/steer") && normalized.includes("not found"))
|
|
1601
|
+
|| normalized.includes("unknown method")) {
|
|
1602
|
+
return new Error("IN_RUN_INPUT_NOT_SUPPORTED");
|
|
1603
|
+
}
|
|
1604
|
+
if (normalized.includes("expectedturnid")
|
|
1605
|
+
|| normalized.includes("active turn")
|
|
1606
|
+
|| normalized.includes("turn mismatch")
|
|
1607
|
+
|| normalized.includes("no active turn")
|
|
1608
|
+
|| normalized.includes("not running")) {
|
|
1609
|
+
return new Error("SESSION_NOT_RUNNING");
|
|
1610
|
+
}
|
|
1611
|
+
return error instanceof Error ? error : new Error(detail || "CODEX_TURN_STEER_FAILED");
|
|
1612
|
+
}
|
|
1488
1613
|
async function loadCodexClient() {
|
|
1489
1614
|
const moduleName = "@openai/codex-sdk";
|
|
1490
1615
|
const runtimeImport = new Function("name", "return import(name);");
|
|
@@ -1670,56 +1795,19 @@ function buildSyntheticResumeHistory(rawStoreRef) {
|
|
|
1670
1795
|
if (!threadId || looksLikeCodexThreadId(threadId)) {
|
|
1671
1796
|
return [];
|
|
1672
1797
|
}
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
const payload = toRecord(record.payload) ?? {};
|
|
1679
|
-
const eventType = ensureText(payload.type).trim();
|
|
1680
|
-
const content = ensureText(payload.message).trim();
|
|
1681
|
-
if (content.length === 0) {
|
|
1682
|
-
continue;
|
|
1683
|
-
}
|
|
1684
|
-
if (eventType === "user_message") {
|
|
1685
|
-
history.push(createResumeHistoryMessage("user", content));
|
|
1686
|
-
continue;
|
|
1687
|
-
}
|
|
1688
|
-
if (eventType === "agent_message") {
|
|
1689
|
-
history.push(createResumeHistoryMessage("assistant", content));
|
|
1690
|
-
}
|
|
1691
|
-
continue;
|
|
1692
|
-
}
|
|
1693
|
-
if (recordType !== "response_item") {
|
|
1694
|
-
continue;
|
|
1695
|
-
}
|
|
1696
|
-
const payload = toRecord(record.payload) ?? {};
|
|
1697
|
-
if (ensureText(payload.type).trim() !== "message") {
|
|
1698
|
-
continue;
|
|
1699
|
-
}
|
|
1700
|
-
const role = ensureText(payload.role).trim();
|
|
1701
|
-
if (role !== "user" && role !== "assistant") {
|
|
1702
|
-
continue;
|
|
1703
|
-
}
|
|
1704
|
-
const content = extractTextBlocks(payload.content).trim();
|
|
1705
|
-
if (content.length === 0) {
|
|
1706
|
-
continue;
|
|
1707
|
-
}
|
|
1708
|
-
history.push(createResumeHistoryMessage(role, content));
|
|
1798
|
+
return buildCodexResumeHistoryFromRawStore(filePath);
|
|
1799
|
+
}
|
|
1800
|
+
function shouldFallbackCodexContinueFromHistory(error, history) {
|
|
1801
|
+
if (history.length === 0) {
|
|
1802
|
+
return false;
|
|
1709
1803
|
}
|
|
1710
|
-
return
|
|
1804
|
+
return isCodexThreadLoadError(error);
|
|
1711
1805
|
}
|
|
1712
|
-
function
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
{
|
|
1718
|
-
type: role === "user" ? "input_text" : "output_text",
|
|
1719
|
-
text: content
|
|
1720
|
-
}
|
|
1721
|
-
]
|
|
1722
|
-
};
|
|
1806
|
+
function isCodexThreadLoadError(error) {
|
|
1807
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1808
|
+
const normalized = message.trim().toLowerCase();
|
|
1809
|
+
return (normalized.includes("thread not loaded") ||
|
|
1810
|
+
normalized.includes("no rollout found for thread id"));
|
|
1723
1811
|
}
|
|
1724
1812
|
function readProp(value, key) {
|
|
1725
1813
|
if (!value || typeof value !== "object") {
|
|
@@ -2037,6 +2125,7 @@ function toSyntheticRuntimeRecord(event, providerSessionId) {
|
|
|
2037
2125
|
type: "event_msg",
|
|
2038
2126
|
payload: {
|
|
2039
2127
|
type: "agent_message",
|
|
2128
|
+
id: ensureText(readProp(item, "id")).trim() || undefined,
|
|
2040
2129
|
message: content
|
|
2041
2130
|
}
|
|
2042
2131
|
}
|
|
@@ -2054,6 +2143,7 @@ function toSyntheticRuntimeRecord(event, providerSessionId) {
|
|
|
2054
2143
|
type: "event_msg",
|
|
2055
2144
|
payload: {
|
|
2056
2145
|
type: "agent_reasoning",
|
|
2146
|
+
id: ensureText(readProp(item, "id")).trim() || undefined,
|
|
2057
2147
|
text: content
|
|
2058
2148
|
}
|
|
2059
2149
|
}
|
|
@@ -2106,6 +2196,9 @@ function mapToolStartItemType(itemType) {
|
|
|
2106
2196
|
function mapToolResultItemType(itemType) {
|
|
2107
2197
|
return itemType === "custom_tool_call" ? "custom_tool_call_output" : "function_call_output";
|
|
2108
2198
|
}
|
|
2199
|
+
function buildCodexStableMessageKey(providerSessionId, stableIdentity) {
|
|
2200
|
+
return `codex:${providerSessionId}:${stableIdentity}`;
|
|
2201
|
+
}
|
|
2109
2202
|
function normalizeCodexItemStatus(value) {
|
|
2110
2203
|
const normalized = ensureText(value).trim();
|
|
2111
2204
|
if (!normalized) {
|