@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
package/README.md
CHANGED
|
@@ -64,8 +64,7 @@ src
|
|
|
64
64
|
│ └── store/
|
|
65
65
|
├── process/
|
|
66
66
|
│ ├── daemon/
|
|
67
|
-
│
|
|
68
|
-
│ └── rpc/
|
|
67
|
+
│ └── registry/
|
|
69
68
|
├── types/
|
|
70
69
|
│ ├── chat/
|
|
71
70
|
│ ├── contact/
|
|
@@ -145,7 +144,7 @@ src
|
|
|
145
144
|
|
|
146
145
|
- `src/process/`
|
|
147
146
|
- city runtime 进程侧能力。
|
|
148
|
-
- 统一承接 daemon
|
|
147
|
+
- 统一承接 daemon 与 registry,不再散落在顶层目录。
|
|
149
148
|
|
|
150
149
|
- `src/process/daemon/`
|
|
151
150
|
- Agent daemon 的 pid/log/meta/启停管理。
|
|
@@ -155,10 +154,6 @@ src
|
|
|
155
154
|
- city runtime 与多 Agent registry 状态。
|
|
156
155
|
- 记录哪些 agent 已登记、哪些 daemon 正在运行、Console/city pid 路径等。
|
|
157
156
|
|
|
158
|
-
- `src/process/rpc/`
|
|
159
|
-
- city 侧 local RPC 客户端辅助。
|
|
160
|
-
- 用于本机调用 Agent 暴露的 IPC 接口。
|
|
161
|
-
|
|
162
157
|
- `src/types/`
|
|
163
158
|
- 当前仅保留尚未进一步归位的领域类型。
|
|
164
159
|
- 目前主要是 `chat / contact / task` 三组。
|
|
@@ -209,7 +204,7 @@ browser / UI
|
|
|
209
204
|
-> src/control/ControlGateway.ts
|
|
210
205
|
-> src/control/gateway/*
|
|
211
206
|
-> src/process/registry/*
|
|
212
|
-
-> 转发到单 Agent HTTP
|
|
207
|
+
-> 转发到单 Agent HTTP
|
|
213
208
|
```
|
|
214
209
|
|
|
215
210
|
### 5. 全局模型池
|
|
@@ -252,6 +247,6 @@ city model ...
|
|
|
252
247
|
- 模型池、provider store 与模型创建逻辑留在 city 宿主层,不下沉回 `@downcity/agent`。
|
|
253
248
|
- `control/` 是平台 gateway / control plane。
|
|
254
249
|
- 单 Agent 的 HTTP control API 语义应该留在 `@downcity/agent`。
|
|
255
|
-
- `process/` 统一放 city
|
|
250
|
+
- `process/` 统一放 city 的进程管理与 registry,不要再散落回顶层。
|
|
256
251
|
- `config/` 只放静态配置/schema/路径,不混入运行时 store 逻辑。
|
|
257
252
|
- CLI 类型、store 类型、city 自有小类型优先就近放在对应模块旁边。
|
package/bin/cli/Index.js
CHANGED
|
@@ -12,7 +12,8 @@ import { basename, dirname, join } from "path";
|
|
|
12
12
|
import { createRequire } from "module";
|
|
13
13
|
import { fileURLToPath } from "url";
|
|
14
14
|
import { Command, Option } from "commander";
|
|
15
|
-
import {
|
|
15
|
+
import { listPluginsWithoutLifecycle, registerPluginActionCommandsForCli, } from "@downcity/agent";
|
|
16
|
+
import { createBuiltinPlugins } from "@downcity/plugins";
|
|
16
17
|
import { registerPluginsCommand } from "./shared/Plugins.js";
|
|
17
18
|
import { registerManagedPluginCommandsForCli } from "./shared/ManagedPluginActionCommands.js";
|
|
18
19
|
import { registerControlPlaneCommands } from "./control-plane/ControlPlaneCommand.js";
|
|
@@ -21,6 +22,7 @@ import { registerEnvCommand } from "./shared/Env.js";
|
|
|
21
22
|
import { registerTokenCommand } from "./shared/Token.js";
|
|
22
23
|
import { registerResetCommand } from "./shared/Reset.js";
|
|
23
24
|
import { registerChatCommand } from "./shared/Chat.js";
|
|
25
|
+
import { registerTerminalCommand } from "./shared/Terminal.js";
|
|
24
26
|
import { setCliVerbosity } from "./shared/CliReporter.js";
|
|
25
27
|
const __filename = fileURLToPath(import.meta.url);
|
|
26
28
|
const __dirname = dirname(__filename);
|
|
@@ -56,6 +58,7 @@ function resolveInstalledAgentVersion() {
|
|
|
56
58
|
const installedAgentVersion = resolveInstalledAgentVersion();
|
|
57
59
|
const program = new Command();
|
|
58
60
|
const argv = process.argv.slice(2);
|
|
61
|
+
const builtinPlugins = createBuiltinPlugins();
|
|
59
62
|
program
|
|
60
63
|
.name(basename(process.argv[1] || "downcity"))
|
|
61
64
|
.description("把一个代码仓库,启动为一个拥有自主意识和执行能力的 Agent")
|
|
@@ -76,11 +79,15 @@ registerTokenCommand(program);
|
|
|
76
79
|
registerEnvCommand(program);
|
|
77
80
|
registerResetCommand(program);
|
|
78
81
|
registerChatCommand(program);
|
|
82
|
+
registerTerminalCommand(program, packageJson.version);
|
|
79
83
|
registerPluginsCommand(program);
|
|
80
84
|
// 受 agent 托管的 plugin 命令统一注册(chat / task / memory / shell / future managed plugins)
|
|
81
|
-
registerManagedPluginCommandsForCli(program);
|
|
85
|
+
registerManagedPluginCommandsForCli(program, builtinPlugins);
|
|
82
86
|
// 插件命令统一注册(skill / asr / tts / future plugins)
|
|
83
|
-
|
|
87
|
+
registerPluginActionCommandsForCli({
|
|
88
|
+
program,
|
|
89
|
+
plugins: listPluginsWithoutLifecycle(builtinPlugins),
|
|
90
|
+
});
|
|
84
91
|
program.showHelpAfterError();
|
|
85
92
|
program.showSuggestionAfterError();
|
|
86
93
|
/**
|
package/bin/cli/Index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/cli/Index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/cli/Index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,14 @@
|
|
|
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
|
import type { AgentChatCliOptions, AgentChatExecutionOutcome, AgentChatTransportOptions } from "./AgentChatTypes.js";
|
|
10
11
|
/**
|
|
11
12
|
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
12
13
|
*/
|
|
13
14
|
export declare function executeAgentChatTurn(params: {
|
|
14
|
-
|
|
15
|
+
agentId: string;
|
|
15
16
|
message: string;
|
|
16
17
|
transport?: AgentChatTransportOptions;
|
|
17
18
|
}): Promise<AgentChatExecutionOutcome>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChat.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AgentChat.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAEzB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAiT7B;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAwCrC;AAgID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC7E"}
|
|
@@ -5,18 +5,18 @@
|
|
|
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
|
import { createInterface } from "node:readline/promises";
|
|
10
11
|
import chalk from "chalk";
|
|
11
12
|
import prompts from "prompts";
|
|
13
|
+
import { RemoteAgent, } from "@downcity/agent";
|
|
12
14
|
import { emitCliBlock } from "../shared/CliReporter.js";
|
|
13
15
|
import { printResult } from "../../utils/cli/CliOutput.js";
|
|
14
|
-
import {
|
|
16
|
+
import { resolveProjectRootByAgentId, validateAgentProjectRoot, } from "../shared/PluginTargetSupport.js";
|
|
15
17
|
import { listRegisteredAgentsForCli } from "./AgentSelection.js";
|
|
16
|
-
import {
|
|
17
|
-
import { resolveDaemonEndpoint } from "../../process/daemon/Client.js";
|
|
18
|
+
import { resolveDaemonRpcEndpoint } from "../../process/daemon/Client.js";
|
|
18
19
|
import { AGENT_CHAT_DEFAULT_SESSION_ID } from "./AgentChatTypes.js";
|
|
19
|
-
const SDK_EVENTS_READY_TYPE = "sdk-events-ready";
|
|
20
20
|
function normalizeChatMessage(input) {
|
|
21
21
|
return String(input || "").trim();
|
|
22
22
|
}
|
|
@@ -34,15 +34,15 @@ function buildAgentChatFailureText(error) {
|
|
|
34
34
|
return (String(error || "").trim() ||
|
|
35
35
|
"Agent daemon returned empty error (check config with `city agent status`)");
|
|
36
36
|
}
|
|
37
|
-
async function
|
|
38
|
-
const explicit = String(
|
|
37
|
+
async function resolveChatTargetAgentId(inputId) {
|
|
38
|
+
const explicit = String(inputId || "").trim();
|
|
39
39
|
if (explicit)
|
|
40
40
|
return explicit;
|
|
41
41
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
42
42
|
emitCliBlock({
|
|
43
43
|
tone: "error",
|
|
44
|
-
title: "Agent
|
|
45
|
-
note: "Use `city agent chat --to <
|
|
44
|
+
title: "Agent id is required",
|
|
45
|
+
note: "Use `city agent chat --to <id>` or run this command in an interactive terminal.",
|
|
46
46
|
});
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
@@ -57,45 +57,45 @@ async function resolveChatTargetAgentName(inputName) {
|
|
|
57
57
|
}
|
|
58
58
|
const response = (await prompts({
|
|
59
59
|
type: "select",
|
|
60
|
-
name: "
|
|
60
|
+
name: "agentId",
|
|
61
61
|
message: "选择要聊天的 Agent",
|
|
62
62
|
choices: runningAgents.map((agent) => ({
|
|
63
|
-
title: agent.
|
|
63
|
+
title: agent.id,
|
|
64
64
|
description: agent.projectRoot,
|
|
65
|
-
value: agent.
|
|
65
|
+
value: agent.id,
|
|
66
66
|
})),
|
|
67
67
|
initial: 0,
|
|
68
68
|
}));
|
|
69
|
-
const
|
|
70
|
-
if (!
|
|
69
|
+
const agentId = String(response.agentId || "").trim();
|
|
70
|
+
if (!agentId) {
|
|
71
71
|
emitCliBlock({
|
|
72
72
|
tone: "info",
|
|
73
73
|
title: "Agent chat cancelled",
|
|
74
74
|
});
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
|
-
return
|
|
77
|
+
return agentId;
|
|
78
78
|
}
|
|
79
|
-
async function resolveAgentChatTarget(
|
|
80
|
-
const
|
|
79
|
+
async function resolveAgentChatTarget(agentIdInput) {
|
|
80
|
+
const agentId = String(agentIdInput || "").trim();
|
|
81
81
|
const sessionId = AGENT_CHAT_DEFAULT_SESSION_ID;
|
|
82
|
-
if (!
|
|
82
|
+
if (!agentId) {
|
|
83
83
|
return {
|
|
84
84
|
success: false,
|
|
85
85
|
outcome: {
|
|
86
|
-
|
|
86
|
+
agentId: "",
|
|
87
87
|
sessionId,
|
|
88
88
|
success: false,
|
|
89
|
-
error: "Missing target agent
|
|
89
|
+
error: "Missing target agent id.",
|
|
90
90
|
},
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
-
const resolved = await
|
|
93
|
+
const resolved = await resolveProjectRootByAgentId(agentId);
|
|
94
94
|
if (!resolved.projectRoot) {
|
|
95
95
|
return {
|
|
96
96
|
success: false,
|
|
97
97
|
outcome: {
|
|
98
|
-
|
|
98
|
+
agentId,
|
|
99
99
|
sessionId,
|
|
100
100
|
success: false,
|
|
101
101
|
error: resolved.error || "Failed to resolve agent project path",
|
|
@@ -107,7 +107,7 @@ async function resolveAgentChatTarget(agentNameInput) {
|
|
|
107
107
|
return {
|
|
108
108
|
success: false,
|
|
109
109
|
outcome: {
|
|
110
|
-
|
|
110
|
+
agentId,
|
|
111
111
|
projectRoot: resolved.projectRoot,
|
|
112
112
|
sessionId,
|
|
113
113
|
success: false,
|
|
@@ -118,7 +118,7 @@ async function resolveAgentChatTarget(agentNameInput) {
|
|
|
118
118
|
return {
|
|
119
119
|
success: true,
|
|
120
120
|
target: {
|
|
121
|
-
|
|
121
|
+
agentId,
|
|
122
122
|
projectRoot: resolved.projectRoot,
|
|
123
123
|
sessionId,
|
|
124
124
|
},
|
|
@@ -143,7 +143,7 @@ function printAgentChatFailure(params) {
|
|
|
143
143
|
facts: [
|
|
144
144
|
{
|
|
145
145
|
label: "agent",
|
|
146
|
-
value: params.
|
|
146
|
+
value: params.agentId,
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
label: "error",
|
|
@@ -152,53 +152,25 @@ function printAgentChatFailure(params) {
|
|
|
152
152
|
],
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
|
-
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const payload = JSON.parse(text);
|
|
161
|
-
return (String(payload.error || payload.message || "").trim() ||
|
|
162
|
-
`HTTP ${response.status}`);
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// ignore malformed json payloads
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return String(text || "").trim() || `HTTP ${response.status}`;
|
|
169
|
-
}
|
|
170
|
-
function isSdkEventsReadyFrame(value) {
|
|
171
|
-
return (typeof value === "object" &&
|
|
172
|
-
value !== null &&
|
|
173
|
-
"type" in value &&
|
|
174
|
-
String(value.type || "") === SDK_EVENTS_READY_TYPE);
|
|
175
|
-
}
|
|
176
|
-
async function postSdkPrompt(params) {
|
|
177
|
-
const response = await fetch(new URL(`/api/sdk/sessions/${encodeURIComponent(params.sessionId)}/prompt`, params.endpointBaseUrl).toString(), {
|
|
178
|
-
method: "POST",
|
|
179
|
-
headers: {
|
|
180
|
-
"Content-Type": "application/json",
|
|
181
|
-
...(params.authHeaderValue ? { Authorization: params.authHeaderValue } : {}),
|
|
182
|
-
},
|
|
183
|
-
body: JSON.stringify({
|
|
184
|
-
query: params.message,
|
|
185
|
-
}),
|
|
186
|
-
}).catch((error) => {
|
|
187
|
-
throw new Error(`Failed to call ${params.endpointBaseUrl}: ${String(error)}`);
|
|
155
|
+
function createRemoteAgent(params) {
|
|
156
|
+
const endpoint = resolveDaemonRpcEndpoint({
|
|
157
|
+
projectRoot: params.projectRoot,
|
|
158
|
+
host: params.transport?.host,
|
|
159
|
+
port: params.transport?.port,
|
|
188
160
|
});
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
161
|
+
return new RemoteAgent({
|
|
162
|
+
url: `rpc://${endpoint.host}:${endpoint.port}`,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async function getOrCreateRemoteSession(params) {
|
|
166
|
+
try {
|
|
167
|
+
return await params.remote_agent.getSession(params.session_id);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return await params.remote_agent.createSession({
|
|
171
|
+
sessionId: params.session_id,
|
|
172
|
+
});
|
|
197
173
|
}
|
|
198
|
-
return {
|
|
199
|
-
success: true,
|
|
200
|
-
turnId,
|
|
201
|
-
};
|
|
202
174
|
}
|
|
203
175
|
async function runSdkPromptTurn(params) {
|
|
204
176
|
const message = normalizeChatMessage(params.message);
|
|
@@ -210,7 +182,7 @@ async function runSdkPromptTurn(params) {
|
|
|
210
182
|
text: "",
|
|
211
183
|
};
|
|
212
184
|
}
|
|
213
|
-
const resolved = await resolveAgentChatTarget(params.
|
|
185
|
+
const resolved = await resolveAgentChatTarget(params.agentId);
|
|
214
186
|
if (!resolved.success) {
|
|
215
187
|
return {
|
|
216
188
|
success: false,
|
|
@@ -219,154 +191,66 @@ async function runSdkPromptTurn(params) {
|
|
|
219
191
|
text: "",
|
|
220
192
|
};
|
|
221
193
|
}
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
projectRoot: target.projectRoot,
|
|
226
|
-
host: params.transport?.host,
|
|
227
|
-
port: params.transport?.port,
|
|
194
|
+
const remote_agent = createRemoteAgent({
|
|
195
|
+
projectRoot: resolved.target.projectRoot,
|
|
196
|
+
transport: params.transport,
|
|
228
197
|
});
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const response = await fetch(new URL(`/api/sdk/sessions/${encodeURIComponent(target.sessionId)}/events`, endpoint.baseUrl).toString(), {
|
|
233
|
-
headers: {
|
|
234
|
-
...(authHeaderValue ? { Authorization: authHeaderValue } : {}),
|
|
235
|
-
},
|
|
236
|
-
signal: abortController.signal,
|
|
237
|
-
}).catch((error) => {
|
|
238
|
-
throw new Error(`Failed to call ${endpoint.baseUrl}: ${String(error)}`);
|
|
198
|
+
const session = await getOrCreateRemoteSession({
|
|
199
|
+
remote_agent,
|
|
200
|
+
session_id: resolved.target.sessionId,
|
|
239
201
|
});
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
emittedVisibleText: false,
|
|
245
|
-
text: "",
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
const decoder = new TextDecoder();
|
|
249
|
-
const reader = response.body.getReader();
|
|
250
|
-
let buffered = "";
|
|
251
|
-
let printedLeadingNewline = false;
|
|
252
|
-
let emittedVisibleText = false;
|
|
253
|
-
let promptTurnId = "";
|
|
254
|
-
let promptPosted = false;
|
|
255
|
-
let finalText = "";
|
|
202
|
+
let printed_leading_newline = false;
|
|
203
|
+
let emitted_visible_text = false;
|
|
204
|
+
let final_text = "";
|
|
205
|
+
let target_turn_id = "";
|
|
256
206
|
const renderEvent = (event) => {
|
|
257
|
-
if (event.type !== "text-delta" || event.turnId !==
|
|
207
|
+
if (event.type !== "text-delta" || event.turnId !== target_turn_id || !event.text) {
|
|
258
208
|
return;
|
|
209
|
+
}
|
|
259
210
|
if (params.renderText === false)
|
|
260
211
|
return;
|
|
261
|
-
if (!
|
|
212
|
+
if (!printed_leading_newline) {
|
|
262
213
|
process.stdout.write("\n");
|
|
263
|
-
|
|
214
|
+
printed_leading_newline = true;
|
|
264
215
|
}
|
|
265
216
|
process.stdout.write(event.text);
|
|
266
|
-
|
|
217
|
+
emitted_visible_text = true;
|
|
267
218
|
};
|
|
268
|
-
const
|
|
269
|
-
const value = JSON.parse(line);
|
|
270
|
-
if (isSdkEventsReadyFrame(value)) {
|
|
271
|
-
if (!promptPosted) {
|
|
272
|
-
promptPosted = true;
|
|
273
|
-
const promptResult = await postSdkPrompt({
|
|
274
|
-
endpointBaseUrl: endpoint.baseUrl,
|
|
275
|
-
sessionId: target.sessionId,
|
|
276
|
-
message,
|
|
277
|
-
authHeaderValue,
|
|
278
|
-
});
|
|
279
|
-
if (!promptResult.success) {
|
|
280
|
-
return {
|
|
281
|
-
done: true,
|
|
282
|
-
error: promptResult.error,
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
promptTurnId = promptResult.turnId;
|
|
286
|
-
}
|
|
287
|
-
return { done: false };
|
|
288
|
-
}
|
|
289
|
-
const event = value;
|
|
290
|
-
if (event.type === "error") {
|
|
291
|
-
return {
|
|
292
|
-
done: true,
|
|
293
|
-
error: event.message,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
219
|
+
const unsubscribe = session.subscribe((event) => {
|
|
296
220
|
renderEvent(event);
|
|
297
|
-
if (event.type === "turn-finish" && event.turnId ===
|
|
298
|
-
|
|
299
|
-
return {
|
|
300
|
-
done: true,
|
|
301
|
-
...(event.success ? {} : { error: event.error || "Agent turn failed" }),
|
|
302
|
-
};
|
|
221
|
+
if (event.type === "turn-finish" && event.turnId === target_turn_id) {
|
|
222
|
+
final_text = event.text;
|
|
303
223
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
224
|
+
});
|
|
225
|
+
try {
|
|
226
|
+
const turn = await session.prompt({ query: message });
|
|
227
|
+
target_turn_id = turn.id;
|
|
228
|
+
const result = await turn.finished;
|
|
229
|
+
final_text = result.text;
|
|
230
|
+
if (printed_leading_newline) {
|
|
308
231
|
process.stdout.write("\n\n");
|
|
309
232
|
}
|
|
310
233
|
return {
|
|
311
234
|
success: result.success,
|
|
312
235
|
...(result.error ? { error: result.error } : {}),
|
|
313
|
-
emittedVisibleText,
|
|
314
|
-
text:
|
|
236
|
+
emittedVisibleText: emitted_visible_text,
|
|
237
|
+
text: final_text,
|
|
315
238
|
};
|
|
316
|
-
};
|
|
317
|
-
try {
|
|
318
|
-
while (true) {
|
|
319
|
-
const { done, value } = await reader.read();
|
|
320
|
-
if (done)
|
|
321
|
-
break;
|
|
322
|
-
buffered += decoder.decode(value, { stream: true });
|
|
323
|
-
let newlineIndex = buffered.indexOf("\n");
|
|
324
|
-
while (newlineIndex >= 0) {
|
|
325
|
-
const line = buffered.slice(0, newlineIndex).trim();
|
|
326
|
-
buffered = buffered.slice(newlineIndex + 1);
|
|
327
|
-
if (line) {
|
|
328
|
-
const result = await handleLine(line);
|
|
329
|
-
if (result.done) {
|
|
330
|
-
return finishTurn({
|
|
331
|
-
success: !result.error,
|
|
332
|
-
...(result.error ? { error: result.error } : {}),
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
newlineIndex = buffered.indexOf("\n");
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
const tail = buffered.trim();
|
|
340
|
-
if (tail) {
|
|
341
|
-
const result = await handleLine(tail);
|
|
342
|
-
if (result.done) {
|
|
343
|
-
return finishTurn({
|
|
344
|
-
success: !result.error,
|
|
345
|
-
...(result.error ? { error: result.error } : {}),
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
239
|
}
|
|
350
240
|
catch (error) {
|
|
351
|
-
|
|
241
|
+
if (printed_leading_newline) {
|
|
242
|
+
process.stdout.write("\n\n");
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
352
245
|
success: false,
|
|
353
246
|
error: error instanceof Error ? error.message : String(error),
|
|
354
|
-
|
|
247
|
+
emittedVisibleText: emitted_visible_text,
|
|
248
|
+
text: final_text,
|
|
249
|
+
};
|
|
355
250
|
}
|
|
356
251
|
finally {
|
|
357
|
-
|
|
358
|
-
await reader.cancel().catch(() => undefined);
|
|
359
|
-
try {
|
|
360
|
-
reader.releaseLock();
|
|
361
|
-
}
|
|
362
|
-
catch {
|
|
363
|
-
// ignore
|
|
364
|
-
}
|
|
252
|
+
unsubscribe();
|
|
365
253
|
}
|
|
366
|
-
return finishTurn({
|
|
367
|
-
success: promptPosted && Boolean(promptTurnId),
|
|
368
|
-
...(promptPosted && promptTurnId ? {} : { error: "SDK events connection closed before prompt was accepted." }),
|
|
369
|
-
});
|
|
370
254
|
}
|
|
371
255
|
/**
|
|
372
256
|
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
@@ -376,23 +260,23 @@ export async function executeAgentChatTurn(params) {
|
|
|
376
260
|
const sessionId = AGENT_CHAT_DEFAULT_SESSION_ID;
|
|
377
261
|
if (!message) {
|
|
378
262
|
return {
|
|
379
|
-
|
|
263
|
+
agentId: String(params.agentId || "").trim(),
|
|
380
264
|
sessionId,
|
|
381
265
|
success: false,
|
|
382
266
|
error: "Chat message is required.",
|
|
383
267
|
};
|
|
384
268
|
}
|
|
385
|
-
const resolved = await resolveAgentChatTarget(params.
|
|
269
|
+
const resolved = await resolveAgentChatTarget(params.agentId);
|
|
386
270
|
if (!resolved.success)
|
|
387
271
|
return resolved.outcome;
|
|
388
272
|
const outcome = await runSdkPromptTurn({
|
|
389
|
-
|
|
273
|
+
agentId: params.agentId,
|
|
390
274
|
message,
|
|
391
275
|
transport: params.transport,
|
|
392
276
|
renderText: false,
|
|
393
277
|
});
|
|
394
278
|
return {
|
|
395
|
-
|
|
279
|
+
agentId: params.agentId,
|
|
396
280
|
...(resolved.target.projectRoot ? { projectRoot: resolved.target.projectRoot } : {}),
|
|
397
281
|
sessionId,
|
|
398
282
|
success: outcome.success,
|
|
@@ -412,12 +296,11 @@ export async function executeAgentChatTurn(params) {
|
|
|
412
296
|
async function runOneShotChat(params) {
|
|
413
297
|
if (params.options.json === true) {
|
|
414
298
|
const outcome = await executeAgentChatTurn({
|
|
415
|
-
|
|
299
|
+
agentId: params.agentId,
|
|
416
300
|
message: params.message,
|
|
417
301
|
transport: {
|
|
418
302
|
host: params.options.host,
|
|
419
303
|
port: params.options.port,
|
|
420
|
-
token: params.options.token,
|
|
421
304
|
},
|
|
422
305
|
});
|
|
423
306
|
printResult({
|
|
@@ -425,7 +308,7 @@ async function runOneShotChat(params) {
|
|
|
425
308
|
success: outcome.success,
|
|
426
309
|
title: "agent chat",
|
|
427
310
|
payload: {
|
|
428
|
-
agent: params.
|
|
311
|
+
agent: params.agentId,
|
|
429
312
|
...(outcome.projectRoot ? { projectRoot: outcome.projectRoot } : {}),
|
|
430
313
|
sessionId: outcome.sessionId,
|
|
431
314
|
...(outcome.payload?.result ? { result: outcome.payload.result } : {}),
|
|
@@ -435,17 +318,16 @@ async function runOneShotChat(params) {
|
|
|
435
318
|
return;
|
|
436
319
|
}
|
|
437
320
|
const outcome = await runSdkPromptTurn({
|
|
438
|
-
|
|
321
|
+
agentId: params.agentId,
|
|
439
322
|
message: params.message,
|
|
440
323
|
transport: {
|
|
441
324
|
host: params.options.host,
|
|
442
325
|
port: params.options.port,
|
|
443
|
-
token: params.options.token,
|
|
444
326
|
},
|
|
445
327
|
});
|
|
446
328
|
if (!outcome.success) {
|
|
447
329
|
printAgentChatFailure({
|
|
448
|
-
|
|
330
|
+
agentId: params.agentId,
|
|
449
331
|
error: outcome.error,
|
|
450
332
|
});
|
|
451
333
|
return;
|
|
@@ -457,7 +339,7 @@ async function runOneShotChat(params) {
|
|
|
457
339
|
* 启动交互式持续对话。
|
|
458
340
|
*/
|
|
459
341
|
async function runInteractiveChat(params) {
|
|
460
|
-
const prompt = `${chalk.cyan(params.
|
|
342
|
+
const prompt = `${chalk.cyan(params.agentId)} ${chalk.dim("›")} `;
|
|
461
343
|
const helpText = [
|
|
462
344
|
`${chalk.dim("/exit, /quit — 退出对话")}`,
|
|
463
345
|
`${chalk.dim("/clear — 清屏")}`,
|
|
@@ -466,7 +348,7 @@ async function runInteractiveChat(params) {
|
|
|
466
348
|
];
|
|
467
349
|
emitCliBlock({
|
|
468
350
|
tone: "info",
|
|
469
|
-
title: `Agent chat · ${params.
|
|
351
|
+
title: `Agent chat · ${params.agentId}`,
|
|
470
352
|
note: `Session: local-cli-chat-main · ${helpText[0].replace(chalk.dim(""), "").trim()}`,
|
|
471
353
|
});
|
|
472
354
|
console.log(helpText.join("\n"));
|
|
@@ -482,8 +364,6 @@ async function runInteractiveChat(params) {
|
|
|
482
364
|
line = await rl.question(prompt);
|
|
483
365
|
}
|
|
484
366
|
catch (error) {
|
|
485
|
-
// 关键点(中文):Node 24 下 Ctrl+C 会让 readline.question 以 AbortError 拒绝。
|
|
486
|
-
// 这里按正常退出处理,避免把交互式 chat 变成未捕获异常。
|
|
487
367
|
if (isReadlineAbortError(error)) {
|
|
488
368
|
console.log();
|
|
489
369
|
break;
|
|
@@ -504,17 +384,16 @@ async function runInteractiveChat(params) {
|
|
|
504
384
|
continue;
|
|
505
385
|
}
|
|
506
386
|
const outcome = await runSdkPromptTurn({
|
|
507
|
-
|
|
387
|
+
agentId: params.agentId,
|
|
508
388
|
message: text,
|
|
509
389
|
transport: {
|
|
510
390
|
host: params.options.host,
|
|
511
391
|
port: params.options.port,
|
|
512
|
-
token: params.options.token,
|
|
513
392
|
},
|
|
514
393
|
});
|
|
515
394
|
if (!outcome.success) {
|
|
516
395
|
printAgentChatFailure({
|
|
517
|
-
|
|
396
|
+
agentId: params.agentId,
|
|
518
397
|
error: outcome.error,
|
|
519
398
|
});
|
|
520
399
|
continue;
|
|
@@ -532,13 +411,13 @@ async function runInteractiveChat(params) {
|
|
|
532
411
|
* `city agent chat` 统一入口。
|
|
533
412
|
*/
|
|
534
413
|
export async function chatCommand(options) {
|
|
535
|
-
const
|
|
536
|
-
if (!
|
|
414
|
+
const agentId = await resolveChatTargetAgentId(options.to);
|
|
415
|
+
if (!agentId)
|
|
537
416
|
return;
|
|
538
417
|
const oneShotMessage = normalizeChatMessage(String(options.message || ""));
|
|
539
418
|
if (oneShotMessage) {
|
|
540
419
|
await runOneShotChat({
|
|
541
|
-
|
|
420
|
+
agentId,
|
|
542
421
|
message: oneShotMessage,
|
|
543
422
|
options,
|
|
544
423
|
});
|
|
@@ -561,7 +440,7 @@ export async function chatCommand(options) {
|
|
|
561
440
|
return;
|
|
562
441
|
}
|
|
563
442
|
await runInteractiveChat({
|
|
564
|
-
|
|
443
|
+
agentId,
|
|
565
444
|
options,
|
|
566
445
|
});
|
|
567
446
|
}
|