Skip to content

Commit 34fa8b2

Browse files
committed
fix: address workspace skills review findings
1 parent e4914f3 commit 34fa8b2

4 files changed

Lines changed: 64 additions & 6 deletions

File tree

coderd/workspaceskills_test.go

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package coderd_test
22

33
import (
44
"context"
5+
"database/sql"
56
"encoding/json"
67
"net/http"
78
"os"
@@ -10,6 +11,7 @@ import (
1011
"testing"
1112

1213
"github.com/google/uuid"
14+
"github.com/sqlc-dev/pqtype"
1315
"github.com/stretchr/testify/require"
1416
"go.uber.org/mock/gomock"
1517
"golang.org/x/xerrors"
@@ -20,6 +22,8 @@ import (
2022
"github.com/coder/coder/v2/coderd/coderdtest"
2123
"github.com/coder/coder/v2/coderd/database"
2224
"github.com/coder/coder/v2/coderd/database/dbauthz"
25+
"github.com/coder/coder/v2/coderd/database/dbgen"
26+
"github.com/coder/coder/v2/coderd/database/dbtime"
2327
"github.com/coder/coder/v2/coderd/rbac"
2428
"github.com/coder/coder/v2/coderd/workspaceapps"
2529
"github.com/coder/coder/v2/codersdk"
@@ -147,15 +151,60 @@ func TestGetWorkspaceSkills(t *testing.T) {
147151
require.Empty(t, skills)
148152
require.NotNil(t, skills)
149153

150-
workspace = coderdtest.MustTransitionWorkspace(t, client, workspace.ID, codersdk.WorkspaceTransitionStop, codersdk.WorkspaceTransitionDelete)
151-
require.NoError(t, db.UpdateWorkspaceDeletedByID(dbauthz.AsSystemRestricted(ctx), database.UpdateWorkspaceDeletedByIDParams{
152-
ID: workspace.ID,
153-
Deleted: false,
154-
}))
154+
deleteJobID := uuid.New()
155+
now := dbtime.Now()
156+
_, err = db.InsertProvisionerJob(dbauthz.AsSystemRestricted(ctx), database.InsertProvisionerJobParams{
157+
ID: deleteJobID,
158+
CreatedAt: now,
159+
UpdatedAt: now,
160+
OrganizationID: user.OrganizationID,
161+
InitiatorID: user.UserID,
162+
Provisioner: database.ProvisionerTypeEcho,
163+
StorageMethod: database.ProvisionerStorageMethodFile,
164+
FileID: uuid.New(),
165+
Type: database.ProvisionerJobTypeWorkspaceBuild,
166+
Input: json.RawMessage("{}"),
167+
Tags: database.StringMap{},
168+
TraceMetadata: pqtype.NullRawMessage{},
169+
})
170+
require.NoError(t, err)
171+
deleteBuild := dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{
172+
WorkspaceID: workspace.ID,
173+
TemplateVersionID: workspace.LatestBuild.TemplateVersionID,
174+
BuildNumber: workspace.LatestBuild.BuildNumber + 1,
175+
Transition: database.WorkspaceTransitionDelete,
176+
InitiatorID: user.UserID,
177+
JobID: deleteJobID,
178+
})
179+
deleteResource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
180+
JobID: deleteBuild.JobID,
181+
Transition: database.WorkspaceTransitionDelete,
182+
})
183+
connectedAt := dbtime.Now()
184+
dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
185+
ResourceID: deleteResource.ID,
186+
FirstConnectedAt: sql.NullTime{
187+
Time: connectedAt,
188+
Valid: true,
189+
},
190+
LastConnectedAt: sql.NullTime{
191+
Time: connectedAt,
192+
Valid: true,
193+
},
194+
})
195+
agentProviderCalled := false
196+
restore = coderd.SetAgentProviderForTest(api, workspaceSkillsAgentProvider{
197+
agentConn: func(context.Context, uuid.UUID) (workspacesdk.AgentConn, func(), error) {
198+
agentProviderCalled = true
199+
return nil, nil, xerrors.New("unexpected agent dial")
200+
},
201+
})
155202
skills, err = expClient.WorkspaceSkills(ctx, workspace.ID)
203+
restore()
156204
require.NoError(t, err)
157205
require.Empty(t, skills)
158206
require.NotNil(t, skills)
207+
require.False(t, agentProviderCalled)
159208

160209
require.NoError(t, db.UpdateWorkspaceDeletedByID(dbauthz.AsSystemRestricted(ctx), database.UpdateWorkspaceDeletedByIDParams{
161210
ID: workspace.ID,

site/src/pages/AgentsPage/AgentChatPage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,7 @@ const AgentChatPage: FC = () => {
15851585
canShareChat={canShareChat}
15861586
workspace={workspace}
15871587
workspaceAgent={workspaceAgent}
1588+
workspaceAgentId={workspaceAgentId}
15881589
chatBuildId={chatQuery.data?.build_id}
15891590
store={store}
15901591
editing={editing}

site/src/pages/AgentsPage/AgentChatPageView.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ interface AgentChatPageViewProps {
9898
canUpdateOtherUserChatLoading: boolean;
9999
canShareChat: boolean;
100100
workspaceAgent?: TypesGen.WorkspaceAgent;
101+
workspaceAgentId?: string;
101102
workspace?: TypesGen.Workspace;
102103
chatBuildId?: string;
103104

@@ -205,6 +206,7 @@ export const AgentChatPageView: FC<AgentChatPageViewProps> = ({
205206
canUpdateOtherUserChatLoading,
206207
canShareChat,
207208
workspaceAgent,
209+
workspaceAgentId,
208210
workspace,
209211
chatBuildId,
210212
store,
@@ -591,6 +593,7 @@ export const AgentChatPageView: FC<AgentChatPageViewProps> = ({
591593
lastInjectedContext={lastInjectedContext}
592594
workspace={workspace}
593595
workspaceAgent={workspaceAgent}
596+
workspaceAgentId={workspaceAgentId}
594597
chatId={agentId}
595598
sshCommand={sshCommand}
596599
attachedWorkspace={attachedWorkspace}

site/src/pages/AgentsPage/components/ChatPageContent.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ interface ChatPageInputProps {
247247
isWorkspaceLoading: boolean;
248248
workspace?: TypesGen.Workspace;
249249
workspaceAgent?: TypesGen.WorkspaceAgent;
250+
workspaceAgentId?: string;
250251
chatId?: string;
251252
sshCommand?: string;
252253
attachedWorkspace?: AttachedWorkspaceInfo;
@@ -299,6 +300,7 @@ export const ChatPageInput: FC<ChatPageInputProps> = ({
299300
isWorkspaceLoading,
300301
workspace,
301302
workspaceAgent,
303+
workspaceAgentId,
302304
chatId,
303305
sshCommand,
304306
attachedWorkspace,
@@ -335,7 +337,10 @@ export const ChatPageInput: FC<ChatPageInputProps> = ({
335337
const shouldUsePersistedWorkspaceSkills =
336338
chatId !== undefined &&
337339
lastInjectedContext !== undefined &&
338-
contextBelongsToAgent(lastInjectedContext, workspaceAgent?.id);
340+
contextBelongsToAgent(
341+
lastInjectedContext,
342+
workspaceAgentId ?? workspaceAgent?.id,
343+
);
339344
const workspaceSkillsOverride = shouldUsePersistedWorkspaceSkills
340345
? workspaceSkillsFromContext(lastInjectedContext ?? [])
341346
: undefined;

0 commit comments

Comments
 (0)