@a5c-ai/tasks-adapter 5.1.1-staging.52898ebfc24f

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.
Files changed (202) hide show
  1. package/README.md +125 -0
  2. package/dist/auth/forge-interface.d.ts +67 -0
  3. package/dist/auth/forge-interface.d.ts.map +1 -0
  4. package/dist/auth/forge-interface.js +69 -0
  5. package/dist/auth/github-app.d.ts +64 -0
  6. package/dist/auth/github-app.d.ts.map +1 -0
  7. package/dist/auth/github-app.js +141 -0
  8. package/dist/auth/github-oauth.d.ts +27 -0
  9. package/dist/auth/github-oauth.d.ts.map +1 -0
  10. package/dist/auth/github-oauth.js +89 -0
  11. package/dist/auth/index.d.ts +8 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +14 -0
  14. package/dist/auth/jwt.d.ts +24 -0
  15. package/dist/auth/jwt.d.ts.map +1 -0
  16. package/dist/auth/jwt.js +43 -0
  17. package/dist/auth/middleware.d.ts +22 -0
  18. package/dist/auth/middleware.d.ts.map +1 -0
  19. package/dist/auth/middleware.js +36 -0
  20. package/dist/auth/ssh-keys.d.ts +21 -0
  21. package/dist/auth/ssh-keys.d.ts.map +1 -0
  22. package/dist/auth/ssh-keys.js +59 -0
  23. package/dist/auth/types.d.ts +165 -0
  24. package/dist/auth/types.d.ts.map +1 -0
  25. package/dist/auth/types.js +53 -0
  26. package/dist/backend.d.ts +248 -0
  27. package/dist/backend.d.ts.map +1 -0
  28. package/dist/backend.js +40 -0
  29. package/dist/backends/adapters.d.ts +99 -0
  30. package/dist/backends/adapters.d.ts.map +1 -0
  31. package/dist/backends/adapters.js +308 -0
  32. package/dist/backends/external-tracker.d.ts +133 -0
  33. package/dist/backends/external-tracker.d.ts.map +1 -0
  34. package/dist/backends/external-tracker.js +731 -0
  35. package/dist/backends/git-native.d.ts +69 -0
  36. package/dist/backends/git-native.d.ts.map +1 -0
  37. package/dist/backends/git-native.js +797 -0
  38. package/dist/backends/github-issues.d.ts +78 -0
  39. package/dist/backends/github-issues.d.ts.map +1 -0
  40. package/dist/backends/github-issues.js +806 -0
  41. package/dist/backends/index.d.ts +52 -0
  42. package/dist/backends/index.d.ts.map +1 -0
  43. package/dist/backends/index.js +151 -0
  44. package/dist/backends/server.d.ts +42 -0
  45. package/dist/backends/server.d.ts.map +1 -0
  46. package/dist/backends/server.js +305 -0
  47. package/dist/cli/auth-store.d.ts +49 -0
  48. package/dist/cli/auth-store.d.ts.map +1 -0
  49. package/dist/cli/auth-store.js +150 -0
  50. package/dist/cli/client-config.d.ts +10 -0
  51. package/dist/cli/client-config.d.ts.map +1 -0
  52. package/dist/cli/client-config.js +87 -0
  53. package/dist/cli/commands/ask.d.ts +3 -0
  54. package/dist/cli/commands/ask.d.ts.map +1 -0
  55. package/dist/cli/commands/ask.js +171 -0
  56. package/dist/cli/commands/auth.d.ts +3 -0
  57. package/dist/cli/commands/auth.d.ts.map +1 -0
  58. package/dist/cli/commands/auth.js +510 -0
  59. package/dist/cli/commands/breakpoints.d.ts +3 -0
  60. package/dist/cli/commands/breakpoints.d.ts.map +1 -0
  61. package/dist/cli/commands/breakpoints.js +311 -0
  62. package/dist/cli/commands/responder-loop.d.ts +3 -0
  63. package/dist/cli/commands/responder-loop.d.ts.map +1 -0
  64. package/dist/cli/commands/responder-loop.js +78 -0
  65. package/dist/cli/commands/responders.d.ts +3 -0
  66. package/dist/cli/commands/responders.d.ts.map +1 -0
  67. package/dist/cli/commands/responders.js +157 -0
  68. package/dist/cli/commands/rules.d.ts +3 -0
  69. package/dist/cli/commands/rules.d.ts.map +1 -0
  70. package/dist/cli/commands/rules.js +105 -0
  71. package/dist/cli/commands/server.d.ts +3 -0
  72. package/dist/cli/commands/server.d.ts.map +1 -0
  73. package/dist/cli/commands/server.js +34 -0
  74. package/dist/cli/commands/tasks.d.ts +3 -0
  75. package/dist/cli/commands/tasks.d.ts.map +1 -0
  76. package/dist/cli/commands/tasks.js +281 -0
  77. package/dist/cli/commands/templates.d.ts +3 -0
  78. package/dist/cli/commands/templates.d.ts.map +1 -0
  79. package/dist/cli/commands/templates.js +100 -0
  80. package/dist/cli/index.d.ts +4 -0
  81. package/dist/cli/index.d.ts.map +1 -0
  82. package/dist/cli/index.js +9 -0
  83. package/dist/cli/output.d.ts +26 -0
  84. package/dist/cli/output.d.ts.map +1 -0
  85. package/dist/cli/output.js +143 -0
  86. package/dist/cli/program.d.ts +6 -0
  87. package/dist/cli/program.d.ts.map +1 -0
  88. package/dist/cli/program.js +38 -0
  89. package/dist/cli/tasks-adapter.d.ts +3 -0
  90. package/dist/cli/tasks-adapter.d.ts.map +1 -0
  91. package/dist/cli/tasks-adapter.js +4 -0
  92. package/dist/client/answer-poller.d.ts +52 -0
  93. package/dist/client/answer-poller.d.ts.map +1 -0
  94. package/dist/client/answer-poller.js +200 -0
  95. package/dist/client/auth-client.d.ts +200 -0
  96. package/dist/client/auth-client.d.ts.map +1 -0
  97. package/dist/client/auth-client.js +309 -0
  98. package/dist/client/breakpoint-router.d.ts +45 -0
  99. package/dist/client/breakpoint-router.d.ts.map +1 -0
  100. package/dist/client/breakpoint-router.js +45 -0
  101. package/dist/client/index.d.ts +17 -0
  102. package/dist/client/index.d.ts.map +1 -0
  103. package/dist/client/index.js +16 -0
  104. package/dist/client/profile-validator.d.ts +34 -0
  105. package/dist/client/profile-validator.d.ts.map +1 -0
  106. package/dist/client/profile-validator.js +89 -0
  107. package/dist/client/responder-client.d.ts +39 -0
  108. package/dist/client/responder-client.d.ts.map +1 -0
  109. package/dist/client/responder-client.js +72 -0
  110. package/dist/client/responder-matcher.d.ts +49 -0
  111. package/dist/client/responder-matcher.d.ts.map +1 -0
  112. package/dist/client/responder-matcher.js +226 -0
  113. package/dist/client/server-client.d.ts +124 -0
  114. package/dist/client/server-client.d.ts.map +1 -0
  115. package/dist/client/server-client.js +266 -0
  116. package/dist/client/timeout-manager.d.ts +47 -0
  117. package/dist/client/timeout-manager.d.ts.map +1 -0
  118. package/dist/client/timeout-manager.js +77 -0
  119. package/dist/config.d.ts +20 -0
  120. package/dist/config.d.ts.map +1 -0
  121. package/dist/config.js +93 -0
  122. package/dist/harness/index.d.ts +4 -0
  123. package/dist/harness/index.d.ts.map +1 -0
  124. package/dist/harness/index.js +2 -0
  125. package/dist/harness/interaction-provider.d.ts +71 -0
  126. package/dist/harness/interaction-provider.d.ts.map +1 -0
  127. package/dist/harness/interaction-provider.js +124 -0
  128. package/dist/harness/routing-rules.d.ts +7 -0
  129. package/dist/harness/routing-rules.d.ts.map +1 -0
  130. package/dist/harness/routing-rules.js +37 -0
  131. package/dist/index.d.ts +29 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +33 -0
  134. package/dist/mcp/backend-resolver.d.ts +43 -0
  135. package/dist/mcp/backend-resolver.d.ts.map +1 -0
  136. package/dist/mcp/backend-resolver.js +111 -0
  137. package/dist/mcp/http-transport.d.ts +37 -0
  138. package/dist/mcp/http-transport.d.ts.map +1 -0
  139. package/dist/mcp/http-transport.js +103 -0
  140. package/dist/mcp/index.d.ts +16 -0
  141. package/dist/mcp/index.d.ts.map +1 -0
  142. package/dist/mcp/index.js +12 -0
  143. package/dist/mcp/server.d.ts +20 -0
  144. package/dist/mcp/server.d.ts.map +1 -0
  145. package/dist/mcp/server.js +259 -0
  146. package/dist/mcp/tools/answer-breakpoint.d.ts +32 -0
  147. package/dist/mcp/tools/answer-breakpoint.d.ts.map +1 -0
  148. package/dist/mcp/tools/answer-breakpoint.js +45 -0
  149. package/dist/mcp/tools/ask-breakpoint.d.ts +58 -0
  150. package/dist/mcp/tools/ask-breakpoint.d.ts.map +1 -0
  151. package/dist/mcp/tools/ask-breakpoint.js +78 -0
  152. package/dist/mcp/tools/check-status.d.ts +16 -0
  153. package/dist/mcp/tools/check-status.d.ts.map +1 -0
  154. package/dist/mcp/tools/check-status.js +18 -0
  155. package/dist/mcp/tools/claim-breakpoint.d.ts +18 -0
  156. package/dist/mcp/tools/claim-breakpoint.d.ts.map +1 -0
  157. package/dist/mcp/tools/claim-breakpoint.js +28 -0
  158. package/dist/mcp/tools/list-breakpoints.d.ts +16 -0
  159. package/dist/mcp/tools/list-breakpoints.d.ts.map +1 -0
  160. package/dist/mcp/tools/list-breakpoints.js +14 -0
  161. package/dist/mcp/tools/list-responders.d.ts +18 -0
  162. package/dist/mcp/tools/list-responders.d.ts.map +1 -0
  163. package/dist/mcp/tools/list-responders.js +37 -0
  164. package/dist/mcp/tools/native-tasks.d.ts +270 -0
  165. package/dist/mcp/tools/native-tasks.d.ts.map +1 -0
  166. package/dist/mcp/tools/native-tasks.js +481 -0
  167. package/dist/mcp/tools/poll-breakpoints.d.ts +18 -0
  168. package/dist/mcp/tools/poll-breakpoints.d.ts.map +1 -0
  169. package/dist/mcp/tools/poll-breakpoints.js +36 -0
  170. package/dist/mcp/tools/verify-answer.d.ts +16 -0
  171. package/dist/mcp/tools/verify-answer.d.ts.map +1 -0
  172. package/dist/mcp/tools/verify-answer.js +38 -0
  173. package/dist/proven/index.d.ts +5 -0
  174. package/dist/proven/index.d.ts.map +1 -0
  175. package/dist/proven/index.js +3 -0
  176. package/dist/proven/keys.d.ts +33 -0
  177. package/dist/proven/keys.d.ts.map +1 -0
  178. package/dist/proven/keys.js +117 -0
  179. package/dist/proven/sign.d.ts +16 -0
  180. package/dist/proven/sign.d.ts.map +1 -0
  181. package/dist/proven/sign.js +60 -0
  182. package/dist/proven/types.d.ts +26 -0
  183. package/dist/proven/types.d.ts.map +1 -0
  184. package/dist/proven/types.js +5 -0
  185. package/dist/proven/verify.d.ts +6 -0
  186. package/dist/proven/verify.d.ts.map +1 -0
  187. package/dist/proven/verify.js +58 -0
  188. package/dist/responders/types.d.ts +38 -0
  189. package/dist/responders/types.d.ts.map +1 -0
  190. package/dist/responders/types.js +1 -0
  191. package/dist/router.d.ts +51 -0
  192. package/dist/router.d.ts.map +1 -0
  193. package/dist/router.js +200 -0
  194. package/dist/types.d.ts +7711 -0
  195. package/dist/types.d.ts.map +1 -0
  196. package/dist/types.js +479 -0
  197. package/package.json +96 -0
  198. package/responder/README.md +42 -0
  199. package/responder/backend-responder.json +9 -0
  200. package/responder/devops-responder.json +9 -0
  201. package/responder/frontend-responder.json +9 -0
  202. package/responder/schema.json +89 -0
@@ -0,0 +1,40 @@
1
+ export class UnsupportedBreakpointFeatureError extends Error {
2
+ backendName;
3
+ feature;
4
+ constructor(backendName, feature) {
5
+ super(`Backend "${backendName}" does not support ${feature}`);
6
+ this.name = "UnsupportedBreakpointFeatureError";
7
+ this.backendName = backendName;
8
+ this.feature = feature;
9
+ }
10
+ }
11
+ export const unsupportedBreakpointBackendCapabilities = {
12
+ search: false,
13
+ bulkOperations: false,
14
+ assignment: false,
15
+ comments: false,
16
+ history: false,
17
+ metrics: false,
18
+ export: false,
19
+ forms: false,
20
+ notifications: false,
21
+ escalation: false,
22
+ };
23
+ export function unsupportedBreakpointFeature(backendName, feature) {
24
+ throw new UnsupportedBreakpointFeatureError(backendName, feature);
25
+ }
26
+ export function selectBreakpointAnswer(breakpoint) {
27
+ if (breakpoint.answers.length === 0) {
28
+ return undefined;
29
+ }
30
+ if (breakpoint.selectedAnswer) {
31
+ return breakpoint.answers.find((answer) => answer.id === breakpoint.selectedAnswer);
32
+ }
33
+ return breakpoint.answers[0];
34
+ }
35
+ export function supportsProvenAnswers(backendName) {
36
+ return backendName === "git-native";
37
+ }
38
+ export function unsupportedBackendFeatureMessage(backendName, feature) {
39
+ return `Backend "${backendName}" does not support ${feature}. Proven signing is currently supported only by "git-native".`;
40
+ }
@@ -0,0 +1,99 @@
1
+ import type { BreakpointBackend, BreakpointBackendCapabilities, SubmitAnswerParams, SubmitBreakpointParams, WaitForAnswerOptions } from "../backend.js";
2
+ import type { Breakpoint, BreakpointPublicAnswer, ResponderProfile } from "../types.js";
3
+ export interface AgentMuxRunOptions {
4
+ agent: string;
5
+ prompt: string | string[];
6
+ model?: string;
7
+ cwd?: string;
8
+ timeout?: number;
9
+ collectEvents?: boolean;
10
+ tags?: string[];
11
+ approvalMode?: "yolo" | "prompt" | "deny";
12
+ nonInteractive?: boolean;
13
+ }
14
+ export interface AgentMuxRunError {
15
+ readonly code: string;
16
+ readonly message: string;
17
+ readonly stderr: string;
18
+ readonly recoverable: boolean;
19
+ }
20
+ export interface AgentMuxRunResult {
21
+ readonly runId: string;
22
+ readonly agent: string;
23
+ readonly model: string | undefined;
24
+ readonly sessionId: string | undefined;
25
+ readonly text: string;
26
+ readonly cost: unknown;
27
+ readonly durationMs: number;
28
+ readonly exitCode: number | null;
29
+ readonly signal: string | null;
30
+ readonly exitReason: "completed" | "aborted" | "interrupted" | "timeout" | "inactivity" | "turn_limit" | "crashed" | "killed";
31
+ readonly tokenUsage: unknown;
32
+ readonly turnCount: number;
33
+ readonly error: AgentMuxRunError | null;
34
+ readonly events: Array<Record<string, unknown>>;
35
+ readonly tags: string[];
36
+ }
37
+ export interface AgentMuxRunHandleLike extends PromiseLike<AgentMuxRunResult> {
38
+ readonly runId: string;
39
+ readonly agent: string;
40
+ readonly model: string | undefined;
41
+ catch: Promise<AgentMuxRunResult>["catch"];
42
+ finally: Promise<AgentMuxRunResult>["finally"];
43
+ result(): Promise<AgentMuxRunResult>;
44
+ abort(): Promise<void> | void;
45
+ }
46
+ export interface AgentMuxClientLike {
47
+ run(options: AgentMuxRunOptions): AgentMuxRunHandleLike;
48
+ }
49
+ export interface AgentMuxResponderBackendConfig {
50
+ type?: "adapters";
51
+ agent?: string;
52
+ adapter?: string;
53
+ model?: string;
54
+ cwd?: string;
55
+ timeoutMs?: number;
56
+ collectEvents?: boolean;
57
+ tags?: string[];
58
+ approvalMode?: "yolo" | "prompt" | "deny";
59
+ nonInteractive?: boolean;
60
+ client?: AgentMuxClientLike;
61
+ clientFactory?: () => AgentMuxClientLike | Promise<AgentMuxClientLike>;
62
+ }
63
+ export declare class AgentMuxResponderBackendError extends Error {
64
+ readonly code: string;
65
+ readonly cause?: unknown;
66
+ constructor(code: string, message: string, cause?: unknown);
67
+ }
68
+ export declare class AgentMuxResponderBackend implements BreakpointBackend {
69
+ private readonly config;
70
+ readonly name = "adapters";
71
+ private readonly breakpoints;
72
+ private readonly client?;
73
+ private readonly clientFactory?;
74
+ constructor(config: AgentMuxResponderBackendConfig);
75
+ capabilities(): BreakpointBackendCapabilities;
76
+ submitBreakpoint(params: SubmitBreakpointParams): Promise<Breakpoint>;
77
+ getBreakpoint(id: string): Promise<Breakpoint>;
78
+ waitForAnswer(id: string, options?: WaitForAnswerOptions): Promise<{
79
+ answered: boolean;
80
+ breakpoint: Breakpoint;
81
+ answer?: BreakpointPublicAnswer;
82
+ allAnswers: BreakpointPublicAnswer[];
83
+ resolution?: string;
84
+ elapsedMs: number;
85
+ }>;
86
+ listPendingBreakpoints(responderId?: string): Promise<Breakpoint[]>;
87
+ answerBreakpoint(id: string, answerParams: SubmitAnswerParams): Promise<BreakpointPublicAnswer>;
88
+ cancelBreakpoint(id: string): Promise<void>;
89
+ listResponders(): Promise<ResponderProfile[]>;
90
+ private getClient;
91
+ private awaitRunResult;
92
+ private assertSuccessfulRun;
93
+ private mapRunStartError;
94
+ private createAnswer;
95
+ private buildPrompt;
96
+ private extractReferences;
97
+ private createRunMetadata;
98
+ }
99
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/backends/adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ import { unsupportedBreakpointBackendCapabilities } from "../backend.js";
2
+ import { BreakpointSchema, generateBreakpointId } from "../types.js";
3
+ export class AgentMuxResponderBackendError extends Error {
4
+ code;
5
+ cause;
6
+ constructor(code, message, cause) {
7
+ super(message);
8
+ this.name = "AgentMuxResponderBackendError";
9
+ this.code = code;
10
+ this.cause = cause;
11
+ }
12
+ }
13
+ export class AgentMuxResponderBackend {
14
+ config;
15
+ name = "adapters";
16
+ breakpoints = new Map();
17
+ client;
18
+ clientFactory;
19
+ constructor(config) {
20
+ this.config = config;
21
+ if (!config.agent && !config.adapter) {
22
+ throw new AgentMuxResponderBackendError("CONFIG_ERROR", 'AgentMuxResponderBackend requires an "agent" or "adapter" config value.');
23
+ }
24
+ this.client = config.client;
25
+ this.clientFactory = config.clientFactory;
26
+ }
27
+ capabilities() {
28
+ return {
29
+ ...unsupportedBreakpointBackendCapabilities,
30
+ assignment: true,
31
+ metrics: true,
32
+ };
33
+ }
34
+ async submitBreakpoint(params) {
35
+ const breakpointId = params.routing.breakpointId ?? generateBreakpointId();
36
+ const createdAt = new Date().toISOString();
37
+ const timeoutMs = params.routing.timeoutMs ?? this.config.timeoutMs ?? 30_000;
38
+ const expiresAt = new Date(Date.now() + timeoutMs).toISOString();
39
+ const agent = params.routing.adapter
40
+ ?? params.routing.targetResponders[0]
41
+ ?? this.config.adapter
42
+ ?? this.config.agent
43
+ ?? "adapters";
44
+ const runOptions = {
45
+ agent,
46
+ prompt: this.buildPrompt(params),
47
+ model: params.routing.model ?? this.config.model,
48
+ cwd: this.config.cwd,
49
+ timeout: timeoutMs,
50
+ collectEvents: this.config.collectEvents ?? true,
51
+ tags: [...new Set([...(this.config.tags ?? []), "tasks-adapter", "breakpoint", breakpointId])],
52
+ approvalMode: this.config.approvalMode,
53
+ nonInteractive: this.config.nonInteractive ?? true,
54
+ };
55
+ let handle;
56
+ try {
57
+ handle = (await this.getClient()).run(runOptions);
58
+ }
59
+ catch (err) {
60
+ throw this.mapRunStartError(err, agent);
61
+ }
62
+ const result = await this.awaitRunResult(handle, timeoutMs);
63
+ this.assertSuccessfulRun(result);
64
+ const answer = this.createAnswer({
65
+ breakpointId,
66
+ responderId: result.agent || agent,
67
+ responderName: result.agent || agent,
68
+ text: result.text,
69
+ confidence: 100,
70
+ references: this.extractReferences(result),
71
+ now: new Date().toISOString(),
72
+ });
73
+ const breakpoint = BreakpointSchema.parse({
74
+ id: breakpointId,
75
+ text: params.text,
76
+ context: {
77
+ ...params.context,
78
+ metadata: {
79
+ ...(params.context.metadata ?? {}),
80
+ agentMux: this.createRunMetadata(result),
81
+ },
82
+ },
83
+ status: "answered",
84
+ routing: params.routing,
85
+ answers: [answer],
86
+ selectedAnswer: answer.id,
87
+ projectId: params.projectId,
88
+ repoId: params.repoId,
89
+ createdAt,
90
+ updatedAt: answer.answeredAt,
91
+ expiresAt,
92
+ });
93
+ this.breakpoints.set(breakpoint.id, breakpoint);
94
+ return breakpoint;
95
+ }
96
+ async getBreakpoint(id) {
97
+ const breakpoint = this.breakpoints.get(id);
98
+ if (!breakpoint) {
99
+ throw new AgentMuxResponderBackendError("NOT_FOUND", `Breakpoint "${id}" was not found.`);
100
+ }
101
+ return breakpoint;
102
+ }
103
+ async waitForAnswer(id, options = {}) {
104
+ const started = Date.now();
105
+ if (options.signal?.aborted) {
106
+ throw new AgentMuxResponderBackendError("ABORTED", "Waiting for adapters answer was aborted.");
107
+ }
108
+ const breakpoint = await this.getBreakpoint(id);
109
+ const answer = breakpoint.selectedAnswer
110
+ ? breakpoint.answers.find((candidate) => candidate.id === breakpoint.selectedAnswer)
111
+ : breakpoint.answers[0];
112
+ return {
113
+ answered: Boolean(answer),
114
+ breakpoint,
115
+ answer,
116
+ allAnswers: breakpoint.answers,
117
+ resolution: answer ? "answered" : breakpoint.status,
118
+ elapsedMs: Date.now() - started,
119
+ };
120
+ }
121
+ async listPendingBreakpoints(responderId) {
122
+ return [...this.breakpoints.values()].filter((breakpoint) => {
123
+ const pending = breakpoint.status === "pending" || breakpoint.status === "routed" || breakpoint.status === "claimed";
124
+ if (!pending)
125
+ return false;
126
+ if (!responderId)
127
+ return true;
128
+ return breakpoint.routing.targetResponders.includes(responderId);
129
+ });
130
+ }
131
+ async answerBreakpoint(id, answerParams) {
132
+ const breakpoint = await this.getBreakpoint(id);
133
+ const answer = this.createAnswer({
134
+ breakpointId: id,
135
+ responderId: answerParams.responderId,
136
+ responderName: answerParams.responderName,
137
+ text: answerParams.text,
138
+ approved: answerParams.approved,
139
+ confidence: answerParams.confidence ?? 100,
140
+ references: answerParams.references ?? [],
141
+ followUpQuestions: answerParams.followUpQuestions ?? [],
142
+ decisionMemory: answerParams.decisionMemory
143
+ ? {
144
+ ...answerParams.decisionMemory,
145
+ savedAt: new Date().toISOString(),
146
+ }
147
+ : undefined,
148
+ now: new Date().toISOString(),
149
+ });
150
+ breakpoint.answers.push(answer);
151
+ breakpoint.selectedAnswer = answer.id;
152
+ breakpoint.status = "answered";
153
+ breakpoint.updatedAt = answer.answeredAt;
154
+ return answer;
155
+ }
156
+ async cancelBreakpoint(id) {
157
+ const breakpoint = this.breakpoints.get(id);
158
+ if (!breakpoint) {
159
+ throw new AgentMuxResponderBackendError("NOT_FOUND", `Breakpoint "${id}" was not found.`);
160
+ }
161
+ if (breakpoint.status === "answered" || breakpoint.status === "completed") {
162
+ throw new AgentMuxResponderBackendError("INVALID_STATE", `Breakpoint "${id}" has already been answered and cannot be cancelled.`);
163
+ }
164
+ breakpoint.status = "cancelled";
165
+ breakpoint.updatedAt = new Date().toISOString();
166
+ }
167
+ async listResponders() {
168
+ const agent = this.config.agent ?? this.config.adapter ?? "adapters";
169
+ return [
170
+ {
171
+ id: agent,
172
+ type: "agent",
173
+ name: agent,
174
+ title: "Agent adapter responder",
175
+ capabilities: ["text", "code", "automation", agent],
176
+ domains: [],
177
+ tags: ["adapters", agent],
178
+ availability: true,
179
+ responseTimeSla: (this.config.timeoutMs ?? 30_000) / 1000,
180
+ adapter: this.config.adapter,
181
+ model: this.config.model,
182
+ },
183
+ ];
184
+ }
185
+ async getClient() {
186
+ if (this.client) {
187
+ return this.client;
188
+ }
189
+ if (this.clientFactory) {
190
+ return await this.clientFactory();
191
+ }
192
+ const importModule = new Function("specifier", "return import(specifier)");
193
+ const mod = await importModule("@a5c-ai/adapters");
194
+ return mod.createClient({
195
+ defaultAgent: this.config.agent ?? this.config.adapter,
196
+ defaultModel: this.config.model,
197
+ approvalMode: this.config.approvalMode,
198
+ timeout: this.config.timeoutMs,
199
+ });
200
+ }
201
+ async awaitRunResult(handle, timeoutMs) {
202
+ let timer;
203
+ try {
204
+ return await Promise.race([
205
+ handle.result(),
206
+ new Promise((_, reject) => {
207
+ timer = setTimeout(() => {
208
+ void handle.abort();
209
+ reject(new AgentMuxResponderBackendError("TIMEOUT", `Adapters run timed out after ${timeoutMs}ms.`));
210
+ }, timeoutMs);
211
+ }),
212
+ ]);
213
+ }
214
+ finally {
215
+ if (timer) {
216
+ clearTimeout(timer);
217
+ }
218
+ }
219
+ }
220
+ assertSuccessfulRun(result) {
221
+ if (result.exitReason === "completed" && !result.error) {
222
+ return;
223
+ }
224
+ if (result.exitReason === "timeout" || result.exitReason === "inactivity") {
225
+ throw new AgentMuxResponderBackendError("TIMEOUT", `Adapters run timed out for agent "${result.agent}".`);
226
+ }
227
+ if (result.exitReason === "aborted") {
228
+ throw new AgentMuxResponderBackendError("ABORTED", `Adapters run was aborted for agent "${result.agent}".`);
229
+ }
230
+ const reason = result.error?.message ?? result.exitReason;
231
+ throw new AgentMuxResponderBackendError(result.error?.code ?? "RUN_FAILED", `Adapters run failed for agent "${result.agent}": ${reason}`, result.error);
232
+ }
233
+ mapRunStartError(err, agent) {
234
+ const code = typeof err === "object" && err && "code" in err
235
+ ? String(err.code)
236
+ : "RUN_START_FAILED";
237
+ const message = err instanceof Error ? err.message : String(err);
238
+ if (code === "UNKNOWN_AGENT" || code === "AGENT_NOT_FOUND" || code === "AGENT_NOT_INSTALLED") {
239
+ return new AgentMuxResponderBackendError(code, `Adapters adapter is not installed or unknown for agent "${agent}": ${message}`, err);
240
+ }
241
+ if (code === "AUTH_ERROR") {
242
+ return new AgentMuxResponderBackendError(code, `Adapters authentication failed for agent "${agent}": ${message}`, err);
243
+ }
244
+ if (code === "TIMEOUT" || code === "INACTIVITY_TIMEOUT") {
245
+ return new AgentMuxResponderBackendError("TIMEOUT", `Adapters run timed out for agent "${agent}": ${message}`, err);
246
+ }
247
+ return new AgentMuxResponderBackendError(code, `Adapters run could not start for agent "${agent}": ${message}`, err);
248
+ }
249
+ createAnswer(args) {
250
+ return {
251
+ id: `${args.breakpointId}-answer-${generateBreakpointId()}`,
252
+ breakpointId: args.breakpointId,
253
+ responderId: args.responderId,
254
+ responderName: args.responderName,
255
+ text: args.text,
256
+ approved: args.approved,
257
+ confidence: args.confidence,
258
+ references: args.references,
259
+ followUpQuestions: args.followUpQuestions ?? [],
260
+ decisionMemory: args.decisionMemory,
261
+ answeredAt: args.now,
262
+ };
263
+ }
264
+ buildPrompt(params) {
265
+ const sections = [
266
+ params.text,
267
+ "",
268
+ "Context:",
269
+ params.context.markdown ?? params.context.description,
270
+ ];
271
+ if (params.context.fileReferences.length > 0) {
272
+ sections.push("", "Files:", ...params.context.fileReferences.map((file) => `- ${file}`));
273
+ }
274
+ if (params.context.codeSnippets.length > 0) {
275
+ sections.push("", "Code snippets:", JSON.stringify(params.context.codeSnippets, null, 2));
276
+ }
277
+ return sections.join("\n");
278
+ }
279
+ extractReferences(result) {
280
+ const references = new Set();
281
+ for (const event of result.events ?? []) {
282
+ const value = event.reference ?? event.url ?? event.file;
283
+ if (typeof value === "string" && value.length > 0) {
284
+ references.add(value);
285
+ }
286
+ }
287
+ return [...references];
288
+ }
289
+ createRunMetadata(result) {
290
+ return {
291
+ runId: result.runId,
292
+ agent: result.agent,
293
+ model: result.model,
294
+ sessionId: result.sessionId,
295
+ exitReason: result.exitReason,
296
+ durationMs: result.durationMs,
297
+ exitCode: result.exitCode,
298
+ signal: result.signal,
299
+ cost: result.cost,
300
+ tokenUsage: result.tokenUsage,
301
+ turnCount: result.turnCount,
302
+ tags: result.tags,
303
+ costEvents: (result.events ?? [])
304
+ .filter((event) => event.type === "cost" && "cost" in event)
305
+ .map((event) => event.cost),
306
+ };
307
+ }
308
+ }
@@ -0,0 +1,133 @@
1
+ import type { BreakpointBackend, BreakpointBackendCapabilities, ListRespondersParams, SubmitAnswerParams, SubmitBreakpointParams, WaitForAnswerOptions } from "../backend.js";
2
+ import type { Breakpoint, BreakpointPublicAnswer, BreakpointWaitResult, ExternalTrackerBackendConfig, ExternalTrackerProvider, ExternalTrackerStatus, ResponderProfile } from "../types.js";
3
+ export interface ExternalTrackerReference {
4
+ provider: ExternalTrackerProvider;
5
+ id: string;
6
+ key?: string;
7
+ url?: string;
8
+ }
9
+ export interface ExternalTrackerIssue {
10
+ ref: ExternalTrackerReference;
11
+ title: string;
12
+ description?: string;
13
+ status: ExternalTrackerStatus;
14
+ labels: string[];
15
+ assignees: string[];
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ comments: ExternalTrackerComment[];
19
+ metadata?: Record<string, unknown>;
20
+ }
21
+ export interface ExternalTrackerComment {
22
+ id: string;
23
+ authorId: string;
24
+ authorName: string;
25
+ body: string;
26
+ createdAt: string;
27
+ }
28
+ export interface ExternalTrackerWebhookEvent {
29
+ provider: ExternalTrackerProvider;
30
+ eventId: string;
31
+ action: "issue.created" | "issue.updated" | "comment.created" | "issue.deleted";
32
+ issue: ExternalTrackerIssue;
33
+ comment?: ExternalTrackerComment;
34
+ receivedAt: string;
35
+ }
36
+ export interface ExternalTrackerWebhookResult {
37
+ accepted: boolean;
38
+ duplicate: boolean;
39
+ event?: ExternalTrackerWebhookEvent;
40
+ breakpoint?: Breakpoint;
41
+ answer?: BreakpointPublicAnswer;
42
+ }
43
+ export interface ExternalTrackerCreateIssueInput {
44
+ title: string;
45
+ description: string;
46
+ labels: string[];
47
+ assignees: string[];
48
+ fields: Record<string, unknown>;
49
+ metadata: Record<string, unknown>;
50
+ }
51
+ export interface ExternalTrackerAdapter {
52
+ readonly provider: ExternalTrackerProvider;
53
+ createIssue(input: ExternalTrackerCreateIssueInput): Promise<ExternalTrackerIssue>;
54
+ getIssue(ref: ExternalTrackerReference): Promise<ExternalTrackerIssue>;
55
+ listIssues(): Promise<ExternalTrackerIssue[]>;
56
+ addComment(ref: ExternalTrackerReference, answer: SubmitAnswerParams): Promise<ExternalTrackerComment>;
57
+ transitionIssue(ref: ExternalTrackerReference, status: ExternalTrackerStatus): Promise<void>;
58
+ claimIssue?(ref: ExternalTrackerReference, responderId: string): Promise<void>;
59
+ normalizeWebhook?(payload: unknown, headers?: Record<string, string>): ExternalTrackerWebhookEvent | null;
60
+ }
61
+ export declare function redactExternalTrackerSecrets<T>(value: T): T;
62
+ declare abstract class HttpTrackerAdapter implements ExternalTrackerAdapter {
63
+ protected readonly config: ExternalTrackerBackendConfig;
64
+ abstract readonly provider: ExternalTrackerProvider;
65
+ constructor(config: ExternalTrackerBackendConfig);
66
+ abstract createIssue(input: ExternalTrackerCreateIssueInput): Promise<ExternalTrackerIssue>;
67
+ abstract getIssue(ref: ExternalTrackerReference): Promise<ExternalTrackerIssue>;
68
+ abstract listIssues(): Promise<ExternalTrackerIssue[]>;
69
+ abstract addComment(ref: ExternalTrackerReference, answer: SubmitAnswerParams): Promise<ExternalTrackerComment>;
70
+ abstract transitionIssue(ref: ExternalTrackerReference, status: ExternalTrackerStatus): Promise<void>;
71
+ protected requestJson(pathOrUrl: string, init?: RequestInit): Promise<unknown>;
72
+ protected applyAuth(headers: Record<string, string>): void;
73
+ protected mapIssue(raw: unknown, fallbackId?: string): ExternalTrackerIssue;
74
+ protected mapComments(raw: unknown): ExternalTrackerComment[];
75
+ normalizeWebhook(payload: unknown): ExternalTrackerWebhookEvent | null;
76
+ }
77
+ export declare class JiraTrackerAdapter extends HttpTrackerAdapter {
78
+ readonly provider: "jira";
79
+ createIssue(input: ExternalTrackerCreateIssueInput): Promise<ExternalTrackerIssue>;
80
+ getIssue(ref: ExternalTrackerReference): Promise<ExternalTrackerIssue>;
81
+ listIssues(): Promise<ExternalTrackerIssue[]>;
82
+ addComment(ref: ExternalTrackerReference, answer: SubmitAnswerParams): Promise<ExternalTrackerComment>;
83
+ transitionIssue(ref: ExternalTrackerReference, status: ExternalTrackerStatus): Promise<void>;
84
+ }
85
+ export declare class LinearTrackerAdapter extends HttpTrackerAdapter {
86
+ readonly provider: "linear";
87
+ protected applyAuth(headers: Record<string, string>): void;
88
+ private graphql;
89
+ createIssue(input: ExternalTrackerCreateIssueInput): Promise<ExternalTrackerIssue>;
90
+ getIssue(ref: ExternalTrackerReference): Promise<ExternalTrackerIssue>;
91
+ listIssues(): Promise<ExternalTrackerIssue[]>;
92
+ addComment(ref: ExternalTrackerReference, answer: SubmitAnswerParams): Promise<ExternalTrackerComment>;
93
+ transitionIssue(ref: ExternalTrackerReference, status: ExternalTrackerStatus): Promise<void>;
94
+ protected mapIssue(raw: unknown, fallbackId?: string): ExternalTrackerIssue;
95
+ }
96
+ export declare class GenericRestTrackerAdapter extends HttpTrackerAdapter {
97
+ readonly provider: "generic-rest";
98
+ createIssue(input: ExternalTrackerCreateIssueInput): Promise<ExternalTrackerIssue>;
99
+ getIssue(ref: ExternalTrackerReference): Promise<ExternalTrackerIssue>;
100
+ listIssues(): Promise<ExternalTrackerIssue[]>;
101
+ addComment(ref: ExternalTrackerReference, answer: SubmitAnswerParams): Promise<ExternalTrackerComment>;
102
+ transitionIssue(ref: ExternalTrackerReference, status: ExternalTrackerStatus): Promise<void>;
103
+ claimIssue(ref: ExternalTrackerReference, responderId: string): Promise<void>;
104
+ }
105
+ export declare class ExternalTrackerBackend implements BreakpointBackend {
106
+ private readonly config;
107
+ readonly name = "external-tracker";
108
+ private readonly adapter?;
109
+ private readonly delegatedGitHub?;
110
+ private readonly refsByBreakpointId;
111
+ private readonly seenWebhookEvents;
112
+ private readonly defaultPollIntervalMs;
113
+ private readonly defaultTimeoutMs;
114
+ constructor(config: ExternalTrackerBackendConfig);
115
+ capabilities(): BreakpointBackendCapabilities;
116
+ submitBreakpoint(params: SubmitBreakpointParams): Promise<Breakpoint>;
117
+ getBreakpoint(id: string): Promise<Breakpoint>;
118
+ waitForAnswer(id: string, options?: WaitForAnswerOptions): Promise<BreakpointWaitResult>;
119
+ listPendingBreakpoints(responderId?: string): Promise<Breakpoint[]>;
120
+ answerBreakpoint(id: string, answer: SubmitAnswerParams): Promise<BreakpointPublicAnswer>;
121
+ cancelBreakpoint(id: string): Promise<void>;
122
+ listResponders(_params?: ListRespondersParams): Promise<ResponderProfile[]>;
123
+ claimBreakpoint(id: string, responderId: string): Promise<Breakpoint>;
124
+ handleWebhook(payload: unknown, headers?: Record<string, string>): ExternalTrackerWebhookResult;
125
+ private requireAdapter;
126
+ private resolveRef;
127
+ private issueToBreakpoint;
128
+ private mapStatusToBreakpoint;
129
+ private buildMappedFields;
130
+ }
131
+ export declare function createExternalTrackerAdapter(config: ExternalTrackerBackendConfig): ExternalTrackerAdapter;
132
+ export {};
133
+ //# sourceMappingURL=external-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-tracker.d.ts","sourceRoot":"","sources":["../../src/backends/external-tracker.ts"],"names":[],"mappings":"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"}