@a5c-ai/tasks-adapter 5.1.1-staging.0ad6ac75ae4a
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/README.md +125 -0
- package/dist/auth/forge-interface.d.ts +67 -0
- package/dist/auth/forge-interface.d.ts.map +1 -0
- package/dist/auth/forge-interface.js +69 -0
- package/dist/auth/github-app.d.ts +64 -0
- package/dist/auth/github-app.d.ts.map +1 -0
- package/dist/auth/github-app.js +141 -0
- package/dist/auth/github-oauth.d.ts +27 -0
- package/dist/auth/github-oauth.d.ts.map +1 -0
- package/dist/auth/github-oauth.js +89 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/jwt.d.ts +24 -0
- package/dist/auth/jwt.d.ts.map +1 -0
- package/dist/auth/jwt.js +43 -0
- package/dist/auth/middleware.d.ts +22 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +36 -0
- package/dist/auth/ssh-keys.d.ts +21 -0
- package/dist/auth/ssh-keys.d.ts.map +1 -0
- package/dist/auth/ssh-keys.js +59 -0
- package/dist/auth/types.d.ts +165 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +53 -0
- package/dist/backend.d.ts +248 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +40 -0
- package/dist/backends/adapters.d.ts +99 -0
- package/dist/backends/adapters.d.ts.map +1 -0
- package/dist/backends/adapters.js +308 -0
- package/dist/backends/external-tracker.d.ts +133 -0
- package/dist/backends/external-tracker.d.ts.map +1 -0
- package/dist/backends/external-tracker.js +731 -0
- package/dist/backends/git-native.d.ts +69 -0
- package/dist/backends/git-native.d.ts.map +1 -0
- package/dist/backends/git-native.js +797 -0
- package/dist/backends/github-issues.d.ts +78 -0
- package/dist/backends/github-issues.d.ts.map +1 -0
- package/dist/backends/github-issues.js +806 -0
- package/dist/backends/index.d.ts +52 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +151 -0
- package/dist/backends/server.d.ts +42 -0
- package/dist/backends/server.d.ts.map +1 -0
- package/dist/backends/server.js +305 -0
- package/dist/cli/auth-store.d.ts +49 -0
- package/dist/cli/auth-store.d.ts.map +1 -0
- package/dist/cli/auth-store.js +150 -0
- package/dist/cli/client-config.d.ts +10 -0
- package/dist/cli/client-config.d.ts.map +1 -0
- package/dist/cli/client-config.js +87 -0
- package/dist/cli/commands/ask.d.ts +3 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +171 -0
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +510 -0
- package/dist/cli/commands/breakpoints.d.ts +3 -0
- package/dist/cli/commands/breakpoints.d.ts.map +1 -0
- package/dist/cli/commands/breakpoints.js +311 -0
- package/dist/cli/commands/responder-loop.d.ts +3 -0
- package/dist/cli/commands/responder-loop.d.ts.map +1 -0
- package/dist/cli/commands/responder-loop.js +78 -0
- package/dist/cli/commands/responders.d.ts +3 -0
- package/dist/cli/commands/responders.d.ts.map +1 -0
- package/dist/cli/commands/responders.js +157 -0
- package/dist/cli/commands/rules.d.ts +3 -0
- package/dist/cli/commands/rules.d.ts.map +1 -0
- package/dist/cli/commands/rules.js +105 -0
- package/dist/cli/commands/server.d.ts +3 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +34 -0
- package/dist/cli/commands/tasks.d.ts +3 -0
- package/dist/cli/commands/tasks.d.ts.map +1 -0
- package/dist/cli/commands/tasks.js +281 -0
- package/dist/cli/commands/templates.d.ts +3 -0
- package/dist/cli/commands/templates.d.ts.map +1 -0
- package/dist/cli/commands/templates.js +100 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/output.d.ts +26 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +143 -0
- package/dist/cli/program.d.ts +6 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +38 -0
- package/dist/cli/tasks-adapter.d.ts +3 -0
- package/dist/cli/tasks-adapter.d.ts.map +1 -0
- package/dist/cli/tasks-adapter.js +4 -0
- package/dist/client/answer-poller.d.ts +52 -0
- package/dist/client/answer-poller.d.ts.map +1 -0
- package/dist/client/answer-poller.js +200 -0
- package/dist/client/auth-client.d.ts +200 -0
- package/dist/client/auth-client.d.ts.map +1 -0
- package/dist/client/auth-client.js +309 -0
- package/dist/client/breakpoint-router.d.ts +45 -0
- package/dist/client/breakpoint-router.d.ts.map +1 -0
- package/dist/client/breakpoint-router.js +45 -0
- package/dist/client/index.d.ts +17 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +16 -0
- package/dist/client/profile-validator.d.ts +34 -0
- package/dist/client/profile-validator.d.ts.map +1 -0
- package/dist/client/profile-validator.js +89 -0
- package/dist/client/responder-client.d.ts +39 -0
- package/dist/client/responder-client.d.ts.map +1 -0
- package/dist/client/responder-client.js +72 -0
- package/dist/client/responder-matcher.d.ts +49 -0
- package/dist/client/responder-matcher.d.ts.map +1 -0
- package/dist/client/responder-matcher.js +226 -0
- package/dist/client/server-client.d.ts +124 -0
- package/dist/client/server-client.d.ts.map +1 -0
- package/dist/client/server-client.js +266 -0
- package/dist/client/timeout-manager.d.ts +47 -0
- package/dist/client/timeout-manager.d.ts.map +1 -0
- package/dist/client/timeout-manager.js +77 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +93 -0
- package/dist/harness/index.d.ts +4 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +2 -0
- package/dist/harness/interaction-provider.d.ts +71 -0
- package/dist/harness/interaction-provider.d.ts.map +1 -0
- package/dist/harness/interaction-provider.js +124 -0
- package/dist/harness/routing-rules.d.ts +7 -0
- package/dist/harness/routing-rules.d.ts.map +1 -0
- package/dist/harness/routing-rules.js +37 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/mcp/backend-resolver.d.ts +43 -0
- package/dist/mcp/backend-resolver.d.ts.map +1 -0
- package/dist/mcp/backend-resolver.js +111 -0
- package/dist/mcp/http-transport.d.ts +37 -0
- package/dist/mcp/http-transport.d.ts.map +1 -0
- package/dist/mcp/http-transport.js +103 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +12 -0
- package/dist/mcp/server.d.ts +20 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +259 -0
- package/dist/mcp/tools/answer-breakpoint.d.ts +32 -0
- package/dist/mcp/tools/answer-breakpoint.d.ts.map +1 -0
- package/dist/mcp/tools/answer-breakpoint.js +45 -0
- package/dist/mcp/tools/ask-breakpoint.d.ts +58 -0
- package/dist/mcp/tools/ask-breakpoint.d.ts.map +1 -0
- package/dist/mcp/tools/ask-breakpoint.js +78 -0
- package/dist/mcp/tools/check-status.d.ts +16 -0
- package/dist/mcp/tools/check-status.d.ts.map +1 -0
- package/dist/mcp/tools/check-status.js +18 -0
- package/dist/mcp/tools/claim-breakpoint.d.ts +18 -0
- package/dist/mcp/tools/claim-breakpoint.d.ts.map +1 -0
- package/dist/mcp/tools/claim-breakpoint.js +28 -0
- package/dist/mcp/tools/list-breakpoints.d.ts +16 -0
- package/dist/mcp/tools/list-breakpoints.d.ts.map +1 -0
- package/dist/mcp/tools/list-breakpoints.js +14 -0
- package/dist/mcp/tools/list-responders.d.ts +18 -0
- package/dist/mcp/tools/list-responders.d.ts.map +1 -0
- package/dist/mcp/tools/list-responders.js +37 -0
- package/dist/mcp/tools/native-tasks.d.ts +270 -0
- package/dist/mcp/tools/native-tasks.d.ts.map +1 -0
- package/dist/mcp/tools/native-tasks.js +481 -0
- package/dist/mcp/tools/poll-breakpoints.d.ts +18 -0
- package/dist/mcp/tools/poll-breakpoints.d.ts.map +1 -0
- package/dist/mcp/tools/poll-breakpoints.js +36 -0
- package/dist/mcp/tools/verify-answer.d.ts +16 -0
- package/dist/mcp/tools/verify-answer.d.ts.map +1 -0
- package/dist/mcp/tools/verify-answer.js +38 -0
- package/dist/proven/index.d.ts +5 -0
- package/dist/proven/index.d.ts.map +1 -0
- package/dist/proven/index.js +3 -0
- package/dist/proven/keys.d.ts +33 -0
- package/dist/proven/keys.d.ts.map +1 -0
- package/dist/proven/keys.js +117 -0
- package/dist/proven/sign.d.ts +16 -0
- package/dist/proven/sign.d.ts.map +1 -0
- package/dist/proven/sign.js +60 -0
- package/dist/proven/types.d.ts +26 -0
- package/dist/proven/types.d.ts.map +1 -0
- package/dist/proven/types.js +5 -0
- package/dist/proven/verify.d.ts +6 -0
- package/dist/proven/verify.d.ts.map +1 -0
- package/dist/proven/verify.js +58 -0
- package/dist/responders/types.d.ts +38 -0
- package/dist/responders/types.d.ts.map +1 -0
- package/dist/responders/types.js +1 -0
- package/dist/router.d.ts +51 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +200 -0
- package/dist/types.d.ts +7711 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +479 -0
- package/package.json +96 -0
- package/responder/README.md +42 -0
- package/responder/backend-responder.json +9 -0
- package/responder/devops-responder.json +9 -0
- package/responder/frontend-responder.json +9 -0
- package/responder/schema.json +89 -0
package/dist/auth/jwt.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import jwt from "jsonwebtoken";
|
|
2
|
+
import { JWTPayloadSchema } from "./types.js";
|
|
3
|
+
// ── Constants ─────────────────────────────────────────────────────────────
|
|
4
|
+
const ALGORITHM = "HS256";
|
|
5
|
+
const DEFAULT_ACCESS_TOKEN_EXPIRY = "1h";
|
|
6
|
+
const DEFAULT_REFRESH_TOKEN_EXPIRY = "7d";
|
|
7
|
+
// ── Sign / Verify ─────────────────────────────────────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* Sign a JWT access token with the given payload and secret.
|
|
10
|
+
*/
|
|
11
|
+
export function signAccessToken(payload, secret, expiresIn = DEFAULT_ACCESS_TOKEN_EXPIRY) {
|
|
12
|
+
return jwt.sign({ ...payload, type: "access" }, secret, { algorithm: ALGORITHM, expiresIn });
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Sign a JWT refresh token with the given payload and secret.
|
|
16
|
+
*/
|
|
17
|
+
export function signRefreshToken(payload, secret, expiresIn = DEFAULT_REFRESH_TOKEN_EXPIRY) {
|
|
18
|
+
return jwt.sign({ ...payload, type: "refresh" }, secret, { algorithm: ALGORITHM, expiresIn });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Verify a JWT token and return its decoded payload.
|
|
22
|
+
* Throws if the token is invalid or expired.
|
|
23
|
+
*/
|
|
24
|
+
export function verifyToken(token, secret) {
|
|
25
|
+
const decoded = jwt.verify(token, secret, { algorithms: [ALGORITHM] });
|
|
26
|
+
const result = JWTPayloadSchema.parse(decoded);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Refresh an access token using a valid refresh token.
|
|
31
|
+
* Returns a new access token and a new refresh token.
|
|
32
|
+
*/
|
|
33
|
+
export function refreshAccessToken(refreshToken, secret) {
|
|
34
|
+
const payload = verifyToken(refreshToken, secret);
|
|
35
|
+
if (payload.type !== "refresh") {
|
|
36
|
+
throw new Error("Token is not a refresh token");
|
|
37
|
+
}
|
|
38
|
+
const tokenPayload = { sub: payload.sub, login: payload.login, name: payload.name };
|
|
39
|
+
return {
|
|
40
|
+
accessToken: signAccessToken(tokenPayload, secret),
|
|
41
|
+
refreshToken: signRefreshToken(tokenPayload, secret),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Request, Response, NextFunction } from "express";
|
|
2
|
+
import type { JWTPayload } from "./types.js";
|
|
3
|
+
declare module "express" {
|
|
4
|
+
interface Request {
|
|
5
|
+
user?: JWTPayload;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export interface AuthMiddlewareOpts {
|
|
9
|
+
/** The secret used to verify JWT tokens. */
|
|
10
|
+
secret: string;
|
|
11
|
+
/** If true, returns 401 on missing or invalid token. Defaults to false. */
|
|
12
|
+
required?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create Express middleware that extracts and verifies a JWT from the
|
|
16
|
+
* Authorization: Bearer header.
|
|
17
|
+
*
|
|
18
|
+
* If `required` is true, returns 401 on missing or invalid tokens.
|
|
19
|
+
* If `required` is false (default), continues without auth when no token is present.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createAuthMiddleware(opts: AuthMiddlewareOpts): (req: Request, res: Response, next: NextFunction) => void;
|
|
22
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,OAAO;QACf,IAAI,CAAC,EAAE,UAAU,CAAC;KACnB;CACF;AAID,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,kBAAkB,GACvB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CA6B3D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { verifyToken } from "./jwt.js";
|
|
2
|
+
// ── Middleware ─────────────────────────────────────────────────────────────
|
|
3
|
+
/**
|
|
4
|
+
* Create Express middleware that extracts and verifies a JWT from the
|
|
5
|
+
* Authorization: Bearer header.
|
|
6
|
+
*
|
|
7
|
+
* If `required` is true, returns 401 on missing or invalid tokens.
|
|
8
|
+
* If `required` is false (default), continues without auth when no token is present.
|
|
9
|
+
*/
|
|
10
|
+
export function createAuthMiddleware(opts) {
|
|
11
|
+
const { secret, required = false } = opts;
|
|
12
|
+
return (req, res, next) => {
|
|
13
|
+
const authHeader = req.headers.authorization;
|
|
14
|
+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
15
|
+
if (required) {
|
|
16
|
+
res.status(401).json({ error: "Authorization header with Bearer token is required" });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
next();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const token = authHeader.slice(7);
|
|
23
|
+
try {
|
|
24
|
+
const payload = verifyToken(token, secret);
|
|
25
|
+
req.user = payload;
|
|
26
|
+
next();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
if (required) {
|
|
30
|
+
res.status(401).json({ error: "Invalid or expired token" });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
next();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SSHKeyPair } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generate an Ed25519 SSH key pair.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateSSHKeyPair(): SSHKeyPair;
|
|
6
|
+
/**
|
|
7
|
+
* Parse a public key string and return its algorithm and fingerprint.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parsePublicKey(key: string): {
|
|
10
|
+
algorithm: string;
|
|
11
|
+
fingerprint: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the SHA256 fingerprint of a public key (base64 encoded).
|
|
15
|
+
*/
|
|
16
|
+
export declare function calculateFingerprint(publicKey: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format a public key as an authorized_keys entry with an optional comment.
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatAuthorizedKey(publicKey: string, comment?: string): string;
|
|
21
|
+
//# sourceMappingURL=ssh-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh-keys.d.ts","sourceRoot":"","sources":["../../src/auth/ssh-keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAe/C;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CActF;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG9D;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { generateKeyPairSync, createHash } from "node:crypto";
|
|
2
|
+
// ── Constants ─────────────────────────────────────────────────────────────
|
|
3
|
+
const DEFAULT_ALGORITHM = "ed25519";
|
|
4
|
+
// ── Key Generation ────────────────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* Generate an Ed25519 SSH key pair.
|
|
7
|
+
*/
|
|
8
|
+
export function generateSSHKeyPair() {
|
|
9
|
+
const { publicKey, privateKey } = generateKeyPairSync("ed25519", {
|
|
10
|
+
publicKeyEncoding: { type: "spki", format: "pem" },
|
|
11
|
+
privateKeyEncoding: { type: "pkcs8", format: "pem" },
|
|
12
|
+
});
|
|
13
|
+
const fingerprint = calculateFingerprint(publicKey);
|
|
14
|
+
return {
|
|
15
|
+
publicKey,
|
|
16
|
+
privateKey,
|
|
17
|
+
fingerprint,
|
|
18
|
+
algorithm: DEFAULT_ALGORITHM,
|
|
19
|
+
createdAt: new Date().toISOString(),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
// ── Key Parsing ───────────────────────────────────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Parse a public key string and return its algorithm and fingerprint.
|
|
25
|
+
*/
|
|
26
|
+
export function parsePublicKey(key) {
|
|
27
|
+
const fingerprint = calculateFingerprint(key);
|
|
28
|
+
// Detect algorithm from key content
|
|
29
|
+
let algorithm = "unknown";
|
|
30
|
+
if (key.includes("ssh-ed25519") || key.includes("ED25519")) {
|
|
31
|
+
algorithm = "ed25519";
|
|
32
|
+
}
|
|
33
|
+
else if (key.includes("ssh-rsa") || key.includes("RSA")) {
|
|
34
|
+
algorithm = "rsa";
|
|
35
|
+
}
|
|
36
|
+
else if (key.includes("ecdsa") || key.includes("EC")) {
|
|
37
|
+
algorithm = "ecdsa";
|
|
38
|
+
}
|
|
39
|
+
return { algorithm, fingerprint };
|
|
40
|
+
}
|
|
41
|
+
// ── Fingerprint ───────────────────────────────────────────────────────────
|
|
42
|
+
/**
|
|
43
|
+
* Calculate the SHA256 fingerprint of a public key (base64 encoded).
|
|
44
|
+
*/
|
|
45
|
+
export function calculateFingerprint(publicKey) {
|
|
46
|
+
const hash = createHash("sha256").update(publicKey.trim()).digest("base64");
|
|
47
|
+
return `SHA256:${hash}`;
|
|
48
|
+
}
|
|
49
|
+
// ── Formatting ────────────────────────────────────────────────────────────
|
|
50
|
+
/**
|
|
51
|
+
* Format a public key as an authorized_keys entry with an optional comment.
|
|
52
|
+
*/
|
|
53
|
+
export function formatAuthorizedKey(publicKey, comment) {
|
|
54
|
+
const trimmed = publicKey.trim();
|
|
55
|
+
if (comment) {
|
|
56
|
+
return `${trimmed} ${comment}`;
|
|
57
|
+
}
|
|
58
|
+
return trimmed;
|
|
59
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const UserSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
login: z.ZodString;
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
email: z.ZodString;
|
|
7
|
+
avatarUrl: z.ZodString;
|
|
8
|
+
provider: z.ZodLiteral<"github">;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
provider: "github";
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
login: string;
|
|
14
|
+
email: string;
|
|
15
|
+
avatarUrl: string;
|
|
16
|
+
}, {
|
|
17
|
+
provider: "github";
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
login: string;
|
|
21
|
+
email: string;
|
|
22
|
+
avatarUrl: string;
|
|
23
|
+
}>;
|
|
24
|
+
export type User = z.infer<typeof UserSchema>;
|
|
25
|
+
export declare const AuthTokenSchema: z.ZodObject<{
|
|
26
|
+
accessToken: z.ZodString;
|
|
27
|
+
refreshToken: z.ZodString;
|
|
28
|
+
expiresAt: z.ZodString;
|
|
29
|
+
user: z.ZodObject<{
|
|
30
|
+
id: z.ZodString;
|
|
31
|
+
login: z.ZodString;
|
|
32
|
+
name: z.ZodString;
|
|
33
|
+
email: z.ZodString;
|
|
34
|
+
avatarUrl: z.ZodString;
|
|
35
|
+
provider: z.ZodLiteral<"github">;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
provider: "github";
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
login: string;
|
|
41
|
+
email: string;
|
|
42
|
+
avatarUrl: string;
|
|
43
|
+
}, {
|
|
44
|
+
provider: "github";
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
login: string;
|
|
48
|
+
email: string;
|
|
49
|
+
avatarUrl: string;
|
|
50
|
+
}>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
expiresAt: string;
|
|
53
|
+
user: {
|
|
54
|
+
provider: "github";
|
|
55
|
+
id: string;
|
|
56
|
+
name: string;
|
|
57
|
+
login: string;
|
|
58
|
+
email: string;
|
|
59
|
+
avatarUrl: string;
|
|
60
|
+
};
|
|
61
|
+
accessToken: string;
|
|
62
|
+
refreshToken: string;
|
|
63
|
+
}, {
|
|
64
|
+
expiresAt: string;
|
|
65
|
+
user: {
|
|
66
|
+
provider: "github";
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
login: string;
|
|
70
|
+
email: string;
|
|
71
|
+
avatarUrl: string;
|
|
72
|
+
};
|
|
73
|
+
accessToken: string;
|
|
74
|
+
refreshToken: string;
|
|
75
|
+
}>;
|
|
76
|
+
export type AuthToken = z.infer<typeof AuthTokenSchema>;
|
|
77
|
+
export declare const JWTPayloadSchema: z.ZodObject<{
|
|
78
|
+
sub: z.ZodString;
|
|
79
|
+
login: z.ZodString;
|
|
80
|
+
name: z.ZodString;
|
|
81
|
+
iat: z.ZodNumber;
|
|
82
|
+
exp: z.ZodNumber;
|
|
83
|
+
type: z.ZodEnum<["access", "refresh"]>;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
type: "access" | "refresh";
|
|
86
|
+
name: string;
|
|
87
|
+
sub: string;
|
|
88
|
+
login: string;
|
|
89
|
+
iat: number;
|
|
90
|
+
exp: number;
|
|
91
|
+
}, {
|
|
92
|
+
type: "access" | "refresh";
|
|
93
|
+
name: string;
|
|
94
|
+
sub: string;
|
|
95
|
+
login: string;
|
|
96
|
+
iat: number;
|
|
97
|
+
exp: number;
|
|
98
|
+
}>;
|
|
99
|
+
export type JWTPayload = z.infer<typeof JWTPayloadSchema>;
|
|
100
|
+
export declare const SSHKeyPairSchema: z.ZodObject<{
|
|
101
|
+
publicKey: z.ZodString;
|
|
102
|
+
privateKey: z.ZodString;
|
|
103
|
+
fingerprint: z.ZodString;
|
|
104
|
+
algorithm: z.ZodString;
|
|
105
|
+
createdAt: z.ZodString;
|
|
106
|
+
}, "strip", z.ZodTypeAny, {
|
|
107
|
+
createdAt: string;
|
|
108
|
+
publicKey: string;
|
|
109
|
+
privateKey: string;
|
|
110
|
+
fingerprint: string;
|
|
111
|
+
algorithm: string;
|
|
112
|
+
}, {
|
|
113
|
+
createdAt: string;
|
|
114
|
+
publicKey: string;
|
|
115
|
+
privateKey: string;
|
|
116
|
+
fingerprint: string;
|
|
117
|
+
algorithm: string;
|
|
118
|
+
}>;
|
|
119
|
+
export type SSHKeyPair = z.infer<typeof SSHKeyPairSchema>;
|
|
120
|
+
export declare const GitForgeConfigSchema: z.ZodObject<{
|
|
121
|
+
type: z.ZodEnum<["github", "gitlab", "bitbucket"]>;
|
|
122
|
+
baseUrl: z.ZodString;
|
|
123
|
+
credentials: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
type: "github" | "gitlab" | "bitbucket";
|
|
126
|
+
baseUrl: string;
|
|
127
|
+
credentials: Record<string, string>;
|
|
128
|
+
}, {
|
|
129
|
+
type: "github" | "gitlab" | "bitbucket";
|
|
130
|
+
baseUrl: string;
|
|
131
|
+
credentials: Record<string, string>;
|
|
132
|
+
}>;
|
|
133
|
+
export type GitForgeConfig = z.infer<typeof GitForgeConfigSchema>;
|
|
134
|
+
export declare const GitHubOAuthConfigSchema: z.ZodObject<{
|
|
135
|
+
clientId: z.ZodString;
|
|
136
|
+
clientSecret: z.ZodString;
|
|
137
|
+
callbackUrl: z.ZodString;
|
|
138
|
+
scopes: z.ZodArray<z.ZodString, "many">;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
clientId: string;
|
|
141
|
+
clientSecret: string;
|
|
142
|
+
callbackUrl: string;
|
|
143
|
+
scopes: string[];
|
|
144
|
+
}, {
|
|
145
|
+
clientId: string;
|
|
146
|
+
clientSecret: string;
|
|
147
|
+
callbackUrl: string;
|
|
148
|
+
scopes: string[];
|
|
149
|
+
}>;
|
|
150
|
+
export type GitHubOAuthConfig = z.infer<typeof GitHubOAuthConfigSchema>;
|
|
151
|
+
export declare const GitHubAppConfigSchema: z.ZodObject<{
|
|
152
|
+
appId: z.ZodString;
|
|
153
|
+
privateKey: z.ZodString;
|
|
154
|
+
webhookSecret: z.ZodOptional<z.ZodString>;
|
|
155
|
+
}, "strip", z.ZodTypeAny, {
|
|
156
|
+
privateKey: string;
|
|
157
|
+
appId: string;
|
|
158
|
+
webhookSecret?: string | undefined;
|
|
159
|
+
}, {
|
|
160
|
+
privateKey: string;
|
|
161
|
+
appId: string;
|
|
162
|
+
webhookSecret?: string | undefined;
|
|
163
|
+
}>;
|
|
164
|
+
export type GitHubAppConfig = z.infer<typeof GitHubAppConfigSchema>;
|
|
165
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAI9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAIxD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ── User ──────────────────────────────────────────────────────────────────
|
|
3
|
+
export const UserSchema = z.object({
|
|
4
|
+
id: z.string().min(1),
|
|
5
|
+
login: z.string().min(1),
|
|
6
|
+
name: z.string().min(1),
|
|
7
|
+
email: z.string().email(),
|
|
8
|
+
avatarUrl: z.string().url(),
|
|
9
|
+
provider: z.literal("github"),
|
|
10
|
+
});
|
|
11
|
+
// ── AuthToken ─────────────────────────────────────────────────────────────
|
|
12
|
+
export const AuthTokenSchema = z.object({
|
|
13
|
+
accessToken: z.string().min(1),
|
|
14
|
+
refreshToken: z.string().min(1),
|
|
15
|
+
expiresAt: z.string().datetime(),
|
|
16
|
+
user: UserSchema,
|
|
17
|
+
});
|
|
18
|
+
// ── JWTPayload ────────────────────────────────────────────────────────────
|
|
19
|
+
export const JWTPayloadSchema = z.object({
|
|
20
|
+
sub: z.string().min(1),
|
|
21
|
+
login: z.string().min(1),
|
|
22
|
+
name: z.string().min(1),
|
|
23
|
+
iat: z.number().int(),
|
|
24
|
+
exp: z.number().int(),
|
|
25
|
+
type: z.enum(["access", "refresh"]),
|
|
26
|
+
});
|
|
27
|
+
// ── SSHKeyPair ────────────────────────────────────────────────────────────
|
|
28
|
+
export const SSHKeyPairSchema = z.object({
|
|
29
|
+
publicKey: z.string().min(1),
|
|
30
|
+
privateKey: z.string().min(1),
|
|
31
|
+
fingerprint: z.string().min(1),
|
|
32
|
+
algorithm: z.string().min(1),
|
|
33
|
+
createdAt: z.string().datetime(),
|
|
34
|
+
});
|
|
35
|
+
// ── GitForgeConfig ────────────────────────────────────────────────────────
|
|
36
|
+
export const GitForgeConfigSchema = z.object({
|
|
37
|
+
type: z.enum(["github", "gitlab", "bitbucket"]),
|
|
38
|
+
baseUrl: z.string().url(),
|
|
39
|
+
credentials: z.record(z.string(), z.string()),
|
|
40
|
+
});
|
|
41
|
+
// ── GitHubOAuthConfig ─────────────────────────────────────────────────────
|
|
42
|
+
export const GitHubOAuthConfigSchema = z.object({
|
|
43
|
+
clientId: z.string().min(1),
|
|
44
|
+
clientSecret: z.string().min(1),
|
|
45
|
+
callbackUrl: z.string().url(),
|
|
46
|
+
scopes: z.array(z.string()),
|
|
47
|
+
});
|
|
48
|
+
// ── GitHubAppConfig ───────────────────────────────────────────────────────
|
|
49
|
+
export const GitHubAppConfigSchema = z.object({
|
|
50
|
+
appId: z.string().min(1),
|
|
51
|
+
privateKey: z.string().min(1),
|
|
52
|
+
webhookSecret: z.string().optional(),
|
|
53
|
+
});
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import type { Breakpoint, BreakpointComment, BreakpointDependency, BreakpointPublicAnswer, BreakpointContext, BreakpointRouting, BreakpointStatus, BreakpointWaitResult, ResponderProfile, TaskPriority } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parameters for submitting a new breakpoint to a backend.
|
|
4
|
+
*/
|
|
5
|
+
export interface SubmitBreakpointParams {
|
|
6
|
+
/** The breakpoint question text. */
|
|
7
|
+
text: string;
|
|
8
|
+
/** Rich context for the breakpoint. */
|
|
9
|
+
context: BreakpointContext;
|
|
10
|
+
/** Routing configuration. */
|
|
11
|
+
routing: BreakpointRouting;
|
|
12
|
+
/** Optional task-management priority. */
|
|
13
|
+
priority?: TaskPriority;
|
|
14
|
+
/** Optional dependency list that can block completion. */
|
|
15
|
+
dependsOn?: BreakpointDependency[];
|
|
16
|
+
/** Whether the requester requires a signed answer. */
|
|
17
|
+
proven?: boolean;
|
|
18
|
+
/** Optional project scope. */
|
|
19
|
+
projectId?: string;
|
|
20
|
+
/** Optional repository scope. */
|
|
21
|
+
repoId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for waiting for an answer from a backend.
|
|
25
|
+
*/
|
|
26
|
+
export interface WaitForAnswerOptions {
|
|
27
|
+
/** Maximum time to wait in milliseconds. */
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
/** Polling interval in milliseconds (for polling-based backends). */
|
|
30
|
+
pollIntervalMs?: number;
|
|
31
|
+
/** Whether to prefer event-based updates over polling. */
|
|
32
|
+
preferStreaming?: boolean;
|
|
33
|
+
/** AbortSignal for external cancellation. */
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parameters for submitting an answer to a breakpoint.
|
|
38
|
+
*/
|
|
39
|
+
export interface SubmitAnswerParams {
|
|
40
|
+
/** ID of the responder submitting the answer. */
|
|
41
|
+
responderId: string;
|
|
42
|
+
/** Display name of the responder. */
|
|
43
|
+
responderName: string;
|
|
44
|
+
/** The answer text. */
|
|
45
|
+
text: string;
|
|
46
|
+
/** Whether the breakpoint action is approved (for approval-type breakpoints). */
|
|
47
|
+
approved?: boolean;
|
|
48
|
+
/** Confidence score 0-100. */
|
|
49
|
+
confidence?: number;
|
|
50
|
+
/** Reference links or file paths. */
|
|
51
|
+
references?: string[];
|
|
52
|
+
/** Follow-up questions to consider. */
|
|
53
|
+
followUpQuestions?: string[];
|
|
54
|
+
/** Decision memory for future reference. */
|
|
55
|
+
decisionMemory?: {
|
|
56
|
+
applicabilityContext: string;
|
|
57
|
+
reasoning: string;
|
|
58
|
+
};
|
|
59
|
+
/** Whether the responder explicitly requests signing. */
|
|
60
|
+
sign?: boolean;
|
|
61
|
+
/** Specific signing key fingerprint to use when signing. */
|
|
62
|
+
keyFingerprint?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options for listing responders.
|
|
66
|
+
*/
|
|
67
|
+
export interface ListRespondersParams {
|
|
68
|
+
projectId?: string;
|
|
69
|
+
repoId?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface BreakpointBackendCapabilities {
|
|
72
|
+
search: boolean;
|
|
73
|
+
bulkOperations: boolean;
|
|
74
|
+
assignment: boolean;
|
|
75
|
+
comments: boolean;
|
|
76
|
+
history: boolean;
|
|
77
|
+
metrics: boolean;
|
|
78
|
+
export: boolean;
|
|
79
|
+
forms: boolean;
|
|
80
|
+
notifications: boolean;
|
|
81
|
+
escalation: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface BreakpointSearchQuery {
|
|
84
|
+
query?: string;
|
|
85
|
+
status?: BreakpointStatus[];
|
|
86
|
+
priority?: TaskPriority[];
|
|
87
|
+
assigneeId?: string;
|
|
88
|
+
responderId?: string;
|
|
89
|
+
tags?: string[];
|
|
90
|
+
domain?: string;
|
|
91
|
+
createdAfter?: string;
|
|
92
|
+
createdBefore?: string;
|
|
93
|
+
updatedAfter?: string;
|
|
94
|
+
updatedBefore?: string;
|
|
95
|
+
sortBy?: "createdAt" | "updatedAt" | "priority" | "status";
|
|
96
|
+
sortDirection?: "asc" | "desc";
|
|
97
|
+
offset?: number;
|
|
98
|
+
limit?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface SearchBreakpointsResult {
|
|
101
|
+
items: Breakpoint[];
|
|
102
|
+
total: number;
|
|
103
|
+
offset: number;
|
|
104
|
+
limit: number;
|
|
105
|
+
}
|
|
106
|
+
export interface AssignBreakpointParams {
|
|
107
|
+
assigneeId: string;
|
|
108
|
+
assigneeName?: string;
|
|
109
|
+
actorId?: string;
|
|
110
|
+
}
|
|
111
|
+
export interface TransitionBreakpointParams {
|
|
112
|
+
status: BreakpointStatus;
|
|
113
|
+
actorId?: string;
|
|
114
|
+
message?: string;
|
|
115
|
+
metadata?: Record<string, unknown>;
|
|
116
|
+
}
|
|
117
|
+
export interface AddBreakpointCommentParams {
|
|
118
|
+
authorId: string;
|
|
119
|
+
authorName?: string;
|
|
120
|
+
text: string;
|
|
121
|
+
metadata?: Record<string, unknown>;
|
|
122
|
+
}
|
|
123
|
+
export interface BulkUpdateBreakpointsParams {
|
|
124
|
+
ids: string[];
|
|
125
|
+
action: "approve" | "close" | "cancel" | "reassign" | "transition";
|
|
126
|
+
actorId?: string;
|
|
127
|
+
assigneeId?: string;
|
|
128
|
+
assigneeName?: string;
|
|
129
|
+
status?: BreakpointStatus;
|
|
130
|
+
answer?: SubmitAnswerParams;
|
|
131
|
+
message?: string;
|
|
132
|
+
}
|
|
133
|
+
export interface BulkUpdateBreakpointItemResult {
|
|
134
|
+
id: string;
|
|
135
|
+
ok: boolean;
|
|
136
|
+
breakpoint?: Breakpoint;
|
|
137
|
+
errorCode?: "not_found" | "invalid_transition" | "unsupported" | "error";
|
|
138
|
+
error?: string;
|
|
139
|
+
}
|
|
140
|
+
export interface BulkBreakpointOperationResult {
|
|
141
|
+
total: number;
|
|
142
|
+
succeeded: number;
|
|
143
|
+
failed: number;
|
|
144
|
+
items: BulkUpdateBreakpointItemResult[];
|
|
145
|
+
}
|
|
146
|
+
export interface BreakpointMetricsSummary {
|
|
147
|
+
total: number;
|
|
148
|
+
byStatus: Partial<Record<BreakpointStatus, number>>;
|
|
149
|
+
byPriority: Partial<Record<TaskPriority, number>>;
|
|
150
|
+
responseTimeAverageMs?: number;
|
|
151
|
+
completionTimeAverageMs?: number;
|
|
152
|
+
}
|
|
153
|
+
export interface BreakpointExport {
|
|
154
|
+
schemaVersion: 1;
|
|
155
|
+
exportedAt: string;
|
|
156
|
+
total: number;
|
|
157
|
+
items: Breakpoint[];
|
|
158
|
+
}
|
|
159
|
+
export declare class UnsupportedBreakpointFeatureError extends Error {
|
|
160
|
+
readonly backendName: string;
|
|
161
|
+
readonly feature: string;
|
|
162
|
+
constructor(backendName: string, feature: string);
|
|
163
|
+
}
|
|
164
|
+
export declare const unsupportedBreakpointBackendCapabilities: BreakpointBackendCapabilities;
|
|
165
|
+
export declare function unsupportedBreakpointFeature(backendName: string, feature: string): never;
|
|
166
|
+
/**
|
|
167
|
+
* Backend-agnostic interface for breakpoint lifecycle operations.
|
|
168
|
+
*
|
|
169
|
+
* Implementations may target different transports (git filesystem,
|
|
170
|
+
* HTTP server, GitHub Issues, etc.) while presenting a uniform API.
|
|
171
|
+
*/
|
|
172
|
+
export interface BreakpointBackend {
|
|
173
|
+
/** Human-readable name for this backend (e.g., "git-native", "server"). */
|
|
174
|
+
readonly name: string;
|
|
175
|
+
/**
|
|
176
|
+
* Submit a new breakpoint.
|
|
177
|
+
* Returns the created Breakpoint with a backend-assigned ID.
|
|
178
|
+
*/
|
|
179
|
+
submitBreakpoint(params: SubmitBreakpointParams): Promise<Breakpoint>;
|
|
180
|
+
/**
|
|
181
|
+
* Retrieve a breakpoint by its ID.
|
|
182
|
+
*/
|
|
183
|
+
getBreakpoint(id: string): Promise<Breakpoint>;
|
|
184
|
+
/**
|
|
185
|
+
* Wait for an answer to a breakpoint.
|
|
186
|
+
* Resolves when an answer arrives, the breakpoint reaches a terminal state,
|
|
187
|
+
* the timeout elapses, or the operation is aborted.
|
|
188
|
+
*/
|
|
189
|
+
waitForAnswer(id: string, options?: WaitForAnswerOptions): Promise<BreakpointWaitResult>;
|
|
190
|
+
/**
|
|
191
|
+
* List pending breakpoints, optionally filtered by responder.
|
|
192
|
+
*/
|
|
193
|
+
listPendingBreakpoints(responderId?: string): Promise<Breakpoint[]>;
|
|
194
|
+
/**
|
|
195
|
+
* Submit an answer for a breakpoint.
|
|
196
|
+
*/
|
|
197
|
+
answerBreakpoint(id: string, answer: SubmitAnswerParams): Promise<BreakpointPublicAnswer>;
|
|
198
|
+
/**
|
|
199
|
+
* Cancel a pending breakpoint.
|
|
200
|
+
*/
|
|
201
|
+
cancelBreakpoint(id: string): Promise<void>;
|
|
202
|
+
/**
|
|
203
|
+
* List available responder profiles.
|
|
204
|
+
* Optional -- backends that don't manage responder discovery may return [].
|
|
205
|
+
*/
|
|
206
|
+
listResponders?(params?: ListRespondersParams): Promise<ResponderProfile[]>;
|
|
207
|
+
/**
|
|
208
|
+
* Claim a breakpoint, indicating intent to answer.
|
|
209
|
+
* Optional -- not all backends support explicit claiming.
|
|
210
|
+
*/
|
|
211
|
+
claimBreakpoint?(id: string, responderId: string): Promise<Breakpoint>;
|
|
212
|
+
/**
|
|
213
|
+
* Report task-management capabilities supported by this backend.
|
|
214
|
+
*/
|
|
215
|
+
capabilities?(): Promise<BreakpointBackendCapabilities> | BreakpointBackendCapabilities;
|
|
216
|
+
/**
|
|
217
|
+
* Search and filter breakpoints across lifecycle states.
|
|
218
|
+
*/
|
|
219
|
+
searchBreakpoints?(query: BreakpointSearchQuery): Promise<SearchBreakpointsResult>;
|
|
220
|
+
/**
|
|
221
|
+
* Assign or reassign a breakpoint to a responder.
|
|
222
|
+
*/
|
|
223
|
+
assignBreakpoint?(id: string, params: AssignBreakpointParams): Promise<Breakpoint>;
|
|
224
|
+
/**
|
|
225
|
+
* Transition a breakpoint through the validated task lifecycle.
|
|
226
|
+
*/
|
|
227
|
+
transitionBreakpoint?(id: string, params: TransitionBreakpointParams): Promise<Breakpoint>;
|
|
228
|
+
/**
|
|
229
|
+
* Append a discussion comment to a breakpoint.
|
|
230
|
+
*/
|
|
231
|
+
addBreakpointComment?(id: string, params: AddBreakpointCommentParams): Promise<BreakpointComment>;
|
|
232
|
+
/**
|
|
233
|
+
* Apply an operation to many breakpoints and report item-level outcomes.
|
|
234
|
+
*/
|
|
235
|
+
bulkUpdateBreakpoints?(params: BulkUpdateBreakpointsParams): Promise<BulkBreakpointOperationResult>;
|
|
236
|
+
/**
|
|
237
|
+
* Compute deterministic metrics for matching breakpoints.
|
|
238
|
+
*/
|
|
239
|
+
getBreakpointMetrics?(query?: BreakpointSearchQuery): Promise<BreakpointMetricsSummary>;
|
|
240
|
+
/**
|
|
241
|
+
* Export matching breakpoint data with credentials redacted.
|
|
242
|
+
*/
|
|
243
|
+
exportBreakpoints?(query?: BreakpointSearchQuery): Promise<BreakpointExport>;
|
|
244
|
+
}
|
|
245
|
+
export declare function selectBreakpointAnswer(breakpoint: Pick<Breakpoint, "answers" | "selectedAnswer">): BreakpointPublicAnswer | undefined;
|
|
246
|
+
export declare function supportsProvenAnswers(backendName: string): boolean;
|
|
247
|
+
export declare function unsupportedBackendFeatureMessage(backendName: string, feature: string): string;
|
|
248
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|