cli.partnerctl.description=Partner command line tool.
cli.init.description=Initialize Partner agent.
cli.run.description=Start Partner agent.
cli.run.option.background.description=Run Partner in background.
cli.shutdown.description=Shutdown Partner agent.
cli.shutdown.option.timeout.description=Seconds to wait after graceful termination before failing or forcing shutdown.
cli.shutdown.option.force.description=Forcefully kill matching Partner process if it does not exit before timeout.
cli.log.description=Show Partner logs.
cli.log.option.tail.description=Number of log lines to show before exiting or following.
cli.log.option.follow.description=Follow appended log output.
cli.log.option.level.description=Set Partner runtime log level. Available values: TRACE, DEBUG, INFO, WARN, ERROR. Default: INFO.
cli.chat.description=Start an interactive chat client.
cli.config.description=Manage Partner configuration.
cli.module.description=Manage Partner modules.

init.home.section=Initialize Partner Home
init.home.label=Partner Home
init.home.success=Partner Home initialized at {0}
init.home.duplicate.warning=Partner Home already contains files: {0}
init.home.duplicate.choice.label=Partner Home already contains files. Choose how to continue
init.home.duplicate.choice.another=Use another Partner Home
init.home.duplicate.choice.another.description=Choose a different directory
init.home.duplicate.choice.overwrite=Overwrite current Partner Home
init.home.duplicate.choice.overwrite.description=Delete existing contents and continue
init.home.duplicate.choice.exit=Cancel init
init.home.duplicate.confirmDelete=Delete all files under {0}?
init.home.notDirectory=Partner Home is not a directory: {0}
init.home.overwrite.refuseRoot=Refuse to overwrite filesystem root: {0}
init.home.overwrite.refuseUserHome=Refuse to overwrite user home directory: {0}
init.home.overwrite.refuseBroadDirectory=Refuse to overwrite suspiciously broad directory: {0}
init.install.section=Install Partner
init.install.method.label=Choose an installation method
init.install.method.buildFromSource=Build Partner from source
init.gateway.section=Configure Gateway
init.gateway.select.label=Select gateway
init.gateway.websocket.choice=WebSocket Gateway
init.gateway.warn.notFound=Could not find gateway with id {0}
init.gateway.warn.skipped=Gateway: {0} configuration skipped
init.gateway.info.skippedUseDefault=Skipped gateway configuration. Partner will use WebSocket as default gateway
init.gateway.defaultChannel.label=Set default channel
init.gateway.info.defaultChannel=The default channel will be set to {0}
init.gateway.success.configWritten=Gateway config written to {0}
init.model.section=Configure Model
init.model.provider.default.label=Choose default model provider type
init.model.provider.label=Choose model provider type
init.model.warn.noDefaultProvider=No default model provider configured. Partner may not start normally unless model.json exists or PARTNER_DEFAULT_BASE_URL, PARTNER_DEFAULT_API_KEY, and PARTNER_DEFAULT_MODEL are provided at runtime.
init.model.confirm.skipConfiguration=Skip model configuration?
init.model.confirm.addAdditionalProvider=Add additional model provider?
init.model.success.configWritten=Model config written to {0}
init.finish.section=Finish
init.finish.confirm.startNow=Start Partner now?
init.finish.info.completed=Initialization completed.
init.finish.info.starting=Starting Partner...

