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

Commitb2f6bb8

Browse files
committed
clean up some horrible claude code
1 parentc5f6dcb commitb2f6bb8

File tree

3 files changed

+49
-78
lines changed

3 files changed

+49
-78
lines changed

‎src/api.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -276,32 +276,3 @@ export async function waitForBuild(
276276
writeEmitter.fire(`Workspace is now${updatedWorkspace.latest_build.status}\r\n`)
277277
returnupdatedWorkspace
278278
}
279-
280-
// 1. First, get a workspace by owner and name
281-
exportasyncfunctiongetAITasksForWorkspace(
282-
restClient:Api,
283-
writeEmitter:vscode.EventEmitter<string>,
284-
workspace:Workspace,
285-
):Promise<WorkspaceAgentTask[]>{
286-
// We need to build up tasks
287-
letawaiting_tasks:WorkspaceAgentTask[]=[];
288-
289-
// The workspace will include agents, and within each agent you can find tasks
290-
// You can access the agents from the workspace resource
291-
constresources=workspace.latest_build.resources;
292-
293-
// Go through each resource
294-
for(constresourceofresources){
295-
if(!resource.agents){
296-
continue
297-
}
298-
299-
resource.agents.forEach((agent)=>{
300-
for(consttaskofagent.tasks){
301-
awaiting_tasks.push(task);
302-
}
303-
})
304-
}
305-
306-
returnawaiting_tasks;
307-
}

‎src/commands.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Api } from "coder/site/src/api/api"
22
import{getErrorMessage}from"coder/site/src/api/errors"
33
import{User,Workspace,WorkspaceAgent}from"coder/site/src/api/typesGenerated"
44
import*asvscodefrom"vscode"
5-
import{getAITasksForWorkspace,makeCoderSdk,needToken}from"./api"
5+
import{makeCoderSdk,needToken}from"./api"
66
import{extractAgents}from"./api-helper"
77
import{CertificateError}from"./error"
88
import{Storage}from"./storage"
@@ -295,7 +295,6 @@ export class Commands {
295295
constdoc=awaitvscode.workspace.openTextDocument(uri)
296296
awaitvscode.window.showTextDocument(doc)
297297
}
298-
299298

