@supaku/agentfactory-linear 0.7.18 → 0.7.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/agent-client-project-repo.test.js +2 -0
- package/dist/src/agent-client.d.ts +16 -4
- package/dist/src/agent-client.d.ts.map +1 -1
- package/dist/src/agent-client.js +280 -109
- package/dist/src/circuit-breaker.d.ts +76 -0
- package/dist/src/circuit-breaker.d.ts.map +1 -0
- package/dist/src/circuit-breaker.js +229 -0
- package/dist/src/circuit-breaker.test.d.ts +2 -0
- package/dist/src/circuit-breaker.test.d.ts.map +1 -0
- package/dist/src/circuit-breaker.test.js +292 -0
- package/dist/src/errors.d.ts +12 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +18 -0
- package/dist/src/index.d.ts +7 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/issue-tracker-proxy.d.ts +140 -0
- package/dist/src/issue-tracker-proxy.d.ts.map +1 -0
- package/dist/src/issue-tracker-proxy.js +10 -0
- package/dist/src/proxy-client.d.ts +103 -0
- package/dist/src/proxy-client.d.ts.map +1 -0
- package/dist/src/proxy-client.js +191 -0
- package/dist/src/types.d.ts +50 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export type { AgentSessionState, AgentActivityType, AgentActivitySignal, AgentActivityContent, AgentActivityContentPayload, ThoughtActivityContent, ActionActivityContent, ResponseActivityContent, ElicitationActivityContent, ErrorActivityContent, PromptActivityContent, AgentActivityCreateInput, AgentActivityResult, CreateActivityOptions, AgentPlanItemState, AgentPlanItem, AgentPlan, AgentSignals, LinearAgentClientConfig, RetryConfig, LinearWorkflowStatus, StatusMapping, AgentSessionConfig, SessionOperationResult, AgentSessionExternalUrl, AgentSessionUpdateInput, AgentSessionUpdateResult, AgentSessionCreateOnIssueInput, AgentSessionCreateResult, AgentWorkType, IssueRelationType, IssueRelationCreateInput, IssueRelationResult, IssueRelationBatchResult, IssueRelationInfo, IssueRelationsResult, SubIssueGraphNode, SubIssueGraph, SubIssueStatus, } from './types.js';
|
|
1
|
+
export type { AgentSessionState, AgentActivityType, AgentActivitySignal, AgentActivityContent, AgentActivityContentPayload, ThoughtActivityContent, ActionActivityContent, ResponseActivityContent, ElicitationActivityContent, ErrorActivityContent, PromptActivityContent, AgentActivityCreateInput, AgentActivityResult, CreateActivityOptions, AgentPlanItemState, AgentPlanItem, AgentPlan, AgentSignals, LinearAgentClientConfig, RetryConfig, LinearWorkflowStatus, StatusMapping, AgentSessionConfig, SessionOperationResult, AgentSessionExternalUrl, AgentSessionUpdateInput, AgentSessionUpdateResult, AgentSessionCreateOnIssueInput, AgentSessionCreateResult, AgentWorkType, IssueRelationType, IssueRelationCreateInput, IssueRelationResult, IssueRelationBatchResult, IssueRelationInfo, IssueRelationsResult, SubIssueGraphNode, SubIssueGraph, SubIssueStatus, RateLimiterStrategy, CircuitBreakerStrategy, CircuitBreakerConfig, } from './types.js';
|
|
2
2
|
export { STATUS_WORK_TYPE_MAP, WORK_TYPE_START_STATUS, WORK_TYPE_COMPLETE_STATUS, WORK_TYPE_FAIL_STATUS, WORK_TYPE_ALLOWED_STATUSES, STATUS_VALID_WORK_TYPES, TERMINAL_STATUSES, validateWorkTypeForStatus, getValidWorkTypesForStatus, } from './types.js';
|
|
3
3
|
export type { WorkTypeValidationResult } from './types.js';
|
|
4
|
-
export { LinearAgentError, LinearApiError, LinearRetryExhaustedError, LinearSessionError, LinearActivityError, LinearPlanError, LinearStatusTransitionError, AgentSpawnError, isLinearAgentError, isRetryableError, isAgentSpawnError, } from './errors.js';
|
|
4
|
+
export { LinearAgentError, LinearApiError, LinearRetryExhaustedError, LinearSessionError, LinearActivityError, LinearPlanError, LinearStatusTransitionError, AgentSpawnError, CircuitOpenError, isLinearAgentError, isRetryableError, isAgentSpawnError, isCircuitOpenError, } from './errors.js';
|
|
5
5
|
export { DEFAULT_RETRY_CONFIG, sleep, calculateDelay, withRetry, createRetryWrapper, } from './retry.js';
|
|
6
6
|
export type { RetryContext, RetryCallback, WithRetryOptions } from './retry.js';
|
|
7
7
|
export { LINEAR_COMMENT_MAX_LENGTH, TRUNCATION_MARKER, MAX_COMPLETION_COMMENTS, COMMENT_OVERHEAD, CONTINUATION_MARKER, getDefaultTeamId, getDefaultTeamName, LINEAR_PROJECTS, LINEAR_LABELS, ENVIRONMENT_ISSUE_TYPES, } from './constants.js';
|
|
@@ -12,6 +12,11 @@ export { parseCheckboxes, updateCheckbox, updateCheckboxByText, updateCheckboxes
|
|
|
12
12
|
export type { CheckboxItem, CheckboxUpdate } from './checkbox-utils.js';
|
|
13
13
|
export { TokenBucket, DEFAULT_RATE_LIMIT_CONFIG, extractRetryAfterMs } from './rate-limiter.js';
|
|
14
14
|
export type { TokenBucketConfig } from './rate-limiter.js';
|
|
15
|
+
export { CircuitBreaker, DEFAULT_CIRCUIT_BREAKER_CONFIG } from './circuit-breaker.js';
|
|
16
|
+
export type { CircuitState } from './circuit-breaker.js';
|
|
17
|
+
export type { ProxyRequest, ProxyResponse, IssueTrackerMethod, SerializedIssue, SerializedComment, SerializedViewer, SerializedTeam, ProxyHealthStatus, } from './issue-tracker-proxy.js';
|
|
18
|
+
export { ProxyIssueTrackerClient, createProxyClientIfConfigured } from './proxy-client.js';
|
|
19
|
+
export type { ProxyClientConfig } from './proxy-client.js';
|
|
15
20
|
export { LinearAgentClient, createLinearAgentClient } from './agent-client.js';
|
|
16
21
|
export { AgentSession, createAgentSession } from './agent-session.js';
|
|
17
22
|
export * from './webhook-types.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,aAAa,EAEb,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EAEpB,iBAAiB,EACjB,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Work type mappings for status-based routing
|
|
2
2
|
export { STATUS_WORK_TYPE_MAP, WORK_TYPE_START_STATUS, WORK_TYPE_COMPLETE_STATUS, WORK_TYPE_FAIL_STATUS, WORK_TYPE_ALLOWED_STATUSES, STATUS_VALID_WORK_TYPES, TERMINAL_STATUSES, validateWorkTypeForStatus, getValidWorkTypesForStatus, } from './types.js';
|
|
3
3
|
// Errors
|
|
4
|
-
export { LinearAgentError, LinearApiError, LinearRetryExhaustedError, LinearSessionError, LinearActivityError, LinearPlanError, LinearStatusTransitionError, AgentSpawnError, isLinearAgentError, isRetryableError, isAgentSpawnError, } from './errors.js';
|
|
4
|
+
export { LinearAgentError, LinearApiError, LinearRetryExhaustedError, LinearSessionError, LinearActivityError, LinearPlanError, LinearStatusTransitionError, AgentSpawnError, CircuitOpenError, isLinearAgentError, isRetryableError, isAgentSpawnError, isCircuitOpenError, } from './errors.js';
|
|
5
5
|
// Retry utilities
|
|
6
6
|
export { DEFAULT_RETRY_CONFIG, sleep, calculateDelay, withRetry, createRetryWrapper, } from './retry.js';
|
|
7
7
|
// Constants
|
|
@@ -12,6 +12,10 @@ export { truncateText, buildCompletionComment, splitContentIntoComments, buildCo
|
|
|
12
12
|
export { parseCheckboxes, updateCheckbox, updateCheckboxByText, updateCheckboxes, hasCheckboxes, getCheckboxSummary, } from './checkbox-utils.js';
|
|
13
13
|
// Rate limiter
|
|
14
14
|
export { TokenBucket, DEFAULT_RATE_LIMIT_CONFIG, extractRetryAfterMs } from './rate-limiter.js';
|
|
15
|
+
// Circuit breaker
|
|
16
|
+
export { CircuitBreaker, DEFAULT_CIRCUIT_BREAKER_CONFIG } from './circuit-breaker.js';
|
|
17
|
+
// Proxy client (routes calls through dashboard instead of Linear directly)
|
|
18
|
+
export { ProxyIssueTrackerClient, createProxyClientIfConfigured } from './proxy-client.js';
|
|
15
19
|
// Client
|
|
16
20
|
export { LinearAgentClient, createLinearAgentClient } from './agent-client.js';
|
|
17
21
|
// Session
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-Agnostic Issue Tracker Proxy Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract between agents/governors and the centralized proxy.
|
|
5
|
+
* Agents call these methods without knowing whether the backend is Linear,
|
|
6
|
+
* Jira, GitHub Issues, or any future platform.
|
|
7
|
+
*
|
|
8
|
+
* The proxy translates these generic operations into platform-specific API calls.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Every proxy request carries authentication and workspace context.
|
|
12
|
+
*/
|
|
13
|
+
export interface ProxyRequest {
|
|
14
|
+
/** The operation to perform */
|
|
15
|
+
method: IssueTrackerMethod;
|
|
16
|
+
/** Arguments for the operation (method-specific) */
|
|
17
|
+
args: unknown[];
|
|
18
|
+
/** Workspace/organization ID for multi-tenant routing */
|
|
19
|
+
organizationId?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Standard proxy response envelope.
|
|
23
|
+
*/
|
|
24
|
+
export interface ProxyResponse<T = unknown> {
|
|
25
|
+
success: boolean;
|
|
26
|
+
data?: T;
|
|
27
|
+
error?: {
|
|
28
|
+
code: string;
|
|
29
|
+
message: string;
|
|
30
|
+
retryable: boolean;
|
|
31
|
+
};
|
|
32
|
+
/** Rate limit info from the upstream platform */
|
|
33
|
+
quota?: {
|
|
34
|
+
requestsRemaining?: number;
|
|
35
|
+
complexityRemaining?: number;
|
|
36
|
+
resetAt?: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* All operations that can be routed through the proxy.
|
|
41
|
+
*
|
|
42
|
+
* Named generically (not Linear-specific) so future platforms
|
|
43
|
+
* can implement the same interface.
|
|
44
|
+
*/
|
|
45
|
+
export type IssueTrackerMethod = 'getIssue' | 'updateIssue' | 'createIssue' | 'createComment' | 'getIssueComments' | 'getTeamStatuses' | 'updateIssueStatus' | 'createAgentActivity' | 'updateAgentSession' | 'createAgentSessionOnIssue' | 'createIssueRelation' | 'getIssueRelations' | 'deleteIssueRelation' | 'getSubIssues' | 'getSubIssueStatuses' | 'getSubIssueGraph' | 'isParentIssue' | 'isChildIssue' | 'listProjectIssues' | 'getProjectRepositoryUrl' | 'getViewer' | 'getTeam' | 'unassignIssue';
|
|
46
|
+
/**
|
|
47
|
+
* Serialized issue — all relations pre-resolved to plain JSON.
|
|
48
|
+
* No SDK-specific Promise fields or lazy loaders.
|
|
49
|
+
*/
|
|
50
|
+
export interface SerializedIssue {
|
|
51
|
+
id: string;
|
|
52
|
+
identifier: string;
|
|
53
|
+
title: string;
|
|
54
|
+
description?: string;
|
|
55
|
+
url: string;
|
|
56
|
+
priority: number;
|
|
57
|
+
state?: {
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
type: string;
|
|
61
|
+
};
|
|
62
|
+
labels: Array<{
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
}>;
|
|
66
|
+
assignee?: {
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
email?: string;
|
|
70
|
+
} | null;
|
|
71
|
+
team?: {
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
key: string;
|
|
75
|
+
};
|
|
76
|
+
parent?: {
|
|
77
|
+
id: string;
|
|
78
|
+
identifier: string;
|
|
79
|
+
} | null;
|
|
80
|
+
project?: {
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
} | null;
|
|
84
|
+
createdAt: string;
|
|
85
|
+
updatedAt: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Serialized comment.
|
|
89
|
+
*/
|
|
90
|
+
export interface SerializedComment {
|
|
91
|
+
id: string;
|
|
92
|
+
body: string;
|
|
93
|
+
createdAt: string;
|
|
94
|
+
updatedAt: string;
|
|
95
|
+
user?: {
|
|
96
|
+
id: string;
|
|
97
|
+
name: string;
|
|
98
|
+
} | null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Serialized viewer (authenticated user).
|
|
102
|
+
*/
|
|
103
|
+
export interface SerializedViewer {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
email: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Serialized team.
|
|
110
|
+
*/
|
|
111
|
+
export interface SerializedTeam {
|
|
112
|
+
id: string;
|
|
113
|
+
name: string;
|
|
114
|
+
key: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Health status for the proxy endpoint.
|
|
118
|
+
*/
|
|
119
|
+
export interface ProxyHealthStatus {
|
|
120
|
+
/** Whether the proxy can process requests */
|
|
121
|
+
healthy: boolean;
|
|
122
|
+
/** Circuit breaker state */
|
|
123
|
+
circuitBreaker: {
|
|
124
|
+
state: string;
|
|
125
|
+
failures: number;
|
|
126
|
+
msSinceOpened: number | null;
|
|
127
|
+
};
|
|
128
|
+
/** Rate limiter status */
|
|
129
|
+
rateLimiter: {
|
|
130
|
+
availableTokens: number;
|
|
131
|
+
};
|
|
132
|
+
/** Upstream platform quota from response headers */
|
|
133
|
+
quota: {
|
|
134
|
+
requestsRemaining: number | null;
|
|
135
|
+
complexityRemaining: number | null;
|
|
136
|
+
resetAt: number | null;
|
|
137
|
+
updatedAt: number;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=issue-tracker-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-tracker-proxy.d.ts","sourceRoot":"","sources":["../../src/issue-tracker-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-Agnostic Issue Tracker Proxy Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract between agents/governors and the centralized proxy.
|
|
5
|
+
* Agents call these methods without knowing whether the backend is Linear,
|
|
6
|
+
* Jira, GitHub Issues, or any future platform.
|
|
7
|
+
*
|
|
8
|
+
* The proxy translates these generic operations into platform-specific API calls.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proxy Issue Tracker Client
|
|
3
|
+
*
|
|
4
|
+
* Drop-in replacement for LinearAgentClient that routes all calls
|
|
5
|
+
* through the centralized dashboard proxy endpoint instead of calling
|
|
6
|
+
* the issue tracker API directly.
|
|
7
|
+
*
|
|
8
|
+
* Used when `AGENTFACTORY_API_URL` env var is set.
|
|
9
|
+
*
|
|
10
|
+
* Benefits:
|
|
11
|
+
* - Zero direct API credentials needed on the agent side
|
|
12
|
+
* - Single shared rate limiter and circuit breaker on the proxy
|
|
13
|
+
* - OAuth token resolution stays server-side
|
|
14
|
+
* - Platform-agnostic: agents don't need to know Linear exists
|
|
15
|
+
*/
|
|
16
|
+
import type { AgentActivityCreateInput, AgentActivityResult, AgentSessionUpdateInput, AgentSessionUpdateResult, AgentSessionCreateOnIssueInput, AgentSessionCreateResult, IssueRelationCreateInput, IssueRelationResult, IssueRelationsResult, LinearWorkflowStatus, StatusMapping, SubIssueGraph, SubIssueStatus } from './types.js';
|
|
17
|
+
import type { SerializedIssue, SerializedComment, SerializedViewer, SerializedTeam } from './issue-tracker-proxy.js';
|
|
18
|
+
export interface ProxyClientConfig {
|
|
19
|
+
/** Base URL of the dashboard (e.g., 'https://my-dashboard.vercel.app') */
|
|
20
|
+
apiUrl: string;
|
|
21
|
+
/** Worker API key for authentication */
|
|
22
|
+
apiKey: string;
|
|
23
|
+
/** Workspace/organization ID for multi-tenant routing */
|
|
24
|
+
organizationId?: string;
|
|
25
|
+
/** Request timeout in ms (default: 30_000) */
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Issue tracker client that proxies all calls through the dashboard server.
|
|
30
|
+
*
|
|
31
|
+
* Implements the same public interface as LinearAgentClient but serializes
|
|
32
|
+
* calls as JSON and sends them to POST /api/issue-tracker-proxy.
|
|
33
|
+
*
|
|
34
|
+
* All returned objects are plain JSON (no lazy-loaded SDK relations).
|
|
35
|
+
*/
|
|
36
|
+
export declare class ProxyIssueTrackerClient {
|
|
37
|
+
private readonly apiUrl;
|
|
38
|
+
private readonly apiKey;
|
|
39
|
+
private readonly organizationId?;
|
|
40
|
+
private readonly timeoutMs;
|
|
41
|
+
constructor(config: ProxyClientConfig);
|
|
42
|
+
getIssue(issueIdOrIdentifier: string): Promise<SerializedIssue>;
|
|
43
|
+
updateIssue(issueId: string, data: {
|
|
44
|
+
title?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
stateId?: string;
|
|
47
|
+
assigneeId?: string | null;
|
|
48
|
+
priority?: number;
|
|
49
|
+
labelIds?: string[];
|
|
50
|
+
}): Promise<SerializedIssue>;
|
|
51
|
+
createIssue(input: {
|
|
52
|
+
title: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
teamId: string;
|
|
55
|
+
projectId?: string;
|
|
56
|
+
stateId?: string;
|
|
57
|
+
labelIds?: string[];
|
|
58
|
+
parentId?: string;
|
|
59
|
+
priority?: number;
|
|
60
|
+
}): Promise<SerializedIssue>;
|
|
61
|
+
unassignIssue(issueId: string): Promise<SerializedIssue>;
|
|
62
|
+
getTeamStatuses(teamId: string): Promise<StatusMapping>;
|
|
63
|
+
updateIssueStatus(issueId: string, statusName: LinearWorkflowStatus): Promise<SerializedIssue>;
|
|
64
|
+
createComment(issueId: string, body: string): Promise<SerializedComment>;
|
|
65
|
+
getIssueComments(issueId: string): Promise<SerializedComment[]>;
|
|
66
|
+
createAgentActivity(input: AgentActivityCreateInput): Promise<AgentActivityResult>;
|
|
67
|
+
updateAgentSession(input: AgentSessionUpdateInput): Promise<AgentSessionUpdateResult>;
|
|
68
|
+
createAgentSessionOnIssue(input: AgentSessionCreateOnIssueInput): Promise<AgentSessionCreateResult>;
|
|
69
|
+
createIssueRelation(input: IssueRelationCreateInput): Promise<IssueRelationResult>;
|
|
70
|
+
getIssueRelations(issueId: string): Promise<IssueRelationsResult>;
|
|
71
|
+
deleteIssueRelation(relationId: string): Promise<{
|
|
72
|
+
success: boolean;
|
|
73
|
+
}>;
|
|
74
|
+
getSubIssues(issueIdOrIdentifier: string): Promise<SerializedIssue[]>;
|
|
75
|
+
getSubIssueStatuses(issueIdOrIdentifier: string): Promise<SubIssueStatus[]>;
|
|
76
|
+
getSubIssueGraph(issueIdOrIdentifier: string): Promise<SubIssueGraph>;
|
|
77
|
+
isParentIssue(issueIdOrIdentifier: string): Promise<boolean>;
|
|
78
|
+
isChildIssue(issueIdOrIdentifier: string): Promise<boolean>;
|
|
79
|
+
listProjectIssues(project: string): Promise<Array<{
|
|
80
|
+
id: string;
|
|
81
|
+
identifier: string;
|
|
82
|
+
title: string;
|
|
83
|
+
description?: string;
|
|
84
|
+
status: string;
|
|
85
|
+
labels: string[];
|
|
86
|
+
createdAt: number;
|
|
87
|
+
parentId?: string;
|
|
88
|
+
project?: string;
|
|
89
|
+
childCount: number;
|
|
90
|
+
}>>;
|
|
91
|
+
getProjectRepositoryUrl(projectId: string): Promise<string | null>;
|
|
92
|
+
getViewer(): Promise<SerializedViewer>;
|
|
93
|
+
getTeam(teamIdOrKey: string): Promise<SerializedTeam>;
|
|
94
|
+
private call;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a proxy client if AGENTFACTORY_API_URL is set, otherwise return null.
|
|
98
|
+
*
|
|
99
|
+
* @param fallbackApiKey - API key to use (default: WORKER_API_KEY env var)
|
|
100
|
+
* @param organizationId - Workspace ID for multi-tenant routing
|
|
101
|
+
*/
|
|
102
|
+
export declare function createProxyClientIfConfigured(fallbackApiKey?: string, organizationId?: string): ProxyIssueTrackerClient | null;
|
|
103
|
+
//# sourceMappingURL=proxy-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-client.d.ts","sourceRoot":"","sources":["../../src/proxy-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proxy Issue Tracker Client
|
|
3
|
+
*
|
|
4
|
+
* Drop-in replacement for LinearAgentClient that routes all calls
|
|
5
|
+
* through the centralized dashboard proxy endpoint instead of calling
|
|
6
|
+
* the issue tracker API directly.
|
|
7
|
+
*
|
|
8
|
+
* Used when `AGENTFACTORY_API_URL` env var is set.
|
|
9
|
+
*
|
|
10
|
+
* Benefits:
|
|
11
|
+
* - Zero direct API credentials needed on the agent side
|
|
12
|
+
* - Single shared rate limiter and circuit breaker on the proxy
|
|
13
|
+
* - OAuth token resolution stays server-side
|
|
14
|
+
* - Platform-agnostic: agents don't need to know Linear exists
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Issue tracker client that proxies all calls through the dashboard server.
|
|
18
|
+
*
|
|
19
|
+
* Implements the same public interface as LinearAgentClient but serializes
|
|
20
|
+
* calls as JSON and sends them to POST /api/issue-tracker-proxy.
|
|
21
|
+
*
|
|
22
|
+
* All returned objects are plain JSON (no lazy-loaded SDK relations).
|
|
23
|
+
*/
|
|
24
|
+
export class ProxyIssueTrackerClient {
|
|
25
|
+
apiUrl;
|
|
26
|
+
apiKey;
|
|
27
|
+
organizationId;
|
|
28
|
+
timeoutMs;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
this.apiUrl = config.apiUrl.replace(/\/$/, '');
|
|
31
|
+
this.apiKey = config.apiKey;
|
|
32
|
+
this.organizationId = config.organizationId;
|
|
33
|
+
this.timeoutMs = config.timeoutMs ?? 30_000;
|
|
34
|
+
}
|
|
35
|
+
// =========================================================================
|
|
36
|
+
// Issue operations
|
|
37
|
+
// =========================================================================
|
|
38
|
+
async getIssue(issueIdOrIdentifier) {
|
|
39
|
+
return this.call('getIssue', [issueIdOrIdentifier]);
|
|
40
|
+
}
|
|
41
|
+
async updateIssue(issueId, data) {
|
|
42
|
+
return this.call('updateIssue', [issueId, data]);
|
|
43
|
+
}
|
|
44
|
+
async createIssue(input) {
|
|
45
|
+
return this.call('createIssue', [input]);
|
|
46
|
+
}
|
|
47
|
+
async unassignIssue(issueId) {
|
|
48
|
+
return this.call('unassignIssue', [issueId]);
|
|
49
|
+
}
|
|
50
|
+
// =========================================================================
|
|
51
|
+
// Status operations
|
|
52
|
+
// =========================================================================
|
|
53
|
+
async getTeamStatuses(teamId) {
|
|
54
|
+
return this.call('getTeamStatuses', [teamId]);
|
|
55
|
+
}
|
|
56
|
+
async updateIssueStatus(issueId, statusName) {
|
|
57
|
+
return this.call('updateIssueStatus', [issueId, statusName]);
|
|
58
|
+
}
|
|
59
|
+
// =========================================================================
|
|
60
|
+
// Comment operations
|
|
61
|
+
// =========================================================================
|
|
62
|
+
async createComment(issueId, body) {
|
|
63
|
+
return this.call('createComment', [issueId, body]);
|
|
64
|
+
}
|
|
65
|
+
async getIssueComments(issueId) {
|
|
66
|
+
return this.call('getIssueComments', [issueId]);
|
|
67
|
+
}
|
|
68
|
+
// =========================================================================
|
|
69
|
+
// Agent session operations
|
|
70
|
+
// =========================================================================
|
|
71
|
+
async createAgentActivity(input) {
|
|
72
|
+
return this.call('createAgentActivity', [input]);
|
|
73
|
+
}
|
|
74
|
+
async updateAgentSession(input) {
|
|
75
|
+
return this.call('updateAgentSession', [input]);
|
|
76
|
+
}
|
|
77
|
+
async createAgentSessionOnIssue(input) {
|
|
78
|
+
return this.call('createAgentSessionOnIssue', [input]);
|
|
79
|
+
}
|
|
80
|
+
// =========================================================================
|
|
81
|
+
// Relation operations
|
|
82
|
+
// =========================================================================
|
|
83
|
+
async createIssueRelation(input) {
|
|
84
|
+
return this.call('createIssueRelation', [input]);
|
|
85
|
+
}
|
|
86
|
+
async getIssueRelations(issueId) {
|
|
87
|
+
return this.call('getIssueRelations', [issueId]);
|
|
88
|
+
}
|
|
89
|
+
async deleteIssueRelation(relationId) {
|
|
90
|
+
return this.call('deleteIssueRelation', [relationId]);
|
|
91
|
+
}
|
|
92
|
+
// =========================================================================
|
|
93
|
+
// Sub-issue operations
|
|
94
|
+
// =========================================================================
|
|
95
|
+
async getSubIssues(issueIdOrIdentifier) {
|
|
96
|
+
return this.call('getSubIssues', [issueIdOrIdentifier]);
|
|
97
|
+
}
|
|
98
|
+
async getSubIssueStatuses(issueIdOrIdentifier) {
|
|
99
|
+
return this.call('getSubIssueStatuses', [issueIdOrIdentifier]);
|
|
100
|
+
}
|
|
101
|
+
async getSubIssueGraph(issueIdOrIdentifier) {
|
|
102
|
+
return this.call('getSubIssueGraph', [issueIdOrIdentifier]);
|
|
103
|
+
}
|
|
104
|
+
async isParentIssue(issueIdOrIdentifier) {
|
|
105
|
+
return this.call('isParentIssue', [issueIdOrIdentifier]);
|
|
106
|
+
}
|
|
107
|
+
async isChildIssue(issueIdOrIdentifier) {
|
|
108
|
+
return this.call('isChildIssue', [issueIdOrIdentifier]);
|
|
109
|
+
}
|
|
110
|
+
// =========================================================================
|
|
111
|
+
// Project operations
|
|
112
|
+
// =========================================================================
|
|
113
|
+
async listProjectIssues(project) {
|
|
114
|
+
return this.call('listProjectIssues', [project]);
|
|
115
|
+
}
|
|
116
|
+
async getProjectRepositoryUrl(projectId) {
|
|
117
|
+
return this.call('getProjectRepositoryUrl', [projectId]);
|
|
118
|
+
}
|
|
119
|
+
// =========================================================================
|
|
120
|
+
// Identity operations
|
|
121
|
+
// =========================================================================
|
|
122
|
+
async getViewer() {
|
|
123
|
+
return this.call('getViewer', []);
|
|
124
|
+
}
|
|
125
|
+
async getTeam(teamIdOrKey) {
|
|
126
|
+
return this.call('getTeam', [teamIdOrKey]);
|
|
127
|
+
}
|
|
128
|
+
// =========================================================================
|
|
129
|
+
// Core RPC method
|
|
130
|
+
// =========================================================================
|
|
131
|
+
async call(method, args) {
|
|
132
|
+
const body = {
|
|
133
|
+
method,
|
|
134
|
+
args,
|
|
135
|
+
organizationId: this.organizationId,
|
|
136
|
+
};
|
|
137
|
+
const controller = new AbortController();
|
|
138
|
+
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
139
|
+
try {
|
|
140
|
+
const response = await fetch(`${this.apiUrl}/api/issue-tracker-proxy`, {
|
|
141
|
+
method: 'POST',
|
|
142
|
+
headers: {
|
|
143
|
+
'Content-Type': 'application/json',
|
|
144
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
145
|
+
},
|
|
146
|
+
body: JSON.stringify(body),
|
|
147
|
+
signal: controller.signal,
|
|
148
|
+
});
|
|
149
|
+
const result = (await response.json());
|
|
150
|
+
if (!result.success) {
|
|
151
|
+
const error = result.error ?? { code: 'UNKNOWN', message: 'Unknown error', retryable: false };
|
|
152
|
+
const err = new Error(`[ProxyClient] ${error.code}: ${error.message}`);
|
|
153
|
+
err.code = error.code;
|
|
154
|
+
err.retryable = error.retryable;
|
|
155
|
+
err.status = response.status;
|
|
156
|
+
throw err;
|
|
157
|
+
}
|
|
158
|
+
return result.data;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
162
|
+
throw new Error(`[ProxyClient] Request timeout after ${this.timeoutMs}ms for ${method}`);
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
clearTimeout(timeout);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create a proxy client if AGENTFACTORY_API_URL is set, otherwise return null.
|
|
173
|
+
*
|
|
174
|
+
* @param fallbackApiKey - API key to use (default: WORKER_API_KEY env var)
|
|
175
|
+
* @param organizationId - Workspace ID for multi-tenant routing
|
|
176
|
+
*/
|
|
177
|
+
export function createProxyClientIfConfigured(fallbackApiKey, organizationId) {
|
|
178
|
+
const apiUrl = process.env.AGENTFACTORY_API_URL;
|
|
179
|
+
if (!apiUrl)
|
|
180
|
+
return null;
|
|
181
|
+
const apiKey = fallbackApiKey ?? process.env.WORKER_API_KEY;
|
|
182
|
+
if (!apiKey) {
|
|
183
|
+
console.warn('[ProxyClient] AGENTFACTORY_API_URL set but no WORKER_API_KEY — proxy disabled');
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return new ProxyIssueTrackerClient({
|
|
187
|
+
apiUrl,
|
|
188
|
+
apiKey,
|
|
189
|
+
organizationId,
|
|
190
|
+
});
|
|
191
|
+
}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -145,6 +145,44 @@ export interface AgentSignals {
|
|
|
145
145
|
progress?: number;
|
|
146
146
|
[key: string]: unknown;
|
|
147
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Pluggable rate limiter strategy.
|
|
150
|
+
*
|
|
151
|
+
* The default in-memory TokenBucket implements this. Consumers can provide
|
|
152
|
+
* a Redis-backed implementation for shared rate limiting across processes.
|
|
153
|
+
*/
|
|
154
|
+
export interface RateLimiterStrategy {
|
|
155
|
+
acquire(): Promise<void>;
|
|
156
|
+
penalize(seconds: number): void | Promise<void>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Pluggable circuit breaker strategy.
|
|
160
|
+
*
|
|
161
|
+
* The default in-memory CircuitBreaker implements this. Consumers can provide
|
|
162
|
+
* a Redis-backed implementation for shared circuit state across processes.
|
|
163
|
+
*/
|
|
164
|
+
export interface CircuitBreakerStrategy {
|
|
165
|
+
canProceed(): boolean | Promise<boolean>;
|
|
166
|
+
recordSuccess(): void | Promise<void>;
|
|
167
|
+
recordAuthFailure(statusCode?: number): void | Promise<void>;
|
|
168
|
+
isAuthError(error: unknown): boolean;
|
|
169
|
+
reset(): void | Promise<void>;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Configuration for the circuit breaker
|
|
173
|
+
*/
|
|
174
|
+
export interface CircuitBreakerConfig {
|
|
175
|
+
/** Consecutive auth failures before opening (default: 2) */
|
|
176
|
+
failureThreshold: number;
|
|
177
|
+
/** Milliseconds before half-open probe (default: 60_000) */
|
|
178
|
+
resetTimeoutMs: number;
|
|
179
|
+
/** Maximum reset timeout after exponential backoff (default: 300_000) */
|
|
180
|
+
maxResetTimeoutMs: number;
|
|
181
|
+
/** Backoff multiplier for reset timeout after probe failure (default: 2) */
|
|
182
|
+
backoffMultiplier: number;
|
|
183
|
+
/** HTTP status codes that count as auth failures (default: [400, 401, 403]) */
|
|
184
|
+
authErrorCodes: number[];
|
|
185
|
+
}
|
|
148
186
|
/**
|
|
149
187
|
* Configuration for the Linear Agent Client
|
|
150
188
|
*/
|
|
@@ -154,6 +192,18 @@ export interface LinearAgentClientConfig {
|
|
|
154
192
|
retry?: RetryConfig;
|
|
155
193
|
/** Token bucket rate limiter configuration. Applied to all API calls. */
|
|
156
194
|
rateLimit?: Partial<import('./rate-limiter.js').TokenBucketConfig>;
|
|
195
|
+
/** Circuit breaker configuration. */
|
|
196
|
+
circuitBreaker?: Partial<CircuitBreakerConfig>;
|
|
197
|
+
/**
|
|
198
|
+
* Injectable rate limiter strategy (e.g., Redis-backed).
|
|
199
|
+
* When provided, replaces the default in-memory TokenBucket.
|
|
200
|
+
*/
|
|
201
|
+
rateLimiterStrategy?: RateLimiterStrategy;
|
|
202
|
+
/**
|
|
203
|
+
* Injectable circuit breaker strategy (e.g., Redis-backed).
|
|
204
|
+
* When provided, replaces the default in-memory CircuitBreaker.
|
|
205
|
+
*/
|
|
206
|
+
circuitBreakerStrategy?: CircuitBreakerStrategy;
|
|
157
207
|
}
|
|
158
208
|
/**
|
|
159
209
|
* Retry configuration with exponential backoff
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supaku/agentfactory-linear",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Linear issue tracker integration for AgentFactory — status transitions, agent sessions, work routing",
|
|
6
6
|
"author": "Supaku (https://supaku.com)",
|