(sessionId: string)
| 104 | } |
| 105 | |
| 106 | async getSession(sessionId: string): Promise<Session> { |
| 107 | const response = await axios.get( |
| 108 | `${configuration.apiUrl}/cli/sessions/${encodeURIComponent(sessionId)}`, |
| 109 | { |
| 110 | headers: this.authHeaders(), |
| 111 | timeout: 60_000 |
| 112 | } |
| 113 | ) |
| 114 | |
| 115 | const parsed = GetSessionResponseSchema.safeParse(response.data) |
| 116 | if (!parsed.success) { |
| 117 | throw apiValidationError('Invalid /cli/sessions/:id response', response) |
| 118 | } |
| 119 | |
| 120 | const raw = parsed.data.session |
| 121 | const metadata = (() => { |
| 122 | if (raw.metadata == null) return null |
| 123 | const parsedMetadata = MetadataSchema.safeParse(raw.metadata) |
| 124 | return parsedMetadata.success ? parsedMetadata.data : null |
| 125 | })() |
| 126 | const agentState = (() => { |
| 127 | if (raw.agentState == null) return null |
| 128 | const parsedAgentState = AgentStateSchema.safeParse(raw.agentState) |
| 129 | return parsedAgentState.success ? parsedAgentState.data : null |
| 130 | })() |
| 131 | |
| 132 | return { |
| 133 | id: raw.id, |
| 134 | namespace: raw.namespace, |
| 135 | seq: raw.seq, |
| 136 | createdAt: raw.createdAt, |
| 137 | updatedAt: raw.updatedAt, |
| 138 | active: raw.active, |
| 139 | activeAt: raw.activeAt, |
| 140 | metadata, |
| 141 | metadataVersion: raw.metadataVersion, |
| 142 | agentState, |
| 143 | agentStateVersion: raw.agentStateVersion, |
| 144 | thinking: raw.thinking, |
| 145 | thinkingAt: raw.thinkingAt, |
| 146 | todos: raw.todos, |
| 147 | model: raw.model, |
| 148 | modelReasoningEffort: raw.modelReasoningEffort, |
| 149 | effort: raw.effort, |
| 150 | permissionMode: raw.permissionMode, |
| 151 | collaborationMode: raw.collaborationMode |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | async getOrCreateMachine(opts: { |
| 156 | machineId: string |
no test coverage detected