MCPcopy Create free account
hub / github.com/tiann/hapi / getOrCreateMachine

Method getOrCreateMachine

cli/src/api/api.ts:155–208  ·  view source on GitHub ↗
(opts: {
        machineId: string
        metadata: MachineMetadata
        runnerState?: RunnerState
    })

Source from the content-addressed store, hash-verified

153 }
154
155 async getOrCreateMachine(opts: {
156 machineId: string
157 metadata: MachineMetadata
158 runnerState?: RunnerState
159 }): Promise<Machine> {
160 const response = await axios.post<CreateMachineResponse>(
161 `${configuration.apiUrl}/cli/machines`,
162 {
163 id: opts.machineId,
164 metadata: opts.metadata,
165 runnerState: opts.runnerState ?? null
166 },
167 {
168 headers: buildHubRequestHeaders({
169 Authorization: `Bearer ${this.token}`,
170 'Content-Type': 'application/json'
171 }),
172 timeout: 60_000
173 }
174 )
175
176 const parsed = CreateMachineResponseSchema.safeParse(response.data)
177 if (!parsed.success) {
178 throw apiValidationError('Invalid /cli/machines response', response)
179 }
180
181 const raw = parsed.data.machine
182
183 const metadata = (() => {
184 if (raw.metadata == null) return null
185 const parsedMetadata = MachineMetadataSchema.safeParse(raw.metadata)
186 return parsedMetadata.success ? parsedMetadata.data : null
187 })()
188
189 const runnerState = (() => {
190 if (raw.runnerState == null) return null
191 const parsedRunnerState = RunnerStateSchema.safeParse(raw.runnerState)
192 return parsedRunnerState.success ? parsedRunnerState.data : null
193 })()
194
195 return {
196 id: raw.id,
197 namespace: raw.namespace,
198 seq: raw.seq,
199 createdAt: raw.createdAt,
200 updatedAt: raw.updatedAt,
201 active: raw.active,
202 activeAt: raw.activeAt,
203 metadata,
204 metadataVersion: raw.metadataVersion,
205 runnerState,
206 runnerStateVersion: raw.runnerStateVersion
207 }
208 }
209
210 async listResumableSessions(machineId?: string): Promise<ResumableSession[]> {
211 const qs = machineId ? `?machineId=${encodeURIComponent(machineId)}` : ''

Callers 3

startRunnerFunction · 0.45
bootstrapSessionFunction · 0.45
bootstrapExistingSessionFunction · 0.45

Calls 2

buildHubRequestHeadersFunction · 0.90
apiValidationErrorFunction · 0.90

Tested by

no test coverage detected