@downcity/city 1.1.32 → 1.1.47
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 +4 -9
- package/bin/cli/Index.js +10 -3
- package/bin/cli/Index.js.map +1 -1
- package/bin/cli/agent/AgentChat.d.ts +2 -1
- package/bin/cli/agent/AgentChat.d.ts.map +1 -1
- package/bin/cli/agent/AgentChat.js +93 -214
- package/bin/cli/agent/AgentChat.js.map +1 -1
- package/bin/cli/agent/AgentChatTypes.d.ts +8 -12
- package/bin/cli/agent/AgentChatTypes.d.ts.map +1 -1
- package/bin/cli/agent/AgentHistory.js +2 -2
- package/bin/cli/agent/AgentHistory.js.map +1 -1
- package/bin/cli/agent/AgentManager.d.ts.map +1 -1
- package/bin/cli/agent/AgentManager.js +26 -27
- package/bin/cli/agent/AgentManager.js.map +1 -1
- package/bin/cli/agent/AgentManagerTypes.d.ts +2 -2
- package/bin/cli/agent/AgentManagerTypes.d.ts.map +1 -1
- package/bin/cli/agent/AgentReset.js +4 -4
- package/bin/cli/agent/AgentReset.js.map +1 -1
- package/bin/cli/agent/AgentSelection.js +6 -6
- package/bin/cli/agent/AgentSelection.js.map +1 -1
- package/bin/cli/agent/AgentSelectionTypes.d.ts +1 -1
- package/bin/cli/agent/AgentSelectionTypes.d.ts.map +1 -1
- package/bin/cli/agent/Init.d.ts.map +1 -1
- package/bin/cli/agent/Init.js +17 -17
- package/bin/cli/agent/Init.js.map +1 -1
- package/bin/cli/agent/Restart.js +2 -2
- package/bin/cli/agent/Restart.js.map +1 -1
- package/bin/cli/agent/Run.d.ts +1 -1
- package/bin/cli/agent/Run.d.ts.map +1 -1
- package/bin/cli/agent/Run.js +44 -30
- package/bin/cli/agent/Run.js.map +1 -1
- package/bin/cli/agent/Start.js +2 -2
- package/bin/cli/agent/Start.js.map +1 -1
- package/bin/cli/agent/Stop.js +2 -2
- package/bin/cli/agent/Stop.js.map +1 -1
- package/bin/cli/control-plane/ControlPlaneProcess.d.ts.map +1 -1
- package/bin/cli/control-plane/ControlPlaneProcess.js +7 -8
- package/bin/cli/control-plane/ControlPlaneProcess.js.map +1 -1
- package/bin/cli/model/ModelCreateCommand.js +1 -1
- package/bin/cli/model/ModelCreateCommand.js.map +1 -1
- package/bin/cli/model/ModelManageCommand.d.ts.map +1 -1
- package/bin/cli/model/ModelManageCommand.js +5 -3
- package/bin/cli/model/ModelManageCommand.js.map +1 -1
- package/bin/cli/model/ModelManager.js +3 -3
- package/bin/cli/model/ModelManager.js.map +1 -1
- package/bin/cli/model/ModelSupport.d.ts +0 -1
- package/bin/cli/model/ModelSupport.d.ts.map +1 -1
- package/bin/cli/model/ModelSupport.js +2 -11
- package/bin/cli/model/ModelSupport.js.map +1 -1
- package/bin/cli/shared/ChatAuth.d.ts.map +1 -1
- package/bin/cli/shared/ChatAuth.js +5 -7
- package/bin/cli/shared/ChatAuth.js.map +1 -1
- package/bin/cli/shared/ChatManager.d.ts.map +1 -1
- package/bin/cli/shared/ChatManager.js +2 -3
- package/bin/cli/shared/ChatManager.js.map +1 -1
- package/bin/cli/shared/CliReporterTypes.d.ts +1 -1
- package/bin/cli/shared/Config.js +2 -2
- package/bin/cli/shared/Config.js.map +1 -1
- package/bin/cli/shared/Env.d.ts +1 -1
- package/bin/cli/shared/Env.d.ts.map +1 -1
- package/bin/cli/shared/Env.js +18 -149
- package/bin/cli/shared/Env.js.map +1 -1
- package/bin/cli/shared/IndexAgentCommand.d.ts.map +1 -1
- package/bin/cli/shared/IndexAgentCommand.js +3 -3
- package/bin/cli/shared/IndexAgentCommand.js.map +1 -1
- package/bin/cli/shared/IndexSupport.d.ts +3 -3
- package/bin/cli/shared/IndexSupport.d.ts.map +1 -1
- package/bin/cli/shared/IndexSupport.js +14 -8
- package/bin/cli/shared/IndexSupport.js.map +1 -1
- package/bin/cli/shared/ManagedPluginActionCommands.d.ts +2 -1
- package/bin/cli/shared/ManagedPluginActionCommands.d.ts.map +1 -1
- package/bin/cli/shared/ManagedPluginActionCommands.js +9 -7
- package/bin/cli/shared/ManagedPluginActionCommands.js.map +1 -1
- package/bin/cli/shared/ManagedPluginRemote.d.ts.map +1 -1
- package/bin/cli/shared/ManagedPluginRemote.js +4 -4
- package/bin/cli/shared/ManagedPluginRemote.js.map +1 -1
- package/bin/cli/shared/PluginScheduleCommand.d.ts +3 -2
- package/bin/cli/shared/PluginScheduleCommand.d.ts.map +1 -1
- package/bin/cli/shared/PluginScheduleCommand.js +11 -10
- package/bin/cli/shared/PluginScheduleCommand.js.map +1 -1
- package/bin/cli/shared/PluginTargetSupport.d.ts +6 -6
- package/bin/cli/shared/PluginTargetSupport.d.ts.map +1 -1
- package/bin/cli/shared/PluginTargetSupport.js +23 -24
- package/bin/cli/shared/PluginTargetSupport.js.map +1 -1
- package/bin/cli/shared/Plugins.d.ts.map +1 -1
- package/bin/cli/shared/Plugins.js +22 -16
- package/bin/cli/shared/Plugins.js.map +1 -1
- package/bin/cli/shared/PublicHostEnv.d.ts +1 -1
- package/bin/cli/shared/PublicHostEnv.js +2 -2
- package/bin/cli/shared/PublicHostEnv.js.map +1 -1
- package/bin/cli/shared/Terminal.d.ts +13 -0
- package/bin/cli/shared/Terminal.d.ts.map +1 -0
- package/bin/cli/shared/Terminal.js +22 -0
- package/bin/cli/shared/Terminal.js.map +1 -0
- package/bin/config/DowncitySchema.d.ts.map +1 -1
- package/bin/config/DowncitySchema.js +3 -111
- package/bin/config/DowncitySchema.js.map +1 -1
- package/bin/config/Paths.d.ts +0 -56
- package/bin/config/Paths.d.ts.map +1 -1
- package/bin/config/Paths.js +9 -51
- package/bin/config/Paths.js.map +1 -1
- package/bin/control/ChannelAccountApiRoutes.d.ts.map +1 -1
- package/bin/control/ChannelAccountApiRoutes.js +2 -3
- package/bin/control/ChannelAccountApiRoutes.js.map +1 -1
- package/bin/control/ControlGateway.d.ts.map +1 -1
- package/bin/control/ControlGateway.js +4 -3
- package/bin/control/ControlGateway.js.map +1 -1
- package/bin/control/EnvApiRoutes.d.ts +1 -1
- package/bin/control/EnvApiRoutes.d.ts.map +1 -1
- package/bin/control/EnvApiRoutes.js +7 -79
- package/bin/control/EnvApiRoutes.js.map +1 -1
- package/bin/control/PlatformApiRoutes.d.ts +2 -2
- package/bin/control/PlatformApiRoutes.d.ts.map +1 -1
- package/bin/control/PlatformApiRoutes.js +2 -2
- package/bin/control/PlatformApiRoutes.js.map +1 -1
- package/bin/control/PluginApiRoutes.d.ts.map +1 -1
- package/bin/control/PluginApiRoutes.js +33 -25
- package/bin/control/PluginApiRoutes.js.map +1 -1
- package/bin/control/gateway/AgentActions.d.ts +2 -2
- package/bin/control/gateway/AgentActions.d.ts.map +1 -1
- package/bin/control/gateway/AgentActions.js +23 -18
- package/bin/control/gateway/AgentActions.js.map +1 -1
- package/bin/control/gateway/AgentCatalog.d.ts +3 -6
- package/bin/control/gateway/AgentCatalog.d.ts.map +1 -1
- package/bin/control/gateway/AgentCatalog.js +16 -18
- package/bin/control/gateway/AgentCatalog.js.map +1 -1
- package/bin/control/instant/InstantSessionRunner.d.ts.map +1 -1
- package/bin/control/instant/InstantSessionRunner.js +3 -1
- package/bin/control/instant/InstantSessionRunner.js.map +1 -1
- package/bin/env/ProcessEnv.d.ts +24 -0
- package/bin/env/ProcessEnv.d.ts.map +1 -0
- package/bin/env/ProcessEnv.js +41 -0
- package/bin/env/ProcessEnv.js.map +1 -0
- package/bin/http/auth/AuthEnv.d.ts +1 -1
- package/bin/http/auth/AuthEnv.js +1 -1
- package/bin/model/runtime/CreateRuntimeModel.d.ts +6 -6
- package/bin/model/runtime/CreateRuntimeModel.d.ts.map +1 -1
- package/bin/model/runtime/CreateRuntimeModel.js +44 -53
- package/bin/model/runtime/CreateRuntimeModel.js.map +1 -1
- package/bin/model/runtime/ExecutionModelBinding.d.ts +46 -0
- package/bin/model/runtime/ExecutionModelBinding.d.ts.map +1 -0
- package/bin/model/runtime/ExecutionModelBinding.js +96 -0
- package/bin/model/runtime/ExecutionModelBinding.js.map +1 -0
- package/bin/model/service/ModelPoolService.d.ts +1 -1
- package/bin/model/service/ModelPoolService.d.ts.map +1 -1
- package/bin/model/service/ModelPoolService.js +8 -6
- package/bin/model/service/ModelPoolService.js.map +1 -1
- package/bin/platform/store/StoreEnvRepository.d.ts +5 -49
- package/bin/platform/store/StoreEnvRepository.d.ts.map +1 -1
- package/bin/platform/store/StoreEnvRepository.js +31 -178
- package/bin/platform/store/StoreEnvRepository.js.map +1 -1
- package/bin/platform/store/StoreSchema.js +3 -44
- package/bin/platform/store/StoreSchema.js.map +1 -1
- package/bin/platform/store/index.d.ts +9 -45
- package/bin/platform/store/index.d.ts.map +1 -1
- package/bin/platform/store/index.js +12 -62
- package/bin/platform/store/index.js.map +1 -1
- package/bin/platform/store/schema.d.ts +2 -2
- package/bin/platform/store/schema.js +2 -2
- package/bin/process/daemon/Api.d.ts +1 -1
- package/bin/process/daemon/CliArgs.d.ts +1 -0
- package/bin/process/daemon/CliArgs.d.ts.map +1 -1
- package/bin/process/daemon/CliArgs.js +20 -1
- package/bin/process/daemon/CliArgs.js.map +1 -1
- package/bin/process/daemon/Client.d.ts +18 -2
- package/bin/process/daemon/Client.d.ts.map +1 -1
- package/bin/process/daemon/Client.js +70 -20
- package/bin/process/daemon/Client.js.map +1 -1
- package/bin/process/daemon/Manager.d.ts.map +1 -1
- package/bin/process/daemon/Manager.js +2 -1
- package/bin/process/daemon/Manager.js.map +1 -1
- package/bin/process/registry/AgentHostRuntime.d.ts +1 -9
- package/bin/process/registry/AgentHostRuntime.d.ts.map +1 -1
- package/bin/process/registry/AgentHostRuntime.js +1 -155
- package/bin/process/registry/AgentHostRuntime.js.map +1 -1
- package/bin/terminal/admin/auth-error.d.ts +34 -0
- package/bin/terminal/admin/auth-error.d.ts.map +1 -0
- package/bin/terminal/admin/auth-error.js +51 -0
- package/bin/terminal/admin/auth-error.js.map +1 -0
- package/bin/terminal/admin/commands/accounts.d.ts +6 -0
- package/bin/terminal/admin/commands/accounts.d.ts.map +1 -0
- package/bin/terminal/admin/commands/accounts.js +44 -0
- package/bin/terminal/admin/commands/accounts.js.map +1 -0
- package/bin/terminal/admin/commands/balance.d.ts +6 -0
- package/bin/terminal/admin/commands/balance.d.ts.map +1 -0
- package/bin/terminal/admin/commands/balance.js +153 -0
- package/bin/terminal/admin/commands/balance.js.map +1 -0
- package/bin/terminal/admin/commands/config.d.ts +10 -0
- package/bin/terminal/admin/commands/config.d.ts.map +1 -0
- package/bin/terminal/admin/commands/config.js +11 -0
- package/bin/terminal/admin/commands/config.js.map +1 -0
- package/bin/terminal/admin/commands/custom.d.ts +6 -0
- package/bin/terminal/admin/commands/custom.d.ts.map +1 -0
- package/bin/terminal/admin/commands/custom.js +47 -0
- package/bin/terminal/admin/commands/custom.js.map +1 -0
- package/bin/terminal/admin/commands/instruction.d.ts +9 -0
- package/bin/terminal/admin/commands/instruction.d.ts.map +1 -0
- package/bin/terminal/admin/commands/instruction.js +10 -0
- package/bin/terminal/admin/commands/instruction.js.map +1 -0
- package/bin/terminal/admin/commands/models.d.ts +14 -0
- package/bin/terminal/admin/commands/models.d.ts.map +1 -0
- package/bin/terminal/admin/commands/models.js +61 -0
- package/bin/terminal/admin/commands/models.js.map +1 -0
- package/bin/terminal/admin/commands/payment.d.ts +6 -0
- package/bin/terminal/admin/commands/payment.d.ts.map +1 -0
- package/bin/terminal/admin/commands/payment.js +59 -0
- package/bin/terminal/admin/commands/payment.js.map +1 -0
- package/bin/terminal/admin/commands/products.d.ts +6 -0
- package/bin/terminal/admin/commands/products.d.ts.map +1 -0
- package/bin/terminal/admin/commands/products.js +80 -0
- package/bin/terminal/admin/commands/products.js.map +1 -0
- package/bin/terminal/admin/commands/service-env.d.ts +11 -0
- package/bin/terminal/admin/commands/service-env.d.ts.map +1 -0
- package/bin/terminal/admin/commands/service-env.js +248 -0
- package/bin/terminal/admin/commands/service-env.js.map +1 -0
- package/bin/terminal/admin/commands/usage.d.ts +6 -0
- package/bin/terminal/admin/commands/usage.d.ts.map +1 -0
- package/bin/terminal/admin/commands/usage.js +44 -0
- package/bin/terminal/admin/commands/usage.js.map +1 -0
- package/bin/terminal/admin/loop.d.ts +6 -0
- package/bin/terminal/admin/loop.d.ts.map +1 -0
- package/bin/terminal/admin/loop.js +70 -0
- package/bin/terminal/admin/loop.js.map +1 -0
- package/bin/terminal/agent/pi-agent.d.ts +15 -0
- package/bin/terminal/agent/pi-agent.d.ts.map +1 -0
- package/bin/terminal/agent/pi-agent.js +136 -0
- package/bin/terminal/agent/pi-agent.js.map +1 -0
- package/bin/terminal/app.d.ts +13 -0
- package/bin/terminal/app.d.ts.map +1 -0
- package/bin/terminal/app.js +123 -0
- package/bin/terminal/app.js.map +1 -0
- package/bin/terminal/auth/admin.d.ts +8 -0
- package/bin/terminal/auth/admin.d.ts.map +1 -0
- package/bin/terminal/auth/admin.js +18 -0
- package/bin/terminal/auth/admin.js.map +1 -0
- package/bin/terminal/auth/mode-select.d.ts +11 -0
- package/bin/terminal/auth/mode-select.d.ts.map +1 -0
- package/bin/terminal/auth/mode-select.js +33 -0
- package/bin/terminal/auth/mode-select.js.map +1 -0
- package/bin/terminal/auth/server-switch.d.ts +22 -0
- package/bin/terminal/auth/server-switch.d.ts.map +1 -0
- package/bin/terminal/auth/server-switch.js +241 -0
- package/bin/terminal/auth/server-switch.js.map +1 -0
- package/bin/terminal/auth/user.d.ts +19 -0
- package/bin/terminal/auth/user.d.ts.map +1 -0
- package/bin/terminal/auth/user.js +261 -0
- package/bin/terminal/auth/user.js.map +1 -0
- package/bin/terminal/core/browser.d.ts +12 -0
- package/bin/terminal/core/browser.d.ts.map +1 -0
- package/bin/terminal/core/browser.js +29 -0
- package/bin/terminal/core/browser.js.map +1 -0
- package/bin/terminal/core/env.d.ts +15 -0
- package/bin/terminal/core/env.d.ts.map +1 -0
- package/bin/terminal/core/env.js +67 -0
- package/bin/terminal/core/env.js.map +1 -0
- package/bin/terminal/core/session.d.ts +97 -0
- package/bin/terminal/core/session.d.ts.map +1 -0
- package/bin/terminal/core/session.js +342 -0
- package/bin/terminal/core/session.js.map +1 -0
- package/bin/terminal/core/stripe.d.ts +26 -0
- package/bin/terminal/core/stripe.d.ts.map +1 -0
- package/bin/terminal/core/stripe.js +22 -0
- package/bin/terminal/core/stripe.js.map +1 -0
- package/bin/terminal/core/ui.d.ts +29 -0
- package/bin/terminal/core/ui.d.ts.map +1 -0
- package/bin/terminal/core/ui.js +60 -0
- package/bin/terminal/core/ui.js.map +1 -0
- package/bin/terminal/core/update.d.ts +20 -0
- package/bin/terminal/core/update.d.ts.map +1 -0
- package/bin/terminal/core/update.js +193 -0
- package/bin/terminal/core/update.js.map +1 -0
- package/bin/terminal/user/balance.d.ts +31 -0
- package/bin/terminal/user/balance.d.ts.map +1 -0
- package/bin/terminal/user/balance.js +131 -0
- package/bin/terminal/user/balance.js.map +1 -0
- package/bin/terminal/user/chat.d.ts +12 -0
- package/bin/terminal/user/chat.d.ts.map +1 -0
- package/bin/terminal/user/chat.js +70 -0
- package/bin/terminal/user/chat.js.map +1 -0
- package/bin/terminal/user/loop.d.ts +13 -0
- package/bin/terminal/user/loop.d.ts.map +1 -0
- package/bin/terminal/user/loop.js +93 -0
- package/bin/terminal/user/loop.js.map +1 -0
- package/bin/terminal/user/models.d.ts +10 -0
- package/bin/terminal/user/models.d.ts.map +1 -0
- package/bin/terminal/user/models.js +39 -0
- package/bin/terminal/user/models.js.map +1 -0
- package/bin/utils/storage.d.ts +0 -1
- package/bin/utils/storage.d.ts.map +1 -1
- package/bin/utils/storage.js +0 -6
- package/bin/utils/storage.js.map +1 -1
- package/package.json +7 -2
- package/public/app.js +3 -3
- package/src/cli/Index.ts +13 -3
- package/src/cli/agent/AgentChat.ts +113 -289
- package/src/cli/agent/AgentChatTypes.ts +8 -12
- package/src/cli/agent/AgentHistory.ts +2 -2
- package/src/cli/agent/AgentManager.ts +27 -28
- package/src/cli/agent/AgentManagerTypes.ts +2 -2
- package/src/cli/agent/AgentReset.ts +4 -4
- package/src/cli/agent/AgentSelection.ts +6 -6
- package/src/cli/agent/AgentSelectionTypes.ts +1 -1
- package/src/cli/agent/Init.ts +22 -21
- package/src/cli/agent/Restart.ts +2 -2
- package/src/cli/agent/Run.ts +46 -30
- package/src/cli/agent/Start.ts +2 -2
- package/src/cli/agent/Stop.ts +2 -2
- package/src/cli/control-plane/ControlPlaneProcess.ts +7 -8
- package/src/cli/model/ModelCreateCommand.ts +1 -1
- package/src/cli/model/ModelManageCommand.ts +5 -3
- package/src/cli/model/ModelManager.ts +3 -3
- package/src/cli/model/ModelSupport.ts +2 -10
- package/src/cli/shared/ChatAuth.ts +10 -11
- package/src/cli/shared/ChatManager.ts +2 -3
- package/src/cli/shared/CliReporterTypes.ts +1 -1
- package/src/cli/shared/Config.ts +2 -2
- package/src/cli/shared/Env.ts +22 -230
- package/src/cli/shared/IndexAgentCommand.ts +3 -4
- package/src/cli/shared/IndexSupport.ts +16 -10
- package/src/cli/shared/ManagedPluginActionCommands.ts +15 -12
- package/src/cli/shared/ManagedPluginRemote.ts +4 -4
- package/src/cli/shared/PluginScheduleCommand.ts +11 -10
- package/src/cli/shared/PluginTargetSupport.ts +25 -26
- package/src/cli/shared/Plugins.ts +26 -20
- package/src/cli/shared/PublicHostEnv.ts +2 -2
- package/src/cli/shared/Terminal.ts +24 -0
- package/src/config/DowncitySchema.ts +3 -113
- package/src/config/Paths.ts +9 -90
- package/src/control/ChannelAccountApiRoutes.ts +2 -3
- package/src/control/ControlGateway.ts +6 -5
- package/src/control/EnvApiRoutes.ts +7 -91
- package/src/control/PlatformApiRoutes.ts +6 -6
- package/src/control/PluginApiRoutes.ts +37 -27
- package/src/control/gateway/AgentActions.ts +26 -21
- package/src/control/gateway/AgentCatalog.ts +17 -21
- package/src/control/instant/InstantSessionRunner.ts +3 -1
- package/src/env/ProcessEnv.ts +43 -0
- package/src/http/auth/AuthEnv.ts +1 -1
- package/src/model/runtime/CreateRuntimeModel.ts +51 -59
- package/src/model/runtime/ExecutionModelBinding.ts +120 -0
- package/src/model/service/ModelPoolService.ts +13 -11
- package/src/platform/store/StoreEnvRepository.ts +31 -234
- package/src/platform/store/StoreSchema.ts +3 -49
- package/src/platform/store/index.ts +11 -80
- package/src/platform/store/schema.ts +2 -2
- package/src/process/daemon/Api.ts +1 -1
- package/src/process/daemon/CliArgs.ts +24 -1
- package/src/process/daemon/Client.ts +90 -22
- package/src/process/daemon/Manager.ts +2 -1
- package/src/process/registry/AgentHostRuntime.ts +1 -163
- package/src/terminal/admin/auth-error.ts +62 -0
- package/src/terminal/admin/commands/accounts.ts +44 -0
- package/src/terminal/admin/commands/balance.ts +160 -0
- package/src/terminal/admin/commands/config.ts +13 -0
- package/src/terminal/admin/commands/custom.ts +46 -0
- package/src/terminal/admin/commands/instruction.ts +12 -0
- package/src/terminal/admin/commands/models.ts +64 -0
- package/src/terminal/admin/commands/payment.ts +94 -0
- package/src/terminal/admin/commands/products.ts +72 -0
- package/src/terminal/admin/commands/service-env.ts +256 -0
- package/src/terminal/admin/commands/usage.ts +44 -0
- package/src/terminal/admin/loop.ts +69 -0
- package/src/terminal/agent/pi-agent.ts +180 -0
- package/src/terminal/app.ts +120 -0
- package/src/terminal/auth/admin.ts +21 -0
- package/src/terminal/auth/mode-select.ts +38 -0
- package/src/terminal/auth/server-switch.ts +275 -0
- package/src/terminal/auth/user.ts +351 -0
- package/src/terminal/core/browser.ts +31 -0
- package/src/terminal/core/env.ts +71 -0
- package/src/terminal/core/session.ts +450 -0
- package/src/terminal/core/stripe.ts +37 -0
- package/src/terminal/core/ui.ts +84 -0
- package/src/terminal/core/update.ts +230 -0
- package/src/terminal/user/balance.ts +215 -0
- package/src/terminal/user/chat.ts +80 -0
- package/src/terminal/user/loop.ts +112 -0
- package/src/terminal/user/models.ts +43 -0
- package/src/utils/storage.ts +0 -7
- package/tsconfig.json +2 -1
- package/bin/platform/chatAuthorization/Store.d.ts +0 -31
- package/bin/platform/chatAuthorization/Store.d.ts.map +0 -1
- package/bin/platform/chatAuthorization/Store.js +0 -145
- package/bin/platform/chatAuthorization/Store.js.map +0 -1
- package/bin/process/rpc/Client.d.ts +0 -13
- package/bin/process/rpc/Client.d.ts.map +0 -1
- package/bin/process/rpc/Client.js +0 -98
- package/bin/process/rpc/Client.js.map +0 -1
- package/bin/process/rpc/Paths.d.ts +0 -14
- package/bin/process/rpc/Paths.d.ts.map +0 -1
- package/bin/process/rpc/Paths.js +0 -36
- package/bin/process/rpc/Paths.js.map +0 -1
- package/src/platform/chatAuthorization/Store.ts +0 -181
- package/src/process/rpc/Client.ts +0 -113
- package/src/process/rpc/Paths.ts +0 -43
|
@@ -5,24 +5,25 @@
|
|
|
5
5
|
* - 统一覆盖交互式持续对话与一次性消息模式,不再保留独立 `quest` 命令。
|
|
6
6
|
* - 目标 agent 始终按 managed agent registry 名称解析,不依赖当前工作目录。
|
|
7
7
|
* - 默认使用独立 local-cli 主会话:`local-cli-chat-main`。
|
|
8
|
+
* - 远程访问统一走 `RemoteAgent({ url })`,不再在 CLI 侧维护第二套 HTTP SDK transport。
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
import { createInterface } from "node:readline/promises";
|
|
11
12
|
import chalk from "chalk";
|
|
12
13
|
import prompts from "prompts";
|
|
13
|
-
import
|
|
14
|
+
import {
|
|
15
|
+
RemoteAgent,
|
|
16
|
+
type AgentSessionEvent,
|
|
17
|
+
type RemoteAgentSession,
|
|
18
|
+
} from "@downcity/agent";
|
|
14
19
|
import { emitCliBlock } from "../shared/CliReporter.js";
|
|
15
20
|
import { printResult } from "@/utils/cli/CliOutput.js";
|
|
16
21
|
import {
|
|
17
|
-
|
|
22
|
+
resolveProjectRootByAgentId,
|
|
18
23
|
validateAgentProjectRoot,
|
|
19
24
|
} from "../shared/PluginTargetSupport.js";
|
|
20
25
|
import { listRegisteredAgentsForCli } from "./AgentSelection.js";
|
|
21
|
-
import {
|
|
22
|
-
formatCliBearerHeaderValue,
|
|
23
|
-
resolveCliAuthToken,
|
|
24
|
-
} from "@/http/auth/CliAuthStateStore.js";
|
|
25
|
-
import { resolveDaemonEndpoint } from "@/process/daemon/Client.js";
|
|
26
|
+
import { resolveDaemonRpcEndpoint } from "@/process/daemon/Client.js";
|
|
26
27
|
import type {
|
|
27
28
|
AgentChatCliOptions,
|
|
28
29
|
AgentChatExecutionOutcome,
|
|
@@ -31,13 +32,11 @@ import type {
|
|
|
31
32
|
} from "./AgentChatTypes.js";
|
|
32
33
|
import { AGENT_CHAT_DEFAULT_SESSION_ID } from "./AgentChatTypes.js";
|
|
33
34
|
|
|
34
|
-
const SDK_EVENTS_READY_TYPE = "sdk-events-ready";
|
|
35
|
-
|
|
36
35
|
type ResolvedAgentChatTarget = {
|
|
37
36
|
/**
|
|
38
|
-
* 目标 agent
|
|
37
|
+
* 目标 agent id。
|
|
39
38
|
*/
|
|
40
|
-
|
|
39
|
+
agentId: string;
|
|
41
40
|
/**
|
|
42
41
|
* 目标项目根目录。
|
|
43
42
|
*/
|
|
@@ -69,15 +68,15 @@ function buildAgentChatFailureText(error?: string): string {
|
|
|
69
68
|
);
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
async function
|
|
73
|
-
const explicit = String(
|
|
71
|
+
async function resolveChatTargetAgentId(inputId?: string): Promise<string | null> {
|
|
72
|
+
const explicit = String(inputId || "").trim();
|
|
74
73
|
if (explicit) return explicit;
|
|
75
74
|
|
|
76
75
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
77
76
|
emitCliBlock({
|
|
78
77
|
tone: "error",
|
|
79
|
-
title: "Agent
|
|
80
|
-
note: "Use `city agent chat --to <
|
|
78
|
+
title: "Agent id is required",
|
|
79
|
+
note: "Use `city agent chat --to <id>` or run this command in an interactive terminal.",
|
|
81
80
|
});
|
|
82
81
|
return null;
|
|
83
82
|
}
|
|
@@ -96,28 +95,28 @@ async function resolveChatTargetAgentName(inputName?: string): Promise<string |
|
|
|
96
95
|
|
|
97
96
|
const response = (await prompts({
|
|
98
97
|
type: "select",
|
|
99
|
-
name: "
|
|
98
|
+
name: "agentId",
|
|
100
99
|
message: "选择要聊天的 Agent",
|
|
101
100
|
choices: runningAgents.map((agent) => ({
|
|
102
|
-
title: agent.
|
|
101
|
+
title: agent.id,
|
|
103
102
|
description: agent.projectRoot,
|
|
104
|
-
value: agent.
|
|
103
|
+
value: agent.id,
|
|
105
104
|
})),
|
|
106
105
|
initial: 0,
|
|
107
|
-
})) as {
|
|
108
|
-
const
|
|
109
|
-
if (!
|
|
106
|
+
})) as { agentId?: string };
|
|
107
|
+
const agentId = String(response.agentId || "").trim();
|
|
108
|
+
if (!agentId) {
|
|
110
109
|
emitCliBlock({
|
|
111
110
|
tone: "info",
|
|
112
111
|
title: "Agent chat cancelled",
|
|
113
112
|
});
|
|
114
113
|
return null;
|
|
115
114
|
}
|
|
116
|
-
return
|
|
115
|
+
return agentId;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
118
|
async function resolveAgentChatTarget(
|
|
120
|
-
|
|
119
|
+
agentIdInput: string,
|
|
121
120
|
): Promise<
|
|
122
121
|
| {
|
|
123
122
|
success: true;
|
|
@@ -128,26 +127,26 @@ async function resolveAgentChatTarget(
|
|
|
128
127
|
outcome: AgentChatExecutionOutcome;
|
|
129
128
|
}
|
|
130
129
|
> {
|
|
131
|
-
const
|
|
130
|
+
const agentId = String(agentIdInput || "").trim();
|
|
132
131
|
const sessionId = AGENT_CHAT_DEFAULT_SESSION_ID;
|
|
133
|
-
if (!
|
|
132
|
+
if (!agentId) {
|
|
134
133
|
return {
|
|
135
134
|
success: false,
|
|
136
135
|
outcome: {
|
|
137
|
-
|
|
136
|
+
agentId: "",
|
|
138
137
|
sessionId,
|
|
139
138
|
success: false,
|
|
140
|
-
error: "Missing target agent
|
|
139
|
+
error: "Missing target agent id.",
|
|
141
140
|
},
|
|
142
141
|
};
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
const resolved = await
|
|
144
|
+
const resolved = await resolveProjectRootByAgentId(agentId);
|
|
146
145
|
if (!resolved.projectRoot) {
|
|
147
146
|
return {
|
|
148
147
|
success: false,
|
|
149
148
|
outcome: {
|
|
150
|
-
|
|
149
|
+
agentId,
|
|
151
150
|
sessionId,
|
|
152
151
|
success: false,
|
|
153
152
|
error: resolved.error || "Failed to resolve agent project path",
|
|
@@ -160,7 +159,7 @@ async function resolveAgentChatTarget(
|
|
|
160
159
|
return {
|
|
161
160
|
success: false,
|
|
162
161
|
outcome: {
|
|
163
|
-
|
|
162
|
+
agentId,
|
|
164
163
|
projectRoot: resolved.projectRoot,
|
|
165
164
|
sessionId,
|
|
166
165
|
success: false,
|
|
@@ -172,7 +171,7 @@ async function resolveAgentChatTarget(
|
|
|
172
171
|
return {
|
|
173
172
|
success: true,
|
|
174
173
|
target: {
|
|
175
|
-
|
|
174
|
+
agentId,
|
|
176
175
|
projectRoot: resolved.projectRoot,
|
|
177
176
|
sessionId,
|
|
178
177
|
},
|
|
@@ -193,7 +192,7 @@ function printAssistantReply(replyText: string): void {
|
|
|
193
192
|
}
|
|
194
193
|
|
|
195
194
|
function printAgentChatFailure(params: {
|
|
196
|
-
|
|
195
|
+
agentId: string;
|
|
197
196
|
error?: string;
|
|
198
197
|
}): void {
|
|
199
198
|
emitCliBlock({
|
|
@@ -202,7 +201,7 @@ function printAgentChatFailure(params: {
|
|
|
202
201
|
facts: [
|
|
203
202
|
{
|
|
204
203
|
label: "agent",
|
|
205
|
-
value: params.
|
|
204
|
+
value: params.agentId,
|
|
206
205
|
},
|
|
207
206
|
{
|
|
208
207
|
label: "error",
|
|
@@ -212,93 +211,35 @@ function printAgentChatFailure(params: {
|
|
|
212
211
|
});
|
|
213
212
|
}
|
|
214
213
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
`HTTP ${response.status}`
|
|
227
|
-
);
|
|
228
|
-
} catch {
|
|
229
|
-
// ignore malformed json payloads
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return String(text || "").trim() || `HTTP ${response.status}`;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
function isSdkEventsReadyFrame(value: unknown): boolean {
|
|
236
|
-
return (
|
|
237
|
-
typeof value === "object" &&
|
|
238
|
-
value !== null &&
|
|
239
|
-
"type" in value &&
|
|
240
|
-
String((value as { type?: unknown }).type || "") === SDK_EVENTS_READY_TYPE
|
|
241
|
-
);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
async function postSdkPrompt(params: {
|
|
245
|
-
endpointBaseUrl: string;
|
|
246
|
-
sessionId: string;
|
|
247
|
-
message: string;
|
|
248
|
-
authHeaderValue?: string;
|
|
249
|
-
}): Promise<
|
|
250
|
-
| {
|
|
251
|
-
success: true;
|
|
252
|
-
turnId: string;
|
|
253
|
-
}
|
|
254
|
-
| {
|
|
255
|
-
success: false;
|
|
256
|
-
error: string;
|
|
257
|
-
}
|
|
258
|
-
> {
|
|
259
|
-
const response = await fetch(
|
|
260
|
-
new URL(
|
|
261
|
-
`/api/sdk/sessions/${encodeURIComponent(params.sessionId)}/prompt`,
|
|
262
|
-
params.endpointBaseUrl,
|
|
263
|
-
).toString(),
|
|
264
|
-
{
|
|
265
|
-
method: "POST",
|
|
266
|
-
headers: {
|
|
267
|
-
"Content-Type": "application/json",
|
|
268
|
-
...(params.authHeaderValue ? { Authorization: params.authHeaderValue } : {}),
|
|
269
|
-
},
|
|
270
|
-
body: JSON.stringify({
|
|
271
|
-
query: params.message,
|
|
272
|
-
}),
|
|
273
|
-
},
|
|
274
|
-
).catch((error) => {
|
|
275
|
-
throw new Error(`Failed to call ${params.endpointBaseUrl}: ${String(error)}`);
|
|
214
|
+
function createRemoteAgent(params: {
|
|
215
|
+
projectRoot: string;
|
|
216
|
+
transport?: AgentChatTransportOptions;
|
|
217
|
+
}): RemoteAgent {
|
|
218
|
+
const endpoint = resolveDaemonRpcEndpoint({
|
|
219
|
+
projectRoot: params.projectRoot,
|
|
220
|
+
host: params.transport?.host,
|
|
221
|
+
port: params.transport?.port,
|
|
222
|
+
});
|
|
223
|
+
return new RemoteAgent({
|
|
224
|
+
url: `rpc://${endpoint.host}:${endpoint.port}`,
|
|
276
225
|
});
|
|
226
|
+
}
|
|
277
227
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
success: false,
|
|
289
|
-
error:
|
|
290
|
-
String(payload.error || "").trim() ||
|
|
291
|
-
`SDK prompt failed with HTTP ${response.status}`,
|
|
292
|
-
};
|
|
228
|
+
async function getOrCreateRemoteSession(params: {
|
|
229
|
+
remote_agent: RemoteAgent;
|
|
230
|
+
session_id: string;
|
|
231
|
+
}): Promise<RemoteAgentSession> {
|
|
232
|
+
try {
|
|
233
|
+
return await params.remote_agent.getSession(params.session_id);
|
|
234
|
+
} catch {
|
|
235
|
+
return await params.remote_agent.createSession({
|
|
236
|
+
sessionId: params.session_id,
|
|
237
|
+
});
|
|
293
238
|
}
|
|
294
|
-
return {
|
|
295
|
-
success: true,
|
|
296
|
-
turnId,
|
|
297
|
-
};
|
|
298
239
|
}
|
|
299
240
|
|
|
300
241
|
async function runSdkPromptTurn(params: {
|
|
301
|
-
|
|
242
|
+
agentId: string;
|
|
302
243
|
message: string;
|
|
303
244
|
transport?: AgentChatTransportOptions;
|
|
304
245
|
renderText?: boolean;
|
|
@@ -318,7 +259,7 @@ async function runSdkPromptTurn(params: {
|
|
|
318
259
|
};
|
|
319
260
|
}
|
|
320
261
|
|
|
321
|
-
const resolved = await resolveAgentChatTarget(params.
|
|
262
|
+
const resolved = await resolveAgentChatTarget(params.agentId);
|
|
322
263
|
if (!resolved.success) {
|
|
323
264
|
return {
|
|
324
265
|
success: false,
|
|
@@ -328,188 +269,76 @@ async function runSdkPromptTurn(params: {
|
|
|
328
269
|
};
|
|
329
270
|
}
|
|
330
271
|
|
|
331
|
-
const
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
projectRoot: target.projectRoot,
|
|
335
|
-
host: params.transport?.host,
|
|
336
|
-
port: params.transport?.port,
|
|
272
|
+
const remote_agent = createRemoteAgent({
|
|
273
|
+
projectRoot: resolved.target.projectRoot,
|
|
274
|
+
transport: params.transport,
|
|
337
275
|
});
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
}),
|
|
342
|
-
);
|
|
343
|
-
const response = await fetch(
|
|
344
|
-
new URL(
|
|
345
|
-
`/api/sdk/sessions/${encodeURIComponent(target.sessionId)}/events`,
|
|
346
|
-
endpoint.baseUrl,
|
|
347
|
-
).toString(),
|
|
348
|
-
{
|
|
349
|
-
headers: {
|
|
350
|
-
...(authHeaderValue ? { Authorization: authHeaderValue } : {}),
|
|
351
|
-
},
|
|
352
|
-
signal: abortController.signal,
|
|
353
|
-
},
|
|
354
|
-
).catch((error) => {
|
|
355
|
-
throw new Error(`Failed to call ${endpoint.baseUrl}: ${String(error)}`);
|
|
276
|
+
const session = await getOrCreateRemoteSession({
|
|
277
|
+
remote_agent,
|
|
278
|
+
session_id: resolved.target.sessionId,
|
|
356
279
|
});
|
|
357
280
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
emittedVisibleText: false,
|
|
363
|
-
text: "",
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
const decoder = new TextDecoder();
|
|
368
|
-
const reader = response.body.getReader();
|
|
369
|
-
let buffered = "";
|
|
370
|
-
let printedLeadingNewline = false;
|
|
371
|
-
let emittedVisibleText = false;
|
|
372
|
-
let promptTurnId = "";
|
|
373
|
-
let promptPosted = false;
|
|
374
|
-
let finalText = "";
|
|
281
|
+
let printed_leading_newline = false;
|
|
282
|
+
let emitted_visible_text = false;
|
|
283
|
+
let final_text = "";
|
|
284
|
+
let target_turn_id = "";
|
|
375
285
|
|
|
376
286
|
const renderEvent = (event: AgentSessionEvent): void => {
|
|
377
|
-
if (event.type !== "text-delta" || event.turnId !==
|
|
287
|
+
if (event.type !== "text-delta" || event.turnId !== target_turn_id || !event.text) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
378
290
|
if (params.renderText === false) return;
|
|
379
|
-
if (!
|
|
291
|
+
if (!printed_leading_newline) {
|
|
380
292
|
process.stdout.write("\n");
|
|
381
|
-
|
|
293
|
+
printed_leading_newline = true;
|
|
382
294
|
}
|
|
383
295
|
process.stdout.write(event.text);
|
|
384
|
-
|
|
296
|
+
emitted_visible_text = true;
|
|
385
297
|
};
|
|
386
298
|
|
|
387
|
-
const
|
|
388
|
-
| {
|
|
389
|
-
done: true;
|
|
390
|
-
error?: string;
|
|
391
|
-
}
|
|
392
|
-
| {
|
|
393
|
-
done: false;
|
|
394
|
-
}
|
|
395
|
-
> => {
|
|
396
|
-
const value = JSON.parse(line) as unknown;
|
|
397
|
-
if (isSdkEventsReadyFrame(value)) {
|
|
398
|
-
if (!promptPosted) {
|
|
399
|
-
promptPosted = true;
|
|
400
|
-
const promptResult = await postSdkPrompt({
|
|
401
|
-
endpointBaseUrl: endpoint.baseUrl,
|
|
402
|
-
sessionId: target.sessionId,
|
|
403
|
-
message,
|
|
404
|
-
authHeaderValue,
|
|
405
|
-
});
|
|
406
|
-
if (!promptResult.success) {
|
|
407
|
-
return {
|
|
408
|
-
done: true,
|
|
409
|
-
error: promptResult.error,
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
promptTurnId = promptResult.turnId;
|
|
413
|
-
}
|
|
414
|
-
return { done: false };
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
const event = value as AgentSessionEvent;
|
|
418
|
-
if (event.type === "error") {
|
|
419
|
-
return {
|
|
420
|
-
done: true,
|
|
421
|
-
error: event.message,
|
|
422
|
-
};
|
|
423
|
-
}
|
|
299
|
+
const unsubscribe = session.subscribe((event) => {
|
|
424
300
|
renderEvent(event);
|
|
425
|
-
if (event.type === "turn-finish" && event.turnId ===
|
|
426
|
-
|
|
427
|
-
return {
|
|
428
|
-
done: true,
|
|
429
|
-
...(event.success ? {} : { error: event.error || "Agent turn failed" }),
|
|
430
|
-
};
|
|
301
|
+
if (event.type === "turn-finish" && event.turnId === target_turn_id) {
|
|
302
|
+
final_text = event.text;
|
|
431
303
|
}
|
|
432
|
-
|
|
433
|
-
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
try {
|
|
307
|
+
const turn = await session.prompt({ query: message });
|
|
308
|
+
target_turn_id = turn.id;
|
|
309
|
+
const result = await turn.finished;
|
|
310
|
+
final_text = result.text;
|
|
434
311
|
|
|
435
|
-
|
|
436
|
-
success: boolean;
|
|
437
|
-
error?: string;
|
|
438
|
-
}): {
|
|
439
|
-
success: boolean;
|
|
440
|
-
error?: string;
|
|
441
|
-
emittedVisibleText: boolean;
|
|
442
|
-
text: string;
|
|
443
|
-
} => {
|
|
444
|
-
if (printedLeadingNewline) {
|
|
312
|
+
if (printed_leading_newline) {
|
|
445
313
|
process.stdout.write("\n\n");
|
|
446
314
|
}
|
|
315
|
+
|
|
447
316
|
return {
|
|
448
317
|
success: result.success,
|
|
449
318
|
...(result.error ? { error: result.error } : {}),
|
|
450
|
-
emittedVisibleText,
|
|
451
|
-
text:
|
|
319
|
+
emittedVisibleText: emitted_visible_text,
|
|
320
|
+
text: final_text,
|
|
452
321
|
};
|
|
453
|
-
};
|
|
454
|
-
|
|
455
|
-
try {
|
|
456
|
-
while (true) {
|
|
457
|
-
const { done, value } = await reader.read();
|
|
458
|
-
if (done) break;
|
|
459
|
-
buffered += decoder.decode(value, { stream: true });
|
|
460
|
-
let newlineIndex = buffered.indexOf("\n");
|
|
461
|
-
while (newlineIndex >= 0) {
|
|
462
|
-
const line = buffered.slice(0, newlineIndex).trim();
|
|
463
|
-
buffered = buffered.slice(newlineIndex + 1);
|
|
464
|
-
if (line) {
|
|
465
|
-
const result = await handleLine(line);
|
|
466
|
-
if (result.done) {
|
|
467
|
-
return finishTurn({
|
|
468
|
-
success: !result.error,
|
|
469
|
-
...(result.error ? { error: result.error } : {}),
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
newlineIndex = buffered.indexOf("\n");
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
const tail = buffered.trim();
|
|
478
|
-
if (tail) {
|
|
479
|
-
const result = await handleLine(tail);
|
|
480
|
-
if (result.done) {
|
|
481
|
-
return finishTurn({
|
|
482
|
-
success: !result.error,
|
|
483
|
-
...(result.error ? { error: result.error } : {}),
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
322
|
} catch (error) {
|
|
488
|
-
|
|
323
|
+
if (printed_leading_newline) {
|
|
324
|
+
process.stdout.write("\n\n");
|
|
325
|
+
}
|
|
326
|
+
return {
|
|
489
327
|
success: false,
|
|
490
328
|
error: error instanceof Error ? error.message : String(error),
|
|
491
|
-
|
|
329
|
+
emittedVisibleText: emitted_visible_text,
|
|
330
|
+
text: final_text,
|
|
331
|
+
};
|
|
492
332
|
} finally {
|
|
493
|
-
|
|
494
|
-
await reader.cancel().catch(() => undefined);
|
|
495
|
-
try {
|
|
496
|
-
reader.releaseLock();
|
|
497
|
-
} catch {
|
|
498
|
-
// ignore
|
|
499
|
-
}
|
|
333
|
+
unsubscribe();
|
|
500
334
|
}
|
|
501
|
-
|
|
502
|
-
return finishTurn({
|
|
503
|
-
success: promptPosted && Boolean(promptTurnId),
|
|
504
|
-
...(promptPosted && promptTurnId ? {} : { error: "SDK events connection closed before prompt was accepted." }),
|
|
505
|
-
});
|
|
506
335
|
}
|
|
507
336
|
|
|
508
337
|
/**
|
|
509
338
|
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
510
339
|
*/
|
|
511
340
|
export async function executeAgentChatTurn(params: {
|
|
512
|
-
|
|
341
|
+
agentId: string;
|
|
513
342
|
message: string;
|
|
514
343
|
transport?: AgentChatTransportOptions;
|
|
515
344
|
}): Promise<AgentChatExecutionOutcome> {
|
|
@@ -518,25 +347,25 @@ export async function executeAgentChatTurn(params: {
|
|
|
518
347
|
|
|
519
348
|
if (!message) {
|
|
520
349
|
return {
|
|
521
|
-
|
|
350
|
+
agentId: String(params.agentId || "").trim(),
|
|
522
351
|
sessionId,
|
|
523
352
|
success: false,
|
|
524
353
|
error: "Chat message is required.",
|
|
525
354
|
};
|
|
526
355
|
}
|
|
527
356
|
|
|
528
|
-
const resolved = await resolveAgentChatTarget(params.
|
|
357
|
+
const resolved = await resolveAgentChatTarget(params.agentId);
|
|
529
358
|
if (!resolved.success) return resolved.outcome;
|
|
530
359
|
|
|
531
360
|
const outcome = await runSdkPromptTurn({
|
|
532
|
-
|
|
361
|
+
agentId: params.agentId,
|
|
533
362
|
message,
|
|
534
363
|
transport: params.transport,
|
|
535
364
|
renderText: false,
|
|
536
365
|
});
|
|
537
366
|
|
|
538
367
|
return {
|
|
539
|
-
|
|
368
|
+
agentId: params.agentId,
|
|
540
369
|
...(resolved.target.projectRoot ? { projectRoot: resolved.target.projectRoot } : {}),
|
|
541
370
|
sessionId,
|
|
542
371
|
success: outcome.success,
|
|
@@ -555,18 +384,17 @@ export async function executeAgentChatTurn(params: {
|
|
|
555
384
|
}
|
|
556
385
|
|
|
557
386
|
async function runOneShotChat(params: {
|
|
558
|
-
|
|
387
|
+
agentId: string;
|
|
559
388
|
message: string;
|
|
560
389
|
options: AgentChatCliOptions;
|
|
561
390
|
}): Promise<void> {
|
|
562
391
|
if (params.options.json === true) {
|
|
563
392
|
const outcome = await executeAgentChatTurn({
|
|
564
|
-
|
|
393
|
+
agentId: params.agentId,
|
|
565
394
|
message: params.message,
|
|
566
395
|
transport: {
|
|
567
396
|
host: params.options.host,
|
|
568
397
|
port: params.options.port,
|
|
569
|
-
token: params.options.token,
|
|
570
398
|
},
|
|
571
399
|
});
|
|
572
400
|
printResult({
|
|
@@ -574,7 +402,7 @@ async function runOneShotChat(params: {
|
|
|
574
402
|
success: outcome.success,
|
|
575
403
|
title: "agent chat",
|
|
576
404
|
payload: {
|
|
577
|
-
agent: params.
|
|
405
|
+
agent: params.agentId,
|
|
578
406
|
...(outcome.projectRoot ? { projectRoot: outcome.projectRoot } : {}),
|
|
579
407
|
sessionId: outcome.sessionId,
|
|
580
408
|
...(outcome.payload?.result ? { result: outcome.payload.result } : {}),
|
|
@@ -585,18 +413,17 @@ async function runOneShotChat(params: {
|
|
|
585
413
|
}
|
|
586
414
|
|
|
587
415
|
const outcome = await runSdkPromptTurn({
|
|
588
|
-
|
|
416
|
+
agentId: params.agentId,
|
|
589
417
|
message: params.message,
|
|
590
418
|
transport: {
|
|
591
419
|
host: params.options.host,
|
|
592
420
|
port: params.options.port,
|
|
593
|
-
token: params.options.token,
|
|
594
421
|
},
|
|
595
422
|
});
|
|
596
423
|
|
|
597
424
|
if (!outcome.success) {
|
|
598
425
|
printAgentChatFailure({
|
|
599
|
-
|
|
426
|
+
agentId: params.agentId,
|
|
600
427
|
error: outcome.error,
|
|
601
428
|
});
|
|
602
429
|
return;
|
|
@@ -609,10 +436,10 @@ async function runOneShotChat(params: {
|
|
|
609
436
|
* 启动交互式持续对话。
|
|
610
437
|
*/
|
|
611
438
|
async function runInteractiveChat(params: {
|
|
612
|
-
|
|
439
|
+
agentId: string;
|
|
613
440
|
options: AgentChatCliOptions;
|
|
614
441
|
}): Promise<void> {
|
|
615
|
-
const prompt = `${chalk.cyan(params.
|
|
442
|
+
const prompt = `${chalk.cyan(params.agentId)} ${chalk.dim("›")} `;
|
|
616
443
|
const helpText = [
|
|
617
444
|
`${chalk.dim("/exit, /quit — 退出对话")}`,
|
|
618
445
|
`${chalk.dim("/clear — 清屏")}`,
|
|
@@ -622,7 +449,7 @@ async function runInteractiveChat(params: {
|
|
|
622
449
|
|
|
623
450
|
emitCliBlock({
|
|
624
451
|
tone: "info",
|
|
625
|
-
title: `Agent chat · ${params.
|
|
452
|
+
title: `Agent chat · ${params.agentId}`,
|
|
626
453
|
note: `Session: local-cli-chat-main · ${helpText[0].replace(chalk.dim(""), "").trim()}`,
|
|
627
454
|
});
|
|
628
455
|
console.log(helpText.join("\n"));
|
|
@@ -639,8 +466,6 @@ async function runInteractiveChat(params: {
|
|
|
639
466
|
try {
|
|
640
467
|
line = await rl.question(prompt);
|
|
641
468
|
} catch (error) {
|
|
642
|
-
// 关键点(中文):Node 24 下 Ctrl+C 会让 readline.question 以 AbortError 拒绝。
|
|
643
|
-
// 这里按正常退出处理,避免把交互式 chat 变成未捕获异常。
|
|
644
469
|
if (isReadlineAbortError(error)) {
|
|
645
470
|
console.log();
|
|
646
471
|
break;
|
|
@@ -660,18 +485,17 @@ async function runInteractiveChat(params: {
|
|
|
660
485
|
}
|
|
661
486
|
|
|
662
487
|
const outcome = await runSdkPromptTurn({
|
|
663
|
-
|
|
488
|
+
agentId: params.agentId,
|
|
664
489
|
message: text,
|
|
665
490
|
transport: {
|
|
666
491
|
host: params.options.host,
|
|
667
492
|
port: params.options.port,
|
|
668
|
-
token: params.options.token,
|
|
669
493
|
},
|
|
670
494
|
});
|
|
671
495
|
|
|
672
496
|
if (!outcome.success) {
|
|
673
497
|
printAgentChatFailure({
|
|
674
|
-
|
|
498
|
+
agentId: params.agentId,
|
|
675
499
|
error: outcome.error,
|
|
676
500
|
});
|
|
677
501
|
continue;
|
|
@@ -689,13 +513,13 @@ async function runInteractiveChat(params: {
|
|
|
689
513
|
* `city agent chat` 统一入口。
|
|
690
514
|
*/
|
|
691
515
|
export async function chatCommand(options: AgentChatCliOptions): Promise<void> {
|
|
692
|
-
const
|
|
693
|
-
if (!
|
|
516
|
+
const agentId = await resolveChatTargetAgentId(options.to);
|
|
517
|
+
if (!agentId) return;
|
|
694
518
|
|
|
695
519
|
const oneShotMessage = normalizeChatMessage(String(options.message || ""));
|
|
696
520
|
if (oneShotMessage) {
|
|
697
521
|
await runOneShotChat({
|
|
698
|
-
|
|
522
|
+
agentId,
|
|
699
523
|
message: oneShotMessage,
|
|
700
524
|
options,
|
|
701
525
|
});
|
|
@@ -721,7 +545,7 @@ export async function chatCommand(options: AgentChatCliOptions): Promise<void> {
|
|
|
721
545
|
}
|
|
722
546
|
|
|
723
547
|
await runInteractiveChat({
|
|
724
|
-
|
|
548
|
+
agentId,
|
|
725
549
|
options,
|
|
726
550
|
});
|
|
727
551
|
}
|