@companyhelm/cli 0.0.11 → 0.1.2
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 +27 -31
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +6 -55
- package/dist/commands/dependencies.d.ts +9 -0
- package/dist/commands/dependencies.js +82 -0
- package/dist/commands/down.d.ts +3 -0
- package/dist/commands/down.js +5 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.js +9 -0
- package/dist/commands/register-commands.d.ts +3 -0
- package/dist/commands/register-commands.js +15 -14
- package/dist/commands/reset.d.ts +3 -0
- package/dist/commands/reset.js +12 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.js +3 -30
- package/dist/commands/up.d.ts +3 -0
- package/dist/commands/up.js +5 -0
- package/dist/core/bootstrap/DeploymentBootstrapper.d.ts +9 -0
- package/dist/core/bootstrap/DeploymentBootstrapper.js +101 -0
- package/dist/core/bootstrap/SeedSqlRenderer.d.ts +12 -0
- package/dist/core/bootstrap/SeedSqlRenderer.js +26 -0
- package/dist/core/docker/ComposeTemplateRenderer.d.ts +14 -0
- package/dist/core/docker/ComposeTemplateRenderer.js +24 -0
- package/dist/core/docker/DockerStackManager.d.ts +14 -0
- package/dist/core/docker/DockerStackManager.js +102 -0
- package/dist/core/logs/LogsService.d.ts +5 -0
- package/dist/core/logs/LogsService.js +13 -0
- package/dist/core/process/CommandRunner.d.ts +4 -0
- package/dist/core/process/CommandRunner.js +43 -0
- package/dist/core/runner/RunnerSupervisor.d.ts +17 -0
- package/dist/core/runner/RunnerSupervisor.js +45 -0
- package/dist/core/runtime/ImageCatalog.d.ts +8 -0
- package/dist/core/runtime/ImageCatalog.js +9 -0
- package/dist/core/runtime/PortAllocator.d.ts +9 -0
- package/dist/core/runtime/PortAllocator.js +20 -0
- package/dist/core/runtime/RuntimePaths.d.ts +12 -0
- package/dist/core/runtime/RuntimePaths.js +31 -0
- package/dist/core/runtime/RuntimeState.d.ts +24 -0
- package/dist/core/runtime/RuntimeState.js +1 -0
- package/dist/core/runtime/RuntimeStateStore.d.ts +9 -0
- package/dist/core/runtime/RuntimeStateStore.js +52 -0
- package/dist/core/runtime/Secrets.d.ts +10 -0
- package/dist/core/runtime/Secrets.js +26 -0
- package/dist/core/status/StatusService.d.ts +12 -0
- package/dist/core/status/StatusService.js +18 -0
- package/dist/core/ui/TerminalRenderer.d.ts +7 -0
- package/dist/core/ui/TerminalRenderer.js +23 -0
- package/dist/templates/docker-compose.yaml.tpl +48 -0
- package/dist/templates/seed.sql.tpl +57 -0
- package/package.json +16 -29
- package/src/templates/docker-compose.yaml.tpl +48 -0
- package/src/templates/seed.sql.tpl +57 -0
- package/LICENSE +0 -21
- package/RUNTIME_IMAGE_VERSION +0 -1
- package/dist/commands/global-options.js +0 -20
- package/dist/commands/root.js +0 -2501
- package/dist/commands/runner/common.js +0 -18
- package/dist/commands/runner/register-runner-commands.js +0 -12
- package/dist/commands/runner/start.js +0 -30
- package/dist/commands/runner/stop.js +0 -55
- package/dist/commands/sdk/codex/auth.js +0 -200
- package/dist/commands/sdk/codex/register-codex-sdk-commands.js +0 -12
- package/dist/commands/sdk/codex/use-dedicated-auth.js +0 -18
- package/dist/commands/sdk/codex/use-host-auth.js +0 -19
- package/dist/commands/sdk/list.js +0 -76
- package/dist/commands/sdk/refresh-models.js +0 -25
- package/dist/commands/sdk/register-sdk-commands.js +0 -14
- package/dist/commands/shell.js +0 -90
- package/dist/commands/startup.js +0 -137
- package/dist/commands/thread/docker.js +0 -77
- package/dist/commands/thread/list.js +0 -37
- package/dist/commands/thread/register-thread-commands.js +0 -12
- package/dist/config.js +0 -105
- package/dist/generated/codex-app-server/AbsolutePathBuf.js +0 -3
- package/dist/generated/codex-app-server/AddConversationListenerParams.js +0 -3
- package/dist/generated/codex-app-server/AddConversationSubscriptionResponse.js +0 -3
- package/dist/generated/codex-app-server/AgentMessageContent.js +0 -3
- package/dist/generated/codex-app-server/AgentMessageContentDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentMessageDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentMessageEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentMessageItem.js +0 -3
- package/dist/generated/codex-app-server/AgentReasoningDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentReasoningEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentReasoningRawContentDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentReasoningRawContentEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentReasoningSectionBreakEvent.js +0 -3
- package/dist/generated/codex-app-server/AgentStatus.js +0 -3
- package/dist/generated/codex-app-server/ApplyPatchApprovalParams.js +0 -3
- package/dist/generated/codex-app-server/ApplyPatchApprovalRequestEvent.js +0 -3
- package/dist/generated/codex-app-server/ApplyPatchApprovalResponse.js +0 -3
- package/dist/generated/codex-app-server/ArchiveConversationParams.js +0 -3
- package/dist/generated/codex-app-server/ArchiveConversationResponse.js +0 -3
- package/dist/generated/codex-app-server/AskForApproval.js +0 -3
- package/dist/generated/codex-app-server/AuthMode.js +0 -3
- package/dist/generated/codex-app-server/AuthStatusChangeNotification.js +0 -3
- package/dist/generated/codex-app-server/BackgroundEventEvent.js +0 -3
- package/dist/generated/codex-app-server/ByteRange.js +0 -3
- package/dist/generated/codex-app-server/CallToolResult.js +0 -3
- package/dist/generated/codex-app-server/CancelLoginChatGptParams.js +0 -3
- package/dist/generated/codex-app-server/CancelLoginChatGptResponse.js +0 -3
- package/dist/generated/codex-app-server/ClientInfo.js +0 -3
- package/dist/generated/codex-app-server/ClientNotification.js +0 -3
- package/dist/generated/codex-app-server/ClientRequest.js +0 -3
- package/dist/generated/codex-app-server/CodexErrorInfo.js +0 -3
- package/dist/generated/codex-app-server/CollabAgentInteractionBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabAgentInteractionEndEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabAgentSpawnBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabAgentSpawnEndEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabCloseBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabCloseEndEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabResumeBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabResumeEndEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabWaitingBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/CollabWaitingEndEvent.js +0 -3
- package/dist/generated/codex-app-server/CollaborationMode.js +0 -3
- package/dist/generated/codex-app-server/CollaborationModeMask.js +0 -3
- package/dist/generated/codex-app-server/ContentItem.js +0 -3
- package/dist/generated/codex-app-server/ContextCompactedEvent.js +0 -3
- package/dist/generated/codex-app-server/ContextCompactionItem.js +0 -3
- package/dist/generated/codex-app-server/ConversationGitInfo.js +0 -3
- package/dist/generated/codex-app-server/ConversationSummary.js +0 -3
- package/dist/generated/codex-app-server/CreditsSnapshot.js +0 -3
- package/dist/generated/codex-app-server/CustomPrompt.js +0 -3
- package/dist/generated/codex-app-server/DeprecationNoticeEvent.js +0 -3
- package/dist/generated/codex-app-server/DynamicToolCallRequest.js +0 -3
- package/dist/generated/codex-app-server/ElicitationRequestEvent.js +0 -3
- package/dist/generated/codex-app-server/ErrorEvent.js +0 -3
- package/dist/generated/codex-app-server/EventMsg.js +0 -3
- package/dist/generated/codex-app-server/ExecApprovalRequestEvent.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandApprovalParams.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandApprovalResponse.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandEndEvent.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandOutputDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandSource.js +0 -3
- package/dist/generated/codex-app-server/ExecCommandStatus.js +0 -3
- package/dist/generated/codex-app-server/ExecOneOffCommandParams.js +0 -3
- package/dist/generated/codex-app-server/ExecOneOffCommandResponse.js +0 -3
- package/dist/generated/codex-app-server/ExecOutputStream.js +0 -3
- package/dist/generated/codex-app-server/ExecPolicyAmendment.js +0 -3
- package/dist/generated/codex-app-server/ExitedReviewModeEvent.js +0 -3
- package/dist/generated/codex-app-server/FileChange.js +0 -3
- package/dist/generated/codex-app-server/ForcedLoginMethod.js +0 -3
- package/dist/generated/codex-app-server/ForkConversationParams.js +0 -3
- package/dist/generated/codex-app-server/ForkConversationResponse.js +0 -3
- package/dist/generated/codex-app-server/FunctionCallOutputBody.js +0 -3
- package/dist/generated/codex-app-server/FunctionCallOutputContentItem.js +0 -3
- package/dist/generated/codex-app-server/FunctionCallOutputPayload.js +0 -3
- package/dist/generated/codex-app-server/FuzzyFileSearchParams.js +0 -3
- package/dist/generated/codex-app-server/FuzzyFileSearchResponse.js +0 -3
- package/dist/generated/codex-app-server/FuzzyFileSearchResult.js +0 -3
- package/dist/generated/codex-app-server/FuzzyFileSearchSessionCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/FuzzyFileSearchSessionUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/GetAuthStatusParams.js +0 -3
- package/dist/generated/codex-app-server/GetAuthStatusResponse.js +0 -3
- package/dist/generated/codex-app-server/GetConversationSummaryParams.js +0 -3
- package/dist/generated/codex-app-server/GetConversationSummaryResponse.js +0 -3
- package/dist/generated/codex-app-server/GetHistoryEntryResponseEvent.js +0 -3
- package/dist/generated/codex-app-server/GetUserAgentResponse.js +0 -3
- package/dist/generated/codex-app-server/GetUserSavedConfigResponse.js +0 -3
- package/dist/generated/codex-app-server/GhostCommit.js +0 -3
- package/dist/generated/codex-app-server/GitDiffToRemoteParams.js +0 -3
- package/dist/generated/codex-app-server/GitDiffToRemoteResponse.js +0 -3
- package/dist/generated/codex-app-server/GitSha.js +0 -3
- package/dist/generated/codex-app-server/HistoryEntry.js +0 -3
- package/dist/generated/codex-app-server/InitializeCapabilities.js +0 -3
- package/dist/generated/codex-app-server/InitializeParams.js +0 -3
- package/dist/generated/codex-app-server/InitializeResponse.js +0 -3
- package/dist/generated/codex-app-server/InputItem.js +0 -3
- package/dist/generated/codex-app-server/InputModality.js +0 -3
- package/dist/generated/codex-app-server/InterruptConversationParams.js +0 -3
- package/dist/generated/codex-app-server/InterruptConversationResponse.js +0 -3
- package/dist/generated/codex-app-server/ItemCompletedEvent.js +0 -3
- package/dist/generated/codex-app-server/ItemStartedEvent.js +0 -3
- package/dist/generated/codex-app-server/ListConversationsParams.js +0 -3
- package/dist/generated/codex-app-server/ListConversationsResponse.js +0 -3
- package/dist/generated/codex-app-server/ListCustomPromptsResponseEvent.js +0 -3
- package/dist/generated/codex-app-server/ListRemoteSkillsResponseEvent.js +0 -3
- package/dist/generated/codex-app-server/ListSkillsResponseEvent.js +0 -3
- package/dist/generated/codex-app-server/LocalShellAction.js +0 -3
- package/dist/generated/codex-app-server/LocalShellExecAction.js +0 -3
- package/dist/generated/codex-app-server/LocalShellStatus.js +0 -3
- package/dist/generated/codex-app-server/LoginApiKeyParams.js +0 -3
- package/dist/generated/codex-app-server/LoginApiKeyResponse.js +0 -3
- package/dist/generated/codex-app-server/LoginChatGptCompleteNotification.js +0 -3
- package/dist/generated/codex-app-server/LoginChatGptResponse.js +0 -3
- package/dist/generated/codex-app-server/LogoutChatGptResponse.js +0 -3
- package/dist/generated/codex-app-server/McpAuthStatus.js +0 -3
- package/dist/generated/codex-app-server/McpInvocation.js +0 -3
- package/dist/generated/codex-app-server/McpListToolsResponseEvent.js +0 -3
- package/dist/generated/codex-app-server/McpStartupCompleteEvent.js +0 -3
- package/dist/generated/codex-app-server/McpStartupFailure.js +0 -3
- package/dist/generated/codex-app-server/McpStartupStatus.js +0 -3
- package/dist/generated/codex-app-server/McpStartupUpdateEvent.js +0 -3
- package/dist/generated/codex-app-server/McpToolCallBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/McpToolCallEndEvent.js +0 -3
- package/dist/generated/codex-app-server/MessagePhase.js +0 -3
- package/dist/generated/codex-app-server/ModeKind.js +0 -3
- package/dist/generated/codex-app-server/ModelRerouteEvent.js +0 -3
- package/dist/generated/codex-app-server/ModelRerouteReason.js +0 -3
- package/dist/generated/codex-app-server/NetworkAccess.js +0 -3
- package/dist/generated/codex-app-server/NetworkApprovalContext.js +0 -3
- package/dist/generated/codex-app-server/NetworkApprovalProtocol.js +0 -3
- package/dist/generated/codex-app-server/NewConversationParams.js +0 -3
- package/dist/generated/codex-app-server/NewConversationResponse.js +0 -3
- package/dist/generated/codex-app-server/ParsedCommand.js +0 -3
- package/dist/generated/codex-app-server/PatchApplyBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/PatchApplyEndEvent.js +0 -3
- package/dist/generated/codex-app-server/PatchApplyStatus.js +0 -3
- package/dist/generated/codex-app-server/Personality.js +0 -3
- package/dist/generated/codex-app-server/PlanDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/PlanItem.js +0 -3
- package/dist/generated/codex-app-server/PlanItemArg.js +0 -3
- package/dist/generated/codex-app-server/PlanType.js +0 -3
- package/dist/generated/codex-app-server/Profile.js +0 -3
- package/dist/generated/codex-app-server/RateLimitSnapshot.js +0 -3
- package/dist/generated/codex-app-server/RateLimitWindow.js +0 -3
- package/dist/generated/codex-app-server/RawResponseItemEvent.js +0 -3
- package/dist/generated/codex-app-server/ReadOnlyAccess.js +0 -3
- package/dist/generated/codex-app-server/ReasoningContentDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/ReasoningEffort.js +0 -3
- package/dist/generated/codex-app-server/ReasoningItem.js +0 -3
- package/dist/generated/codex-app-server/ReasoningItemContent.js +0 -3
- package/dist/generated/codex-app-server/ReasoningItemReasoningSummary.js +0 -3
- package/dist/generated/codex-app-server/ReasoningRawContentDeltaEvent.js +0 -3
- package/dist/generated/codex-app-server/ReasoningSummary.js +0 -3
- package/dist/generated/codex-app-server/RemoteSkillDownloadedEvent.js +0 -3
- package/dist/generated/codex-app-server/RemoteSkillSummary.js +0 -3
- package/dist/generated/codex-app-server/RemoveConversationListenerParams.js +0 -3
- package/dist/generated/codex-app-server/RemoveConversationSubscriptionResponse.js +0 -3
- package/dist/generated/codex-app-server/RequestId.js +0 -3
- package/dist/generated/codex-app-server/RequestUserInputEvent.js +0 -3
- package/dist/generated/codex-app-server/RequestUserInputQuestion.js +0 -3
- package/dist/generated/codex-app-server/RequestUserInputQuestionOption.js +0 -3
- package/dist/generated/codex-app-server/Resource.js +0 -3
- package/dist/generated/codex-app-server/ResourceTemplate.js +0 -3
- package/dist/generated/codex-app-server/ResponseItem.js +0 -3
- package/dist/generated/codex-app-server/ResumeConversationParams.js +0 -3
- package/dist/generated/codex-app-server/ResumeConversationResponse.js +0 -3
- package/dist/generated/codex-app-server/ReviewCodeLocation.js +0 -3
- package/dist/generated/codex-app-server/ReviewDecision.js +0 -3
- package/dist/generated/codex-app-server/ReviewFinding.js +0 -3
- package/dist/generated/codex-app-server/ReviewLineRange.js +0 -3
- package/dist/generated/codex-app-server/ReviewOutputEvent.js +0 -3
- package/dist/generated/codex-app-server/ReviewRequest.js +0 -3
- package/dist/generated/codex-app-server/ReviewTarget.js +0 -3
- package/dist/generated/codex-app-server/SandboxMode.js +0 -3
- package/dist/generated/codex-app-server/SandboxPolicy.js +0 -3
- package/dist/generated/codex-app-server/SandboxSettings.js +0 -3
- package/dist/generated/codex-app-server/SendUserMessageParams.js +0 -3
- package/dist/generated/codex-app-server/SendUserMessageResponse.js +0 -3
- package/dist/generated/codex-app-server/SendUserTurnParams.js +0 -3
- package/dist/generated/codex-app-server/SendUserTurnResponse.js +0 -3
- package/dist/generated/codex-app-server/ServerNotification.js +0 -3
- package/dist/generated/codex-app-server/ServerRequest.js +0 -3
- package/dist/generated/codex-app-server/SessionConfiguredEvent.js +0 -3
- package/dist/generated/codex-app-server/SessionConfiguredNotification.js +0 -3
- package/dist/generated/codex-app-server/SessionNetworkProxyRuntime.js +0 -3
- package/dist/generated/codex-app-server/SessionSource.js +0 -3
- package/dist/generated/codex-app-server/SetDefaultModelParams.js +0 -3
- package/dist/generated/codex-app-server/SetDefaultModelResponse.js +0 -3
- package/dist/generated/codex-app-server/Settings.js +0 -3
- package/dist/generated/codex-app-server/SkillDependencies.js +0 -3
- package/dist/generated/codex-app-server/SkillErrorInfo.js +0 -3
- package/dist/generated/codex-app-server/SkillInterface.js +0 -3
- package/dist/generated/codex-app-server/SkillMetadata.js +0 -3
- package/dist/generated/codex-app-server/SkillScope.js +0 -3
- package/dist/generated/codex-app-server/SkillToolDependency.js +0 -3
- package/dist/generated/codex-app-server/SkillsListEntry.js +0 -3
- package/dist/generated/codex-app-server/StepStatus.js +0 -3
- package/dist/generated/codex-app-server/StreamErrorEvent.js +0 -3
- package/dist/generated/codex-app-server/SubAgentSource.js +0 -3
- package/dist/generated/codex-app-server/TerminalInteractionEvent.js +0 -3
- package/dist/generated/codex-app-server/TextElement.js +0 -3
- package/dist/generated/codex-app-server/ThreadId.js +0 -3
- package/dist/generated/codex-app-server/ThreadNameUpdatedEvent.js +0 -3
- package/dist/generated/codex-app-server/ThreadRolledBackEvent.js +0 -3
- package/dist/generated/codex-app-server/TokenCountEvent.js +0 -3
- package/dist/generated/codex-app-server/TokenUsage.js +0 -3
- package/dist/generated/codex-app-server/TokenUsageInfo.js +0 -3
- package/dist/generated/codex-app-server/Tool.js +0 -3
- package/dist/generated/codex-app-server/Tools.js +0 -3
- package/dist/generated/codex-app-server/TurnAbortReason.js +0 -3
- package/dist/generated/codex-app-server/TurnAbortedEvent.js +0 -3
- package/dist/generated/codex-app-server/TurnCompleteEvent.js +0 -3
- package/dist/generated/codex-app-server/TurnDiffEvent.js +0 -3
- package/dist/generated/codex-app-server/TurnItem.js +0 -3
- package/dist/generated/codex-app-server/TurnStartedEvent.js +0 -3
- package/dist/generated/codex-app-server/UndoCompletedEvent.js +0 -3
- package/dist/generated/codex-app-server/UndoStartedEvent.js +0 -3
- package/dist/generated/codex-app-server/UpdatePlanArgs.js +0 -3
- package/dist/generated/codex-app-server/UserInfoResponse.js +0 -3
- package/dist/generated/codex-app-server/UserInput.js +0 -3
- package/dist/generated/codex-app-server/UserMessageEvent.js +0 -3
- package/dist/generated/codex-app-server/UserMessageItem.js +0 -3
- package/dist/generated/codex-app-server/UserSavedConfig.js +0 -3
- package/dist/generated/codex-app-server/Verbosity.js +0 -3
- package/dist/generated/codex-app-server/ViewImageToolCallEvent.js +0 -3
- package/dist/generated/codex-app-server/WarningEvent.js +0 -3
- package/dist/generated/codex-app-server/WebSearchAction.js +0 -3
- package/dist/generated/codex-app-server/WebSearchBeginEvent.js +0 -3
- package/dist/generated/codex-app-server/WebSearchEndEvent.js +0 -3
- package/dist/generated/codex-app-server/WebSearchItem.js +0 -3
- package/dist/generated/codex-app-server/WebSearchMode.js +0 -3
- package/dist/generated/codex-app-server/index.js +0 -38
- package/dist/generated/codex-app-server/serde_json/JsonValue.js +0 -3
- package/dist/generated/codex-app-server/v2/Account.js +0 -3
- package/dist/generated/codex-app-server/v2/AccountLoginCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/AccountRateLimitsUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/AccountUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/AgentMessageDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/AnalyticsConfig.js +0 -3
- package/dist/generated/codex-app-server/v2/AppBranding.js +0 -3
- package/dist/generated/codex-app-server/v2/AppDisabledReason.js +0 -3
- package/dist/generated/codex-app-server/v2/AppInfo.js +0 -3
- package/dist/generated/codex-app-server/v2/AppListUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/AppMetadata.js +0 -3
- package/dist/generated/codex-app-server/v2/AppReview.js +0 -3
- package/dist/generated/codex-app-server/v2/AppScreenshot.js +0 -3
- package/dist/generated/codex-app-server/v2/AppsConfig.js +0 -3
- package/dist/generated/codex-app-server/v2/AppsListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/AppsListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/AskForApproval.js +0 -3
- package/dist/generated/codex-app-server/v2/ByteRange.js +0 -3
- package/dist/generated/codex-app-server/v2/CancelLoginAccountParams.js +0 -3
- package/dist/generated/codex-app-server/v2/CancelLoginAccountResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/CancelLoginAccountStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/ChatgptAuthTokensRefreshParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ChatgptAuthTokensRefreshReason.js +0 -3
- package/dist/generated/codex-app-server/v2/ChatgptAuthTokensRefreshResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/CodexErrorInfo.js +0 -3
- package/dist/generated/codex-app-server/v2/CollabAgentState.js +0 -3
- package/dist/generated/codex-app-server/v2/CollabAgentStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/CollabAgentTool.js +0 -3
- package/dist/generated/codex-app-server/v2/CollabAgentToolCallStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandAction.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecParams.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecutionApprovalDecision.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecutionOutputDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecutionRequestApprovalParams.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecutionRequestApprovalResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/CommandExecutionStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/Config.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigBatchWriteParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigEdit.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigLayer.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigLayerMetadata.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigLayerSource.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigReadParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigReadResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigRequirements.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigRequirementsReadResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigValueWriteParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigWarningNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ConfigWriteResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ContextCompactedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/CreditsSnapshot.js +0 -3
- package/dist/generated/codex-app-server/v2/DeprecationNoticeNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/DynamicToolCallOutputContentItem.js +0 -3
- package/dist/generated/codex-app-server/v2/DynamicToolCallParams.js +0 -3
- package/dist/generated/codex-app-server/v2/DynamicToolCallResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/DynamicToolSpec.js +0 -3
- package/dist/generated/codex-app-server/v2/ErrorNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ExecPolicyAmendment.js +0 -3
- package/dist/generated/codex-app-server/v2/ExperimentalFeature.js +0 -3
- package/dist/generated/codex-app-server/v2/ExperimentalFeatureListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ExperimentalFeatureListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ExperimentalFeatureStage.js +0 -3
- package/dist/generated/codex-app-server/v2/FeedbackUploadParams.js +0 -3
- package/dist/generated/codex-app-server/v2/FeedbackUploadResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/FileChangeApprovalDecision.js +0 -3
- package/dist/generated/codex-app-server/v2/FileChangeOutputDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/FileChangeRequestApprovalParams.js +0 -3
- package/dist/generated/codex-app-server/v2/FileChangeRequestApprovalResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/FileUpdateChange.js +0 -3
- package/dist/generated/codex-app-server/v2/GetAccountParams.js +0 -3
- package/dist/generated/codex-app-server/v2/GetAccountRateLimitsResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/GetAccountResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/GitInfo.js +0 -3
- package/dist/generated/codex-app-server/v2/HazelnutScope.js +0 -3
- package/dist/generated/codex-app-server/v2/ItemCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ItemStartedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ListMcpServerStatusParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ListMcpServerStatusResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/LoginAccountParams.js +0 -3
- package/dist/generated/codex-app-server/v2/LoginAccountResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/LogoutAccountResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/McpAuthStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/McpServerOauthLoginCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/McpServerOauthLoginParams.js +0 -3
- package/dist/generated/codex-app-server/v2/McpServerOauthLoginResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/McpServerRefreshResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/McpServerStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/McpToolCallError.js +0 -3
- package/dist/generated/codex-app-server/v2/McpToolCallProgressNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/McpToolCallResult.js +0 -3
- package/dist/generated/codex-app-server/v2/McpToolCallStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/MergeStrategy.js +0 -3
- package/dist/generated/codex-app-server/v2/Model.js +0 -3
- package/dist/generated/codex-app-server/v2/ModelListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ModelListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ModelRerouteReason.js +0 -3
- package/dist/generated/codex-app-server/v2/ModelReroutedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/NetworkAccess.js +0 -3
- package/dist/generated/codex-app-server/v2/NetworkRequirements.js +0 -3
- package/dist/generated/codex-app-server/v2/OverriddenMetadata.js +0 -3
- package/dist/generated/codex-app-server/v2/PatchApplyStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/PatchChangeKind.js +0 -3
- package/dist/generated/codex-app-server/v2/PlanDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ProductSurface.js +0 -3
- package/dist/generated/codex-app-server/v2/ProfileV2.js +0 -3
- package/dist/generated/codex-app-server/v2/RateLimitSnapshot.js +0 -3
- package/dist/generated/codex-app-server/v2/RateLimitWindow.js +0 -3
- package/dist/generated/codex-app-server/v2/RawResponseItemCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ReadOnlyAccess.js +0 -3
- package/dist/generated/codex-app-server/v2/ReasoningEffortOption.js +0 -3
- package/dist/generated/codex-app-server/v2/ReasoningSummaryPartAddedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ReasoningSummaryTextDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ReasoningTextDeltaNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/RemoteSkillSummary.js +0 -3
- package/dist/generated/codex-app-server/v2/ResidencyRequirement.js +0 -3
- package/dist/generated/codex-app-server/v2/ReviewDelivery.js +0 -3
- package/dist/generated/codex-app-server/v2/ReviewStartParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ReviewStartResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ReviewTarget.js +0 -3
- package/dist/generated/codex-app-server/v2/SandboxMode.js +0 -3
- package/dist/generated/codex-app-server/v2/SandboxPolicy.js +0 -3
- package/dist/generated/codex-app-server/v2/SandboxWorkspaceWrite.js +0 -3
- package/dist/generated/codex-app-server/v2/SessionSource.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillDependencies.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillErrorInfo.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillInterface.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillMetadata.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillScope.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillToolDependency.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsConfigWriteParams.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsConfigWriteResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsListEntry.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsListExtraRootsForCwd.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsRemoteReadParams.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsRemoteReadResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsRemoteWriteParams.js +0 -3
- package/dist/generated/codex-app-server/v2/SkillsRemoteWriteResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/TerminalInteractionNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TextElement.js +0 -3
- package/dist/generated/codex-app-server/v2/TextPosition.js +0 -3
- package/dist/generated/codex-app-server/v2/TextRange.js +0 -3
- package/dist/generated/codex-app-server/v2/Thread.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadArchiveParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadArchiveResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadArchivedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadCompactStartParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadCompactStartResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadForkParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadForkResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadItem.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadLoadedListParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadLoadedListResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadNameUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadReadParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadReadResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadResumeParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadResumeResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadRollbackParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadRollbackResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadSetNameParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadSetNameResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadSortKey.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadSourceKind.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadStartParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadStartResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadStartedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadTokenUsage.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadTokenUsageUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadUnarchiveParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadUnarchiveResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ThreadUnarchivedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TokenUsageBreakdown.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolRequestUserInputAnswer.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolRequestUserInputOption.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolRequestUserInputParams.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolRequestUserInputQuestion.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolRequestUserInputResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/ToolsV2.js +0 -3
- package/dist/generated/codex-app-server/v2/Turn.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnCompletedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnDiffUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnError.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnInterruptParams.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnInterruptResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnPlanStep.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnPlanStepStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnPlanUpdatedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnStartParams.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnStartResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnStartedNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnSteerParams.js +0 -3
- package/dist/generated/codex-app-server/v2/TurnSteerResponse.js +0 -3
- package/dist/generated/codex-app-server/v2/UserInput.js +0 -3
- package/dist/generated/codex-app-server/v2/WebSearchAction.js +0 -3
- package/dist/generated/codex-app-server/v2/WindowsWorldWritableWarningNotification.js +0 -3
- package/dist/generated/codex-app-server/v2/WriteStatus.js +0 -3
- package/dist/generated/codex-app-server/v2/index.js +0 -3
- package/dist/service/app_server.js +0 -441
- package/dist/service/buffered_client_message_sender.js +0 -89
- package/dist/service/companyhelm_api_client.js +0 -337
- package/dist/service/docker/app_server_container.js +0 -319
- package/dist/service/docker/dind.js +0 -114
- package/dist/service/docker/runtime_app_server_exec.js +0 -97
- package/dist/service/host.js +0 -15
- package/dist/service/runtime_bashrc.js +0 -57
- package/dist/service/runtime_shell.js +0 -23
- package/dist/service/sdk/refresh_models.js +0 -91
- package/dist/service/thread_lifecycle.js +0 -676
- package/dist/service/thread_runtime.js +0 -15
- package/dist/service/thread_turn_state.js +0 -46
- package/dist/service/thread_user_message_request_store.js +0 -136
- package/dist/service/workspace_agents.js +0 -82
- package/dist/state/daemon_state.js +0 -83
- package/dist/state/db.js +0 -63
- package/dist/state/schema.js +0 -59
- package/dist/templates/app_server_bootstrap.sh.j2 +0 -52
- package/dist/templates/runtime_agents.md.j2 +0 -50
- package/dist/templates/runtime_bashrc.j2 +0 -19
- package/dist/utils/async_queue.js +0 -102
- package/dist/utils/daemon.js +0 -15
- package/dist/utils/logger.js +0 -96
- package/dist/utils/path.js +0 -10
- package/dist/utils/process.js +0 -83
- package/dist/utils/terminal.js +0 -34
- package/drizzle/0000_nice_stepford_cuckoos.sql +0 -25
- package/drizzle/0001_third_vermin.sql +0 -22
- package/drizzle/0002_kind_sue_storm.sql +0 -1
- package/drizzle/0003_dizzy_micromax.sql +0 -35
- package/drizzle/0004_sloppy_alex_wilder.sql +0 -23
- package/drizzle/0005_open_toro.sql +0 -23
- package/drizzle/0006_fixed_jack_flag.sql +0 -23
- package/drizzle/0007_mute_lord_tyger.sql +0 -1
- package/drizzle/0008_melted_flatman.sql +0 -8
- package/drizzle/0009_powerful_hellcat.sql +0 -1
- package/drizzle/0010_wealthy_dorian_gray.sql +0 -24
- package/drizzle/0011_actual_lucky.sql +0 -7
- package/drizzle/meta/0000_snapshot.json +0 -174
- package/drizzle/meta/0001_snapshot.json +0 -212
- package/drizzle/meta/0002_snapshot.json +0 -219
- package/drizzle/meta/0003_snapshot.json +0 -240
- package/drizzle/meta/0004_snapshot.json +0 -240
- package/drizzle/meta/0005_snapshot.json +0 -240
- package/drizzle/meta/0006_snapshot.json +0 -240
- package/drizzle/meta/0007_snapshot.json +0 -247
- package/drizzle/meta/0008_snapshot.json +0 -306
- package/drizzle/meta/0009_snapshot.json +0 -313
- package/drizzle/meta/0010_snapshot.json +0 -261
- package/drizzle/meta/_journal.json +0 -90
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { CommandRunner } from "../process/CommandRunner.js";
|
|
3
|
+
import { RuntimePaths } from "../runtime/RuntimePaths.js";
|
|
4
|
+
import { ComposeTemplateRenderer } from "./ComposeTemplateRenderer.js";
|
|
5
|
+
export class DockerStackManager {
|
|
6
|
+
commandRunner;
|
|
7
|
+
composeRenderer;
|
|
8
|
+
runtimePaths;
|
|
9
|
+
constructor(root, commandRunner = new CommandRunner(), composeRenderer = new ComposeTemplateRenderer()) {
|
|
10
|
+
this.commandRunner = commandRunner;
|
|
11
|
+
this.composeRenderer = composeRenderer;
|
|
12
|
+
this.runtimePaths = new RuntimePaths(root);
|
|
13
|
+
}
|
|
14
|
+
async up(state) {
|
|
15
|
+
fs.mkdirSync(this.runtimePaths.runnerConfigPath(), { recursive: true });
|
|
16
|
+
fs.writeFileSync(this.runtimePaths.composeFilePath(), this.composeRenderer.render({
|
|
17
|
+
apiHttpPort: state.ports.apiHttp,
|
|
18
|
+
uiPort: state.ports.ui,
|
|
19
|
+
runnerGrpcPort: state.ports.runnerGrpc,
|
|
20
|
+
agentCliGrpcPort: state.ports.agentCliGrpc
|
|
21
|
+
}, {
|
|
22
|
+
apiConfigPath: this.runtimePaths.apiConfigPath(),
|
|
23
|
+
frontendConfigPath: this.runtimePaths.frontendConfigPath(),
|
|
24
|
+
seedFilePath: this.runtimePaths.seedFilePath()
|
|
25
|
+
}), "utf8");
|
|
26
|
+
await this.commandRunner.run("docker", [
|
|
27
|
+
"compose",
|
|
28
|
+
"-f",
|
|
29
|
+
this.runtimePaths.composeFilePath(),
|
|
30
|
+
"up",
|
|
31
|
+
"-d"
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
async applySeedSql() {
|
|
35
|
+
if (!fs.existsSync(this.runtimePaths.seedFilePath())) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let lastError = null;
|
|
39
|
+
for (let attempt = 0; attempt < 20; attempt += 1) {
|
|
40
|
+
try {
|
|
41
|
+
await this.commandRunner.run("docker", [
|
|
42
|
+
"compose",
|
|
43
|
+
"-f",
|
|
44
|
+
this.runtimePaths.composeFilePath(),
|
|
45
|
+
"exec",
|
|
46
|
+
"-T",
|
|
47
|
+
"postgres",
|
|
48
|
+
"psql",
|
|
49
|
+
"-U",
|
|
50
|
+
"postgres",
|
|
51
|
+
"-d",
|
|
52
|
+
"companyhelm",
|
|
53
|
+
"-f",
|
|
54
|
+
"/run/companyhelm/seed.sql"
|
|
55
|
+
]);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
lastError = error;
|
|
60
|
+
await new Promise((resolve) => {
|
|
61
|
+
setTimeout(resolve, 1000);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
throw lastError ?? new Error("Failed to apply seed SQL.");
|
|
66
|
+
}
|
|
67
|
+
async down() {
|
|
68
|
+
if (!fs.existsSync(this.runtimePaths.composeFilePath())) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
await this.commandRunner.run("docker", [
|
|
72
|
+
"compose",
|
|
73
|
+
"-f",
|
|
74
|
+
this.runtimePaths.composeFilePath(),
|
|
75
|
+
"down",
|
|
76
|
+
"--remove-orphans"
|
|
77
|
+
]);
|
|
78
|
+
}
|
|
79
|
+
async logs(service) {
|
|
80
|
+
await this.commandRunner.run("docker", [
|
|
81
|
+
"compose",
|
|
82
|
+
"-f",
|
|
83
|
+
this.runtimePaths.composeFilePath(),
|
|
84
|
+
"logs",
|
|
85
|
+
service
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
async runningServices() {
|
|
89
|
+
if (!fs.existsSync(this.runtimePaths.composeFilePath())) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
return this.commandRunner.capture("docker", [
|
|
93
|
+
"compose",
|
|
94
|
+
"-f",
|
|
95
|
+
this.runtimePaths.composeFilePath(),
|
|
96
|
+
"ps",
|
|
97
|
+
"--services",
|
|
98
|
+
"--status",
|
|
99
|
+
"running"
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const MANAGED_SERVICES = new Set(["postgres", "api", "frontend", "runner"]);
|
|
2
|
+
export class LogsService {
|
|
3
|
+
streamServiceLogs;
|
|
4
|
+
constructor(streamServiceLogs) {
|
|
5
|
+
this.streamServiceLogs = streamServiceLogs;
|
|
6
|
+
}
|
|
7
|
+
async stream(service) {
|
|
8
|
+
if (!MANAGED_SERVICES.has(service)) {
|
|
9
|
+
throw new Error(`Unknown service '${service}'. Expected one of: ${Array.from(MANAGED_SERVICES).join(", ")}`);
|
|
10
|
+
}
|
|
11
|
+
await this.streamServiceLogs(service);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
export class CommandRunner {
|
|
3
|
+
run(command, args, cwd) {
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
const child = spawn(command, args, {
|
|
6
|
+
cwd,
|
|
7
|
+
stdio: "inherit"
|
|
8
|
+
});
|
|
9
|
+
child.on("error", reject);
|
|
10
|
+
child.on("exit", (code) => {
|
|
11
|
+
if (code === 0) {
|
|
12
|
+
resolve();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
reject(new Error(`${command} exited with code ${code ?? "unknown"}`));
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
capture(command, args, cwd) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const child = spawn(command, args, {
|
|
22
|
+
cwd,
|
|
23
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
24
|
+
});
|
|
25
|
+
let stdout = "";
|
|
26
|
+
let stderr = "";
|
|
27
|
+
child.stdout.on("data", (chunk) => {
|
|
28
|
+
stdout += String(chunk);
|
|
29
|
+
});
|
|
30
|
+
child.stderr.on("data", (chunk) => {
|
|
31
|
+
stderr += String(chunk);
|
|
32
|
+
});
|
|
33
|
+
child.on("error", reject);
|
|
34
|
+
child.on("exit", (code) => {
|
|
35
|
+
if (code === 0) {
|
|
36
|
+
resolve(stdout);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
reject(new Error(stderr || `${command} exited with code ${code ?? "unknown"}`));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface RunnerStartInput {
|
|
2
|
+
serverUrl: string;
|
|
3
|
+
agentApiUrl: string;
|
|
4
|
+
logPath: string;
|
|
5
|
+
secret: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RunnerStartCommand {
|
|
8
|
+
command: string;
|
|
9
|
+
args: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare class RunnerSupervisor {
|
|
12
|
+
private readonly configPath;
|
|
13
|
+
constructor(configPath: string);
|
|
14
|
+
buildStartArgs(input: RunnerStartInput): RunnerStartCommand;
|
|
15
|
+
buildStopArgs(): RunnerStartCommand;
|
|
16
|
+
private resolveRunnerCliPath;
|
|
17
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
export class RunnerSupervisor {
|
|
5
|
+
configPath;
|
|
6
|
+
constructor(configPath) {
|
|
7
|
+
this.configPath = configPath;
|
|
8
|
+
}
|
|
9
|
+
buildStartArgs(input) {
|
|
10
|
+
const runnerCliPath = this.resolveRunnerCliPath();
|
|
11
|
+
return {
|
|
12
|
+
command: process.execPath,
|
|
13
|
+
args: [
|
|
14
|
+
runnerCliPath,
|
|
15
|
+
"--config-path",
|
|
16
|
+
this.configPath,
|
|
17
|
+
"runner",
|
|
18
|
+
"start",
|
|
19
|
+
"--daemon",
|
|
20
|
+
"--server-url",
|
|
21
|
+
input.serverUrl,
|
|
22
|
+
"--agent-api-url",
|
|
23
|
+
input.agentApiUrl,
|
|
24
|
+
"--log-path",
|
|
25
|
+
input.logPath,
|
|
26
|
+
"--secret",
|
|
27
|
+
input.secret
|
|
28
|
+
]
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
buildStopArgs() {
|
|
32
|
+
const runnerCliPath = this.resolveRunnerCliPath();
|
|
33
|
+
return {
|
|
34
|
+
command: process.execPath,
|
|
35
|
+
args: [runnerCliPath, "--config-path", this.configPath, "runner", "stop"]
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
resolveRunnerCliPath() {
|
|
39
|
+
if (process.env.COMPANYHELM_RUNNER_CLI_PATH) {
|
|
40
|
+
return process.env.COMPANYHELM_RUNNER_CLI_PATH;
|
|
41
|
+
}
|
|
42
|
+
const packageJsonPath = require.resolve("@companyhelm/runner/package.json");
|
|
43
|
+
return path.resolve(path.dirname(packageJsonPath), "dist/cli.js");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class ImageCatalog {
|
|
2
|
+
resolve() {
|
|
3
|
+
return {
|
|
4
|
+
api: process.env.COMPANYHELM_API_IMAGE || "companyhelm-api:latest",
|
|
5
|
+
frontend: process.env.COMPANYHELM_WEB_IMAGE || "companyhelm-web:latest",
|
|
6
|
+
postgres: process.env.COMPANYHELM_POSTGRES_IMAGE || "postgres:16-alpine"
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RuntimePorts } from "./RuntimeState.js";
|
|
2
|
+
export declare class PortAllocator {
|
|
3
|
+
private readonly apiHttpPort;
|
|
4
|
+
private readonly uiPort;
|
|
5
|
+
private readonly runnerGrpcPort;
|
|
6
|
+
private readonly agentCliGrpcPort;
|
|
7
|
+
constructor(apiHttpPort?: number, uiPort?: number, runnerGrpcPort?: number, agentCliGrpcPort?: number);
|
|
8
|
+
allocate(): RuntimePorts;
|
|
9
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class PortAllocator {
|
|
2
|
+
apiHttpPort;
|
|
3
|
+
uiPort;
|
|
4
|
+
runnerGrpcPort;
|
|
5
|
+
agentCliGrpcPort;
|
|
6
|
+
constructor(apiHttpPort = 4000, uiPort = 4173, runnerGrpcPort = 50051, agentCliGrpcPort = 50052) {
|
|
7
|
+
this.apiHttpPort = apiHttpPort;
|
|
8
|
+
this.uiPort = uiPort;
|
|
9
|
+
this.runnerGrpcPort = runnerGrpcPort;
|
|
10
|
+
this.agentCliGrpcPort = agentCliGrpcPort;
|
|
11
|
+
}
|
|
12
|
+
allocate() {
|
|
13
|
+
return {
|
|
14
|
+
apiHttp: this.apiHttpPort,
|
|
15
|
+
ui: this.uiPort,
|
|
16
|
+
runnerGrpc: this.runnerGrpcPort,
|
|
17
|
+
agentCliGrpc: this.agentCliGrpcPort
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class RuntimePaths {
|
|
2
|
+
private readonly root;
|
|
3
|
+
constructor(root: string);
|
|
4
|
+
stateFilePath(): string;
|
|
5
|
+
composeFilePath(): string;
|
|
6
|
+
apiConfigPath(): string;
|
|
7
|
+
frontendConfigPath(): string;
|
|
8
|
+
seedFilePath(): string;
|
|
9
|
+
runnerConfigPath(): string;
|
|
10
|
+
runnerStateDbPath(): string;
|
|
11
|
+
runnerLogPath(): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
export class RuntimePaths {
|
|
3
|
+
root;
|
|
4
|
+
constructor(root) {
|
|
5
|
+
this.root = root;
|
|
6
|
+
}
|
|
7
|
+
stateFilePath() {
|
|
8
|
+
return path.join(this.root, "state.json");
|
|
9
|
+
}
|
|
10
|
+
composeFilePath() {
|
|
11
|
+
return path.join(this.root, "docker-compose.yaml");
|
|
12
|
+
}
|
|
13
|
+
apiConfigPath() {
|
|
14
|
+
return path.join(this.root, "api-config.yaml");
|
|
15
|
+
}
|
|
16
|
+
frontendConfigPath() {
|
|
17
|
+
return path.join(this.root, "frontend-config.yaml");
|
|
18
|
+
}
|
|
19
|
+
seedFilePath() {
|
|
20
|
+
return path.join(this.root, "seed.sql");
|
|
21
|
+
}
|
|
22
|
+
runnerConfigPath() {
|
|
23
|
+
return path.join(this.root, "runner");
|
|
24
|
+
}
|
|
25
|
+
runnerStateDbPath() {
|
|
26
|
+
return path.join(this.runnerConfigPath(), "state.db");
|
|
27
|
+
}
|
|
28
|
+
runnerLogPath() {
|
|
29
|
+
return path.join(this.runnerConfigPath(), "daemon.log");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface RuntimePorts {
|
|
2
|
+
apiHttp: number;
|
|
3
|
+
ui: number;
|
|
4
|
+
runnerGrpc: number;
|
|
5
|
+
agentCliGrpc: number;
|
|
6
|
+
}
|
|
7
|
+
export interface RuntimeState {
|
|
8
|
+
version: 1;
|
|
9
|
+
company: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
auth: {
|
|
14
|
+
username: "admin";
|
|
15
|
+
password: string;
|
|
16
|
+
jwtPrivateKeyPem: string;
|
|
17
|
+
jwtPublicKeyPem: string;
|
|
18
|
+
};
|
|
19
|
+
runner: {
|
|
20
|
+
name: string;
|
|
21
|
+
secret: string;
|
|
22
|
+
};
|
|
23
|
+
ports: RuntimePorts;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RuntimeState } from "./RuntimeState.js";
|
|
2
|
+
export declare class RuntimeStateStore {
|
|
3
|
+
private readonly root;
|
|
4
|
+
private readonly runtimePaths;
|
|
5
|
+
constructor(root: string);
|
|
6
|
+
initialize(): RuntimeState;
|
|
7
|
+
load(): RuntimeState | null;
|
|
8
|
+
private save;
|
|
9
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { PortAllocator } from "./PortAllocator.js";
|
|
3
|
+
import { RuntimePaths } from "./RuntimePaths.js";
|
|
4
|
+
import { createPemKeyPair, randomCompanyId, randomSecret } from "./Secrets.js";
|
|
5
|
+
export class RuntimeStateStore {
|
|
6
|
+
root;
|
|
7
|
+
runtimePaths;
|
|
8
|
+
constructor(root) {
|
|
9
|
+
this.root = root;
|
|
10
|
+
this.runtimePaths = new RuntimePaths(root);
|
|
11
|
+
}
|
|
12
|
+
initialize() {
|
|
13
|
+
const existingState = this.load();
|
|
14
|
+
if (existingState) {
|
|
15
|
+
return existingState;
|
|
16
|
+
}
|
|
17
|
+
fs.mkdirSync(this.root, { recursive: true });
|
|
18
|
+
const authKeys = createPemKeyPair();
|
|
19
|
+
const state = {
|
|
20
|
+
version: 1,
|
|
21
|
+
company: {
|
|
22
|
+
id: randomCompanyId(),
|
|
23
|
+
name: "Local CompanyHelm"
|
|
24
|
+
},
|
|
25
|
+
auth: {
|
|
26
|
+
username: "admin",
|
|
27
|
+
password: randomSecret(),
|
|
28
|
+
jwtPrivateKeyPem: authKeys.privateKeyPem,
|
|
29
|
+
jwtPublicKeyPem: authKeys.publicKeyPem
|
|
30
|
+
},
|
|
31
|
+
runner: {
|
|
32
|
+
name: "local-runner",
|
|
33
|
+
secret: randomSecret()
|
|
34
|
+
},
|
|
35
|
+
ports: new PortAllocator().allocate()
|
|
36
|
+
};
|
|
37
|
+
this.save(state);
|
|
38
|
+
return state;
|
|
39
|
+
}
|
|
40
|
+
load() {
|
|
41
|
+
if (!fs.existsSync(this.runtimePaths.stateFilePath())) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return JSON.parse(fs.readFileSync(this.runtimePaths.stateFilePath(), "utf8"));
|
|
45
|
+
}
|
|
46
|
+
save(state) {
|
|
47
|
+
fs.writeFileSync(this.runtimePaths.stateFilePath(), `${JSON.stringify(state, null, 2)}\n`, {
|
|
48
|
+
encoding: "utf8",
|
|
49
|
+
mode: 0o600
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function randomSecret(length?: number): string;
|
|
2
|
+
export declare function randomCompanyId(): string;
|
|
3
|
+
export declare function createPasswordHash(password: string): {
|
|
4
|
+
passwordSalt: string;
|
|
5
|
+
passwordHash: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function createPemKeyPair(): {
|
|
8
|
+
privateKeyPem: string;
|
|
9
|
+
publicKeyPem: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { generateKeyPairSync, randomBytes, randomUUID, scryptSync } from "node:crypto";
|
|
2
|
+
export function randomSecret(length = 24) {
|
|
3
|
+
return randomBytes(length).toString("base64url");
|
|
4
|
+
}
|
|
5
|
+
export function randomCompanyId() {
|
|
6
|
+
return randomUUID();
|
|
7
|
+
}
|
|
8
|
+
export function createPasswordHash(password) {
|
|
9
|
+
const passwordSalt = randomBytes(16).toString("hex");
|
|
10
|
+
const passwordHash = scryptSync(password, passwordSalt, 64).toString("hex");
|
|
11
|
+
return {
|
|
12
|
+
passwordSalt,
|
|
13
|
+
passwordHash
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function createPemKeyPair() {
|
|
17
|
+
const { privateKey, publicKey } = generateKeyPairSync("rsa", {
|
|
18
|
+
modulusLength: 2048,
|
|
19
|
+
privateKeyEncoding: { format: "pem", type: "pkcs1" },
|
|
20
|
+
publicKeyEncoding: { format: "pem", type: "pkcs1" }
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
privateKeyPem: privateKey,
|
|
24
|
+
publicKeyPem: publicKey
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type ManagedServiceStatus = "running" | "stopped";
|
|
2
|
+
export interface StatusSnapshot {
|
|
3
|
+
postgres: ManagedServiceStatus;
|
|
4
|
+
api: ManagedServiceStatus;
|
|
5
|
+
frontend: ManagedServiceStatus;
|
|
6
|
+
runner: ManagedServiceStatus;
|
|
7
|
+
}
|
|
8
|
+
export declare class StatusService {
|
|
9
|
+
private readonly listRunningServices;
|
|
10
|
+
constructor(listRunningServices: () => Promise<string>);
|
|
11
|
+
read(): Promise<StatusSnapshot>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class StatusService {
|
|
2
|
+
listRunningServices;
|
|
3
|
+
constructor(listRunningServices) {
|
|
4
|
+
this.listRunningServices = listRunningServices;
|
|
5
|
+
}
|
|
6
|
+
async read() {
|
|
7
|
+
const running = new Set((await this.listRunningServices())
|
|
8
|
+
.split("\n")
|
|
9
|
+
.map((service) => service.trim())
|
|
10
|
+
.filter(Boolean));
|
|
11
|
+
return {
|
|
12
|
+
postgres: running.has("postgres") ? "running" : "stopped",
|
|
13
|
+
api: running.has("api") ? "running" : "stopped",
|
|
14
|
+
frontend: running.has("frontend") ? "running" : "stopped",
|
|
15
|
+
runner: running.has("runner") ? "running" : "stopped"
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import figlet from "figlet";
|
|
3
|
+
export class TerminalRenderer {
|
|
4
|
+
useColor;
|
|
5
|
+
constructor(useColor = true) {
|
|
6
|
+
this.useColor = useColor;
|
|
7
|
+
}
|
|
8
|
+
renderBanner() {
|
|
9
|
+
const banner = figlet.textSync("COMPANYHELM", {
|
|
10
|
+
horizontalLayout: "fitted"
|
|
11
|
+
});
|
|
12
|
+
return this.colorize(`COMPANYHELM\n${banner}`, "cyan");
|
|
13
|
+
}
|
|
14
|
+
success(message) {
|
|
15
|
+
return `${this.colorize("[ok]", "green")} ${message}`;
|
|
16
|
+
}
|
|
17
|
+
colorize(text, color) {
|
|
18
|
+
if (!this.useColor) {
|
|
19
|
+
return text;
|
|
20
|
+
}
|
|
21
|
+
return chalk[color](text);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
services:
|
|
2
|
+
postgres:
|
|
3
|
+
image: {{POSTGRES_IMAGE}}
|
|
4
|
+
environment:
|
|
5
|
+
POSTGRES_USER: postgres
|
|
6
|
+
POSTGRES_PASSWORD: postgres
|
|
7
|
+
POSTGRES_DB: companyhelm
|
|
8
|
+
volumes:
|
|
9
|
+
- companyhelm_postgres_data:/var/lib/postgresql/data
|
|
10
|
+
- "{{SEED_FILE_PATH}}:/run/companyhelm/seed.sql:ro"
|
|
11
|
+
networks:
|
|
12
|
+
- companyhelm
|
|
13
|
+
|
|
14
|
+
api:
|
|
15
|
+
image: {{API_IMAGE}}
|
|
16
|
+
depends_on:
|
|
17
|
+
- postgres
|
|
18
|
+
environment:
|
|
19
|
+
COMPANYHELM_CONFIG_PATH: /run/companyhelm/config.yaml
|
|
20
|
+
ports:
|
|
21
|
+
- "{{API_HTTP_PORT}}:4000"
|
|
22
|
+
- "{{RUNNER_GRPC_PORT}}:{{RUNNER_GRPC_PORT}}"
|
|
23
|
+
- "{{AGENT_CLI_GRPC_PORT}}:{{AGENT_CLI_GRPC_PORT}}"
|
|
24
|
+
volumes:
|
|
25
|
+
- "{{API_CONFIG_PATH}}:/run/companyhelm/config.yaml:ro"
|
|
26
|
+
networks:
|
|
27
|
+
- companyhelm
|
|
28
|
+
|
|
29
|
+
frontend:
|
|
30
|
+
image: {{FRONTEND_IMAGE}}
|
|
31
|
+
depends_on:
|
|
32
|
+
- api
|
|
33
|
+
environment:
|
|
34
|
+
COMPANYHELM_CONFIG_PATH: /run/companyhelm/config.yaml
|
|
35
|
+
PORT: "{{UI_PORT}}"
|
|
36
|
+
ports:
|
|
37
|
+
- "{{UI_PORT}}:{{UI_PORT}}"
|
|
38
|
+
volumes:
|
|
39
|
+
- "{{FRONTEND_CONFIG_PATH}}:/run/companyhelm/config.yaml:ro"
|
|
40
|
+
networks:
|
|
41
|
+
- companyhelm
|
|
42
|
+
|
|
43
|
+
networks:
|
|
44
|
+
companyhelm:
|
|
45
|
+
driver: bridge
|
|
46
|
+
|
|
47
|
+
volumes:
|
|
48
|
+
companyhelm_postgres_data:
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
BEGIN;
|
|
2
|
+
|
|
3
|
+
INSERT INTO companies (id, name)
|
|
4
|
+
VALUES ('{{COMPANY_ID}}', '{{COMPANY_NAME}}')
|
|
5
|
+
ON CONFLICT (id) DO UPDATE
|
|
6
|
+
SET name = EXCLUDED.name;
|
|
7
|
+
|
|
8
|
+
INSERT INTO users (id, first_name, last_name, email, auth_provider, created_at, updated_at)
|
|
9
|
+
VALUES (
|
|
10
|
+
'{{USER_ID}}',
|
|
11
|
+
'{{USER_FIRST_NAME}}',
|
|
12
|
+
NULL,
|
|
13
|
+
'{{USER_EMAIL}}',
|
|
14
|
+
'companyhelm',
|
|
15
|
+
NOW(),
|
|
16
|
+
NOW()
|
|
17
|
+
)
|
|
18
|
+
ON CONFLICT (email) DO UPDATE
|
|
19
|
+
SET first_name = EXCLUDED.first_name,
|
|
20
|
+
auth_provider = EXCLUDED.auth_provider,
|
|
21
|
+
updated_at = NOW();
|
|
22
|
+
|
|
23
|
+
INSERT INTO user_auths (id, user_id, email, password_salt, password_hash, created_at, updated_at)
|
|
24
|
+
VALUES (
|
|
25
|
+
'{{USER_AUTH_ID}}',
|
|
26
|
+
'{{USER_ID}}',
|
|
27
|
+
'{{USER_EMAIL}}',
|
|
28
|
+
'{{PASSWORD_SALT}}',
|
|
29
|
+
'{{PASSWORD_HASH}}',
|
|
30
|
+
NOW(),
|
|
31
|
+
NOW()
|
|
32
|
+
)
|
|
33
|
+
ON CONFLICT (user_id) DO UPDATE
|
|
34
|
+
SET email = EXCLUDED.email,
|
|
35
|
+
password_salt = EXCLUDED.password_salt,
|
|
36
|
+
password_hash = EXCLUDED.password_hash,
|
|
37
|
+
updated_at = NOW();
|
|
38
|
+
|
|
39
|
+
INSERT INTO company_members (company_id, user_id)
|
|
40
|
+
VALUES ('{{COMPANY_ID}}', '{{USER_ID}}')
|
|
41
|
+
ON CONFLICT (company_id, user_id) DO NOTHING;
|
|
42
|
+
|
|
43
|
+
INSERT INTO agent_runners (id, company_id, secret_hash, status, name)
|
|
44
|
+
VALUES (
|
|
45
|
+
'{{RUNNER_ID}}',
|
|
46
|
+
'{{COMPANY_ID}}',
|
|
47
|
+
'{{RUNNER_SECRET_HASH}}',
|
|
48
|
+
'ready',
|
|
49
|
+
'{{RUNNER_NAME}}'
|
|
50
|
+
)
|
|
51
|
+
ON CONFLICT (id) DO UPDATE
|
|
52
|
+
SET company_id = EXCLUDED.company_id,
|
|
53
|
+
secret_hash = EXCLUDED.secret_hash,
|
|
54
|
+
status = EXCLUDED.status,
|
|
55
|
+
name = EXCLUDED.name;
|
|
56
|
+
|
|
57
|
+
COMMIT;
|