@jingyi0605/codingns 0.2.0 → 0.3.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 +44 -0
- package/bin/codingns.mjs +918 -55
- package/dist/public/assets/{TerminalPage-BlbQuWi1.js → TerminalPage-Dfw1QUqW.js} +19 -19
- package/dist/public/assets/index-DR2rPNi7.css +1 -0
- package/dist/public/assets/index-DTOruahn.js +114 -0
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +3 -0
- package/dist/server/config/env.js +35 -3
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +89 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +138 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -0
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +115 -0
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +241 -0
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -0
- package/dist/server/modules/butler/butler-control-session-service.d.ts +3 -1
- package/dist/server/modules/butler/butler-control-session-service.js +96 -33
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +9 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.js +47 -11
- package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-service.d.ts +7 -1
- package/dist/server/modules/butler/butler-follow-up-service.js +10 -0
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.d.ts +3 -1
- package/dist/server/modules/butler/butler-session-service.js +82 -16
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +8 -1
- package/dist/server/modules/butler/butler-session-summary-service.js +34 -7
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/context-aggregator.js +44 -13
- package/dist/server/modules/butler/context-aggregator.js.map +1 -1
- package/dist/server/modules/butler/patrol-scheduler.d.ts +9 -0
- package/dist/server/modules/butler/patrol-scheduler.js +63 -9
- package/dist/server/modules/butler/patrol-scheduler.js.map +1 -1
- package/dist/server/modules/butler/session-summary-scheduler.d.ts +9 -0
- package/dist/server/modules/butler/session-summary-scheduler.js +47 -11
- package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -1
- package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.d.ts +38 -0
- package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js +99 -0
- package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js.map +1 -0
- package/dist/server/modules/debug-target/debug-target-controller.d.ts +70 -0
- package/dist/server/modules/debug-target/debug-target-controller.js +113 -0
- package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -0
- package/dist/server/modules/debug-target/debug-target-service.d.ts +105 -0
- package/dist/server/modules/debug-target/debug-target-service.js +1644 -0
- package/dist/server/modules/debug-target/debug-target-service.js.map +1 -0
- package/dist/server/modules/debug-target/framework-compatibility-matrix.d.ts +4 -0
- package/dist/server/modules/debug-target/framework-compatibility-matrix.js +45 -0
- package/dist/server/modules/debug-target/framework-compatibility-matrix.js.map +1 -0
- package/dist/server/modules/debug-target/launch-adapter-registry.d.ts +25 -0
- package/dist/server/modules/debug-target/launch-adapter-registry.js +445 -0
- package/dist/server/modules/debug-target/launch-adapter-registry.js.map +1 -0
- package/dist/server/modules/file/file-constants.d.ts +1 -0
- package/dist/server/modules/file/file-constants.js +1 -0
- package/dist/server/modules/file/file-constants.js.map +1 -1
- package/dist/server/modules/file/file-content-service.d.ts +2 -1
- package/dist/server/modules/file/file-content-service.js +53 -0
- package/dist/server/modules/file/file-content-service.js.map +1 -1
- package/dist/server/modules/file/file-controller.js +12 -3
- package/dist/server/modules/file/file-controller.js.map +1 -1
- package/dist/server/modules/file/file-preview-link-service.js +6 -37
- package/dist/server/modules/file/file-preview-link-service.js.map +1 -1
- package/dist/server/modules/file/file-preview-service.d.ts +6 -12
- package/dist/server/modules/file/file-preview-service.js +114 -28
- package/dist/server/modules/file/file-preview-service.js.map +1 -1
- package/dist/server/modules/file/file-preview-types.d.ts +37 -0
- package/dist/server/modules/file/file-preview-types.js +84 -0
- package/dist/server/modules/file/file-preview-types.js.map +1 -0
- package/dist/server/modules/git/commit-orchestrator.d.ts +4 -1
- package/dist/server/modules/git/commit-orchestrator.js +18 -1
- package/dist/server/modules/git/commit-orchestrator.js.map +1 -1
- package/dist/server/modules/git/git-auth.d.ts +25 -0
- package/dist/server/modules/git/git-auth.js +88 -0
- package/dist/server/modules/git/git-auth.js.map +1 -0
- package/dist/server/modules/git/git-controller.d.ts +12 -0
- package/dist/server/modules/git/git-controller.js +18 -1
- package/dist/server/modules/git/git-controller.js.map +1 -1
- package/dist/server/modules/git/git-read-service.d.ts +3 -1
- package/dist/server/modules/git/git-read-service.js +119 -2
- package/dist/server/modules/git/git-read-service.js.map +1 -1
- package/dist/server/modules/git/git-remote-credential-service.d.ts +9 -0
- package/dist/server/modules/git/git-remote-credential-service.js +76 -0
- package/dist/server/modules/git/git-remote-credential-service.js.map +1 -0
- package/dist/server/modules/git/git-write-service.d.ts +5 -2
- package/dist/server/modules/git/git-write-service.js +33 -17
- package/dist/server/modules/git/git-write-service.js.map +1 -1
- package/dist/server/modules/git/types.d.ts +26 -0
- package/dist/server/modules/git/workspace-repo-guard.js +3 -2
- package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
- package/dist/server/modules/provider/codex-model-options.d.ts +3 -1
- package/dist/server/modules/provider/codex-model-options.js +4 -1
- package/dist/server/modules/provider/codex-model-options.js.map +1 -1
- package/dist/server/modules/provider/opencode-model-options.d.ts +3 -1
- package/dist/server/modules/provider/opencode-model-options.js +5 -1
- package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +24 -0
- package/dist/server/modules/provider/provider-discovery-helper-client.js +14 -0
- package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-process.js +54 -0
- package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-activity-authority-service.js +13 -1
- package/dist/server/modules/sessions/session-activity-authority-service.js.map +1 -1
- package/dist/server/modules/sessions/session-activity-inspector.js +21 -5
- package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +5 -0
- package/dist/server/modules/sessions/session-controller.js +16 -0
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +27 -7
- package/dist/server/modules/sessions/session-history-service.js +439 -81
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +2 -1
- package/dist/server/modules/sessions/session-live-runtime-service.js +12 -0
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/skills/skill-controller.d.ts +23 -0
- package/dist/server/modules/skills/skill-controller.js +35 -0
- package/dist/server/modules/skills/skill-controller.js.map +1 -0
- package/dist/server/modules/skills/skill-manager-service.d.ts +86 -0
- package/dist/server/modules/skills/skill-manager-service.js +557 -0
- package/dist/server/modules/skills/skill-manager-service.js.map +1 -0
- package/dist/server/modules/skills/skill-reconciler.d.ts +21 -0
- package/dist/server/modules/skills/skill-reconciler.js +99 -0
- package/dist/server/modules/skills/skill-reconciler.js.map +1 -0
- package/dist/server/modules/skills/skill-sync-planner.d.ts +8 -0
- package/dist/server/modules/skills/skill-sync-planner.js +20 -0
- package/dist/server/modules/skills/skill-sync-planner.js.map +1 -0
- package/dist/server/modules/skills/skill-target-adapter.d.ts +34 -0
- package/dist/server/modules/skills/skill-target-adapter.js +65 -0
- package/dist/server/modules/skills/skill-target-adapter.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-controller.d.ts +15 -0
- package/dist/server/modules/tailscale/tailscale-controller.js +33 -0
- package/dist/server/modules/tailscale/tailscale-controller.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-helper-client.d.ts +41 -0
- package/dist/server/modules/tailscale/tailscale-helper-client.js +135 -0
- package/dist/server/modules/tailscale/tailscale-helper-client.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-helper-process.d.ts +1 -0
- package/dist/server/modules/tailscale/tailscale-helper-process.js +327 -0
- package/dist/server/modules/tailscale/tailscale-helper-process.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-manager.d.ts +41 -0
- package/dist/server/modules/tailscale/tailscale-manager.js +259 -0
- package/dist/server/modules/tailscale/tailscale-manager.js.map +1 -0
- package/dist/server/modules/tailscale/tailscale-service.d.ts +43 -0
- package/dist/server/modules/tailscale/tailscale-service.js +201 -0
- package/dist/server/modules/tailscale/tailscale-service.js.map +1 -0
- package/dist/server/modules/tasks/event-loop-monitor.d.ts +21 -0
- package/dist/server/modules/tasks/event-loop-monitor.js +64 -0
- package/dist/server/modules/tasks/event-loop-monitor.js.map +1 -0
- package/dist/server/modules/tasks/observability-controller.d.ts +30 -0
- package/dist/server/modules/tasks/observability-controller.js +44 -0
- package/dist/server/modules/tasks/observability-controller.js.map +1 -0
- package/dist/server/modules/tasks/observability-service.d.ts +32 -0
- package/dist/server/modules/tasks/observability-service.js +104 -0
- package/dist/server/modules/tasks/observability-service.js.map +1 -0
- package/dist/server/modules/tasks/scheduler-metrics.d.ts +41 -0
- package/dist/server/modules/tasks/scheduler-metrics.js +92 -0
- package/dist/server/modules/tasks/scheduler-metrics.js.map +1 -0
- package/dist/server/modules/tasks/task-activity-log.d.ts +39 -0
- package/dist/server/modules/tasks/task-activity-log.js +43 -0
- package/dist/server/modules/tasks/task-activity-log.js.map +1 -0
- package/dist/server/modules/tasks/task-helper-client.d.ts +11 -0
- package/dist/server/modules/tasks/task-helper-client.js +132 -0
- package/dist/server/modules/tasks/task-helper-client.js.map +1 -0
- package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +16 -0
- package/dist/server/modules/tasks/task-helper-process-handlers.js +14 -0
- package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -0
- package/dist/server/modules/tasks/task-helper-process.d.ts +1 -0
- package/dist/server/modules/tasks/task-helper-process.js +49 -0
- package/dist/server/modules/tasks/task-helper-process.js.map +1 -0
- package/dist/server/modules/tasks/task-lane-executors.d.ts +2 -0
- package/dist/server/modules/tasks/task-lane-executors.js +15 -0
- package/dist/server/modules/tasks/task-lane-executors.js.map +1 -0
- package/dist/server/modules/tasks/task-manager.d.ts +15 -0
- package/dist/server/modules/tasks/task-manager.js +36 -0
- package/dist/server/modules/tasks/task-manager.js.map +1 -0
- package/dist/server/modules/tasks/task-metrics.d.ts +9 -0
- package/dist/server/modules/tasks/task-metrics.js +81 -0
- package/dist/server/modules/tasks/task-metrics.js.map +1 -0
- package/dist/server/modules/tasks/task-registry.d.ts +7 -0
- package/dist/server/modules/tasks/task-registry.js +21 -0
- package/dist/server/modules/tasks/task-registry.js.map +1 -0
- package/dist/server/modules/tasks/task-scheduler.d.ts +31 -0
- package/dist/server/modules/tasks/task-scheduler.js +473 -0
- package/dist/server/modules/tasks/task-scheduler.js.map +1 -0
- package/dist/server/modules/tasks/task-types.d.ts +106 -0
- package/dist/server/modules/tasks/task-types.js +23 -0
- package/dist/server/modules/tasks/task-types.js.map +1 -0
- package/dist/server/modules/terminal/command-template-service.d.ts +4 -0
- package/dist/server/modules/terminal/command-template-service.js +5 -3
- package/dist/server/modules/terminal/command-template-service.js.map +1 -1
- package/dist/server/modules/terminal/runtime/terminal-log-spooler.d.ts +7 -3
- package/dist/server/modules/terminal/runtime/terminal-log-spooler.js +95 -15
- package/dist/server/modules/terminal/runtime/terminal-log-spooler.js.map +1 -1
- package/dist/server/modules/terminal/runtime/terminal-log-writer-client.d.ts +21 -0
- package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +144 -0
- package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -0
- package/dist/server/modules/terminal/runtime/terminal-log-writer-process.d.ts +1 -0
- package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +187 -0
- package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -0
- package/dist/server/modules/terminal/terminal-service.d.ts +12 -0
- package/dist/server/modules/terminal/terminal-service.js +34 -17
- package/dist/server/modules/terminal/terminal-service.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +23 -2
- package/dist/server/modules/workbench/workbench-service.js +126 -15
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +5 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +88 -19
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
- package/dist/server/modules/workspace/workspace-code-composition.d.ts +2 -0
- package/dist/server/modules/workspace/workspace-code-composition.js +154 -0
- package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -0
- package/dist/server/modules/workspace/workspace-controller.d.ts +14 -0
- package/dist/server/modules/workspace/workspace-controller.js +19 -0
- package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
- package/dist/server/modules/workspace/workspace-service.d.ts +21 -14
- package/dist/server/modules/workspace/workspace-service.js +183 -234
- package/dist/server/modules/workspace/workspace-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +35 -0
- package/dist/server/modules/worktree/worktree-cleanup-service.js +210 -0
- package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -0
- package/dist/server/modules/worktree/worktree-controller.d.ts +44 -0
- package/dist/server/modules/worktree/worktree-controller.js +40 -0
- package/dist/server/modules/worktree/worktree-controller.js.map +1 -0
- package/dist/server/modules/worktree/worktree-manager.d.ts +34 -0
- package/dist/server/modules/worktree/worktree-manager.js +292 -0
- package/dist/server/modules/worktree/worktree-manager.js.map +1 -0
- package/dist/server/modules/worktree/worktree-merge-service.d.ts +52 -0
- package/dist/server/modules/worktree/worktree-merge-service.js +293 -0
- package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -0
- package/dist/server/modules/worktree/worktree-sync-service.d.ts +23 -0
- package/dist/server/modules/worktree/worktree-sync-service.js +166 -0
- package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -0
- package/dist/server/routes/assistant.d.ts +3 -0
- package/dist/server/routes/assistant.js +15 -0
- package/dist/server/routes/assistant.js.map +1 -0
- package/dist/server/routes/debug-targets.d.ts +3 -0
- package/dist/server/routes/debug-targets.js +15 -0
- package/dist/server/routes/debug-targets.js.map +1 -0
- package/dist/server/routes/git.js +2 -0
- package/dist/server/routes/git.js.map +1 -1
- package/dist/server/routes/observability.d.ts +3 -0
- package/dist/server/routes/observability.js +7 -0
- package/dist/server/routes/observability.js.map +1 -0
- package/dist/server/routes/skills.d.ts +3 -0
- package/dist/server/routes/skills.js +7 -0
- package/dist/server/routes/skills.js.map +1 -0
- package/dist/server/routes/system.d.ts +3 -0
- package/dist/server/routes/system.js +9 -0
- package/dist/server/routes/system.js.map +1 -0
- package/dist/server/routes/workspaces.js +2 -0
- package/dist/server/routes/workspaces.js.map +1 -1
- package/dist/server/routes/worktrees.d.ts +3 -0
- package/dist/server/routes/worktrees.js +8 -0
- package/dist/server/routes/worktrees.js.map +1 -0
- package/dist/server/server/create-server.d.ts +46 -0
- package/dist/server/server/create-server.js +141 -12
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/utils/command-availability.d.ts +1 -0
- package/dist/server/shared/utils/command-availability.js +26 -3
- package/dist/server/shared/utils/command-availability.js.map +1 -1
- package/dist/server/shared/utils/secret-box.d.ts +2 -0
- package/dist/server/shared/utils/secret-box.js +29 -0
- package/dist/server/shared/utils/secret-box.js.map +1 -0
- package/dist/server/shared/utils/terminal-debug-log.js +5 -3
- package/dist/server/shared/utils/terminal-debug-log.js.map +1 -1
- package/dist/server/storage/repositories/ai-fallback-edit-repository.d.ts +11 -0
- package/dist/server/storage/repositories/ai-fallback-edit-repository.js +118 -0
- package/dist/server/storage/repositories/ai-fallback-edit-repository.js.map +1 -0
- package/dist/server/storage/repositories/debug-runtime-session-repository.d.ts +11 -0
- package/dist/server/storage/repositories/debug-runtime-session-repository.js +100 -0
- package/dist/server/storage/repositories/debug-runtime-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/debug-service-repository.d.ts +9 -0
- package/dist/server/storage/repositories/debug-service-repository.js +99 -0
- package/dist/server/storage/repositories/debug-service-repository.js.map +1 -0
- package/dist/server/storage/repositories/debug-target-repository.d.ts +11 -0
- package/dist/server/storage/repositories/debug-target-repository.js +100 -0
- package/dist/server/storage/repositories/debug-target-repository.js.map +1 -0
- package/dist/server/storage/repositories/framework-analysis-result-repository.d.ts +9 -0
- package/dist/server/storage/repositories/framework-analysis-result-repository.js +98 -0
- package/dist/server/storage/repositories/framework-analysis-result-repository.js.map +1 -0
- package/dist/server/storage/repositories/git-remote-credential-repository.d.ts +9 -0
- package/dist/server/storage/repositories/git-remote-credential-repository.js +51 -0
- package/dist/server/storage/repositories/git-remote-credential-repository.js.map +1 -0
- package/dist/server/storage/repositories/instance-tailscale-repository.d.ts +10 -0
- package/dist/server/storage/repositories/instance-tailscale-repository.js +112 -0
- package/dist/server/storage/repositories/instance-tailscale-repository.js.map +1 -0
- package/dist/server/storage/repositories/managed-skill-repository.d.ts +11 -0
- package/dist/server/storage/repositories/managed-skill-repository.js +102 -0
- package/dist/server/storage/repositories/managed-skill-repository.js.map +1 -0
- package/dist/server/storage/repositories/port-lease-repository.d.ts +12 -0
- package/dist/server/storage/repositories/port-lease-repository.js +124 -0
- package/dist/server/storage/repositories/port-lease-repository.js.map +1 -0
- package/dist/server/storage/repositories/runtime-binding-repository.d.ts +10 -0
- package/dist/server/storage/repositories/runtime-binding-repository.js +89 -0
- package/dist/server/storage/repositories/runtime-binding-repository.js.map +1 -0
- package/dist/server/storage/repositories/skill-target-binding-repository.d.ts +10 -0
- package/dist/server/storage/repositories/skill-target-binding-repository.js +77 -0
- package/dist/server/storage/repositories/skill-target-binding-repository.js.map +1 -0
- package/dist/server/storage/repositories/terminal-command-template-repository.js +77 -4
- package/dist/server/storage/repositories/terminal-command-template-repository.js.map +1 -1
- package/dist/server/storage/repositories/terminal-instance-repository.js +89 -7
- package/dist/server/storage/repositories/terminal-instance-repository.js.map +1 -1
- package/dist/server/storage/repositories/workspace-navigation-state-repository.d.ts +9 -0
- package/dist/server/storage/repositories/workspace-navigation-state-repository.js +49 -0
- package/dist/server/storage/repositories/workspace-navigation-state-repository.js.map +1 -0
- package/dist/server/storage/repositories/workspace-repository.d.ts +7 -1
- package/dist/server/storage/repositories/workspace-repository.js +32 -8
- package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
- package/dist/server/storage/repositories/workspace-worktree-repository.d.ts +13 -0
- package/dist/server/storage/repositories/workspace-worktree-repository.js +158 -0
- package/dist/server/storage/repositories/workspace-worktree-repository.js.map +1 -0
- package/dist/server/storage/sqlite/client.js +311 -0
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +303 -0
- package/dist/server/types/domain.d.ts +303 -0
- package/dist/server/ws/workbench-ws-hub.js +33 -9
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/dist/server/ws/ws-server.js +4 -4
- package/dist/server/ws/ws-server.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +18 -6
- 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.js +14 -2
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +25 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/types.d.ts +6 -0
- package/package.json +1 -1
- package/dist/public/assets/index-1VIm8lVL.css +0 -1
- package/dist/public/assets/index-Dti93O2S.js +0 -109
|
@@ -1,31 +1,38 @@
|
|
|
1
1
|
import { nowIso } from "../../shared/utils/time.js";
|
|
2
|
+
import { resolveAdaptiveSchedulerDelayMs } from "../tasks/scheduler-metrics.js";
|
|
2
3
|
const DEFAULT_INTERVAL_MS = 15_000;
|
|
3
4
|
export class SessionSummaryScheduler {
|
|
4
5
|
butlerSessionSummaryService;
|
|
5
6
|
intervalMs;
|
|
7
|
+
maxIntervalMs;
|
|
6
8
|
now;
|
|
7
9
|
logger;
|
|
10
|
+
schedulerMetrics;
|
|
8
11
|
timer = null;
|
|
9
12
|
ticking = false;
|
|
13
|
+
started = false;
|
|
14
|
+
disposed = false;
|
|
15
|
+
idleStreak = 0;
|
|
10
16
|
constructor(butlerSessionSummaryService, options = {}) {
|
|
11
17
|
this.butlerSessionSummaryService = butlerSessionSummaryService;
|
|
12
18
|
this.intervalMs = Math.max(5_000, options.intervalMs ?? DEFAULT_INTERVAL_MS);
|
|
19
|
+
this.maxIntervalMs = Math.max(this.intervalMs, options.maxIntervalMs ?? this.intervalMs * 8);
|
|
13
20
|
this.now = options.now ?? nowIso;
|
|
14
21
|
this.logger = options.logger ?? console;
|
|
22
|
+
this.schedulerMetrics = options.schedulerMetrics ?? null;
|
|
15
23
|
}
|
|
16
24
|
start() {
|
|
17
|
-
if (this.timer) {
|
|
25
|
+
if (this.timer || this.disposed) {
|
|
18
26
|
return;
|
|
19
27
|
}
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
void this.tick();
|
|
23
|
-
}, this.intervalMs);
|
|
24
|
-
this.timer.unref?.();
|
|
28
|
+
this.started = true;
|
|
29
|
+
this.scheduleNext(0);
|
|
25
30
|
}
|
|
26
31
|
async dispose() {
|
|
32
|
+
this.started = false;
|
|
33
|
+
this.disposed = true;
|
|
27
34
|
if (this.timer) {
|
|
28
|
-
|
|
35
|
+
clearTimeout(this.timer);
|
|
29
36
|
this.timer = null;
|
|
30
37
|
}
|
|
31
38
|
while (this.ticking) {
|
|
@@ -33,24 +40,53 @@ export class SessionSummaryScheduler {
|
|
|
33
40
|
}
|
|
34
41
|
}
|
|
35
42
|
async runOnce() {
|
|
36
|
-
await this.tick();
|
|
43
|
+
await this.tick(false);
|
|
44
|
+
}
|
|
45
|
+
scheduleNext(delayMs) {
|
|
46
|
+
this.timer = setTimeout(() => {
|
|
47
|
+
this.timer = null;
|
|
48
|
+
void this.tick();
|
|
49
|
+
}, delayMs);
|
|
50
|
+
this.timer.unref?.();
|
|
37
51
|
}
|
|
38
|
-
async tick() {
|
|
52
|
+
async tick(shouldScheduleNext = true) {
|
|
39
53
|
if (this.ticking) {
|
|
40
54
|
return;
|
|
41
55
|
}
|
|
42
56
|
this.ticking = true;
|
|
57
|
+
const tickStartedAt = Date.now();
|
|
58
|
+
const referenceAt = this.now();
|
|
59
|
+
let result = null;
|
|
60
|
+
let errorCount = 0;
|
|
43
61
|
try {
|
|
44
|
-
await this.butlerSessionSummaryService.runOnce();
|
|
62
|
+
result = await this.butlerSessionSummaryService.runOnce();
|
|
45
63
|
}
|
|
46
64
|
catch (error) {
|
|
65
|
+
errorCount = 1;
|
|
47
66
|
this.logger.error("[butler-session-summary-scheduler] tick failed", {
|
|
48
67
|
error: error instanceof Error ? error.message : String(error),
|
|
49
|
-
referenceAt
|
|
68
|
+
referenceAt
|
|
50
69
|
});
|
|
51
70
|
}
|
|
52
71
|
finally {
|
|
53
72
|
this.ticking = false;
|
|
73
|
+
const idle = result?.idle ?? true;
|
|
74
|
+
const taskCount = (result?.scheduledCount ?? 0) + (result?.summarizedCount ?? 0);
|
|
75
|
+
this.idleStreak = idle ? this.idleStreak + 1 : 0;
|
|
76
|
+
const nextDelayMs = resolveAdaptiveSchedulerDelayMs(this.intervalMs, this.maxIntervalMs, this.idleStreak);
|
|
77
|
+
this.schedulerMetrics?.recordTick({
|
|
78
|
+
schedulerName: "session_summary",
|
|
79
|
+
referenceAt,
|
|
80
|
+
durationMs: Date.now() - tickStartedAt,
|
|
81
|
+
taskCount,
|
|
82
|
+
idle,
|
|
83
|
+
errorCount,
|
|
84
|
+
nextDelayMs,
|
|
85
|
+
idleStreak: this.idleStreak
|
|
86
|
+
});
|
|
87
|
+
if (shouldScheduleNext && this.started && !this.disposed && this.timer === null) {
|
|
88
|
+
this.scheduleNext(nextDelayMs);
|
|
89
|
+
}
|
|
54
90
|
}
|
|
55
91
|
}
|
|
56
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-summary-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/butler/session-summary-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-summary-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/butler/session-summary-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type SchedulerMetrics } from "../tasks/scheduler-metrics.js";
|
|
2
|
+
import type { DebugTargetService } from "./debug-target-service.js";
|
|
3
|
+
interface DebugRuntimeReconciliationSchedulerLogger {
|
|
4
|
+
error(message: string, detail?: unknown): void;
|
|
5
|
+
}
|
|
6
|
+
interface DebugRuntimeReconciliationSchedulerOptions {
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
maxIntervalMs?: number;
|
|
9
|
+
now?: () => string;
|
|
10
|
+
logger?: DebugRuntimeReconciliationSchedulerLogger;
|
|
11
|
+
schedulerMetrics?: SchedulerMetrics;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 调试运行时后台巡检器。
|
|
15
|
+
*
|
|
16
|
+
* 这层只负责“多久跑一次”,真正的对账和回收逻辑全部留在 DebugTargetService,
|
|
17
|
+
* 避免调度器偷偷长出第二套状态规则。
|
|
18
|
+
*/
|
|
19
|
+
export declare class DebugRuntimeReconciliationScheduler {
|
|
20
|
+
private readonly debugTargetService;
|
|
21
|
+
private readonly intervalMs;
|
|
22
|
+
private readonly maxIntervalMs;
|
|
23
|
+
private readonly now;
|
|
24
|
+
private readonly logger;
|
|
25
|
+
private readonly schedulerMetrics;
|
|
26
|
+
private timer;
|
|
27
|
+
private ticking;
|
|
28
|
+
private started;
|
|
29
|
+
private disposed;
|
|
30
|
+
private idleStreak;
|
|
31
|
+
constructor(debugTargetService: Pick<DebugTargetService, "runBackgroundRuntimeReconciliation">, options?: DebugRuntimeReconciliationSchedulerOptions);
|
|
32
|
+
start(): void;
|
|
33
|
+
dispose(): Promise<void>;
|
|
34
|
+
runOnce(): Promise<void>;
|
|
35
|
+
private scheduleNext;
|
|
36
|
+
private tick;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { nowIso } from "../../shared/utils/time.js";
|
|
2
|
+
import { resolveAdaptiveSchedulerDelayMs } from "../tasks/scheduler-metrics.js";
|
|
3
|
+
const DEFAULT_INTERVAL_MS = 10_000;
|
|
4
|
+
/**
|
|
5
|
+
* 调试运行时后台巡检器。
|
|
6
|
+
*
|
|
7
|
+
* 这层只负责“多久跑一次”,真正的对账和回收逻辑全部留在 DebugTargetService,
|
|
8
|
+
* 避免调度器偷偷长出第二套状态规则。
|
|
9
|
+
*/
|
|
10
|
+
export class DebugRuntimeReconciliationScheduler {
|
|
11
|
+
debugTargetService;
|
|
12
|
+
intervalMs;
|
|
13
|
+
maxIntervalMs;
|
|
14
|
+
now;
|
|
15
|
+
logger;
|
|
16
|
+
schedulerMetrics;
|
|
17
|
+
timer = null;
|
|
18
|
+
ticking = false;
|
|
19
|
+
started = false;
|
|
20
|
+
disposed = false;
|
|
21
|
+
idleStreak = 0;
|
|
22
|
+
constructor(debugTargetService, options = {}) {
|
|
23
|
+
this.debugTargetService = debugTargetService;
|
|
24
|
+
this.intervalMs = Math.max(5_000, options.intervalMs ?? DEFAULT_INTERVAL_MS);
|
|
25
|
+
this.maxIntervalMs = Math.max(this.intervalMs, options.maxIntervalMs ?? this.intervalMs * 8);
|
|
26
|
+
this.now = options.now ?? nowIso;
|
|
27
|
+
this.logger = options.logger ?? console;
|
|
28
|
+
this.schedulerMetrics = options.schedulerMetrics ?? null;
|
|
29
|
+
}
|
|
30
|
+
start() {
|
|
31
|
+
if (this.timer || this.disposed) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.started = true;
|
|
35
|
+
this.scheduleNext(0);
|
|
36
|
+
}
|
|
37
|
+
async dispose() {
|
|
38
|
+
this.started = false;
|
|
39
|
+
this.disposed = true;
|
|
40
|
+
if (this.timer) {
|
|
41
|
+
clearTimeout(this.timer);
|
|
42
|
+
this.timer = null;
|
|
43
|
+
}
|
|
44
|
+
while (this.ticking) {
|
|
45
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async runOnce() {
|
|
49
|
+
await this.tick(false);
|
|
50
|
+
}
|
|
51
|
+
scheduleNext(delayMs) {
|
|
52
|
+
this.timer = setTimeout(() => {
|
|
53
|
+
this.timer = null;
|
|
54
|
+
void this.tick();
|
|
55
|
+
}, delayMs);
|
|
56
|
+
this.timer.unref?.();
|
|
57
|
+
}
|
|
58
|
+
async tick(shouldScheduleNext = true) {
|
|
59
|
+
if (this.ticking) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.ticking = true;
|
|
63
|
+
const tickStartedAt = Date.now();
|
|
64
|
+
const referenceAt = this.now();
|
|
65
|
+
let result = null;
|
|
66
|
+
let errorCount = 0;
|
|
67
|
+
try {
|
|
68
|
+
result = await this.debugTargetService.runBackgroundRuntimeReconciliation("debug_runtime_scheduler.tick");
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
errorCount = 1;
|
|
72
|
+
this.logger.error("[debug-runtime-reconciliation-scheduler] tick failed", {
|
|
73
|
+
error: error instanceof Error ? error.message : String(error),
|
|
74
|
+
referenceAt
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
this.ticking = false;
|
|
79
|
+
const idle = result?.idle ?? true;
|
|
80
|
+
const taskCount = result?.reconciledRuntimeCount ?? 0;
|
|
81
|
+
this.idleStreak = idle ? this.idleStreak + 1 : 0;
|
|
82
|
+
const nextDelayMs = resolveAdaptiveSchedulerDelayMs(this.intervalMs, this.maxIntervalMs, this.idleStreak);
|
|
83
|
+
this.schedulerMetrics?.recordTick({
|
|
84
|
+
schedulerName: "debug_runtime_reconciliation",
|
|
85
|
+
referenceAt,
|
|
86
|
+
durationMs: Date.now() - tickStartedAt,
|
|
87
|
+
taskCount,
|
|
88
|
+
idle,
|
|
89
|
+
errorCount,
|
|
90
|
+
nextDelayMs,
|
|
91
|
+
idleStreak: this.idleStreak
|
|
92
|
+
});
|
|
93
|
+
if (shouldScheduleNext && this.started && !this.disposed && this.timer === null) {
|
|
94
|
+
this.scheduleNext(nextDelayMs);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=debug-runtime-reconciliation-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-runtime-reconciliation-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/debug-target/debug-runtime-reconciliation-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
2
|
+
import type { DebugTargetService } from "./debug-target-service.js";
|
|
3
|
+
interface AnalyzeDebugTargetBody {
|
|
4
|
+
workspaceId?: string;
|
|
5
|
+
rootPath?: string;
|
|
6
|
+
commandHints?: unknown;
|
|
7
|
+
}
|
|
8
|
+
interface DebugTargetParams {
|
|
9
|
+
targetId?: string;
|
|
10
|
+
}
|
|
11
|
+
interface DebugTargetRuntimeHistoryQuery {
|
|
12
|
+
limit?: string;
|
|
13
|
+
}
|
|
14
|
+
interface RunDebugTargetBody {
|
|
15
|
+
shell?: string;
|
|
16
|
+
runtimeType?: string | null;
|
|
17
|
+
}
|
|
18
|
+
interface AiFallbackEditParams {
|
|
19
|
+
editId?: string;
|
|
20
|
+
}
|
|
21
|
+
interface AiFallbackEditBody {
|
|
22
|
+
patchRef?: string | null;
|
|
23
|
+
rollbackRef?: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare class DebugTargetController {
|
|
26
|
+
private readonly debugTargetService;
|
|
27
|
+
constructor(debugTargetService: DebugTargetService);
|
|
28
|
+
readonly analyze: (request: FastifyRequest<{
|
|
29
|
+
Body: AnalyzeDebugTargetBody;
|
|
30
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
31
|
+
readonly getFrameworkAnalysis: (request: FastifyRequest<{
|
|
32
|
+
Params: DebugTargetParams;
|
|
33
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
34
|
+
readonly refreshFrameworkAnalysis: (request: FastifyRequest<{
|
|
35
|
+
Params: DebugTargetParams;
|
|
36
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
37
|
+
readonly createLaunchPlan: (request: FastifyRequest<{
|
|
38
|
+
Params: DebugTargetParams;
|
|
39
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
40
|
+
readonly run: (request: FastifyRequest<{
|
|
41
|
+
Params: DebugTargetParams;
|
|
42
|
+
Body: RunDebugTargetBody;
|
|
43
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
44
|
+
readonly getRuntime: (request: FastifyRequest<{
|
|
45
|
+
Params: {
|
|
46
|
+
runtimeId?: string;
|
|
47
|
+
};
|
|
48
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
49
|
+
readonly getLatestRuntime: (request: FastifyRequest<{
|
|
50
|
+
Params: DebugTargetParams;
|
|
51
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
52
|
+
readonly getRuntimeHistory: (request: FastifyRequest<{
|
|
53
|
+
Params: DebugTargetParams;
|
|
54
|
+
Querystring: DebugTargetRuntimeHistoryQuery;
|
|
55
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
56
|
+
readonly getCompatibilityMatrix: (_request: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
57
|
+
readonly applyAiFallbackEdit: (request: FastifyRequest<{
|
|
58
|
+
Params: AiFallbackEditParams;
|
|
59
|
+
Body: AiFallbackEditBody;
|
|
60
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
61
|
+
readonly rejectAiFallbackEdit: (request: FastifyRequest<{
|
|
62
|
+
Params: AiFallbackEditParams;
|
|
63
|
+
Body: AiFallbackEditBody;
|
|
64
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
65
|
+
readonly rollbackAiFallbackEdit: (request: FastifyRequest<{
|
|
66
|
+
Params: AiFallbackEditParams;
|
|
67
|
+
Body: AiFallbackEditBody;
|
|
68
|
+
}>, reply: FastifyReply) => Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { AppError } from "../../shared/errors/app-error.js";
|
|
2
|
+
export class DebugTargetController {
|
|
3
|
+
debugTargetService;
|
|
4
|
+
constructor(debugTargetService) {
|
|
5
|
+
this.debugTargetService = debugTargetService;
|
|
6
|
+
}
|
|
7
|
+
analyze = async (request, reply) => {
|
|
8
|
+
const workspaceId = request.body.workspaceId?.trim();
|
|
9
|
+
const rootPath = request.body.rootPath?.trim();
|
|
10
|
+
if (!workspaceId) {
|
|
11
|
+
throw new AppError({
|
|
12
|
+
statusCode: 400,
|
|
13
|
+
errorCode: "INVALID_INPUT",
|
|
14
|
+
detail: "分析调试目标必须提供 workspaceId",
|
|
15
|
+
field: "workspaceId"
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
if (!rootPath) {
|
|
19
|
+
throw new AppError({
|
|
20
|
+
statusCode: 400,
|
|
21
|
+
errorCode: "INVALID_INPUT",
|
|
22
|
+
detail: "分析调试目标必须提供 rootPath",
|
|
23
|
+
field: "rootPath"
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
reply.send(this.debugTargetService.analyze({
|
|
27
|
+
workspaceId,
|
|
28
|
+
rootPath,
|
|
29
|
+
commandHints: normalizeCommandHints(request.body.commandHints)
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
getFrameworkAnalysis = async (request, reply) => {
|
|
33
|
+
reply.send(this.debugTargetService.getFrameworkAnalysis(request.params.targetId?.trim() || ""));
|
|
34
|
+
};
|
|
35
|
+
refreshFrameworkAnalysis = async (request, reply) => {
|
|
36
|
+
reply.send(this.debugTargetService.refreshFrameworkAnalysis(request.params.targetId?.trim() || ""));
|
|
37
|
+
};
|
|
38
|
+
createLaunchPlan = async (request, reply) => {
|
|
39
|
+
reply.send(await this.debugTargetService.createLaunchPlan(request.params.targetId?.trim() || ""));
|
|
40
|
+
};
|
|
41
|
+
run = async (request, reply) => {
|
|
42
|
+
reply.send(await this.debugTargetService.run({
|
|
43
|
+
targetId: request.params.targetId?.trim() || "",
|
|
44
|
+
userId: request.auth.user.userId,
|
|
45
|
+
shell: request.body?.shell?.trim() || undefined,
|
|
46
|
+
runtimeType: normalizeRuntimeType(request.body?.runtimeType)
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
getRuntime = async (request, reply) => {
|
|
50
|
+
reply.send(await this.debugTargetService.getRuntimeDetail(request.params.runtimeId?.trim() || ""));
|
|
51
|
+
};
|
|
52
|
+
getLatestRuntime = async (request, reply) => {
|
|
53
|
+
reply.send(await this.debugTargetService.getLatestRuntimeDetail(request.params.targetId?.trim() || ""));
|
|
54
|
+
};
|
|
55
|
+
getRuntimeHistory = async (request, reply) => {
|
|
56
|
+
const rawLimit = request.query.limit?.trim();
|
|
57
|
+
const limit = rawLimit ? Number.parseInt(rawLimit, 10) : 5;
|
|
58
|
+
reply.send(await this.debugTargetService.getRecentRuntimeDetails(request.params.targetId?.trim() || "", Number.isNaN(limit) ? 5 : limit));
|
|
59
|
+
};
|
|
60
|
+
getCompatibilityMatrix = async (_request, reply) => {
|
|
61
|
+
reply.send(this.debugTargetService.getCompatibilityMatrix());
|
|
62
|
+
};
|
|
63
|
+
applyAiFallbackEdit = async (request, reply) => {
|
|
64
|
+
reply.send(this.debugTargetService.updateAiFallbackEdit(request.params.editId?.trim() || "", "apply", {
|
|
65
|
+
patchRef: request.body?.patchRef ?? null,
|
|
66
|
+
rollbackRef: request.body?.rollbackRef ?? null
|
|
67
|
+
}));
|
|
68
|
+
};
|
|
69
|
+
rejectAiFallbackEdit = async (request, reply) => {
|
|
70
|
+
reply.send(this.debugTargetService.updateAiFallbackEdit(request.params.editId?.trim() || "", "reject", {
|
|
71
|
+
patchRef: request.body?.patchRef ?? null,
|
|
72
|
+
rollbackRef: request.body?.rollbackRef ?? null
|
|
73
|
+
}));
|
|
74
|
+
};
|
|
75
|
+
rollbackAiFallbackEdit = async (request, reply) => {
|
|
76
|
+
reply.send(this.debugTargetService.updateAiFallbackEdit(request.params.editId?.trim() || "", "rollback", {
|
|
77
|
+
patchRef: request.body?.patchRef ?? null,
|
|
78
|
+
rollbackRef: request.body?.rollbackRef ?? null
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function normalizeCommandHints(value) {
|
|
83
|
+
if (!Array.isArray(value)) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
return value.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
87
|
+
}
|
|
88
|
+
function normalizeRuntimeType(input) {
|
|
89
|
+
if (input === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
if (input === null) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const value = input.trim();
|
|
96
|
+
if (!value) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
if (value === "embedded-pty" ||
|
|
100
|
+
value === "tmux" ||
|
|
101
|
+
value === "conpty-powershell" ||
|
|
102
|
+
value === "conpty-cmd" ||
|
|
103
|
+
value === "conpty-git-bash") {
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
throw new AppError({
|
|
107
|
+
statusCode: 400,
|
|
108
|
+
errorCode: "INVALID_INPUT",
|
|
109
|
+
detail: `不支持的终端 runtimeType:${value}`,
|
|
110
|
+
field: "runtimeType"
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=debug-target-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-target-controller.js","sourceRoot":"","sources":["../../../../src/modules/debug-target/debug-target-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { AiFallbackEditRepository } from "../../storage/repositories/ai-fallback-edit-repository.js";
|
|
3
|
+
import type { DebugServiceRepository } from "../../storage/repositories/debug-service-repository.js";
|
|
4
|
+
import type { DebugRuntimeSessionRepository } from "../../storage/repositories/debug-runtime-session-repository.js";
|
|
5
|
+
import type { DebugTargetRepository } from "../../storage/repositories/debug-target-repository.js";
|
|
6
|
+
import type { FrameworkAnalysisResultRepository } from "../../storage/repositories/framework-analysis-result-repository.js";
|
|
7
|
+
import type { PortLeaseRepository } from "../../storage/repositories/port-lease-repository.js";
|
|
8
|
+
import type { RuntimeBindingRepository } from "../../storage/repositories/runtime-binding-repository.js";
|
|
9
|
+
import type { WorkspaceWorktreeRepository } from "../../storage/repositories/workspace-worktree-repository.js";
|
|
10
|
+
import type { AiFallbackEditRecord, DebugLaunchPlan, DebugRuntimeHistoryEnvelope, DebugRuntimeDetail, DebugRuntimeSession, DebugServiceSpec, DebugTargetProfile, FrameworkAnalysisResult, TerminalCommandTemplate, TerminalInstance, TerminalRuntimeType } from "../../types/domain.js";
|
|
11
|
+
import type { TerminalService } from "../terminal/terminal-service.js";
|
|
12
|
+
import { TaskManager } from "../tasks/task-manager.js";
|
|
13
|
+
import type { WorkspaceService } from "../workspace/workspace-service.js";
|
|
14
|
+
import { FRAMEWORK_COMPATIBILITY_MATRIX } from "./framework-compatibility-matrix.js";
|
|
15
|
+
export interface AnalyzeDebugTargetInput {
|
|
16
|
+
workspaceId: string;
|
|
17
|
+
rootPath: string;
|
|
18
|
+
commandHints?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface AnalyzeDebugTargetResult {
|
|
21
|
+
target: DebugTargetProfile;
|
|
22
|
+
services: DebugServiceSpec[];
|
|
23
|
+
analyses: FrameworkAnalysisResult[];
|
|
24
|
+
autoInjectionEligible: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface RunDebugTargetInput {
|
|
27
|
+
targetId: string;
|
|
28
|
+
userId: string;
|
|
29
|
+
shell?: string;
|
|
30
|
+
runtimeType?: TerminalRuntimeType | null;
|
|
31
|
+
}
|
|
32
|
+
export interface DebugRuntimeReconciliationResult {
|
|
33
|
+
scannedRuntimeCount: number;
|
|
34
|
+
reconciledRuntimeCount: number;
|
|
35
|
+
staleLeaseCount: number;
|
|
36
|
+
releasedLeaseCount: number;
|
|
37
|
+
failedRuntimeCount: number;
|
|
38
|
+
stoppedRuntimeCount: number;
|
|
39
|
+
idle: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare class DebugTargetService {
|
|
42
|
+
private readonly db;
|
|
43
|
+
private readonly workspaceService;
|
|
44
|
+
private readonly workspaceWorktreeRepository;
|
|
45
|
+
private readonly debugTargetRepository;
|
|
46
|
+
private readonly debugServiceRepository;
|
|
47
|
+
private readonly frameworkAnalysisResultRepository;
|
|
48
|
+
private readonly debugRuntimeSessionRepository;
|
|
49
|
+
private readonly portLeaseRepository;
|
|
50
|
+
private readonly runtimeBindingRepository;
|
|
51
|
+
private readonly aiFallbackEditRepository;
|
|
52
|
+
private readonly terminalCommandTemplateRepository;
|
|
53
|
+
private readonly terminalService;
|
|
54
|
+
private readonly terminalInstanceRepository;
|
|
55
|
+
private readonly taskManager;
|
|
56
|
+
constructor(db: Database.Database, workspaceService: WorkspaceService, workspaceWorktreeRepository: Pick<WorkspaceWorktreeRepository, "findByWorkspaceId">, debugTargetRepository: DebugTargetRepository, debugServiceRepository: DebugServiceRepository, frameworkAnalysisResultRepository: FrameworkAnalysisResultRepository, debugRuntimeSessionRepository: DebugRuntimeSessionRepository, portLeaseRepository: PortLeaseRepository, runtimeBindingRepository: RuntimeBindingRepository, aiFallbackEditRepository: AiFallbackEditRepository, terminalCommandTemplateRepository: {
|
|
57
|
+
listByWorkspace(workspaceId: string): TerminalCommandTemplate[];
|
|
58
|
+
}, terminalService: Pick<TerminalService, "createTerminal" | "writeInput" | "closeTerminal" | "getTerminalOrThrow">, terminalInstanceRepository: {
|
|
59
|
+
findById(id: string): TerminalInstance | null;
|
|
60
|
+
}, taskManager?: TaskManager);
|
|
61
|
+
analyze(input: AnalyzeDebugTargetInput): AnalyzeDebugTargetResult;
|
|
62
|
+
getFrameworkAnalysis(targetId: string): {
|
|
63
|
+
targetId: string;
|
|
64
|
+
items: FrameworkAnalysisResult[];
|
|
65
|
+
};
|
|
66
|
+
refreshFrameworkAnalysis(targetId: string): AnalyzeDebugTargetResult;
|
|
67
|
+
getCompatibilityMatrix(): {
|
|
68
|
+
version: string;
|
|
69
|
+
items: typeof FRAMEWORK_COMPATIBILITY_MATRIX;
|
|
70
|
+
};
|
|
71
|
+
createLaunchPlan(targetId: string): Promise<DebugLaunchPlan>;
|
|
72
|
+
run(input: RunDebugTargetInput): Promise<{
|
|
73
|
+
runtimeSession: DebugRuntimeSession;
|
|
74
|
+
services: Array<{
|
|
75
|
+
serviceId: string;
|
|
76
|
+
processInstanceId: string;
|
|
77
|
+
terminalId: string;
|
|
78
|
+
leasedPort: number | null;
|
|
79
|
+
runtimeBindingId: string;
|
|
80
|
+
}>;
|
|
81
|
+
}>;
|
|
82
|
+
handleTerminalExit(event: {
|
|
83
|
+
terminal: TerminalInstance;
|
|
84
|
+
requestedClose: boolean;
|
|
85
|
+
}): Promise<void>;
|
|
86
|
+
getRuntimeDetail(runtimeId: string): Promise<DebugRuntimeDetail>;
|
|
87
|
+
getLatestRuntimeDetail(targetId: string): Promise<DebugRuntimeDetail | null>;
|
|
88
|
+
getRecentRuntimeDetails(targetId: string, limit?: number): Promise<DebugRuntimeHistoryEnvelope>;
|
|
89
|
+
runBackgroundRuntimeReconciliation(source?: string): Promise<DebugRuntimeReconciliationResult>;
|
|
90
|
+
updateAiFallbackEdit(editId: string, action: "apply" | "reject" | "rollback", refs?: {
|
|
91
|
+
patchRef?: string | null;
|
|
92
|
+
rollbackRef?: string | null;
|
|
93
|
+
}): AiFallbackEditRecord;
|
|
94
|
+
private getTargetOrThrow;
|
|
95
|
+
private getServiceOrThrow;
|
|
96
|
+
private upsertTarget;
|
|
97
|
+
private resolveSourceMeta;
|
|
98
|
+
private resolveRootPath;
|
|
99
|
+
private registerBackgroundTasks;
|
|
100
|
+
private failRuntimePlan;
|
|
101
|
+
private reconcileActiveRuntimeLeases;
|
|
102
|
+
private reconcileRuntimeState;
|
|
103
|
+
private collectReconciliationRuntimeIds;
|
|
104
|
+
private releaseStaleLeases;
|
|
105
|
+
}
|