Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
cb78ea1
add design and queries for source environments
qstearns Nov 10, 2025
646f613
add source environment query into tool call flow
qstearns Nov 4, 2025
a94f5e4
sdk gen
qstearns Nov 10, 2025
66b97d9
move sources components and add SourceCard
qstearns Nov 5, 2025
988e113
prepare structure for new modal
qstearns Nov 5, 2025
bf41aca
switch to zustand and add modal
qstearns Nov 5, 2025
2256571
add apply environment scaffold and switch to moonshine stuff
qstearns Nov 6, 2025
3aefe55
Implement apply source dialog
qstearns Nov 10, 2025
17bcdf3
update language to attach
qstearns Nov 10, 2025
0f12433
docs(changeset): Adds the ability to attach an environment to a sourc…
qstearns Nov 10, 2025
ce3df7c
extract environment stuff to separate functions
qstearns Nov 10, 2025
9862973
modify schema for environments in tool call proxy
qstearns Nov 11, 2025
cc6bac8
merge system and user config in function calls
qstearns Nov 11, 2025
b929740
pass variables through in http tool calls
qstearns Nov 11, 2025
d324b1f
discard logic from rpc_tools_call.go
qstearns Nov 11, 2025
e1e752b
fix test cases
qstearns Nov 11, 2025
44ec413
modify resources to respect source environments
qstearns Nov 11, 2025
8214ba0
modify instances to respect source environments
qstearns Nov 11, 2025
ba5181c
respect system env in chat
qstearns Nov 11, 2025
09e044d
respect system env in resources
qstearns Nov 11, 2025
4c3271e
proper merge behavior
qstearns Nov 11, 2025
3337921
add test cases
qstearns Nov 11, 2025
ed3530c
remove sources from stop infra task
qstearns Nov 11, 2025
12ca23e
allow system environment to set server URLs
qstearns Nov 12, 2025
d92dd26
switch to CI env map
qstearns Nov 12, 2025
2c1d227
improve jankiness of terrible modal slightly
qstearns Nov 12, 2025
14ac200
fix tests
qstearns Nov 12, 2025
3ce338a
fix casing bug
qstearns Nov 12, 2025
394c355
add back ouath token behavior
qstearns Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/mighty-sheep-sip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"dashboard": minor
"server": minor
---

Adds the ability to attach an environment to a source such that all tool calls originating from that source will have those environment variables apply
2 changes: 1 addition & 1 deletion .mise-tasks/infra/stop.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@

set -e