configure.gateway.websocket.section=Configure Gateway: WebSocket Gateway
configure.gateway.websocket.port.label=port
configure.gateway.websocket.port.error.int=WebSocket port only accepts int value
configure.gateway.websocket.port.error.range=WebSocket port should be between 1 and 65565
configure.gateway.websocket.heartbeatInterval.label=heartbeat interval
configure.gateway.websocket.heartbeatInterval.error.long=Heartbeat interval only accepts long value
configure.gateway.websocket.hostname.label=Listening hostname
configure.gateway.websocket.hostname.error.required=Hostname is required
configure.gateway.websocket.hostname.error.whitespace=Hostname must not contain whitespace.
configure.gateway.websocket.hostname.error.protocol=Do not include protocol. Use hostname only, for example: 127.0.0.1
configure.gateway.websocket.hostname.error.path=Do not include path. Use hostname only.
configure.gateway.websocket.hostname.error.port=Do not include port here. Port is configured separately.
configure.gateway.external.section=Configure Gateway: {0}
configure.gateway.external.details.title=Gateway module details
configure.gateway.external.details.description=Description
configure.gateway.external.details.source=Source
configure.gateway.external.details.buildCommand=Build command
configure.gateway.external.details.artifact=Artifact
configure.gateway.external.details.installTarget=Install target
configure.gateway.external.details.configTarget=Config target
configure.gateway.external.details.noConfig=No config
configure.gateway.external.confirmContinue=Continue installation?
configure.field.error.int={0} only accepts int value
configure.field.error.number={0} only accepts number value
configure.field.error.boolean={0} only accepts true or false
configure.field.error.rawJson={0} only accepts valid JSON
configure.model.openAiCompatible.providerName.label=Provider name
configure.model.openAiCompatible.providerName.error.duplicateDefault=Default provider cannot be duplicate
configure.model.openAiCompatible.baseUrl.label=Base url
configure.model.openAiCompatible.apiKey.label=Apikey
configure.model.openAiCompatible.defaultModel.label=Default model
configure.model.openAiCompatible.baseUrl.error.required=Base url is required
configure.model.openAiCompatible.baseUrl.error.validUrl=Base url must be a valid URL
configure.model.openAiCompatible.baseUrl.error.scheme=Base url must start with http:// or https://
configure.model.openAiCompatible.baseUrl.error.host=Base url must include a valid host
configure.model.openAiCompatible.baseUrl.error.userInfo=Base url must not include user info
configure.model.openAiCompatible.baseUrl.error.fragment=Base url must not include fragment

sourceBuild.info.cloning=Cloning {0} source from {1}
sourceBuild.error.cloneFailed=Failed to clone {0} source from {1}
sourceBuild.info.building=Building {0}
sourceBuild.error.buildFailed=Failed to build {0}.
sourceBuild.error.artifactNotFound=Could not find built {0} artifact in {1}
sourceBuild.success.installed={0} installed at {1}
sourceBuild.tool.missing.header=Missing required build tools:
sourceBuild.tool.missing.item={0}:
sourceBuild.tool.missing.reason=  {0}
sourceBuild.tool.missing.footer=Install the missing tools, then rerun:
sourceBuild.tool.java.reason=Required to run Maven. Command failed: java --version
sourceBuild.tool.javac.reason=Required to compile Partner from source. Install a JDK, not just a JRE. Command failed: javac --version
sourceBuild.tool.git.reason=Required to clone Partner source. Command failed: git --version
sourceBuild.tool.mvn.reason=Required to build Partner from source. Command failed: mvn --version

control.run.error.jarNotFound=Partner runtime jar does not exist: {0}. Run partnerctl init first to initialize Partner.
control.run.error.exited=Partner exited with code {0}
control.run.error.alreadyRunning=Partner is already running. pid={0}
control.run.success.backgroundStarted=Partner started in background. pid={0}
control.run.info.logFile=Log file: {0}
control.run.log.foregroundStarting=Starting Partner in foreground. pid={0}, jar={1}
control.run.log.backgroundStarting=Starting Partner in background. pid={0}, jar={1}
control.run.log.exited=Partner process exited with code {0}
control.log.info.notFound=Partner log file does not exist: {0}
control.log.info.waiting=Waiting for Partner log file: {0}
control.shutdown.info.notRunning=No running Partner process found for {0}
control.shutdown.info.stopping=Stopping Partner process pid={0}
control.shutdown.success.stopped=Partner process pid={0} stopped
control.shutdown.warn.force=Force killing Partner process pid={0}
control.shutdown.error.notStopped=Partner process pid={0} did not stop
control.shutdown.error.notStoppedUseForce=Partner process pid={0} did not stop. Use --force to kill it forcibly.
control.shutdown.error.failed=Failed to stop one or more Partner processes
