@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
1
|
+
import { basename, join } from "node:path";
|
|
2
2
|
import { AppError } from "../../shared/errors/app-error.js";
|
|
3
3
|
import { logPermissionDebug } from "../../shared/utils/permission-debug-log.js";
|
|
4
4
|
import { createId } from "../../shared/utils/id.js";
|
|
@@ -197,6 +197,38 @@ export class SessionPermissionRequestService {
|
|
|
197
197
|
bridgeResponse: buildClaudePreToolUseBridgeResponse("allow", "CodingNS 已按本会话默认允许自动放行")
|
|
198
198
|
};
|
|
199
199
|
}
|
|
200
|
+
const safeAssistantCliReason = resolveClaudeAssistantCliAutoApprovalReason(normalized.command);
|
|
201
|
+
if (safeAssistantCliReason) {
|
|
202
|
+
logPermissionDebug("claude_permission.pre_tool_use.auto_allow_safe_assistant_cli", {
|
|
203
|
+
sessionId: binding.sessionId,
|
|
204
|
+
providerSessionId,
|
|
205
|
+
toolName: payload.tool_name ?? null,
|
|
206
|
+
command: normalized.command,
|
|
207
|
+
reason: safeAssistantCliReason
|
|
208
|
+
});
|
|
209
|
+
return {
|
|
210
|
+
accepted: true,
|
|
211
|
+
ignored: false,
|
|
212
|
+
sessionId: binding.sessionId,
|
|
213
|
+
bridgeResponse: buildClaudePreToolUseBridgeResponse("allow", safeAssistantCliReason)
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const safeShellReason = resolveClaudeSafeShellAutoApprovalReason(normalized.command);
|
|
217
|
+
if (safeShellReason) {
|
|
218
|
+
logPermissionDebug("claude_permission.pre_tool_use.auto_allow_safe_shell", {
|
|
219
|
+
sessionId: binding.sessionId,
|
|
220
|
+
providerSessionId,
|
|
221
|
+
toolName: payload.tool_name ?? null,
|
|
222
|
+
command: normalized.command,
|
|
223
|
+
reason: safeShellReason
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
accepted: true,
|
|
227
|
+
ignored: false,
|
|
228
|
+
sessionId: binding.sessionId,
|
|
229
|
+
bridgeResponse: buildClaudePreToolUseBridgeResponse("allow", safeShellReason)
|
|
230
|
+
};
|
|
231
|
+
}
|
|
200
232
|
let resolvedByTimeout = false;
|
|
201
233
|
const decision = await new Promise((resolve) => {
|
|
202
234
|
const timer = setTimeout(() => {
|
|
@@ -302,6 +334,21 @@ export class SessionPermissionRequestService {
|
|
|
302
334
|
payload,
|
|
303
335
|
createdAt: now
|
|
304
336
|
});
|
|
337
|
+
const allowedScopeKey = buildClaudeAllowedScopeKey(normalized);
|
|
338
|
+
if (allowedScopeKey && this.isClaudeScopeAllowed(binding.sessionId, allowedScopeKey)) {
|
|
339
|
+
logPermissionDebug("claude_permission.permission_request.auto_allow_session", {
|
|
340
|
+
sessionId: binding.sessionId,
|
|
341
|
+
providerSessionId,
|
|
342
|
+
toolName: payload.tool_name ?? null,
|
|
343
|
+
scopeKey: allowedScopeKey
|
|
344
|
+
});
|
|
345
|
+
return {
|
|
346
|
+
accepted: true,
|
|
347
|
+
ignored: false,
|
|
348
|
+
sessionId: binding.sessionId,
|
|
349
|
+
bridgeResponse: buildClaudePermissionRequestBridgeResponse("allow", "CodingNS 已按本会话默认允许自动放行")
|
|
350
|
+
};
|
|
351
|
+
}
|
|
305
352
|
let resolvedByTimeout = false;
|
|
306
353
|
const decision = await new Promise((resolve) => {
|
|
307
354
|
const timer = setTimeout(() => {
|
|
@@ -949,7 +996,12 @@ export function normalizeClaudePreToolUseRequest(input) {
|
|
|
949
996
|
paths: normalized.paths,
|
|
950
997
|
permissionProfile: null,
|
|
951
998
|
questions: [],
|
|
952
|
-
actions: buildClaudeActions(
|
|
999
|
+
actions: buildClaudeActions({
|
|
1000
|
+
kind: normalized.kind,
|
|
1001
|
+
command: normalized.command,
|
|
1002
|
+
paths: normalized.paths,
|
|
1003
|
+
toolName
|
|
1004
|
+
}),
|
|
953
1005
|
rawPayload,
|
|
954
1006
|
createdAt: input.createdAt,
|
|
955
1007
|
updatedAt: input.createdAt,
|
|
@@ -1344,6 +1396,7 @@ function resolveCodexReplyStatus(kind, action) {
|
|
|
1344
1396
|
function buildClaudeKind(toolName, toolInput) {
|
|
1345
1397
|
const normalizedToolName = toolName.trim().toLowerCase();
|
|
1346
1398
|
const inputRecord = toRecord(toolInput);
|
|
1399
|
+
const paths = readClaudePaths(inputRecord);
|
|
1347
1400
|
const command = normalizeText(inputRecord?.command) ||
|
|
1348
1401
|
normalizeText(inputRecord?.cmd) ||
|
|
1349
1402
|
null;
|
|
@@ -1376,7 +1429,7 @@ function buildClaudeKind(toolName, toolInput) {
|
|
|
1376
1429
|
summary: toolName,
|
|
1377
1430
|
detail: stringifyPayload(toolInput),
|
|
1378
1431
|
command,
|
|
1379
|
-
paths
|
|
1432
|
+
paths
|
|
1380
1433
|
};
|
|
1381
1434
|
}
|
|
1382
1435
|
function buildOpenCodeKind(title, metadata, pattern, fallbackToolName) {
|
|
@@ -1492,18 +1545,327 @@ function buildClaudeAllowedScopeKey(request) {
|
|
|
1492
1545
|
.sort();
|
|
1493
1546
|
return normalizedPaths.length > 0 ? `file_change:${normalizedPaths.join("|")}` : null;
|
|
1494
1547
|
}
|
|
1548
|
+
if (request.kind === "tool_call") {
|
|
1549
|
+
const normalizedToolName = normalizeText(request.toolName)?.toLowerCase() ?? null;
|
|
1550
|
+
const normalizedPaths = request.paths
|
|
1551
|
+
.map((path) => normalizeText(path))
|
|
1552
|
+
.filter((path) => Boolean(path))
|
|
1553
|
+
.sort();
|
|
1554
|
+
if (!normalizedToolName || normalizedPaths.length === 0) {
|
|
1555
|
+
return null;
|
|
1556
|
+
}
|
|
1557
|
+
return `tool_call:${normalizedToolName}:${normalizedPaths.join("|")}`;
|
|
1558
|
+
}
|
|
1495
1559
|
return null;
|
|
1496
1560
|
}
|
|
1497
|
-
function buildClaudeActions(
|
|
1561
|
+
function buildClaudeActions(request) {
|
|
1498
1562
|
const actions = [
|
|
1499
1563
|
createAction("allow", "允许", "primary", "只允许这一次")
|
|
1500
1564
|
];
|
|
1501
|
-
if (
|
|
1565
|
+
if (buildClaudeAllowedScopeKey(request)) {
|
|
1502
1566
|
actions.push(createAction("allow_session", "本会话默认允许", "neutral", "仅对同类操作默认放行"));
|
|
1503
1567
|
}
|
|
1504
1568
|
actions.push(createAction("deny", "拒绝", "danger", "阻止这次工具操作继续执行"));
|
|
1505
1569
|
return actions;
|
|
1506
1570
|
}
|
|
1571
|
+
function resolveClaudeAssistantCliAutoApprovalReason(command) {
|
|
1572
|
+
const parsed = parseCodingNsAssistantCommand(command);
|
|
1573
|
+
if (!parsed) {
|
|
1574
|
+
return null;
|
|
1575
|
+
}
|
|
1576
|
+
if (parsed.mode === "help") {
|
|
1577
|
+
return "CodingNS 已自动放行只读的助手帮助命令";
|
|
1578
|
+
}
|
|
1579
|
+
if (!isSupportedAssistantCliAction(parsed.group, parsed.action)) {
|
|
1580
|
+
return null;
|
|
1581
|
+
}
|
|
1582
|
+
if (isReadonlyAssistantCliAction(parsed.group, parsed.action)) {
|
|
1583
|
+
return "CodingNS 已自动放行只读的助手 CLI 查询命令";
|
|
1584
|
+
}
|
|
1585
|
+
return "CodingNS 已自动放行受控的助手 CLI 执行命令";
|
|
1586
|
+
}
|
|
1587
|
+
export function resolveClaudeSafeShellAutoApprovalReason(command) {
|
|
1588
|
+
const normalized = normalizeText(command);
|
|
1589
|
+
if (!normalized || containsShellControlOperator(normalized)) {
|
|
1590
|
+
return null;
|
|
1591
|
+
}
|
|
1592
|
+
const tokens = tokenizeShellCommand(normalized);
|
|
1593
|
+
if (tokens.length === 0) {
|
|
1594
|
+
return null;
|
|
1595
|
+
}
|
|
1596
|
+
const executable = normalizeShellExecutableName(tokens[0]);
|
|
1597
|
+
if (!executable) {
|
|
1598
|
+
return null;
|
|
1599
|
+
}
|
|
1600
|
+
if (executable === "command"
|
|
1601
|
+
&& tokens[1] === "-v"
|
|
1602
|
+
&& tokens.length === 3
|
|
1603
|
+
&& isSafeShellLookupTarget(tokens[2])) {
|
|
1604
|
+
return "CodingNS 已自动放行助手会话里的安全只读命令";
|
|
1605
|
+
}
|
|
1606
|
+
if (executable === "pwd" || executable === "whoami" || executable === "uname" || executable === "date") {
|
|
1607
|
+
return "CodingNS 已自动放行助手会话里的安全只读命令";
|
|
1608
|
+
}
|
|
1609
|
+
if (executable === "ls") {
|
|
1610
|
+
return "CodingNS 已自动放行助手会话里的安全只读命令";
|
|
1611
|
+
}
|
|
1612
|
+
if (executable === "cat") {
|
|
1613
|
+
return hasReadableFileTarget(tokens.slice(1))
|
|
1614
|
+
? "CodingNS 已自动放行助手会话里的安全只读命令"
|
|
1615
|
+
: null;
|
|
1616
|
+
}
|
|
1617
|
+
if (executable === "head" || executable === "tail" || executable === "wc" || executable === "stat" || executable === "file") {
|
|
1618
|
+
return hasReadableFileTarget(tokens.slice(1))
|
|
1619
|
+
? "CodingNS 已自动放行助手会话里的安全只读命令"
|
|
1620
|
+
: null;
|
|
1621
|
+
}
|
|
1622
|
+
if (executable === "sed") {
|
|
1623
|
+
return isSafeReadonlySedCommand(tokens)
|
|
1624
|
+
? "CodingNS 已自动放行助手会话里的安全只读命令"
|
|
1625
|
+
: null;
|
|
1626
|
+
}
|
|
1627
|
+
if (executable === "find") {
|
|
1628
|
+
return isSafeReadonlyFindCommand(tokens)
|
|
1629
|
+
? "CodingNS 已自动放行助手会话里的安全只读命令"
|
|
1630
|
+
: null;
|
|
1631
|
+
}
|
|
1632
|
+
if (executable === "rg" || executable === "grep") {
|
|
1633
|
+
return "CodingNS 已自动放行助手会话里的安全只读命令";
|
|
1634
|
+
}
|
|
1635
|
+
if (executable === "git") {
|
|
1636
|
+
return isSafeReadonlyGitCommand(tokens)
|
|
1637
|
+
? "CodingNS 已自动放行助手会话里的安全只读命令"
|
|
1638
|
+
: null;
|
|
1639
|
+
}
|
|
1640
|
+
if (isSafeReadonlyVersionCommand(executable, tokens.slice(1))) {
|
|
1641
|
+
return "CodingNS 已自动放行助手会话里的安全只读命令";
|
|
1642
|
+
}
|
|
1643
|
+
return null;
|
|
1644
|
+
}
|
|
1645
|
+
function parseCodingNsAssistantCommand(command) {
|
|
1646
|
+
const normalized = normalizeText(command);
|
|
1647
|
+
if (!normalized || containsShellControlOperator(normalized)) {
|
|
1648
|
+
return null;
|
|
1649
|
+
}
|
|
1650
|
+
const tokens = tokenizeShellCommand(normalized);
|
|
1651
|
+
const startIndex = tokens.findIndex((token, index) => token === "codingns" && tokens[index + 1] === "assistant");
|
|
1652
|
+
if (startIndex < 0) {
|
|
1653
|
+
return null;
|
|
1654
|
+
}
|
|
1655
|
+
const invocation = tokens.slice(startIndex + 2);
|
|
1656
|
+
if (invocation.length === 0 || invocation[0] === "--help" || invocation[0] === "-h") {
|
|
1657
|
+
return {
|
|
1658
|
+
group: null,
|
|
1659
|
+
action: null,
|
|
1660
|
+
mode: "help"
|
|
1661
|
+
};
|
|
1662
|
+
}
|
|
1663
|
+
if (invocation[0] === "help") {
|
|
1664
|
+
return {
|
|
1665
|
+
group: invocation[1] ?? null,
|
|
1666
|
+
action: invocation[2] ?? null,
|
|
1667
|
+
mode: "help"
|
|
1668
|
+
};
|
|
1669
|
+
}
|
|
1670
|
+
const group = invocation[0] ?? null;
|
|
1671
|
+
const actionCandidate = invocation[1];
|
|
1672
|
+
const action = actionCandidate && !actionCandidate.startsWith("-")
|
|
1673
|
+
? actionCandidate
|
|
1674
|
+
: null;
|
|
1675
|
+
if (!action && invocation.some((token) => token === "--help" || token === "-h")) {
|
|
1676
|
+
return {
|
|
1677
|
+
group,
|
|
1678
|
+
action: null,
|
|
1679
|
+
mode: "help"
|
|
1680
|
+
};
|
|
1681
|
+
}
|
|
1682
|
+
return {
|
|
1683
|
+
group,
|
|
1684
|
+
action,
|
|
1685
|
+
mode: "execute"
|
|
1686
|
+
};
|
|
1687
|
+
}
|
|
1688
|
+
function normalizeShellExecutableName(token) {
|
|
1689
|
+
const normalized = normalizeText(token);
|
|
1690
|
+
if (!normalized) {
|
|
1691
|
+
return null;
|
|
1692
|
+
}
|
|
1693
|
+
return basename(normalized).trim().toLowerCase() || null;
|
|
1694
|
+
}
|
|
1695
|
+
function isSafeShellLookupTarget(token) {
|
|
1696
|
+
const normalized = normalizeText(token);
|
|
1697
|
+
return Boolean(normalized && /^[a-zA-Z0-9._+-]+$/.test(normalized));
|
|
1698
|
+
}
|
|
1699
|
+
function hasReadableFileTarget(args) {
|
|
1700
|
+
return args.some((token) => {
|
|
1701
|
+
const normalized = normalizeText(token);
|
|
1702
|
+
return Boolean(normalized && !normalized.startsWith("-"));
|
|
1703
|
+
});
|
|
1704
|
+
}
|
|
1705
|
+
function isSafeReadonlySedCommand(tokens) {
|
|
1706
|
+
if (tokens.length < 4) {
|
|
1707
|
+
return false;
|
|
1708
|
+
}
|
|
1709
|
+
let hasQuietFlag = false;
|
|
1710
|
+
let hasEditableFlag = false;
|
|
1711
|
+
for (const token of tokens.slice(1)) {
|
|
1712
|
+
const normalized = normalizeText(token) ?? "";
|
|
1713
|
+
if (normalized === "-n" || normalized === "--quiet" || normalized === "--silent") {
|
|
1714
|
+
hasQuietFlag = true;
|
|
1715
|
+
continue;
|
|
1716
|
+
}
|
|
1717
|
+
if (normalized === "-i" || normalized === "--in-place" || normalized.startsWith("-i")) {
|
|
1718
|
+
hasEditableFlag = true;
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
return hasQuietFlag && !hasEditableFlag && hasReadableFileTarget(tokens.slice(1));
|
|
1722
|
+
}
|
|
1723
|
+
function isSafeReadonlyFindCommand(tokens) {
|
|
1724
|
+
if (tokens.length < 2) {
|
|
1725
|
+
return false;
|
|
1726
|
+
}
|
|
1727
|
+
const blockedFlags = new Set([
|
|
1728
|
+
"-delete",
|
|
1729
|
+
"-exec",
|
|
1730
|
+
"-execdir",
|
|
1731
|
+
"-ok",
|
|
1732
|
+
"-okdir",
|
|
1733
|
+
"-fls",
|
|
1734
|
+
"-fprint",
|
|
1735
|
+
"-fprintf"
|
|
1736
|
+
]);
|
|
1737
|
+
return !tokens.some((token) => blockedFlags.has(token));
|
|
1738
|
+
}
|
|
1739
|
+
function isSafeReadonlyGitCommand(tokens) {
|
|
1740
|
+
const subcommand = normalizeText(tokens[1])?.toLowerCase() ?? null;
|
|
1741
|
+
if (!subcommand) {
|
|
1742
|
+
return false;
|
|
1743
|
+
}
|
|
1744
|
+
if (subcommand === "status"
|
|
1745
|
+
|| subcommand === "diff"
|
|
1746
|
+
|| subcommand === "log"
|
|
1747
|
+
|| subcommand === "show"
|
|
1748
|
+
|| subcommand === "rev-parse"
|
|
1749
|
+
|| subcommand === "ls-files"
|
|
1750
|
+
|| subcommand === "grep") {
|
|
1751
|
+
return true;
|
|
1752
|
+
}
|
|
1753
|
+
if (subcommand !== "branch") {
|
|
1754
|
+
return false;
|
|
1755
|
+
}
|
|
1756
|
+
const safeBranchFlags = new Set([
|
|
1757
|
+
"-a",
|
|
1758
|
+
"--all",
|
|
1759
|
+
"-r",
|
|
1760
|
+
"--remotes",
|
|
1761
|
+
"-v",
|
|
1762
|
+
"-vv",
|
|
1763
|
+
"--verbose",
|
|
1764
|
+
"--show-current"
|
|
1765
|
+
]);
|
|
1766
|
+
return tokens.slice(2).every((token) => safeBranchFlags.has(token));
|
|
1767
|
+
}
|
|
1768
|
+
function isSafeReadonlyVersionCommand(executable, args) {
|
|
1769
|
+
if (!new Set(["node", "npm", "pnpm", "yarn", "bun", "python", "python3"]).has(executable)) {
|
|
1770
|
+
return false;
|
|
1771
|
+
}
|
|
1772
|
+
if (args.length === 1 && (args[0] === "-v" || args[0] === "--version")) {
|
|
1773
|
+
return true;
|
|
1774
|
+
}
|
|
1775
|
+
return args.length === 1 && (args[0] === "-h" || args[0] === "--help" || args[0] === "help");
|
|
1776
|
+
}
|
|
1777
|
+
function containsShellControlOperator(command) {
|
|
1778
|
+
return /(^|[^\\])(?:&&|\|\||[;|><]|`|\$\()/.test(command);
|
|
1779
|
+
}
|
|
1780
|
+
function tokenizeShellCommand(command) {
|
|
1781
|
+
const tokens = [];
|
|
1782
|
+
const pattern = /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|`([^`\\]|\\.)*`|\S+/g;
|
|
1783
|
+
for (const match of command.matchAll(pattern)) {
|
|
1784
|
+
const value = match[0] ?? "";
|
|
1785
|
+
if (!value) {
|
|
1786
|
+
continue;
|
|
1787
|
+
}
|
|
1788
|
+
const quoted = value[0];
|
|
1789
|
+
if ((quoted === "\"" || quoted === "'" || quoted === "`") && value[value.length - 1] === quoted) {
|
|
1790
|
+
tokens.push(value.slice(1, -1));
|
|
1791
|
+
continue;
|
|
1792
|
+
}
|
|
1793
|
+
tokens.push(value);
|
|
1794
|
+
}
|
|
1795
|
+
return tokens;
|
|
1796
|
+
}
|
|
1797
|
+
function isReadonlyAssistantCliAction(group, action) {
|
|
1798
|
+
const readonlyActions = getSupportedAssistantCliActions(group);
|
|
1799
|
+
if (!readonlyActions) {
|
|
1800
|
+
return false;
|
|
1801
|
+
}
|
|
1802
|
+
const normalizedAction = action?.trim();
|
|
1803
|
+
if (!normalizedAction) {
|
|
1804
|
+
return false;
|
|
1805
|
+
}
|
|
1806
|
+
return readonlyActions.readonly.has(normalizedAction);
|
|
1807
|
+
}
|
|
1808
|
+
function isSupportedAssistantCliAction(group, action) {
|
|
1809
|
+
const supportedActions = getSupportedAssistantCliActions(group);
|
|
1810
|
+
const normalizedAction = action?.trim();
|
|
1811
|
+
if (!supportedActions || !normalizedAction) {
|
|
1812
|
+
return false;
|
|
1813
|
+
}
|
|
1814
|
+
return supportedActions.readonly.has(normalizedAction) || supportedActions.mutating.has(normalizedAction);
|
|
1815
|
+
}
|
|
1816
|
+
function getSupportedAssistantCliActions(group) {
|
|
1817
|
+
const normalizedGroup = group?.trim();
|
|
1818
|
+
if (!normalizedGroup) {
|
|
1819
|
+
return null;
|
|
1820
|
+
}
|
|
1821
|
+
const supportedActionsByGroup = {
|
|
1822
|
+
capabilities: {
|
|
1823
|
+
readonly: new Set(["list"]),
|
|
1824
|
+
mutating: new Set()
|
|
1825
|
+
},
|
|
1826
|
+
projects: {
|
|
1827
|
+
readonly: new Set(["list", "get"]),
|
|
1828
|
+
mutating: new Set()
|
|
1829
|
+
},
|
|
1830
|
+
sessions: {
|
|
1831
|
+
readonly: new Set(["list", "get", "messages", "runtime"]),
|
|
1832
|
+
mutating: new Set(["start", "send", "fork"])
|
|
1833
|
+
},
|
|
1834
|
+
automations: {
|
|
1835
|
+
readonly: new Set(["list", "get", "runs"]),
|
|
1836
|
+
mutating: new Set(["create", "cancel"])
|
|
1837
|
+
},
|
|
1838
|
+
sandboxes: {
|
|
1839
|
+
readonly: new Set(["list"]),
|
|
1840
|
+
mutating: new Set(["create", "promote", "expire", "remove"])
|
|
1841
|
+
},
|
|
1842
|
+
timers: {
|
|
1843
|
+
readonly: new Set(["list", "get"]),
|
|
1844
|
+
mutating: new Set(["create", "cancel"])
|
|
1845
|
+
},
|
|
1846
|
+
terminals: {
|
|
1847
|
+
readonly: new Set(["list", "history"]),
|
|
1848
|
+
mutating: new Set(["send", "close"])
|
|
1849
|
+
},
|
|
1850
|
+
"debug-targets": {
|
|
1851
|
+
readonly: new Set(["compatibility-matrix", "framework-analysis", "runtime-latest", "runtimes"]),
|
|
1852
|
+
mutating: new Set(["analyze", "refresh-framework-analysis", "launch-plan", "run"])
|
|
1853
|
+
},
|
|
1854
|
+
"debug-runtimes": {
|
|
1855
|
+
readonly: new Set(["get"]),
|
|
1856
|
+
mutating: new Set()
|
|
1857
|
+
},
|
|
1858
|
+
workspaces: {
|
|
1859
|
+
readonly: new Set(["list", "browse", "management"]),
|
|
1860
|
+
mutating: new Set(["mkdir", "import", "clone", "reorder", "nav-state", "remove"])
|
|
1861
|
+
},
|
|
1862
|
+
worktrees: {
|
|
1863
|
+
readonly: new Set(["tree", "merge-preview"]),
|
|
1864
|
+
mutating: new Set(["create", "merge", "cleanup"])
|
|
1865
|
+
}
|
|
1866
|
+
};
|
|
1867
|
+
return supportedActionsByGroup[normalizedGroup] ?? null;
|
|
1868
|
+
}
|
|
1507
1869
|
function stringifyPayload(value) {
|
|
1508
1870
|
if (value === undefined) {
|
|
1509
1871
|
return null;
|