docker compose --profile "*" down --remove-orphans
docker compose --profile "*" down --remove-orphans
356 changes: 356 additions & 0 deletions .speakeasy/out.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3002,6 +3002,220 @@ paths:
x-speakeasy-name-override: deleteBySlug
x-speakeasy-react-hook:
name: DeleteEnvironment
/rpc/environments.deleteSourceLink:
delete:
description: Delete a link between a source and an environment
operationId: deleteSourceEnvironmentLink
parameters:
- allowEmptyValue: true
description: The kind of source (http or function)
in: query
name: source_kind
required: true
schema:
description: The kind of source that can be linked to an environment
enum:
- http
- function
type: string
- allowEmptyValue: true
description: The slug of the source
in: query
name: source_slug
required: true
schema:
description: The slug of the source
type: string
- allowEmptyValue: true
description: Session header
in: header
name: Gram-Session
schema:
description: Session header
type: string
- allowEmptyValue: true
description: project header
in: header
name: Gram-Project
schema:
description: project header
type: string
responses:
"200":
description: OK response.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'bad_request: request is invalid'
"401":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unauthorized: unauthorized access'
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'forbidden: permission denied'
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'not_found: resource not found'
"409":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'conflict: resource already exists'
"415":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unsupported_media: unsupported media type'
"422":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'invalid: request contains one or more invalidation fields'
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unexpected: an unexpected error occurred'
"502":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'gateway_error: an unexpected error occurred'
security:
- project_slug_header_Gram-Project: []
session_header_Gram-Session: []
- {}
summary: deleteSourceEnvironmentLink environments
tags:
- environments
x-speakeasy-name-override: deleteSourceLink
x-speakeasy-react-hook:
name: DeleteSourceEnvironmentLink
/rpc/environments.getSourceEnvironment:
get:
description: Get the environment linked to a source
operationId: getSourceEnvironment
parameters:
- allowEmptyValue: true
description: The kind of source (http or function)
in: query
name: source_kind
required: true
schema:
description: The kind of source that can be linked to an environment
enum:
- http
- function
type: string
- allowEmptyValue: true
description: The slug of the source
in: query
name: source_slug
required: true
schema:
description: The slug of the source
type: string
- allowEmptyValue: true
description: Session header
in: header
name: Gram-Session
schema:
description: Session header
type: string
- allowEmptyValue: true
description: project header
in: header
name: Gram-Project
schema:
description: project header
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Environment'
description: OK response.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'bad_request: request is invalid'
"401":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unauthorized: unauthorized access'
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'forbidden: permission denied'
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'not_found: resource not found'
"409":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'conflict: resource already exists'
"415":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unsupported_media: unsupported media type'
"422":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'invalid: request contains one or more invalidation fields'
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unexpected: an unexpected error occurred'
"502":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'gateway_error: an unexpected error occurred'
security:
- project_slug_header_Gram-Project: []
session_header_Gram-Session: []
- {}
summary: getSourceEnvironment environments
tags:
- environments
x-speakeasy-name-override: getBySource
x-speakeasy-react-hook:
name: GetSourceEnvironment
/rpc/environments.list:
get:
description: List all environments for an organization
Expand Down Expand Up @@ -3092,6 +3306,102 @@ paths:
x-speakeasy-name-override: list
x-speakeasy-react-hook:
name: ListEnvironments
/rpc/environments.setSourceLink:
put:
description: Set (upsert) a link between a source and an environment
operationId: setSourceEnvironmentLink
parameters:
- allowEmptyValue: true
description: Session header
in: header
name: Gram-Session
schema:
description: Session header
type: string
- allowEmptyValue: true
description: project header
in: header
name: Gram-Project
schema:
description: project header
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetSourceEnvironmentLinkRequestBody'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/SourceEnvironmentLink'
description: OK response.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'bad_request: request is invalid'
"401":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unauthorized: unauthorized access'
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'forbidden: permission denied'
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'not_found: resource not found'
"409":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'conflict: resource already exists'
"415":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unsupported_media: unsupported media type'
"422":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'invalid: request contains one or more invalidation fields'
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'unexpected: an unexpected error occurred'
"502":
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: 'gateway_error: an unexpected error occurred'
security:
- project_slug_header_Gram-Project: []
session_header_Gram-Session: []
- {}
summary: setSourceEnvironmentLink environments
tags:
- environments
x-speakeasy-name-override: setSourceLink
x-speakeasy-react-hook:
name: SetSourceEnvironmentLink
/rpc/environments.update:
post:
description: Update an environment
Expand Down Expand Up @@ -11115,6 +11425,52 @@ components:
$ref: '#/components/schemas/Project'
required:
- project
SetSourceEnvironmentLinkRequestBody:
type: object
properties:
environment_id:
type: string
description: The ID of the environment to link
format: uuid
source_kind:
type: string
description: The kind of source (http or function)
enum:
- http
- function
source_slug:
type: string
description: The slug of the source
required:
- source_kind
- source_slug
- environment_id
SourceEnvironmentLink:
type: object
properties:
environment_id:
type: string
description: The ID of the environment
format: uuid
id:
type: string
description: The ID of the source environment link
format: uuid
source_kind:
type: string
description: The kind of source that can be linked to an environment
enum:
- http
- function
source_slug:
type: string
description: The slug of the source
description: A link between a source and an environment
required:
- id
- source_kind
- source_slug
- environment_id
TierLimits:
type: object
properties:
Expand Down
Loading
Loading