300299
/**
301300
* Log out from the currently logged-in deployment.
@@ -409,12 +408,11 @@ export class Commands {
409408
}
410409

411410
publicasyncopenAISession():Promise<void>{
412-
413411
// Then launch an integrated terminal with screen session
414412
constterminal=vscode.window.createTerminal({
415413
name:"Claude Code Session",
416414
})
417-
415+
418416
// Show the terminal and run the screen command
419417
terminal.show(true)
420418
terminal.sendText("screen -xRR claude-code")

‎src/workspacesProvider.ts

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Workspace, WorkspaceAgent, WorkspaceAgentTask } from "coder/site/src/ap
33
import{EventSource}from"eventsource"
44
import*aspathfrom"path"
55
import*asvscodefrom"vscode"
6-
import{createStreamingFetchAdapter,getAITasksForWorkspace}from"./api"
6+
import{createStreamingFetchAdapter}from"./api"
77
import{
88
AgentMetadataEvent,
99
AgentMetadataEventSchemaArray,
@@ -147,29 +147,28 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
147147
})
148148

149149
// Create tree items for each workspace
150-
constworkspaceTreeItems=awaitPromise.all(resp.workspaces.map(async(workspace)=>{
151-
constworkspaceTreeItem=newWorkspaceTreeItem(
152-
workspace,
153-
this.getWorkspacesQuery===WorkspaceQuery.All,
154-
showMetadata
155-
)
156-
157-
// Fetch AI tasks for the workspace
158-
try{
159-
// Create a dummy emitter for logs
160-
constemitter=newvscode.EventEmitter<string>()
161-
constaiTasks=awaitgetAITasksForWorkspace(restClient,emitter,workspace)
162-
workspaceTreeItem.aiTasks=aiTasks
163-
this.storage.writeToCoderOutputChannel(aiTasks.length.toString())
164-
console.log(aiTasks.length.toString())
165-
}catch(error){
166-
// Log the error but continue - we don't want to fail the whole tree if AI tasks fail
167-
this.storage.writeToCoderOutputChannel(`Failed to fetch AI tasks for workspace${workspace.name}:${errToStr(error,"unknown error")}`)
168-
169-
}
170-
171-
returnworkspaceTreeItem
172-
}))
150+
constworkspaceTreeItems=awaitPromise.all(
151+
resp.workspaces.map(async(workspace)=>{
152+
constworkspaceTreeItem=newWorkspaceTreeItem(
153+
workspace,
154+
this.getWorkspacesQuery===WorkspaceQuery.All,
155+
showMetadata,
156+
)
157+
158+
// Fetch AI tasks for the workspace
159+
try{
160+
// Create a dummy emitter for logs
161+
constemitter=newvscode.EventEmitter<string>()
162+
}catch(error){
163+
// Log the error but continue - we don't want to fail the whole tree if AI tasks fail
164+
this.storage.writeToCoderOutputChannel(
165+
`Failed to fetch AI tasks for workspace${workspace.name}:${errToStr(error,"unknown error")}`,
166+
)
167+
}
168+
169+
returnworkspaceTreeItem
170+
}),
171+
)
173172

174173
returnworkspaceTreeItems
175174
}
@@ -230,24 +229,25 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
230229
constagentTreeItems=agents.map(
231230
(agent)=>newAgentTreeItem(agent,element.workspaceOwner,element.workspaceName,element.watchMetadata),
232231
)
233-
234-
// Add AI task items to the workspace children if there are any
235-
constaiTaskItems=element.aiTasks.map(task=>newAITaskTreeItem(task))
236-
237-
// If there are AI tasks, add them at the beginning of the list
238-
if(aiTaskItems.length==0){
239-
returnPromise.resolve(agentTreeItems)
240-
}
241-
242-
// Return AI task items first, then a separator, then agent items
243-
returnPromise.resolve([...aiTaskItems, ...agentTreeItems])
232+
233+
returnPromise.resolve(agentTreeItems)
244234
}elseif(elementinstanceofAgentTreeItem){
245235
constwatcher=this.agentWatchers[element.agent.id]
246236
if(watcher?.error){
247237
returnPromise.resolve([newErrorTreeItem(watcher.error)])
248238
}
239+
240+
constitems:vscode.TreeItem[]=[]
241+
242+
// Add AI tasks first, if the agent has any associated tasks
243+
constagentTasks=element.agent.tasks.map((task)=>newAITaskTreeItem(task))
244+
items.push(...agentTasks)
245+
246+
// Add agent metadata
249247
constsavedMetadata=watcher?.metadata||[]
250-
returnPromise.resolve(savedMetadata.map((metadata)=>newAgentMetadataTreeItem(metadata)))
248+
items.push(...savedMetadata.map((metadata)=>newAgentMetadataTreeItem(metadata)))
249+
250+
returnPromise.resolve(items)
251251
}
252252

253253
returnPromise.resolve([])
@@ -320,18 +320,16 @@ class AgentMetadataTreeItem extends vscode.TreeItem {
320320

321321
classAITaskTreeItemextendsvscode.TreeItem{
322322
constructor(publicreadonlytask:WorkspaceAgentTask){
323-
super(task.summary,vscode.TreeItemCollapsibleState.None)
323+
// Add a hand raise emoji (✋) to indicate tasks awaiting user input
324+
super(task.icon,vscode.TreeItemCollapsibleState.None)
324325
this.description=task.summary
325326
this.contextValue="coderAITask"
326-
327-
// Add an icon using VSCode's built-in Codicons
328-
this.iconPath=newvscode.ThemeIcon("sparkle")
329-
327+
330328
// Add command to handle clicking on the task
331329
this.command={
332-
command:"coder.openAITask",
330+
command:"coder.openAITask",
333331
title:"Open AI Task",
334-
arguments:[task]
332+
arguments:[task],
335333
}
336334
}
337335
}
@@ -382,12 +380,16 @@ class AgentTreeItem extends OpenableTreeItem {
382380
agent.expanded_directory,
383381
"coderAgent",
384382
)
383+
384+
if(agent.task_waiting_for_user_input){
385+
this.label="🙋 "+this.label;
386+
}
385387
}
386388
}
387389

388390
exportclassWorkspaceTreeItemextendsOpenableTreeItem{
389-
publicaiTasks:WorkspaceAgentTask[]=[]
390-
391+
publicaiTasks:{waiting:boolean,tasks:WorkspaceAgentTask[]}[]=[]
392+
391393
constructor(
392394
publicreadonlyworkspace:Workspace,
393395
publicreadonlyshowOwner:boolean,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp