Skip to content

feat(api): abort signal core plumbing — interface, Task.ts, single-completion-handler #615

Description

@edelauna

Parent issue

Part of #404 — Stop does not abort underlying HTTP request

Scope

Core plumbing that all providers depend on. Must land first.

Changes needed

  1. src/api/index.ts — Add abortSignal?: AbortSignal to ApiHandlerCreateMessageMetadata (already done in feat(api): pass abortSignal to streaming API calls for all providers (#404) #434)
  2. src/api/index.ts — Update SingleCompletionHandler.completePrompt signature to accept metadata?: ApiHandlerCreateMessageMetadata as a second parameter. Without this, all completePrompt abort work is dead code (review finding #1)
  3. src/core/task/Task.ts — Wire currentRequestAbortController.signal into metadata.abortSignal (already done in feat(api): pass abortSignal to streaming API calls for all providers (#404) #434, but prefer including it in the object literal at construction time rather than post-mutation)
  4. src/utils/single-completion-handler.ts — Forward metadata to handler.completePrompt(promptText, metadata)

Tests

  • src/core/__tests__/task-abort-signal-passing.spec.ts — add signal identity assertion (toBe not just toBeInstanceOf) and a sequential-requests test confirming fresh controllers

Acceptance criteria

  • SingleCompletionHandler.completePrompt interface accepts optional metadata
  • single-completion-handler.ts forwards metadata to the provider
  • Task.ts attaches abortSignal to metadata
  • Tests verify signal identity and fresh-controller-per-request

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions