fix(build): resolve post-rebase gen and migration breakage

This commit is contained in:
Kyle Carberry
2026-02-24 12:19:44 -05:00
parent f41efdb98d
commit 8cdb374b7c
24 changed files with 30931 additions and 31511 deletions
+3
View File
@@ -174,6 +174,9 @@ AI BRIDGE OPTIONS:
Emit structured logs for AI Bridge interception records. Use this for
exporting these records to external SIEM or observability systems.
--agent-local-workspace bool, $CODER_AGENT_LOCAL_WORKSPACE (default: false)
Enable admin-only local workspace mode for agent chats.
--chat-anthropic-models-url string, $CODER_CHAT_ANTHROPIC_MODELS_URL
Override URL used to list Anthropic models for the chat model catalog.
+179 -11
View File
@@ -543,6 +543,31 @@ const docTemplate = `{
}
}
},
"/chats/watch": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": [
"application/json"
],
"tags": [
"Chats"
],
"summary": "Watch chat list updates",
"operationId": "watch-chats",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.ServerSentEvent"
}
}
}
}
},
"/chats/{chat}": {
"get": {
"security": [
@@ -751,10 +776,85 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ChatMessage"
}
"$ref": "#/definitions/codersdk.CreateChatMessageResponse"
}
}
}
}
},
"/chats/{chat}/queue/{queuedMessage}": {
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": [
"Chats"
],
"summary": "Delete a queued chat message",
"operationId": "delete-chat-queued-message",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Chat ID",
"name": "chat",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Queued message ID",
"name": "queuedMessage",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/chats/{chat}/queue/{queuedMessage}/promote": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": [
"application/json"
],
"tags": [
"Chats"
],
"summary": "Promote a queued message to send immediately",
"operationId": "promote-chat-queued-message",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Chat ID",
"name": "chat",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Queued message ID",
"name": "queuedMessage",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.CreateChatMessageResponse"
}
}
}
@@ -12982,6 +13082,9 @@ const docTemplate = `{
"codersdk.AIChatConfig": {
"type": "object",
"properties": {
"local_workspace": {
"type": "boolean"
},
"system_prompt": {
"type": "string"
},
@@ -14107,6 +14210,9 @@ const docTemplate = `{
"workspace_id": {
"type": "string",
"format": "uuid"
},
"workspace_mode": {
"$ref": "#/definitions/codersdk.ChatWorkspaceMode"
}
}
},
@@ -14401,6 +14507,28 @@ const docTemplate = `{
}
}
},
"codersdk.ChatQueuedMessage": {
"type": "object",
"properties": {
"chat_id": {
"type": "string",
"format": "uuid"
},
"content": {
"type": "array",
"items": {
"type": "integer"
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "integer"
}
}
},
"codersdk.ChatStatus": {
"type": "string",
"enum": [
@@ -14469,9 +14597,26 @@ const docTemplate = `{
"items": {
"$ref": "#/definitions/codersdk.ChatMessage"
}
},
"queued_messages": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ChatQueuedMessage"
}
}
}
},
"codersdk.ChatWorkspaceMode": {
"type": "string",
"enum": [
"workspace",
"local"
],
"x-enum-varnames": [
"ChatWorkspaceModeWorkspace",
"ChatWorkspaceModeLocal"
]
},
"codersdk.ConnectionLatency": {
"type": "object",
"properties": {
@@ -14658,6 +14803,23 @@ const docTemplate = `{
}
}
},
"codersdk.CreateChatMessageResponse": {
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ChatMessage"
}
},
"queued": {
"type": "boolean"
},
"queued_message": {
"$ref": "#/definitions/codersdk.ChatQueuedMessage"
}
}
},
"codersdk.CreateChatRequest": {
"type": "object",
"properties": {
@@ -14690,6 +14852,9 @@ const docTemplate = `{
"workspace_id": {
"type": "string",
"format": "uuid"
},
"workspace_mode": {
"$ref": "#/definitions/codersdk.ChatWorkspaceMode"
}
}
},
@@ -15673,6 +15838,9 @@ const docTemplate = `{
"external_auth": {
"$ref": "#/definitions/serpent.Struct-array_codersdk_ExternalAuthConfig"
},
"external_auth_github_default_provider_enable": {
"type": "boolean"
},
"external_token_encryption_keys": {
"type": "array",
"items": {
@@ -23817,19 +23985,19 @@ const docTemplate = `{
"type": "object",
"properties": {
"forceQuery": {
"description": "append a query ('?') even if RawQuery is empty",
"description": "ForceQuery indicates whether the original URL contained a query ('?') character.\nWhen set, the String method will include a trailing '?', even when RawQuery is empty.",
"type": "boolean"
},
"fragment": {
"description": "fragment for references, without '#'",
"description": "fragment for references (without '#')",
"type": "string"
},
"host": {
"description": "host or host:port (see Hostname and Port methods)",
"description": "\"host\" or \"host:port\" (see Hostname and Port methods)",
"type": "string"
},
"omitHost": {
"description": "do not emit empty host (authority)",
"description": "OmitHost indicates the URL has an empty host (authority).\nWhen set, the String method will not include the host when it is empty.",
"type": "boolean"
},
"opaque": {
@@ -23841,15 +24009,15 @@ const docTemplate = `{
"type": "string"
},
"rawFragment": {
"description": "encoded fragment hint (see EscapedFragment method)",
"description": "RawFragment is an optional field containing an encoded fragment hint.\nSee the EscapedFragment method for more details.\n\nIn general, code should call EscapedFragment instead of reading RawFragment.",
"type": "string"
},
"rawPath": {
"description": "encoded path hint (see EscapedPath method)",
"description": "RawPath is an optional field containing an encoded path hint.\nSee the EscapedPath method for more details.\n\nIn general, code should call EscapedPath instead of reading RawPath.",
"type": "string"
},
"rawQuery": {
"description": "encoded query values, without '?'",
"description": "RawQuery contains the encoded query values, without the initial '?'.\nUse URL.Query to decode the query.",
"type": "string"
},
"scheme": {
+22523 -23900
View File
File diff suppressed because it is too large Load Diff
-14
View File
@@ -1757,13 +1757,6 @@ func (q *querier) DeleteApplicationConnectAPIKeysByUserID(ctx context.Context, u
return q.db.DeleteApplicationConnectAPIKeysByUserID(ctx, userID)
}
func (q *querier) DeleteBoundaryUsageStatsByReplicaID(ctx context.Context, replicaID uuid.UUID) error {
if err := q.authorizeContext(ctx, policy.ActionDelete, rbac.ResourceBoundaryUsage); err != nil {
return err
}
return q.db.DeleteBoundaryUsageStatsByReplicaID(ctx, replicaID)
}
func (q *querier) DeleteChatByID(ctx context.Context, id uuid.UUID) error {
chat, err := q.db.GetChatByID(ctx, id)
if err != nil {
@@ -2380,13 +2373,6 @@ func (q *querier) GetAuthorizationUserRoles(ctx context.Context, userID uuid.UUI
return q.db.GetAuthorizationUserRoles(ctx, userID)
}
func (q *querier) GetBoundaryUsageSummary(ctx context.Context, maxStalenessMs int64) (database.GetBoundaryUsageSummaryRow, error) {
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceBoundaryUsage); err != nil {
return database.GetBoundaryUsageSummaryRow{}, err
}
return q.db.GetBoundaryUsageSummary(ctx, maxStalenessMs)
}
func (q *querier) GetChatByID(ctx context.Context, id uuid.UUID) (database.Chat, error) {
return fetch(q.log, q.auth, q.db.GetChatByID)(ctx, id)
}
-16
View File
@@ -352,14 +352,6 @@ func (m queryMetricsStore) DeleteApplicationConnectAPIKeysByUserID(ctx context.C
return r0
}
func (m queryMetricsStore) DeleteBoundaryUsageStatsByReplicaID(ctx context.Context, replicaID uuid.UUID) error {
start := time.Now()
r0 := m.s.DeleteBoundaryUsageStatsByReplicaID(ctx, replicaID)
m.queryLatencies.WithLabelValues("DeleteBoundaryUsageStatsByReplicaID").Observe(time.Since(start).Seconds())
m.queryCounts.WithLabelValues(httpmw.ExtractHTTPRoute(ctx), httpmw.ExtractHTTPMethod(ctx), "DeleteBoundaryUsageStatsByReplicaID").Inc()
return r0
}
func (m queryMetricsStore) DeleteChatByID(ctx context.Context, id uuid.UUID) error {
start := time.Now()
r0 := m.s.DeleteChatByID(ctx, id)
@@ -967,14 +959,6 @@ func (m queryMetricsStore) GetAuthorizationUserRoles(ctx context.Context, userID
return r0, r1
}
func (m queryMetricsStore) GetBoundaryUsageSummary(ctx context.Context, maxStalenessMs int64) (database.GetBoundaryUsageSummaryRow, error) {
start := time.Now()
r0, r1 := m.s.GetBoundaryUsageSummary(ctx, maxStalenessMs)
m.queryLatencies.WithLabelValues("GetBoundaryUsageSummary").Observe(time.Since(start).Seconds())
m.queryCounts.WithLabelValues(httpmw.ExtractHTTPRoute(ctx), httpmw.ExtractHTTPMethod(ctx), "GetBoundaryUsageSummary").Inc()
return r0, r1
}
func (m queryMetricsStore) GetChatByID(ctx context.Context, id uuid.UUID) (database.Chat, error) {
start := time.Now()
r0, r1 := m.s.GetChatByID(ctx, id)
-29
View File
@@ -540,20 +540,6 @@ func (mr *MockStoreMockRecorder) DeleteApplicationConnectAPIKeysByUserID(ctx, us
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteApplicationConnectAPIKeysByUserID", reflect.TypeOf((*MockStore)(nil).DeleteApplicationConnectAPIKeysByUserID), ctx, userID)
}
// DeleteBoundaryUsageStatsByReplicaID mocks base method.
func (m *MockStore) DeleteBoundaryUsageStatsByReplicaID(ctx context.Context, replicaID uuid.UUID) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteBoundaryUsageStatsByReplicaID", ctx, replicaID)
ret0, _ := ret[0].(error)
return ret0
}
// DeleteBoundaryUsageStatsByReplicaID indicates an expected call of DeleteBoundaryUsageStatsByReplicaID.
func (mr *MockStoreMockRecorder) DeleteBoundaryUsageStatsByReplicaID(ctx, replicaID any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteBoundaryUsageStatsByReplicaID", reflect.TypeOf((*MockStore)(nil).DeleteBoundaryUsageStatsByReplicaID), ctx, replicaID)
}
// DeleteChatByID mocks base method.
func (m *MockStore) DeleteChatByID(ctx context.Context, id uuid.UUID) error {
m.ctrl.T.Helper()
@@ -1762,21 +1748,6 @@ func (mr *MockStoreMockRecorder) GetAuthorizedWorkspacesAndAgentsByOwnerID(ctx,
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAuthorizedWorkspacesAndAgentsByOwnerID", reflect.TypeOf((*MockStore)(nil).GetAuthorizedWorkspacesAndAgentsByOwnerID), ctx, ownerID, prepared)
}
// GetBoundaryUsageSummary mocks base method.
func (m *MockStore) GetBoundaryUsageSummary(ctx context.Context, maxStalenessMs int64) (database.GetBoundaryUsageSummaryRow, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetBoundaryUsageSummary", ctx, maxStalenessMs)
ret0, _ := ret[0].(database.GetBoundaryUsageSummaryRow)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetBoundaryUsageSummary indicates an expected call of GetBoundaryUsageSummary.
func (mr *MockStoreMockRecorder) GetBoundaryUsageSummary(ctx, maxStalenessMs any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBoundaryUsageSummary", reflect.TypeOf((*MockStore)(nil).GetBoundaryUsageSummary), ctx, maxStalenessMs)
}
// GetChatByID mocks base method.
func (m *MockStore) GetChatByID(ctx context.Context, id uuid.UUID) (database.Chat, error) {
m.ctrl.T.Helper()
-6
View File
@@ -92,8 +92,6 @@ type sqlcQuerier interface {
// be recreated.
DeleteAllWebpushSubscriptions(ctx context.Context) error
DeleteApplicationConnectAPIKeysByUserID(ctx context.Context, userID uuid.UUID) error
// Deletes boundary usage statistics for a specific replica.
DeleteBoundaryUsageStatsByReplicaID(ctx context.Context, replicaID uuid.UUID) error
DeleteChatByID(ctx context.Context, id uuid.UUID) error
DeleteChatMessagesByChatID(ctx context.Context, chatID uuid.UUID) error
DeleteChatModelConfigByID(ctx context.Context, id uuid.UUID) error
@@ -210,10 +208,6 @@ type sqlcQuerier interface {
// This function returns roles for authorization purposes. Implied member roles
// are included.
GetAuthorizationUserRoles(ctx context.Context, userID uuid.UUID) (GetAuthorizationUserRolesRow, error)
// Aggregates boundary usage statistics across all replicas. Filters to only
// include data where window_start is within the given interval to exclude
// stale data.
GetBoundaryUsageSummary(ctx context.Context, maxStalenessMs int64) (GetBoundaryUsageSummaryRow, error)
GetChatByID(ctx context.Context, id uuid.UUID) (Chat, error)
GetChatByIDForUpdate(ctx context.Context, id uuid.UUID) (Chat, error)
GetChatDiffStatusByChatID(ctx context.Context, chatID uuid.UUID) (ChatDiffStatus, error)
+14 -14
View File
@@ -24955,14 +24955,14 @@ WHERE
workspace_agents.resource_id = workspace_resources.id
WHERE
workspace_resources.job_id = latest_build.provisioner_job_id AND
latest_build.transition = 'start'::workspace_transition AND
-- Filter out deleted sub agents.
workspace_agents.deleted = FALSE AND
(
CASE
WHEN workspace_agents.first_connected_at IS NULL THEN
CASE
WHEN workspace_agents.connection_timeout_seconds > 0 AND NOW() - workspace_agents.created_at > workspace_agents.connection_timeout_seconds * INTERVAL '1 second' THEN
latest_build.transition = 'start'::workspace_transition AND
-- Filter out deleted sub agents.
workspace_agents.deleted = FALSE AND
(
CASE
WHEN workspace_agents.first_connected_at IS NULL THEN
CASE
WHEN workspace_agents.connection_timeout_seconds > 0 AND NOW() - workspace_agents.created_at > workspace_agents.connection_timeout_seconds * INTERVAL '1 second' THEN
'timeout'
ELSE
'connecting'
@@ -24973,12 +24973,12 @@ WHERE
'disconnected'
WHEN workspace_agents.last_connected_at IS NOT NULL THEN
'connected'
ELSE
NULL
END
) = ANY($13 :: text[])
) > 0
ELSE true
ELSE
NULL
END
) = ANY($13 :: text[])
) > 0
ELSE true
END
-- Filter by dormant workspaces.
AND CASE
+2139 -2172
View File
File diff suppressed because it is too large Load Diff
+275 -140
View File
@@ -43,7 +43,8 @@ curl -X GET http://coder-server:8080/api/v2/chats \
"title": "string",
"updated_at": "2019-08-24T14:15:22Z",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"workspace_mode": "workspace"
}
]
```
@@ -58,36 +59,38 @@ curl -X GET http://coder-server:8080/api/v2/chats \
Status Code **200**
| Name | Type | Required | Restrictions | Description |
|-------------------------|--------------------------------------------------------------|----------|--------------|-------------|
| `[array item]` | array | false | | |
| `» created_at` | string(date-time) | false | | |
| `» diff_status` | [codersdk.ChatDiffStatus](schemas.md#codersdkchatdiffstatus) | false | | |
| `»» additions` | integer | false | | |
| `»» changed_files` | integer | false | | |
| `»» changes_requested` | boolean | false | | |
| `»» chat_id` | string(uuid) | false | | |
| `»» deletions` | integer | false | | |
| `»» pull_request_state` | string | false | | |
| `»» refreshed_at` | string(date-time) | false | | |
| `»» stale_at` | string(date-time) | false | | |
| `»» url` | string | false | | |
| `» id` | string(uuid) | false | | |
| `» model_config` | array | false | | |
| `» owner_id` | string(uuid) | false | | |
| `» parent_chat_id` | string(uuid) | false | | |
| `» root_chat_id` | string(uuid) | false | | |
| `» status` | [codersdk.ChatStatus](schemas.md#codersdkchatstatus) | false | | |
| `» title` | string | false | | |
| `» updated_at` | string(date-time) | false | | |
| `» workspace_agent_id` | string(uuid) | false | | |
| `» workspace_id` | string(uuid) | false | | |
| Name | Type | Required | Restrictions | Description |
|-------------------------|--------------------------------------------------------------------|----------|--------------|-------------|
| `[array item]` | array | false | | |
| `» created_at` | string(date-time) | false | | |
| `» diff_status` | [codersdk.ChatDiffStatus](schemas.md#codersdkchatdiffstatus) | false | | |
| `»» additions` | integer | false | | |
| `»» changed_files` | integer | false | | |
| `»» changes_requested` | boolean | false | | |
| `»» chat_id` | string(uuid) | false | | |
| `»» deletions` | integer | false | | |
| `»» pull_request_state` | string | false | | |
| `»» refreshed_at` | string(date-time) | false | | |
| `»» stale_at` | string(date-time) | false | | |
| `»» url` | string | false | | |
| `» id` | string(uuid) | false | | |
| `» model_config` | array | false | | |
| `» owner_id` | string(uuid) | false | | |
| `» parent_chat_id` | string(uuid) | false | | |
| `» root_chat_id` | string(uuid) | false | | |
| `» status` | [codersdk.ChatStatus](schemas.md#codersdkchatstatus) | false | | |
| `» title` | string | false | | |
| `» updated_at` | string(date-time) | false | | |
| `» workspace_agent_id` | string(uuid) | false | | |
| `» workspace_id` | string(uuid) | false | | |
| `» workspace_mode` | [codersdk.ChatWorkspaceMode](schemas.md#codersdkchatworkspacemode) | false | | |
#### Enumerated Values
| Property | Value(s) |
|----------|-----------------------------------------------------------------|
| `status` | `completed`, `error`, `paused`, `pending`, `running`, `waiting` |
| Property | Value(s) |
|------------------|-----------------------------------------------------------------|
| `status` | `completed`, `error`, `paused`, `pending`, `running`, `waiting` |
| `workspace_mode` | `local`, `workspace` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
@@ -125,7 +128,8 @@ curl -X POST http://coder-server:8080/api/v2/chats \
"parent_chat_id": "c3609ee6-3b11-4a93-b9ae-e4fabcc99359",
"system_prompt": "string",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"workspace_mode": "workspace"
}
```
@@ -164,7 +168,8 @@ curl -X POST http://coder-server:8080/api/v2/chats \
"title": "string",
"updated_at": "2019-08-24T14:15:22Z",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"workspace_mode": "workspace"
}
```
@@ -221,6 +226,38 @@ curl -X GET http://coder-server:8080/api/v2/chats/models \
To perform this operation, you must be authenticated. [Learn more](authentication.md).
## Watch chat list updates
### Code samples
```shell
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/chats/watch \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
```
`GET /chats/watch`
### Example responses
> 200 Response
```json
{
"data": null,
"type": "ping"
}
```
### Responses
| Status | Meaning | Description | Schema |
|--------|---------------------------------------------------------|-------------|----------------------------------------------------------------|
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.ServerSentEvent](schemas.md#codersdkserversentevent) |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
## Get a chat
### Code samples
@@ -270,7 +307,8 @@ curl -X GET http://coder-server:8080/api/v2/chats/{chat} \
"title": "string",
"updated_at": "2019-08-24T14:15:22Z",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"workspace_mode": "workspace"
},
"messages": [
{
@@ -330,6 +368,16 @@ curl -X GET http://coder-server:8080/api/v2/chats/{chat} \
"tool_call_id": "string",
"total_tokens": 0
}
],
"queued_messages": [
{
"chat_id": "efc9fe20-a1e5-4a8c-9c48-f1b30c1e4f86",
"content": [
0
],
"created_at": "2019-08-24T14:15:22Z",
"id": 0
}
]
}
```
@@ -503,7 +551,8 @@ curl -X POST http://coder-server:8080/api/v2/chats/{chat}/interrupt \
"title": "string",
"updated_at": "2019-08-24T14:15:22Z",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"workspace_mode": "workspace"
}
```
@@ -554,129 +603,215 @@ curl -X POST http://coder-server:8080/api/v2/chats/{chat}/messages \
> 200 Response
```json
[
{
"cache_creation_tokens": 0,
"cache_read_tokens": 0,
{
"messages": [
{
"cache_creation_tokens": 0,
"cache_read_tokens": 0,
"chat_id": "efc9fe20-a1e5-4a8c-9c48-f1b30c1e4f86",
"content": [
0
],
"context_limit": 0,
"created_at": "2019-08-24T14:15:22Z",
"hidden": true,
"id": 0,
"input_tokens": 0,
"output_tokens": 0,
"parts": [
{
"args": [
0
],
"args_delta": "string",
"data": [
0
],
"is_error": true,
"media_type": "string",
"result": [
0
],
"result_delta": "string",
"result_meta": {
"content": "string",
"created": true,
"error": "string",
"exit_code": 0,
"mime_type": "string",
"output": "string",
"reason": "string",
"workspace_agent_id": "string",
"workspace_id": "string",
"workspace_name": "string",
"workspace_url": "string"
},
"signature": "string",
"source_id": "string",
"text": "string",
"title": "string",
"tool_call_id": "string",
"tool_name": "string",
"type": "text",
"url": "string"
}
],
"reasoning_tokens": 0,
"role": "string",
"thinking": "string",
"tool_call_id": "string",
"total_tokens": 0
}
],
"queued": true,
"queued_message": {
"chat_id": "efc9fe20-a1e5-4a8c-9c48-f1b30c1e4f86",
"content": [
0
],
"context_limit": 0,
"created_at": "2019-08-24T14:15:22Z",
"hidden": true,
"id": 0,
"input_tokens": 0,
"output_tokens": 0,
"parts": [
{
"args": [
0
],
"args_delta": "string",
"data": [
0
],
"is_error": true,
"media_type": "string",
"result": [
0
],
"result_delta": "string",
"result_meta": {
"content": "string",
"created": true,
"error": "string",
"exit_code": 0,
"mime_type": "string",
"output": "string",
"reason": "string",
"workspace_agent_id": "string",
"workspace_id": "string",
"workspace_name": "string",
"workspace_url": "string"
},
"signature": "string",
"source_id": "string",
"text": "string",
"title": "string",
"tool_call_id": "string",
"tool_name": "string",
"type": "text",
"url": "string"
}
],
"reasoning_tokens": 0,
"role": "string",
"thinking": "string",
"tool_call_id": "string",
"total_tokens": 0
"id": 0
}
]
}
```
### Responses
| Status | Meaning | Description | Schema |
|--------|---------------------------------------------------------|-------------|-----------------------------------------------------------------|
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | array of [codersdk.ChatMessage](schemas.md#codersdkchatmessage) |
| Status | Meaning | Description | Schema |
|--------|---------------------------------------------------------|-------------|------------------------------------------------------------------------------------|
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.CreateChatMessageResponse](schemas.md#codersdkcreatechatmessageresponse) |
<h3 id="create-a-chat-message-responseschema">Response Schema</h3>
To perform this operation, you must be authenticated. [Learn more](authentication.md).
Status Code **200**
## Delete a queued chat message
| Name | Type | Required | Restrictions | Description |
|---------------------------|------------------------------------------------------------------------------|----------|--------------|-------------|
| `[array item]` | array | false | | |
| `» cache_creation_tokens` | integer | false | | |
| `» cache_read_tokens` | integer | false | | |
| `» chat_id` | string(uuid) | false | | |
| `» content` | array | false | | |
| `» context_limit` | integer | false | | |
| `» created_at` | string(date-time) | false | | |
| `» hidden` | boolean | false | | |
| `» id` | integer | false | | |
| `» input_tokens` | integer | false | | |
| `» output_tokens` | integer | false | | |
| `» parts` | array | false | | |
| `»» args` | array | false | | |
| `»» args_delta` | string | false | | |
| `»» data` | array | false | | |
| `»» is_error` | boolean | false | | |
| `»» media_type` | string | false | | |
| `»» result` | array | false | | |
| `»» result_delta` | string | false | | |
| `»» result_meta` | [codersdk.ChatToolResultMetadata](schemas.md#codersdkchattoolresultmetadata) | false | | |
| `»»» content` | string | false | | |
| `»»» created` | boolean | false | | |
| `»»» error` | string | false | | |
| `»»» exit_code` | integer | false | | |
| `»»» mime_type` | string | false | | |
| `»»» output` | string | false | | |
| `»»» reason` | string | false | | |
| `»»» workspace_agent_id` | string | false | | |
| `»»» workspace_id` | string | false | | |
| `»»» workspace_name` | string | false | | |
| `»»» workspace_url` | string | false | | |
| `»» signature` | string | false | | |
| `»» source_id` | string | false | | |
| `»» text` | string | false | | |
| `»» title` | string | false | | |
| `»» tool_call_id` | string | false | | |
| `»» tool_name` | string | false | | |
| `»» type` | [codersdk.ChatMessagePartType](schemas.md#codersdkchatmessageparttype) | false | | |
| `»» url` | string | false | | |
| `» reasoning_tokens` | integer | false | | |
| `» role` | string | false | | |
| `» thinking` | string | false | | |
| `» tool_call_id` | string | false | | |
| `» total_tokens` | integer | false | | |
### Code samples
#### Enumerated Values
```shell
# Example request using curl
curl -X DELETE http://coder-server:8080/api/v2/chats/{chat}/queue/{queuedMessage} \
-H 'Coder-Session-Token: API_KEY'
```
| Property | Value(s) |
|----------|-------------------------------------------------------------------|
| `type` | `file`, `reasoning`, `source`, `text`, `tool-call`, `tool-result` |
`DELETE /chats/{chat}/queue/{queuedMessage}`
### Parameters
| Name | In | Type | Required | Description |
|-----------------|------|--------------|----------|-------------------|
| `chat` | path | string(uuid) | true | Chat ID |
| `queuedMessage` | path | integer | true | Queued message ID |
### Responses
| Status | Meaning | Description | Schema |
|--------|-----------------------------------------------------------------|-------------|--------|
| 204 | [No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5) | No Content | |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
## Promote a queued message to send immediately
### Code samples
```shell
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/chats/{chat}/queue/{queuedMessage}/promote \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
```
`POST /chats/{chat}/queue/{queuedMessage}/promote`
### Parameters
| Name | In | Type | Required | Description |
|-----------------|------|--------------|----------|-------------------|
| `chat` | path | string(uuid) | true | Chat ID |
| `queuedMessage` | path | integer | true | Queued message ID |
### Example responses
> 200 Response
```json
{
"messages": [
{
"cache_creation_tokens": 0,
"cache_read_tokens": 0,
"chat_id": "efc9fe20-a1e5-4a8c-9c48-f1b30c1e4f86",
"content": [
0
],
"context_limit": 0,
"created_at": "2019-08-24T14:15:22Z",
"hidden": true,
"id": 0,
"input_tokens": 0,
"output_tokens": 0,
"parts": [
{
"args": [
0
],
"args_delta": "string",
"data": [
0
],
"is_error": true,
"media_type": "string",
"result": [
0
],
"result_delta": "string",
"result_meta": {
"content": "string",
"created": true,
"error": "string",
"exit_code": 0,
"mime_type": "string",
"output": "string",
"reason": "string",
"workspace_agent_id": "string",
"workspace_id": "string",
"workspace_name": "string",
"workspace_url": "string"
},
"signature": "string",
"source_id": "string",
"text": "string",
"title": "string",
"tool_call_id": "string",
"tool_name": "string",
"type": "text",
"url": "string"
}
],
"reasoning_tokens": 0,
"role": "string",
"thinking": "string",
"tool_call_id": "string",
"total_tokens": 0
}
],
"queued": true,
"queued_message": {
"chat_id": "efc9fe20-a1e5-4a8c-9c48-f1b30c1e4f86",
"content": [
0
],
"created_at": "2019-08-24T14:15:22Z",
"id": 0
}
}
```
### Responses
| Status | Meaning | Description | Schema |
|--------|---------------------------------------------------------|-------------|------------------------------------------------------------------------------------|
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.CreateChatMessageResponse](schemas.md#codersdkcreatechatmessageresponse) |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
+2
View File
@@ -208,6 +208,7 @@ curl -X GET http://coder-server:8080/api/v2/deployment/config \
"structured_logging": true
},
"chat": {
"local_workspace": true,
"system_prompt": "string",
"title_generation_prompt": "string"
}
@@ -312,6 +313,7 @@ curl -X GET http://coder-server:8080/api/v2/deployment/config \
}
]
},
"external_auth_github_default_provider_enable": true,
"external_token_encryption_keys": [
"string"
],
+64 -5
View File
@@ -174,7 +174,7 @@ Status Code **200**
| Property | Value(s) |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_personal`, `use`, `view_insights` |
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_agent`, `update_personal`, `use`, `view_insights` |
| `resource_type` | `*`, `aibridge_interception`, `api_key`, `assign_org_role`, `assign_role`, `audit_log`, `boundary_usage`, `chat`, `connection_log`, `crypto_key`, `debug_info`, `deployment_config`, `deployment_stats`, `file`, `group`, `group_member`, `idpsync_settings`, `inbox_notification`, `license`, `notification_message`, `notification_preference`, `notification_template`, `oauth2_app`, `oauth2_app_code_token`, `oauth2_app_secret`, `organization`, `organization_member`, `prebuilt_workspace`, `provisioner_daemon`, `provisioner_jobs`, `replicas`, `system`, `tailnet_coordinator`, `task`, `template`, `usage_event`, `user`, `user_secret`, `webpush_subscription`, `workspace`, `workspace_agent_devcontainers`, `workspace_agent_resource_monitor`, `workspace_dormant`, `workspace_proxy` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
@@ -307,7 +307,7 @@ Status Code **200**
| Property | Value(s) |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_personal`, `use`, `view_insights` |
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_agent`, `update_personal`, `use`, `view_insights` |
| `resource_type` | `*`, `aibridge_interception`, `api_key`, `assign_org_role`, `assign_role`, `audit_log`, `boundary_usage`, `chat`, `connection_log`, `crypto_key`, `debug_info`, `deployment_config`, `deployment_stats`, `file`, `group`, `group_member`, `idpsync_settings`, `inbox_notification`, `license`, `notification_message`, `notification_preference`, `notification_template`, `oauth2_app`, `oauth2_app_code_token`, `oauth2_app_secret`, `organization`, `organization_member`, `prebuilt_workspace`, `provisioner_daemon`, `provisioner_jobs`, `replicas`, `system`, `tailnet_coordinator`, `task`, `template`, `usage_event`, `user`, `user_secret`, `webpush_subscription`, `workspace`, `workspace_agent_devcontainers`, `workspace_agent_resource_monitor`, `workspace_dormant`, `workspace_proxy` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
@@ -440,7 +440,7 @@ Status Code **200**
| Property | Value(s) |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_personal`, `use`, `view_insights` |
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_agent`, `update_personal`, `use`, `view_insights` |
| `resource_type` | `*`, `aibridge_interception`, `api_key`, `assign_org_role`, `assign_role`, `audit_log`, `boundary_usage`, `chat`, `connection_log`, `crypto_key`, `debug_info`, `deployment_config`, `deployment_stats`, `file`, `group`, `group_member`, `idpsync_settings`, `inbox_notification`, `license`, `notification_message`, `notification_preference`, `notification_template`, `oauth2_app`, `oauth2_app_code_token`, `oauth2_app_secret`, `organization`, `organization_member`, `prebuilt_workspace`, `provisioner_daemon`, `provisioner_jobs`, `replicas`, `system`, `tailnet_coordinator`, `task`, `template`, `usage_event`, `user`, `user_secret`, `webpush_subscription`, `workspace`, `workspace_agent_devcontainers`, `workspace_agent_resource_monitor`, `workspace_dormant`, `workspace_proxy` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
@@ -535,11 +535,70 @@ Status Code **200**
| Property | Value(s) |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_personal`, `use`, `view_insights` |
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_agent`, `update_personal`, `use`, `view_insights` |
| `resource_type` | `*`, `aibridge_interception`, `api_key`, `assign_org_role`, `assign_role`, `audit_log`, `boundary_usage`, `chat`, `connection_log`, `crypto_key`, `debug_info`, `deployment_config`, `deployment_stats`, `file`, `group`, `group_member`, `idpsync_settings`, `inbox_notification`, `license`, `notification_message`, `notification_preference`, `notification_template`, `oauth2_app`, `oauth2_app_code_token`, `oauth2_app_secret`, `organization`, `organization_member`, `prebuilt_workspace`, `provisioner_daemon`, `provisioner_jobs`, `replicas`, `system`, `tailnet_coordinator`, `task`, `template`, `usage_event`, `user`, `user_secret`, `webpush_subscription`, `workspace`, `workspace_agent_devcontainers`, `workspace_agent_resource_monitor`, `workspace_dormant`, `workspace_proxy` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
## Get organization member
### Code samples
```shell
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members/{user} \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
```
`GET /organizations/{organization}/members/{user}`
### Parameters
| Name | In | Type | Required | Description |
|----------------|------|--------|----------|----------------------|
| `organization` | path | string | true | Organization ID |
| `user` | path | string | true | User ID, name, or me |
### Example responses
> 200 Response
```json
{
"avatar_url": "string",
"created_at": "2019-08-24T14:15:22Z",
"email": "string",
"global_roles": [
{
"display_name": "string",
"name": "string",
"organization_id": "string"
}
],
"name": "string",
"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
"roles": [
{
"display_name": "string",
"name": "string",
"organization_id": "string"
}
],
"updated_at": "2019-08-24T14:15:22Z",
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
"username": "string"
}
```
### Responses
| Status | Meaning | Description | Schema |
|--------|---------------------------------------------------------|-------------|----------------------------------------------------------------------------------------------|
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.OrganizationMemberWithUserData](schemas.md#codersdkorganizationmemberwithuserdata) |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
## Add organization member
### Code samples
@@ -852,7 +911,7 @@ Status Code **200**
| Property | Value(s) |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_personal`, `use`, `view_insights` |
| `action` | `application_connect`, `assign`, `create`, `create_agent`, `delete`, `delete_agent`, `read`, `read_personal`, `share`, `ssh`, `start`, `stop`, `unassign`, `update`, `update_agent`, `update_personal`, `use`, `view_insights` |
| `resource_type` | `*`, `aibridge_interception`, `api_key`, `assign_org_role`, `assign_role`, `audit_log`, `boundary_usage`, `chat`, `connection_log`, `crypto_key`, `debug_info`, `deployment_config`, `deployment_stats`, `file`, `group`, `group_member`, `idpsync_settings`, `inbox_notification`, `license`, `notification_message`, `notification_preference`, `notification_template`, `oauth2_app`, `oauth2_app_code_token`, `oauth2_app_secret`, `organization`, `organization_member`, `prebuilt_workspace`, `provisioner_daemon`, `provisioner_jobs`, `replicas`, `system`, `tailnet_coordinator`, `task`, `template`, `usage_event`, `user`, `user_secret`, `webpush_subscription`, `workspace`, `workspace_agent_devcontainers`, `workspace_agent_resource_monitor`, `workspace_dormant`, `workspace_proxy` |
To perform this operation, you must be authenticated. [Learn more](authentication.md).
+792 -151
View File
File diff suppressed because it is too large Load Diff
+22
View File
@@ -1258,6 +1258,17 @@ The upgrade message to display to users when a client/server mismatch is detecte
Support links to display in the top right drop down menu.
### --external-auth-github-default-provider-enable
| | |
|-------------|------------------------------------------------------------------|
| Type | <code>bool</code> |
| Environment | <code>$CODER_EXTERNAL_AUTH_GITHUB_DEFAULT_PROVIDER_ENABLE</code> |
| YAML | <code>externalAuthGithubDefaultProviderEnable</code> |
| Default | <code>true</code> |
Enable the default GitHub external auth provider managed by Coder.
### --proxy-health-interval
| | |
@@ -1782,6 +1793,17 @@ Default system prompt inserted into new chats.
Prompt used to generate chat titles from the first user message.
### --agent-local-workspace
| | |
|-------------|---------------------------------------------|
| Type | <code>bool</code> |
| Environment | <code>$CODER_AGENT_LOCAL_WORKSPACE</code> |
| YAML | <code>aibridge.agent_local_workspace</code> |
| Default | <code>false</code> |
Enable admin-only local workspace mode for agent chats.
### --aibridge-enabled
| | |
+3
View File
@@ -175,6 +175,9 @@ AI BRIDGE OPTIONS:
Emit structured logs for AI Bridge interception records. Use this for
exporting these records to external SIEM or observability systems.
--agent-local-workspace bool, $CODER_AGENT_LOCAL_WORKSPACE (default: false)
Enable admin-only local workspace mode for agent chats.
--chat-anthropic-models-url string, $CODER_CHAT_ANTHROPIC_MODELS_URL
Override URL used to list Anthropic models for the chat model catalog.
+68 -57
View File
@@ -1,6 +1,6 @@
module github.com/coder/coder/v2
go 1.25.7
go 1.26.0
// Required until a v3 of chroma is created to lazily initialize all XML files.
// None of our dependencies seem to use the registries anyways, so this
@@ -72,6 +72,10 @@ replace github.com/aquasecurity/trivy => github.com/coder/trivy v0.0.0-202508072
// https://github.com/spf13/afero/pull/487
replace github.com/spf13/afero => github.com/aslilac/afero v0.0.0-20250403163713-f06e86036696
replace charm.land/fantasy => github.com/kylecarbs/fantasy v0.0.0-20260223143421-5a87b67fe568
replace github.com/charmbracelet/anthropic-sdk-go => github.com/kylecarbs/anthropic-sdk-go v0.0.0-20260223140439-63879b0b8dab
require (
cdr.dev/slog/v3 v3.0.0-rc1
cloud.google.com/go/compute/metadata v0.9.0
@@ -83,7 +87,7 @@ require (
github.com/aquasecurity/trivy-iac v0.8.0
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2
github.com/awalterschulze/gographviz v2.0.3+incompatible
github.com/aws/smithy-go v1.24.0
github.com/aws/smithy-go v1.24.1
github.com/bramvdbogaerde/go-scp v1.6.0
github.com/briandowns/spinner v1.23.0
github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5
@@ -138,7 +142,7 @@ require (
github.com/google/uuid v1.6.0
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/go-reap v0.0.0-20170704170343-bf58d8a43e7b
github.com/hashicorp/go-version v1.7.0
github.com/hashicorp/go-version v1.8.0
github.com/hashicorp/hc-install v0.9.2
github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f
github.com/hashicorp/terraform-json v0.27.2
@@ -150,7 +154,7 @@ require (
github.com/justinas/nosurf v1.2.0
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f
github.com/klauspost/compress v1.18.2
github.com/klauspost/compress v1.18.4
github.com/lib/pq v1.10.9
github.com/mattn/go-isatty v0.0.20
github.com/mitchellh/go-wordwrap v1.0.1
@@ -167,7 +171,7 @@ require (
github.com/prometheus-community/pro-bing v0.8.0
github.com/prometheus/client_golang v1.23.2
github.com/prometheus/client_model v0.6.2
github.com/prometheus/common v0.67.4
github.com/prometheus/common v0.67.5
github.com/quasilyte/go-ruleguard/dsl v0.3.22
github.com/robfig/cron/v3 v3.0.1
github.com/shirou/gopsutil/v4 v4.26.1
@@ -186,17 +190,17 @@ require (
github.com/zclconf/go-cty-yaml v1.2.0
go.mozilla.org/pkcs7 v0.9.0
go.nhat.io/otelsql v0.16.0
go.opentelemetry.io/otel v1.39.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0
go.opentelemetry.io/otel/sdk v1.39.0
go.opentelemetry.io/otel/trace v1.39.0
go.opentelemetry.io/otel v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0
go.opentelemetry.io/otel/sdk v1.40.0
go.opentelemetry.io/otel/trace v1.40.0
go.uber.org/atomic v1.11.0
go.uber.org/goleak v1.3.1-0.20240429205332-517bace7cc29
go.uber.org/mock v0.6.0
go4.org/netipx v0.0.0-20230728180743-ad4cb58a6516
golang.org/x/crypto v0.48.0
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa
golang.org/x/mod v0.33.0
golang.org/x/net v0.50.0
golang.org/x/oauth2 v0.35.0
@@ -219,7 +223,7 @@ require (
)
require (
cloud.google.com/go/auth v0.18.1 // indirect
cloud.google.com/go/auth v0.18.2 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
dario.cat/mergo v1.0.1 // indirect
filippo.io/edwards25519 v1.1.1 // indirect
@@ -253,19 +257,19 @@ require (
github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.1
github.com/aws/aws-sdk-go-v2/config v1.32.1
github.com/aws/aws-sdk-go-v2/credentials v1.19.1 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 // indirect
github.com/aws/aws-sdk-go-v2/config v1.32.9
github.com/aws/aws-sdk-go-v2/credentials v1.19.9 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.2
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.14 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/service/ssm v1.60.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.4 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.9 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.10 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.14 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
@@ -288,7 +292,7 @@ require (
github.com/dop251/goja v0.0.0-20241024094426-79f3a7efcdbd // indirect
github.com/dustin/go-humanize v1.0.1
github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 // indirect
github.com/ebitengine/purego v0.9.1 // indirect
github.com/ebitengine/purego v0.10.0-alpha.5 // indirect
github.com/elastic/go-windows v1.0.0 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -305,7 +309,7 @@ require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gobwas/httphead v0.1.0 // indirect
github.com/gobwas/pool v0.2.1 // indirect
@@ -321,10 +325,10 @@ require (
github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.12 // indirect
github.com/googleapis/gax-go/v2 v2.17.0 // indirect
github.com/gorilla/css v1.0.1 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.5.0 // indirect
@@ -336,12 +340,11 @@ require (
github.com/hashicorp/hcl/v2 v2.24.0
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.10.0 // indirect
github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 // indirect
github.com/hdevalence/ed25519consensus v0.1.0 // indirect
github.com/illarion/gonotify v1.0.1 // indirect
github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2 // indirect
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/josharian/native v1.1.1-0.20230202152459-5c7d0dd6ab86 // indirect
github.com/jsimonetti/rtnetlink v1.3.5 // indirect
@@ -388,14 +391,14 @@ require (
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
github.com/prometheus/procfs v0.19.2 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/riandyrn/otelchi v0.5.1 // indirect
github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b // indirect
github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sirupsen/logrus v1.9.4 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/swaggo/files/v2 v2.0.0 // indirect
@@ -437,9 +440,9 @@ require (
go.opentelemetry.io/collector/pdata/pprofile v0.121.0 // indirect
go.opentelemetry.io/collector/semconv v0.123.0 // indirect
go.opentelemetry.io/contrib v1.19.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0
go.opentelemetry.io/otel/metric v1.39.0 // indirect
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0
go.opentelemetry.io/otel/metric v1.40.0 // indirect
go.opentelemetry.io/proto/otlp v1.9.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
go4.org/mem v0.0.0-20220726221520-4f986261bf13 // indirect
@@ -448,10 +451,10 @@ require (
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6 // indirect
golang.zx2c4.com/wireguard/windows v0.5.3 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
google.golang.org/genproto v0.0.0-20260217215200-42d3e9bedb6d // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260217215200-42d3e9bedb6d // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260217215200-42d3e9bedb6d // indirect
gopkg.in/ini.v1 v1.67.1 // indirect
howett.net/plist v1.0.0 // indirect
kernel.org/pub/linux/libs/security/libcap/psx v1.2.77 // indirect
sigs.k8s.io/yaml v1.5.0 // indirect
@@ -464,12 +467,13 @@ require github.com/SherClockHolmes/webpush-go v1.4.0
require (
github.com/charmbracelet/colorprofile v0.4.1 // indirect
github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 // indirect
github.com/go-json-experiment/json v0.0.0-20251027170946-4849db3c2f7e // indirect
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
)
require (
charm.land/fantasy v0.8.1
github.com/anthropics/anthropic-sdk-go v1.19.0
github.com/brianvoe/gofakeit/v7 v7.14.0
github.com/coder/agentapi-sdk-go v0.0.0-20250505131810-560d1d88d225
@@ -482,11 +486,8 @@ require (
github.com/elazarl/goproxy v1.8.0
github.com/fsnotify/fsnotify v1.9.0
github.com/go-git/go-git/v5 v5.16.5
github.com/google/jsonschema-go v0.3.0
github.com/icholy/replace v0.6.0
github.com/mark3labs/mcp-go v0.38.0
github.com/openai/openai-go/v2 v2.7.1
go.jetify.com/ai v0.5.1
gonum.org/v1/gonum v0.17.0
)
@@ -494,19 +495,19 @@ require (
cel.dev/expr v0.25.1 // indirect
cloud.google.com/go v0.123.0 // indirect
cloud.google.com/go/iam v1.5.3 // indirect
cloud.google.com/go/logging v1.13.1 // indirect
cloud.google.com/go/logging v1.13.2 // indirect
cloud.google.com/go/longrunning v0.8.0 // indirect
cloud.google.com/go/monitoring v1.24.3 // indirect
cloud.google.com/go/storage v1.56.0 // indirect
cloud.google.com/go/storage v1.60.0 // indirect
git.sr.ht/~jackmordaunt/go-toast v1.1.2 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
github.com/DataDog/datadog-agent/comp/core/tagger/origindetection v0.64.2 // indirect
github.com/DataDog/datadog-agent/pkg/version v0.64.2 // indirect
github.com/DataDog/dd-trace-go/v2 v2.0.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
github.com/Masterminds/semver/v3 v3.3.1 // indirect
github.com/alecthomas/chroma v0.10.0 // indirect
github.com/aquasecurity/go-version v0.0.1 // indirect
@@ -514,24 +515,29 @@ require (
github.com/aquasecurity/jfather v0.0.8 // indirect
github.com/aquasecurity/trivy v0.61.1-0.20250407075540-f1329c7ea1aa // indirect
github.com/aquasecurity/trivy-checks v1.11.3-0.20250604022615-9a7efa7c9169 // indirect
github.com/aws/aws-sdk-go v1.55.7 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.1 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 // indirect
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bits-and-blooms/bitset v1.24.4 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf // indirect
github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904 // indirect
github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 // indirect
github.com/charmbracelet/x/json v0.2.0 // indirect
github.com/clipperhouse/displaywidth v0.9.0 // indirect
github.com/clipperhouse/stringish v0.1.1 // indirect
github.com/clipperhouse/uax29/v2 v2.5.0 // indirect
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect
github.com/coder/paralleltestctx v0.0.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
github.com/daixiang0/gci v0.13.7 // indirect
github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
github.com/envoyproxy/go-control-plane/envoy v1.37.0 // indirect
github.com/envoyproxy/protoc-gen-validate v1.3.3 // indirect
github.com/esiqveland/notify v0.13.3 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.6.2 // indirect
@@ -539,19 +545,24 @@ require (
github.com/goccy/go-yaml v1.19.2 // indirect
github.com/google/go-containerregistry v0.20.6 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/hashicorp/go-getter v1.7.9 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.70 // indirect
github.com/hashicorp/go-getter v1.8.4 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/invopop/jsonschema v0.13.0 // indirect
github.com/jackmordaunt/icns/v3 v3.0.1 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kaptinlin/go-i18n v0.2.11 // indirect
github.com/kaptinlin/jsonpointer v0.4.16 // indirect
github.com/kaptinlin/jsonschema v0.7.3 // indirect
github.com/kaptinlin/messageformat-go v0.4.18 // indirect
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
github.com/landlock-lsm/go-landlock v0.0.0-20251103212306-430f8e5cd97c // indirect
github.com/mattn/go-shellwords v1.0.12 // indirect
github.com/moby/sys/user v0.4.0 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/openai/openai-go v1.12.0 // indirect
github.com/openai/openai-go/v2 v2.7.1 // indirect
github.com/openai/openai-go/v3 v3.15.0 // indirect
github.com/package-url/packageurl-go v0.1.3 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
@@ -574,13 +585,13 @@ require (
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
github.com/zeebo/xxh3 v1.0.2 // indirect
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect
go.opentelemetry.io/contrib/detectors/gcp v1.40.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v4 v4.0.0-rc.3 // indirect
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect
google.golang.org/genai v1.12.0 // indirect
google.golang.org/genai v1.47.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
k8s.io/utils v0.0.0-20241210054802-24370beab758 // indirect
mvdan.cc/gofumpt v0.8.0 // indirect
+134 -1514
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
1.14.5
1.14.1
+2
View File
@@ -217,6 +217,7 @@ export const RBACResourceActions: Partial<
start: "allows starting a workspace",
stop: "allows stopping a workspace",
update: "edit workspace settings (scheduling, permissions, parameters)",
update_agent: "update an existing workspace agent",
},
workspace_agent_devcontainers: {
create: "create workspace agent devcontainers",
@@ -238,6 +239,7 @@ export const RBACResourceActions: Partial<
start: "allows starting a workspace",
stop: "allows stopping a workspace",
update: "edit workspace settings (scheduling, permissions, parameters)",
update_agent: "update an existing workspace agent",
},
workspace_proxy: {
create: "create a workspace proxy",
+4704 -3481
View File
File diff suppressed because it is too large Load Diff
+6
View File
@@ -5,6 +5,7 @@
"amazon-q.svg",
"android-studio.svg",
"ansible.svg",
"anthropic.svg",
"antigravity.svg",
"apache-guacamole.svg",
"apple-black.svg",
@@ -56,9 +57,11 @@
"gateway.svg",
"gcp.png",
"gcp.svg",
"gemini-monochrome.svg",
"gemini.svg",
"git.svg",
"gitea.svg",
"github-copilot.svg",
"github.svg",
"gitlab.svg",
"go.svg",
@@ -78,6 +81,7 @@
"k8s.svg",
"kasmvnc.svg",
"keycloak.svg",
"kilo-code.svg",
"kiro.svg",
"kotlin.svg",
"lakefs.svg",
@@ -96,6 +100,7 @@
"nomad.svg",
"novnc.svg",
"okta.svg",
"openai-codex.svg",
"openai.svg",
"opencode.svg",
"openwebui.svg",
@@ -112,6 +117,7 @@
"rdp.svg",
"rider.svg",
"rockylinux.svg",
"roo-code.svg",
"rstudio.svg",
"ruby.png",
"ruby.svg",