Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8c2b2cc

Browse files
BrunoQuaresmamafredri
authored andcommitted
migrate task page
1 parent0d50763 commit8c2b2cc

File tree

10 files changed

+124
-156
lines changed

10 files changed

+124
-156
lines changed

‎site/src/api/api.ts‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,8 +2730,16 @@ class ExperimentalApiMethods {
27302730
returnres.data.tasks;
27312731
};
27322732

2733-
deleteTask=async(user:string,name:string):Promise<void>=>{
2734-
awaitthis.axios.delete(`/api/experimental/tasks/${user}/${name}`);
2733+
getTask=async(user:string,id:string):Promise<TypesGen.Task>=>{
2734+
constresponse=awaitthis.axios.get<TypesGen.Task>(
2735+
`/api/experimental/tasks/${user}/${id}`,
2736+
);
2737+
2738+
returnresponse.data;
2739+
};
2740+
2741+
deleteTask=async(user:string,id:string):Promise<void>=>{
2742+
awaitthis.axios.delete(`/api/experimental/tasks/${user}/${id}`);
27352743
};
27362744

27372745
createTaskFeedback=async(

‎site/src/modules/apps/apps.ts‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ const ALLOWED_EXTERNAL_APP_PROTOCOLS = [
2525
"kiro:",
2626
];
2727

28+
exporttypeWorkspaceAppWithAgent=WorkspaceApp&{
29+
agent:WorkspaceAgent;
30+
};
31+
2832
typeGetVSCodeHrefParams={
2933
owner:string;
3034
workspace:string;
@@ -144,3 +148,16 @@ export const needsSessionToken = (app: ExternalWorkspaceApp) => {
144148
constrequiresSessionToken=app.url.includes(SESSION_TOKEN_PLACEHOLDER);
145149
returnrequiresSessionToken&&!isHttp;
146150
};
151+
152+
exportfunctiongetAllAppsWithAgent(
153+
workspace:Workspace,
154+
):WorkspaceAppWithAgent[]{
155+
returnworkspace.latest_build.resources
156+
.flatMap((r)=>r.agents??[])
157+
.flatMap((agent)=>
158+
agent.apps.map((app)=>({
159+
...app,
160+
agent,
161+
})),
162+
);
163+
}

‎site/src/modules/tasks/TaskDeleteDialog/TaskDeleteDialog.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const TaskDeleteDialog: FC<TaskDeleteDialogProps> = ({
2020
})=>{
2121
constqueryClient=newQueryClient();
2222
constdeleteTaskMutation=useMutation({
23-
mutationFn:()=>API.experimental.deleteTask(task.owner_name,task.name),
23+
mutationFn:()=>API.experimental.deleteTask(task.owner_name,task.id),
2424
onSuccess:async()=>{
2525
awaitqueryClient.invalidateQueries({queryKey:["tasks"]});
2626
},

‎site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import {
2929
import{useAuthenticated}from"hooks/useAuthenticated";
3030
import{useExternalAuth}from"hooks/useExternalAuth";
3131
import{ArrowUpIcon,RedoIcon,RotateCcwIcon}from"lucide-react";
32-
import{AI_PROMPT_PARAMETER_NAME}from"modules/tasks/tasks";
3332
import{typeFC,useEffect,useState}from"react";
3433
import{useMutation,useQuery,useQueryClient}from"react-query";
3534
importTextareaAutosize,{
@@ -39,6 +38,8 @@ import { docs } from "utils/docs";
3938
import{PromptSelectTrigger}from"./PromptSelectTrigger";
4039
import{TemplateVersionSelect}from"./TemplateVersionSelect";
4140

41+
constAI_PROMPT_PARAMETER_NAME="AI Prompt";
42+
4243
typeTaskPromptProps={
4344
templates:Template[]|undefined;
4445
error:unknown;

‎site/src/modules/tasks/tasks.ts‎

Lines changed: 0 additions & 27 deletions
This file was deleted.

‎site/src/pages/TaskPage/TaskAppIframe.tsx‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importtype{Workspace}from"api/typesGenerated";
12
import{Button}from"components/Button/Button";
23
import{
34
DropdownMenu,
@@ -8,27 +9,27 @@ import {
89
import{Spinner}from"components/Spinner/Spinner";
910
import{useProxy}from"contexts/ProxyContext";
1011
import{EllipsisVertical,ExternalLinkIcon,HouseIcon}from"lucide-react";
12+
importtype{WorkspaceAppWithAgent}from"modules/apps/apps";
1113
import{useAppLink}from"modules/apps/useAppLink";
12-
importtype{Task,WorkspaceAppWithAgent}from"modules/tasks/tasks";
1314
import{typeFC,typeHTMLProps,useRef}from"react";
1415
import{LinkasRouterLink}from"react-router";
1516
import{cn}from"utils/cn";
1617
import{TaskWildcardWarning}from"./TaskWildcardWarning";
1718

1819
typeTaskAppIFrameProps={
19-
task:Task;
20+
workspace:Workspace;
2021
app:WorkspaceAppWithAgent;
2122
active:boolean;
2223
};
2324

2425
exportconstTaskAppIFrame:FC<TaskAppIFrameProps>=({
25-
task,
26+
workspace,
2627
app,
2728
active,
2829
})=>{
2930
constlink=useAppLink(app,{
3031
agent:app.agent,
31-
workspace:task.workspace,
32+
workspace,
3233
});
3334
constproxy=useProxy();
3435
constframeRef=useRef<HTMLIFrameElement>(null);
@@ -115,8 +116,7 @@ export const TaskAppIFrame: FC<TaskAppIFrameProps> = ({
115116
<codeclassName="font-mono text-content-primary select-all">
116117
/tmp/coder-agent.log
117118
</code>{" "}
118-
inside your workspace "{task.workspace.name}" for more
119-
information.
119+
inside your workspace "{workspace.name}" for more information.
120120
</li>
121121
</ul>
122122
</div>

‎site/src/pages/TaskPage/TaskApps.tsx‎

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importtype{Workspace}from"api/typesGenerated";
12
import{Button}from"components/Button/Button";
23
import{
34
DropdownMenu,
@@ -10,31 +11,30 @@ import { InfoTooltip } from "components/InfoTooltip/InfoTooltip";
1011
import{Link}from"components/Link/Link";
1112
import{ScrollArea,ScrollBar}from"components/ScrollArea/ScrollArea";
1213
import{ChevronDownIcon,LayoutGridIcon,TerminalIcon}from"lucide-react";
13-
import{getTerminalHref}from"modules/apps/apps";
14-
import{useAppLink}from"modules/apps/useAppLink";
1514
import{
16-
getTaskApps,
17-
typeTask,
15+
getAllAppsWithAgent,
16+
getTerminalHref,
1817
typeWorkspaceAppWithAgent,
19-
}from"modules/tasks/tasks";
18+
}from"modules/apps/apps";
19+
import{useAppLink}from"modules/apps/useAppLink";
2020
import{typeFC,useState}from"react";
2121
import{typeLinkProps,LinkasRouterLink}from"react-router";
2222
import{cn}from"utils/cn";
2323
import{docs}from"utils/docs";
2424
import{TaskAppIFrame,TaskIframe}from"./TaskAppIframe";
2525

2626
typeTaskAppsProps={
27-
task:Task;
27+
workspace:Workspace;
2828
};
2929

3030
constTERMINAL_TAB_ID="terminal";
3131

32-
exportconstTaskApps:FC<TaskAppsProps>=({task})=>{
33-
constapps=getTaskApps(task).filter(
32+
exportconstTaskApps:FC<TaskAppsProps>=({workspace})=>{
33+
constapps=getAllAppsWithAgent(workspace).filter(
3434
// The Chat UI app will be displayed in the sidebar, so we don't want to
3535
// show it as a web app.
3636
(app)=>
37-
app.id!==task.workspace.latest_build.ai_task_sidebar_app_id&&
37+
app.id!==workspace.latest_build.ai_task_sidebar_app_id&&
3838
app.health!=="disabled",
3939
);
4040
const[embeddedApps,externalApps]=splitEmbeddedAndExternalApps(apps);
@@ -43,8 +43,8 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
4343
embeddedApps.length>0||externalApps.length>0;
4444
consttaskAgent=apps.at(0)?.agent;
4545
constterminalHref=getTerminalHref({
46-
username:task.workspace.owner_name,
47-
workspace:task.workspace.name,
46+
username:workspace.owner_name,
47+
workspace:workspace.name,
4848
agent:taskAgent?.name,
4949
});
5050
constisTerminalActive=activeAppId===TERMINAL_TAB_ID;
@@ -58,7 +58,7 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
5858
{embeddedApps.map((app)=>(
5959
<TaskAppTab
6060
key={app.id}
61-
task={task}
61+
workspace={workspace}
6262
app={app}
6363
active={app.id===activeAppId}
6464
onClick={(e)=>{
@@ -83,7 +83,10 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
8383
</ScrollArea>
8484

8585
{externalApps.length>0&&(
86-
<ExternalAppsDropdowntask={task}externalApps={externalApps}/>
86+
<ExternalAppsDropdown
87+
workspace={workspace}
88+
externalApps={externalApps}
89+
/>
8790
)}
8891
</div>
8992
)}
@@ -95,7 +98,7 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
9598
key={app.id}
9699
active={activeAppId===app.id}
97100
app={app}
98-
task={task}
101+
workspace={workspace}
99102
/>
100103
))}
101104

@@ -130,12 +133,12 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
130133
};
131134

132135
typeExternalAppsDropdownProps={
133-
task:Task;
136+
workspace:Workspace;
134137
externalApps:WorkspaceAppWithAgent[];
135138
};
136139

137140
constExternalAppsDropdown:FC<ExternalAppsDropdownProps>=({
138-
task,
141+
workspace,
139142
externalApps,
140143
})=>{
141144
return(
@@ -149,7 +152,7 @@ const ExternalAppsDropdown: FC<ExternalAppsDropdownProps> = ({
149152
</DropdownMenuTrigger>
150153
<DropdownMenuContent>
151154
{externalApps.map((app)=>(
152-
<ExternalAppMenuItemkey={app.id}app={app}task={task}/>
155+
<ExternalAppMenuItemkey={app.id}app={app}workspace={workspace}/>
153156
))}
154157
</DropdownMenuContent>
155158
</DropdownMenu>
@@ -159,11 +162,11 @@ const ExternalAppsDropdown: FC<ExternalAppsDropdownProps> = ({
159162

160163
constExternalAppMenuItem:FC<{
161164
app:WorkspaceAppWithAgent;
162-
task:Task;
163-
}>=({ app,task})=>{
165+
workspace:Workspace;
166+
}>=({ app,workspace})=>{
164167
constlink=useAppLink(app,{
165168
agent:app.agent,
166-
workspace:task.workspace,
169+
workspace,
167170
});
168171

169172
return(
@@ -177,16 +180,21 @@ const ExternalAppMenuItem: FC<{
177180
};
178181

179182
typeTaskAppTabProps={
180-
task:Task;
183+
workspace:Workspace;
181184
app:WorkspaceAppWithAgent;
182185
active:boolean;
183186
onClick:(e:React.MouseEvent<HTMLAnchorElement>)=>void;
184187
};
185188

186-
constTaskAppTab:FC<TaskAppTabProps>=({ task, app, active, onClick})=>{
189+
constTaskAppTab:FC<TaskAppTabProps>=({
190+
workspace,
191+
app,
192+
active,
193+
onClick,
194+
})=>{
187195
constlink=useAppLink(app,{
188196
agent:app.agent,
189-
workspace:task.workspace,
197+
workspace,
190198
});
191199

192200
return(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp