Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
export interface AgentMentionDirectoryRequest {
|
|
requestId: number;
|
|
abortSignal: AbortSignal;
|
|
}
|
|
|
|
export interface AgentMentionDirectoryRequestScope {
|
|
activeDirectoryPath: string | undefined;
|
|
activeWorkspaceId: string;
|
|
directoryPath: string;
|
|
disposed: boolean;
|
|
filter: string;
|
|
query: string;
|
|
requestId: number;
|
|
workspaceId: string;
|
|
}
|
|
|
|
export class AgentMentionDirectoryRequestLifecycle {
|
|
private requestId = 0;
|
|
private abortController: AbortController | null = null;
|
|
|
|
start(): AgentMentionDirectoryRequest {
|
|
this.abortActiveRequest();
|
|
const abortController = new AbortController();
|
|
const requestId = ++this.requestId;
|
|
this.abortController = abortController;
|
|
return {
|
|
requestId,
|
|
abortSignal: abortController.signal
|
|
};
|
|
}
|
|
|
|
cancel(): void {
|
|
this.abortActiveRequest();
|
|
this.requestId += 1;
|
|
}
|
|
|
|
canApply(scope: AgentMentionDirectoryRequestScope): boolean {
|
|
return (
|
|
!scope.disposed &&
|
|
scope.requestId === this.requestId &&
|
|
this.abortController?.signal.aborted === false &&
|
|
scope.workspaceId === scope.activeWorkspaceId &&
|
|
scope.filter === "file" &&
|
|
scope.query === "" &&
|
|
scope.activeDirectoryPath === scope.directoryPath
|
|
);
|
|
}
|
|
|
|
finish(requestId: number): void {
|
|
if (requestId === this.requestId) {
|
|
this.abortController = null;
|
|
}
|
|
}
|
|
|
|
private abortActiveRequest(): void {
|
|
this.abortController?.abort();
|
|
this.abortController = null;
|
|
}
|
|
}
|