Add retry logic with exponential backoff and request/response hooks#11
Merged
Add retry logic with exponential backoff and request/response hooks#11
Conversation
Implements full TypeScript SDK with feature parity to the Python SDK: - AgentQClient with full CRUD for agents, heartbeat, and task management - @agent decorator for declarative agent registration (mirrors Python @agent) - AgentRegistry singleton for collecting and bulk-syncing agents - Comprehensive type definitions for all API models - Custom error hierarchy (ApiError, ConfigError, NetworkError, TimeoutError) - Dual CJS/ESM build via tsup with full .d.ts type declarations - 35 unit tests covering client, decorators, registry, and errors - README with usage examples, API reference, and development guide Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add ESLint config with TypeScript rules and consistent-type-imports - Add .npmignore for cleaner published package - Add CHANGELOG.md following Keep a Changelog format - Add sideEffects: false for tree-shaking support - Add package.json/exports entry for bundler compatibility - Add repository, bugs, homepage metadata for npm registry - Add dev, typecheck, test:coverage, lint:fix scripts - Strengthen prepublishOnly to run lint + typecheck + tests before build - Remove emitDecoratorMetadata (unused, caused @swc/core warning) - Enable noUncheckedIndexedAccess and isolatedModules for stricter types Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Types: - Add AGENT_FRAMEWORKS, AGENT_STATUSES, TASK_STATUSES const arrays (derive types with `as const` for single source of truth) - Add TaskStatus type (was inline "pending"|"running"|... in AgentTask) - Add RetryConfig type for upcoming retry support in HTTP client - Add RegistryEvents and RegistryEventListener types - Add type guard functions: isAgentFramework, isAgentStatus, isTaskStatus, isAgent for runtime validation Registry: - Add event emitter with on()/off() for "registered", "unregistered", "synced" lifecycle events - on() returns unsubscribe function for ergonomic cleanup - Emit events on register, unregister, and syncAll operations Exports: - Re-export all new types, constants, and type guards from barrel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
HTTP Client: - Add configurable retry with exponential backoff and full jitter (configure via retry option in AgentQConfig) - Retry on 429, 500, 502, 503, 504 by default (customizable) - Also retry on network errors and timeouts - Add onRequest() hook for pre-request logging/header injection - Add onResponse() hook for post-response metrics/latency tracking - Extract sleep() method for testability AgentQClient: - Expose onRequest()/onResponse() chainable methods - Export RequestHook and ResponseHook types Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This was referenced Apr 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
retryoption inAgentQConfig. Uses full jitter, retries on 429/5xx and network/timeout errors by default. Retryable status codes are customizable.client.onRequest((method, url, headers) => ...)for pre-request logging, metrics, or header injectionclient.onResponse((method, url, status, durationMs) => ...)for post-response latency trackingonRequest/onResponsereturnthisfor builder-style chainingRequestHook,ResponseHookavailable from the packageTest plan
npx tsc --noEmit— clean typechecknpx tsup— CJS/ESM/DTS build succeedsnpx vitest run— all 35 existing tests pass (no regressions)Submitted by ✨ Rin (DevSquad) for task
cmny3jx0a0008g5e0kxifcyj8