@framers/agentos-ext-github 0.2.2 → 0.3.0

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 (39) hide show
  1. package/README.md +43 -11
  2. package/dist/__tests__/app.test.js +155 -1
  3. package/dist/__tests__/app.test.js.map +1 -1
  4. package/dist/__tests__/documents.test.js +28 -1
  5. package/dist/__tests__/documents.test.js.map +1 -1
  6. package/dist/__tests__/events.test.d.ts +8 -0
  7. package/dist/__tests__/events.test.d.ts.map +1 -0
  8. package/dist/__tests__/events.test.js +304 -0
  9. package/dist/__tests__/events.test.js.map +1 -0
  10. package/dist/app/events.d.ts +142 -0
  11. package/dist/app/events.d.ts.map +1 -0
  12. package/dist/app/events.js +182 -0
  13. package/dist/app/events.js.map +1 -0
  14. package/dist/app/http.d.ts +82 -13
  15. package/dist/app/http.d.ts.map +1 -1
  16. package/dist/app/http.js +151 -23
  17. package/dist/app/http.js.map +1 -1
  18. package/dist/app/installations.d.ts +8 -6
  19. package/dist/app/installations.d.ts.map +1 -1
  20. package/dist/app/installations.js +21 -15
  21. package/dist/app/installations.js.map +1 -1
  22. package/dist/app/reconcile.d.ts +1 -1
  23. package/dist/app/reconcile.d.ts.map +1 -1
  24. package/dist/app/reconcile.js +8 -7
  25. package/dist/app/reconcile.js.map +1 -1
  26. package/dist/app/userFlow.d.ts +10 -3
  27. package/dist/app/userFlow.d.ts.map +1 -1
  28. package/dist/app/userFlow.js +43 -4
  29. package/dist/app/userFlow.js.map +1 -1
  30. package/dist/documents/GitHubDocumentsConnector.d.ts +7 -4
  31. package/dist/documents/GitHubDocumentsConnector.d.ts.map +1 -1
  32. package/dist/documents/GitHubDocumentsConnector.js +39 -18
  33. package/dist/documents/GitHubDocumentsConnector.js.map +1 -1
  34. package/dist/documents/index.d.ts +11 -6
  35. package/dist/documents/index.d.ts.map +1 -1
  36. package/dist/documents/index.js +11 -6
  37. package/dist/documents/index.js.map +1 -1
  38. package/manifest.json +4 -2
  39. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"installations.d.ts","sourceRoot":"","sources":["../../src/app/installations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAWL,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAEnB,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAcD,mGAAmG;AACnG,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAiB,EAAE,OAAyB,EAAE,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAG7I;AAED,sGAAsG;AACtG,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAiB,EAAE,OAAyB,EAAE,GAAE,gBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAI/J;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,EAAE,SAAiB,EAAE,OAAyB,EAAE,GAAE,gBAAqB,GACtE,OAAO,CAAC,cAAc,EAAE,CAAC,CAW3B;AAED,iGAAiG;AACjG,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,SAAiB,EAAE,OAAyB,EAAE,GAAE,gBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAE/K;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,EAAE,SAAiB,EAAE,OAAyB,EAAE,GAAE,gBAAqB,GACtE,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"installations.d.ts","sourceRoot":"","sources":["../../src/app/installations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAWL,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAEnB,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oIAAoI;AACpI,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAMvD;AAUD,mGAAmG;AACnG,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAGxJ;AAED,sGAAsG;AACtG,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,GAAE,gBAAqB,GACjF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAI/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,GAAE,gBAAqB,GACjF,OAAO,CAAC,cAAc,EAAE,CAAC,CAW3B;AAED,iGAAiG;AACjG,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,GAAE,gBAAqB,GACjF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAI/B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,GAAE,gBAAqB,GACjF,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -1,35 +1,40 @@
1
1
  /**
2
2
  * @fileoverview What a user token reaches (the person, the app's installations they can access, and the repositories
3
3
  * of an installation they can read) and the app's own installations, listed and removed with its JWT. Each function
4
- * takes `{ fetchImpl, apiBase }` last: `fetch` and GitHub's API when absent.
4
+ * takes `{ fetchImpl, apiBase, timeoutMs }` last: `fetch`, GitHub's API and a 30-second deadline a call when absent.
5
5
  * @module agentos-ext-github/app/installations
6
6
  */
7
7
  import { arrayOf, discardBody, GITHUB_API_BASE, GitHubApiError, githubFetch, githubSend, numberIn, objectOf, pages, stringIn, } from './http.js';
8
+ /** An installation's account, as GitHub answers it and as a webhook event names it: a login, or an enterprise's slug, and an id. */
9
+ export function accountOf(value) {
10
+ const account = objectOf(value, "an installation's account");
11
+ return {
12
+ login: stringIn(account, typeof account.login === 'string' ? 'login' : 'slug', "an installation's account"),
13
+ id: numberIn(account, 'id', "an installation's account"),
14
+ };
15
+ }
8
16
  function installationOf(value) {
9
17
  const fields = objectOf(value, 'an installation');
10
- const account = fields.account === null || fields.account === undefined ? null : objectOf(fields.account, "an installation's account");
11
18
  return {
12
19
  id: numberIn(fields, 'id', 'an installation'),
13
- account: account === null
14
- ? null
15
- : { login: stringIn(account, typeof account.login === 'string' ? 'login' : 'slug', "an installation's account"), id: numberIn(account, 'id', "an installation's account") },
20
+ account: fields.account === null || fields.account === undefined ? null : accountOf(fields.account),
16
21
  };
17
22
  }
18
23
  /** The person a user token belongs to (`GET /user`): the GitHub id and login a link is made by. */
19
- export async function userOfToken(token, { fetchImpl = fetch, apiBase = GITHUB_API_BASE } = {}) {
20
- const user = objectOf(await githubFetch(fetchImpl, `${apiBase}/user`, { token }), 'a user');
24
+ export async function userOfToken(token, { fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs } = {}) {
25
+ const user = objectOf(await githubFetch(fetchImpl, `${apiBase}/user`, { token, timeoutMs }), 'a user');
21
26
  return { id: numberIn(user, 'id', 'a user'), login: stringIn(user, 'login', 'a user') };
22
27
  }
23
28
  /** The app's installations a user token can access (`GET /user/installations`), across every page. */
24
- export async function installationsOfUser(token, { fetchImpl = fetch, apiBase = GITHUB_API_BASE } = {}) {
25
- return pages(fetchImpl, `${apiBase}/user/installations?per_page=100`, { token }, (page) => arrayOf(objectOf(page, 'a page of installations').installations, 'a page of installations').map(installationOf));
29
+ export async function installationsOfUser(token, { fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs } = {}) {
30
+ return pages(fetchImpl, `${apiBase}/user/installations?per_page=100`, { token, timeoutMs }, (page) => arrayOf(objectOf(page, 'a page of installations').installations, 'a page of installations').map(installationOf));
26
31
  }
27
32
  /**
28
33
  * The repositories of an installation a user token can read (`GET /user/installations/{installation_id}/repositories`),
29
34
  * across every page: those the person owns, collaborates on or reaches through an organization.
30
35
  */
31
- export async function repositoriesOfUser(token, installationId, { fetchImpl = fetch, apiBase = GITHUB_API_BASE } = {}) {
32
- return pages(fetchImpl, `${apiBase}/user/installations/${installationId}/repositories?per_page=100`, { token }, (page) => arrayOf(objectOf(page, 'a page of repositories').repositories, 'a page of repositories').map((value) => {
36
+ export async function repositoriesOfUser(token, installationId, { fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs } = {}) {
37
+ return pages(fetchImpl, `${apiBase}/user/installations/${installationId}/repositories?per_page=100`, { token, timeoutMs }, (page) => arrayOf(objectOf(page, 'a page of repositories').repositories, 'a page of repositories').map((value) => {
33
38
  const repository = objectOf(value, 'a repository');
34
39
  return {
35
40
  id: numberIn(repository, 'id', 'a repository'),
@@ -39,8 +44,8 @@ export async function repositoriesOfUser(token, installationId, { fetchImpl = fe
39
44
  }));
40
45
  }
41
46
  /** Every installation of the app (`GET /app/installations`, with its JWT), across every page. */
42
- export async function listInstallations(credential, { fetchImpl = fetch, apiBase = GITHUB_API_BASE } = {}) {
43
- return pages(fetchImpl, `${apiBase}/app/installations?per_page=100`, { token: credential.jwt() }, (page) => arrayOf(page, 'a page of installations').map(installationOf));
47
+ export async function listInstallations(credential, { fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs } = {}) {
48
+ return pages(fetchImpl, `${apiBase}/app/installations?per_page=100`, { token: credential.jwt(), timeoutMs }, (page) => arrayOf(page, 'a page of installations').map(installationOf));
44
49
  }
45
50
  /**
46
51
  * Uninstalls the app from an account (`DELETE /app/installations/{installation_id}`, with its JWT). Answers without an
@@ -48,9 +53,10 @@ export async function listInstallations(credential, { fetchImpl = fetch, apiBase
48
53
  * answer of earlier versions) and on 404 (the installation is already gone); the answer's body is never read. Any
49
54
  * other status throws {@link GitHubApiError}.
50
55
  */
51
- export async function uninstallInstallation(credential, installationId, { fetchImpl = fetch, apiBase = GITHUB_API_BASE } = {}) {
56
+ export async function uninstallInstallation(credential, installationId, { fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs } = {}) {
52
57
  try {
53
- await discardBody(await githubSend(fetchImpl, `${apiBase}/app/installations/${installationId}`, { token: credential.jwt(), method: 'DELETE' }));
58
+ const answer = await githubSend(fetchImpl, `${apiBase}/app/installations/${installationId}`, { token: credential.jwt(), method: 'DELETE', timeoutMs });
59
+ await discardBody(answer.response);
54
60
  }
55
61
  catch (error) {
56
62
  if (error instanceof GitHubApiError && error.status === 404)
@@ -1 +1 @@
1
- {"version":3,"file":"installations.js","sourceRoot":"","sources":["../../src/app/installations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installations.js","sourceRoot":"","sources":["../../src/app/installations.ts"],"names":[],"mappings":"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"}
@@ -81,5 +81,5 @@ export interface ReconcileOutcome {
81
81
  * @param links The links to check.
82
82
  * @param options The window's start, and where calls go.
83
83
  */
84
- export declare function reconcileInstallations(credential: GitHubAppCredential, links: readonly ReconcileLink[], { since, fetchImpl, apiBase }: ReconcileOptions): Promise<ReconcileOutcome>;
84
+ export declare function reconcileInstallations(credential: GitHubAppCredential, links: readonly ReconcileLink[], { since, fetchImpl, apiBase, timeoutMs }: ReconcileOptions): Promise<ReconcileOutcome>;
85
85
  //# sourceMappingURL=reconcile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/app/reconcile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAWL,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAGnB,2GAA2G;AAC3G,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9C;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,iFAAiF;IACjF,KAAK,EAAE,IAAI,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8HAA8H;AAC9H,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oEAAoE;IACpE,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,kFAAkF;IAClF,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAgFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,EAAE,KAAK,EAAE,SAAiB,EAAE,OAAyB,EAAE,EAAE,gBAAgB,GACxE,OAAO,CAAC,gBAAgB,CAAC,CA2B3B"}
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/app/reconcile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAWL,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAGnB,2GAA2G;AAC3G,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9C;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,iFAAiF;IACjF,KAAK,EAAE,IAAI,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8HAA8H;AAC9H,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oEAAoE;IACpE,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,kFAAkF;IAClF,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAkFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,EAAE,KAAK,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAS,EAAE,EAAE,gBAAgB,GACnF,OAAO,CAAC,gBAAgB,CAAC,CA2B3B"}
@@ -32,10 +32,10 @@ function refusedByRoute(attempt) {
32
32
  * may lie on the pages not read; a redelivery GitHub refuses is answered with its status, and the others are still
33
33
  * asked for.
34
34
  */
35
- async function redeliverFailures(credential, since, fetchImpl, apiBase) {
35
+ async function redeliverFailures(credential, since, fetchImpl, apiBase, timeoutMs) {
36
36
  const attemptsByGuid = new Map();
37
37
  try {
38
- for await (const page of githubPages(fetchImpl, `${apiBase}/app/hook/deliveries?per_page=100`, { token: credential.jwt() })) {
38
+ for await (const page of githubPages(fetchImpl, `${apiBase}/app/hook/deliveries?per_page=100`, { token: credential.jwt(), timeoutMs })) {
39
39
  const deliveries = arrayOf(page, 'a page of deliveries').map(deliveryOf);
40
40
  for (const delivery of deliveries) {
41
41
  if (!(delivery.deliveredAt >= since))
@@ -64,7 +64,8 @@ async function redeliverFailures(credential, since, fetchImpl, apiBase) {
64
64
  if (refusedByRoute(latest))
65
65
  continue;
66
66
  try {
67
- await discardBody(await githubSend(fetchImpl, `${apiBase}/app/hook/deliveries/${latest.id}/attempts`, { token: credential.jwt(), method: 'POST' }));
67
+ const answer = await githubSend(fetchImpl, `${apiBase}/app/hook/deliveries/${latest.id}/attempts`, { token: credential.jwt(), method: 'POST', timeoutMs });
68
+ await discardBody(answer.response);
68
69
  redelivered.push(latest.id);
69
70
  }
70
71
  catch (error) {
@@ -93,8 +94,8 @@ async function redeliverFailures(credential, since, fetchImpl, apiBase) {
93
94
  * @param links The links to check.
94
95
  * @param options The window's start, and where calls go.
95
96
  */
96
- export async function reconcileInstallations(credential, links, { since, fetchImpl = fetch, apiBase = GITHUB_API_BASE }) {
97
- const listed = new Set((await listInstallations(credential, { fetchImpl, apiBase })).map((installation) => installation.id));
97
+ export async function reconcileInstallations(credential, links, { since, fetchImpl = fetch, apiBase = GITHUB_API_BASE, timeoutMs }) {
98
+ const listed = new Set((await listInstallations(credential, { fetchImpl, apiBase, timeoutMs })).map((installation) => installation.id));
98
99
  const gone = [];
99
100
  const moved = [];
100
101
  const unreadable = [];
@@ -107,7 +108,7 @@ export async function reconcileInstallations(credential, links, { since, fetchIm
107
108
  for (const repository of link.repositories) {
108
109
  try {
109
110
  const token = await credential.installationToken(link.installationId, [repository.id]);
110
- const branch = objectOf(await githubFetch(fetchImpl, `${apiBase}/repos/${repository.fullName}/branches/${encodeURIComponent(repository.defaultBranch)}`, { token }), 'a branch');
111
+ const branch = objectOf(await githubFetch(fetchImpl, `${apiBase}/repos/${repository.fullName}/branches/${encodeURIComponent(repository.defaultBranch)}`, { token, timeoutMs }), 'a branch');
111
112
  const head = stringIn(objectOf(branch.commit, "a branch's commit"), 'sha', "a branch's commit");
112
113
  if (head !== repository.headCommit)
113
114
  moved.push({ installationId: link.installationId, repositoryId: repository.id, head });
@@ -119,7 +120,7 @@ export async function reconcileInstallations(credential, links, { since, fetchIm
119
120
  }
120
121
  }
121
122
  }
122
- const { redelivered, deliveries } = await redeliverFailures(credential, since.getTime(), fetchImpl, apiBase);
123
+ const { redelivered, deliveries } = await redeliverFailures(credential, since.getTime(), fetchImpl, apiBase, timeoutMs);
123
124
  return { gone, moved, redelivered, unreadable, deliveries };
124
125
  }
125
126
  //# sourceMappingURL=reconcile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/app/reconcile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/app/reconcile.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * @fileoverview A GitHub App's user authorization on a web server: GitHub's authorize address with `state` and PKCE,
3
3
  * and the code exchanged for a user access token, on the auth module's `RedirectOAuthFlow`. The token proves who the
4
4
  * person is and which installations and repositories they can reach; it is used once and dropped, so the flow has no
5
- * store.
5
+ * store. The exchange runs under a deadline, and its answer is read whole under a cap before the auth module reads it.
6
6
  * @module agentos-ext-github/app/userFlow
7
7
  */
8
8
  import { RedirectOAuthFlow, type RedirectBegin, type RedirectOAuthConfig } from '@framers/agentos/auth';
@@ -16,13 +16,19 @@ export interface GitHubOAuthEndpoints {
16
16
  authorize: string;
17
17
  token: string;
18
18
  }
19
+ /** How the flow reaches GitHub's token address. */
20
+ export interface GitHubAppUserFlowOptions {
21
+ /** How long the code exchange may take, its answer included; {@link GITHUB_TIMEOUT_MS} when absent. */
22
+ timeoutMs?: number;
23
+ }
19
24
  /** github.com's own authorize and token addresses. */
20
25
  export declare const GITHUB_OAUTH_ENDPOINTS: GitHubOAuthEndpoints;
21
26
  /**
22
27
  * The user's web flow for a GitHub App: `begin` answers the authorize address with the state and the PKCE verifier
23
28
  * for the caller to keep, and `complete` checks the state and exchanges the code (with `code_verifier`, asking for a
24
29
  * JSON answer) for the user's token. A GitHub App's permissions are the app's, not the token's, so the address carries
25
- * no `scope`.
30
+ * no `scope`. The exchange ends at its deadline with `GitHubNoAnswer`, and a redirect from the token address is
31
+ * refused with `OAuthGrantRefused` (reason `exchange`, the redirect's status), never followed.
26
32
  */
27
33
  export declare class GitHubAppUserFlow extends RedirectOAuthFlow {
28
34
  private readonly client;
@@ -33,8 +39,9 @@ export declare class GitHubAppUserFlow extends RedirectOAuthFlow {
33
39
  * @param client The app's client id and client secret.
34
40
  * @param fetchImpl The fetch the code is exchanged with.
35
41
  * @param endpoints GitHub's authorize and token addresses.
42
+ * @param options The exchange's deadline.
36
43
  */
37
- constructor(client: GitHubAppClient, fetchImpl?: typeof fetch, endpoints?: GitHubOAuthEndpoints);
44
+ constructor(client: GitHubAppClient, fetchImpl?: typeof fetch, endpoints?: GitHubOAuthEndpoints, options?: GitHubAppUserFlowOptions);
38
45
  /** GitHub's addresses and the app's client, with no scopes. */
39
46
  protected getConfig(): RedirectOAuthConfig;
40
47
  /** The authorize address with the state and the PKCE challenge, leaving out the empty `scope` the base would send. */
@@ -1 +1 @@
1
- {"version":3,"file":"userFlow.d.ts","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExG,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAE,oBAGpC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IAS1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAoD,OAAO,CAAC,QAAQ,CAAC,SAAS;IARjH,yBAAyB;IACzB,QAAQ,CAAC,UAAU,YAAY;IAE/B;;;;OAIG;gBAC0B,MAAM,EAAE,eAAe,EAAE,SAAS,GAAE,OAAO,KAAa,EAAmB,SAAS,GAAE,oBAA6C;IAIhK,+DAA+D;IAC/D,SAAS,CAAC,SAAS,IAAI,mBAAmB;IAU1C,sHAAsH;IAC7G,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa;CAMhF"}
1
+ {"version":3,"file":"userFlow.d.ts","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGxG,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACvC,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAE,oBAGpC,CAAC;AAoCF;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IAWpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAZ5B,yBAAyB;IACzB,QAAQ,CAAC,UAAU,YAAY;IAE/B;;;;;OAKG;gBAEgB,MAAM,EAAE,eAAe,EACxC,SAAS,GAAE,OAAO,KAAa,EACd,SAAS,GAAE,oBAA6C,EACzE,OAAO,GAAE,wBAA6B;IAKxC,+DAA+D;IAC/D,SAAS,CAAC,SAAS,IAAI,mBAAmB;IAU1C,sHAAsH;IAC7G,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa;CAMhF"}
@@ -2,20 +2,58 @@
2
2
  * @fileoverview A GitHub App's user authorization on a web server: GitHub's authorize address with `state` and PKCE,
3
3
  * and the code exchanged for a user access token, on the auth module's `RedirectOAuthFlow`. The token proves who the
4
4
  * person is and which installations and repositories they can reach; it is used once and dropped, so the flow has no
5
- * store.
5
+ * store. The exchange runs under a deadline, and its answer is read whole under a cap before the auth module reads it.
6
6
  * @module agentos-ext-github/app/userFlow
7
7
  */
8
+ import { readCapped, ReadCapExceeded } from '@framers/agentos-ext-account-sources';
8
9
  import { RedirectOAuthFlow } from '@framers/agentos/auth';
10
+ import { callDeadline } from './http.js';
9
11
  /** github.com's own authorize and token addresses. */
10
12
  export const GITHUB_OAUTH_ENDPOINTS = {
11
13
  authorize: 'https://github.com/login/oauth/authorize',
12
14
  token: 'https://github.com/login/oauth/access_token',
13
15
  };
16
+ /** The largest token answer read: 64 KiB, far above GitHub's few hundred bytes. */
17
+ const TOKEN_ANSWER_BYTES = 65_536;
18
+ /**
19
+ * A fetch that ends each call at its deadline and hands on the answer only once its whole body is read under
20
+ * {@link TOKEN_ANSWER_BYTES}, so the auth module never waits on GitHub past the deadline. A redirect is answered as
21
+ * it came and never followed: a 307 or 308 would send the code and the client secret on to its target, and the auth
22
+ * module refuses the redirect's status. A call that gets no answer, or whose body stops before its end, throws
23
+ * `GitHubNoAnswer`; a body past the cap throws an error that names the cap.
24
+ */
25
+ function boundedFetch(fetchImpl, timeoutMs) {
26
+ return async (input, init) => {
27
+ const deadline = callDeadline(init?.signal ?? undefined, timeoutMs);
28
+ let response;
29
+ try {
30
+ response = await fetchImpl(input, { ...init, redirect: 'manual', signal: deadline.signal });
31
+ }
32
+ catch {
33
+ throw deadline.noAnswer();
34
+ }
35
+ let bytes;
36
+ try {
37
+ bytes = await readCapped(response, TOKEN_ANSWER_BYTES);
38
+ }
39
+ catch (error) {
40
+ if (error instanceof ReadCapExceeded)
41
+ throw new Error('GitHub answered a body past the size cap');
42
+ throw deadline.noAnswer();
43
+ }
44
+ return new Response(bytes.byteLength === 0 ? null : new TextDecoder().decode(bytes), {
45
+ status: response.status,
46
+ statusText: response.statusText,
47
+ headers: response.headers,
48
+ });
49
+ };
50
+ }
14
51
  /**
15
52
  * The user's web flow for a GitHub App: `begin` answers the authorize address with the state and the PKCE verifier
16
53
  * for the caller to keep, and `complete` checks the state and exchanges the code (with `code_verifier`, asking for a
17
54
  * JSON answer) for the user's token. A GitHub App's permissions are the app's, not the token's, so the address carries
18
- * no `scope`.
55
+ * no `scope`. The exchange ends at its deadline with `GitHubNoAnswer`, and a redirect from the token address is
56
+ * refused with `OAuthGrantRefused` (reason `exchange`, the redirect's status), never followed.
19
57
  */
20
58
  export class GitHubAppUserFlow extends RedirectOAuthFlow {
21
59
  client;
@@ -26,9 +64,10 @@ export class GitHubAppUserFlow extends RedirectOAuthFlow {
26
64
  * @param client The app's client id and client secret.
27
65
  * @param fetchImpl The fetch the code is exchanged with.
28
66
  * @param endpoints GitHub's authorize and token addresses.
67
+ * @param options The exchange's deadline.
29
68
  */
30
- constructor(client, fetchImpl = fetch, endpoints = GITHUB_OAUTH_ENDPOINTS) {
31
- super(null, fetchImpl);
69
+ constructor(client, fetchImpl = fetch, endpoints = GITHUB_OAUTH_ENDPOINTS, options = {}) {
70
+ super(null, boundedFetch(fetchImpl, options.timeoutMs));
32
71
  this.client = client;
33
72
  this.endpoints = endpoints;
34
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"userFlow.js","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAgD,MAAM,uBAAuB,CAAC;AAcxG,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,SAAS,EAAE,0CAA0C;IACrD,KAAK,EAAE,6CAA6C;CACrD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IASzB;IAA2E;IARxG,yBAAyB;IAChB,UAAU,GAAG,QAAQ,CAAC;IAE/B;;;;OAIG;IACH,YAA6B,MAAuB,EAAE,YAA0B,KAAK,EAAmB,YAAkC,sBAAsB;QAC9J,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QADI,WAAM,GAAN,MAAM,CAAiB;QAAoD,cAAS,GAAT,SAAS,CAA+C;IAEhK,CAAC;IAED,+DAA+D;IACrD,SAAS;QACjB,OAAO;YACL,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YAC/C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;YACnC,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC;IACJ,CAAC;IAED,sHAAsH;IAC7G,KAAK,CAAC,KAAgD;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnF,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"userFlow.js","sourceRoot":"","sources":["../../src/app/userFlow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAgD,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAqB,MAAM,WAAW,CAAC;AAoB5D,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,SAAS,EAAE,0CAA0C;IACrD,KAAK,EAAE,6CAA6C;CACrD,CAAC;AAEF,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,SAAuB,EAAE,SAA6B;IAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAClG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACnF,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAWnC;IAEA;IAZnB,yBAAyB;IAChB,UAAU,GAAG,QAAQ,CAAC;IAE/B;;;;;OAKG;IACH,YACmB,MAAuB,EACxC,YAA0B,KAAK,EACd,YAAkC,sBAAsB,EACzE,UAAoC,EAAE;QAEtC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QALvC,WAAM,GAAN,MAAM,CAAiB;QAEvB,cAAS,GAAT,SAAS,CAA+C;IAI3E,CAAC;IAED,+DAA+D;IACrD,SAAS;QACjB,OAAO;YACL,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YAC/C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;YACnC,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC;IACJ,CAAC;IAED,sHAAsH;IAC7G,KAAK,CAAC,KAAgD;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnF,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC/C,CAAC;CACF"}
@@ -62,16 +62,19 @@ export declare class GitHubDocumentsConnector implements AccountSourceConnector
62
62
  gone: SourceGone[];
63
63
  }>;
64
64
  /**
65
- * A file's raw bytes at the commit of its version, read as a stream and cut at `maxFileBytes`: PDF, Word and HTML
66
- * as bytes with their media type, the rest as UTF-8 text, each with a `github` attribution linking the file at that
67
- * commit. A file GitHub no longer has, or one past the cap, is answered gone with reason `removed`.
65
+ * A file's raw bytes at the commit of its version, read as a stream under the call's deadline and cut at
66
+ * `maxFileBytes`: PDF, Word and HTML as bytes with their media type, the rest as UTF-8 text, each with a `github`
67
+ * attribution linking the file at that commit. A file GitHub no longer has (404), or one past the cap, is answered
68
+ * gone with reason `removed`; any other refusal throws `GitHubApiError`, a rate limit with its `retryAt`, so a read
69
+ * GitHub held back is never taken for a file gone.
68
70
  */
69
71
  read(item: SourceItem, signal?: AbortSignal): Promise<SourceRead | SourceGone>;
70
72
  /**
71
73
  * What a push to `after` changed, from the listing at `after` (read here when the caller holds none) against the
72
74
  * blobs read before (`cursor`: the JSON of each path's blob). A push's own commit lists are never read, so a force
73
75
  * push, or a push of more commits than its event lists, is read like any other. A push to another branch than the
74
- * default answers no change and the cursor it was given.
76
+ * default answers no change and the cursor it was given. A cursor this connector did not answer throws a
77
+ * `TypeError` before any request.
75
78
  */
76
79
  changesSince(cursor: string | null, selection: GitHubChangesSelection, signal?: AbortSignal): Promise<SourceChanges>;
77
80
  /** Nothing to end here: an installation is removed by the app's own call (`uninstallInstallation`). */
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubDocumentsConnector.d.ts","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAA8E,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvI,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4GAA4G;IAC5G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B;AAeD;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAYnE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,QAAQ,CAAC,IAAI,YAAY;IAEzB;;;;;;;OAOG;gBAEgB,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,GAAE,UAAe,EACvB,SAAS,GAAE,OAAO,KAAa,EAC/B,OAAO,SAAkB;IAG5C,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,KAAK;IAIb,wDAAwD;IAClD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvE;;;OAGG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAS9F,oGAAoG;IAC9F,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAWlH;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAoCpF;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB1H,uGAAuG;IACjG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
1
+ {"version":3,"file":"GitHubDocumentsConnector.d.ts","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAA8E,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvI,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4GAA4G;IAC5G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B;AAkCD;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAYnE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,QAAQ,CAAC,IAAI,YAAY;IAEzB;;;;;;;OAOG;gBAEgB,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,MAAM,GAAE,UAAe,EACvB,SAAS,GAAE,OAAO,KAAa,EAC/B,OAAO,SAAkB;IAG5C,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,KAAK;IAIb,wDAAwD;IAClD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvE;;;OAGG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAS9F,oGAAoG;IAC9F,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAWlH;;;;;;OAMG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAgCpF;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB1H,uGAAuG;IACjG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -4,8 +4,8 @@
4
4
  * raw bytes under a cap, and a push compared by the tree at its `after` commit.
5
5
  * @module agentos-ext-github/documents/GitHubDocumentsConnector
6
6
  */
7
- import { readCapped, ReadCapExceeded, } from '@framers/agentos-ext-account-sources';
8
- import { discardBody, GITHUB_API_BASE, GitHubApiError, githubFetch, githubHeaders, objectOf, stringIn } from '../app/http.js';
7
+ import { ReadCapExceeded, } from '@framers/agentos-ext-account-sources';
8
+ import { GITHUB_API_BASE, GitHubApiError, githubFetch, githubSend, objectOf, stringIn } from '../app/http.js';
9
9
  import { DEFAULT_MAX_FILE_BYTES, extensionOf, pathFilter, readTree, SKIPPED_FOLDERS } from './tree.js';
10
10
  /** The files answered as bytes with their media type; every other kept file is answered as text. */
11
11
  const MEDIA_TYPES = {
@@ -18,6 +18,26 @@ const MEDIA_TYPES = {
18
18
  function encodedPath(path) {
19
19
  return path.split('/').map(encodeURIComponent).join('/');
20
20
  }
21
+ /**
22
+ * The blobs a cursor holds by path. A cursor this connector did not answer (not the JSON of an object of path to
23
+ * blob) throws a `TypeError` that quotes none of it, since a cursor's text is a repository's paths.
24
+ */
25
+ function blobsOf(cursor) {
26
+ if (cursor === null)
27
+ return new Map();
28
+ let parsed;
29
+ try {
30
+ parsed = JSON.parse(cursor);
31
+ }
32
+ catch {
33
+ // The parser's message would quote the cursor.
34
+ parsed = undefined;
35
+ }
36
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed) || Object.values(parsed).some((blob) => typeof blob !== 'string')) {
37
+ throw new TypeError('the cursor is not one this connector answered');
38
+ }
39
+ return new Map(Object.entries(parsed));
40
+ }
21
41
  /**
22
42
  * A repository's documentation as account sources: an item's id is `<repositoryId>:<path>`, its version
23
43
  * `<blob>@<commit>`, and the cursor of `changesSince` the JSON of each documentation path's blob at the commit last
@@ -87,30 +107,30 @@ export class GitHubDocumentsConnector {
87
107
  return { items, gone: [] };
88
108
  }
89
109
  /**
90
- * A file's raw bytes at the commit of its version, read as a stream and cut at `maxFileBytes`: PDF, Word and HTML
91
- * as bytes with their media type, the rest as UTF-8 text, each with a `github` attribution linking the file at that
92
- * commit. A file GitHub no longer has, or one past the cap, is answered gone with reason `removed`.
110
+ * A file's raw bytes at the commit of its version, read as a stream under the call's deadline and cut at
111
+ * `maxFileBytes`: PDF, Word and HTML as bytes with their media type, the rest as UTF-8 text, each with a `github`
112
+ * attribution linking the file at that commit. A file GitHub no longer has (404), or one past the cap, is answered
113
+ * gone with reason `removed`; any other refusal throws `GitHubApiError`, a rate limit with its `retryAt`, so a read
114
+ * GitHub held back is never taken for a file gone.
93
115
  */
94
116
  async read(item, signal) {
95
117
  const [repositoryId, ...rest] = item.id.split(':');
96
118
  const path = rest.join(':');
97
119
  const repository = this.repository(Number(repositoryId));
98
120
  const commit = (item.version ?? '').split('@')[1] ?? repository.defaultBranch;
99
- const response = await this.fetchImpl(`${this.apiBase}/repos/${repository.fullName}/contents/${encodedPath(path)}?ref=${encodeURIComponent(commit)}`, {
100
- headers: githubHeaders(await this.token(repository.id), 'application/vnd.github.raw+json'),
101
- signal,
102
- });
103
- if (response.status === 404) {
104
- await discardBody(response);
105
- return { id: item.id, reason: 'removed' };
121
+ const url = `${this.apiBase}/repos/${repository.fullName}/contents/${encodedPath(path)}?ref=${encodeURIComponent(commit)}`;
122
+ let answer;
123
+ try {
124
+ answer = await githubSend(this.fetchImpl, url, { token: await this.token(repository.id), accept: 'application/vnd.github.raw+json', signal });
106
125
  }
107
- if (!response.ok) {
108
- await discardBody(response);
109
- throw new GitHubApiError(response.status);
126
+ catch (error) {
127
+ if (error instanceof GitHubApiError && error.status === 404)
128
+ return { id: item.id, reason: 'removed' };
129
+ throw error;
110
130
  }
111
131
  let bytes;
112
132
  try {
113
- bytes = await readCapped(response, this.filter.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES);
133
+ bytes = await answer.bytes(this.filter.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES);
114
134
  }
115
135
  catch (error) {
116
136
  if (error instanceof ReadCapExceeded)
@@ -132,7 +152,8 @@ export class GitHubDocumentsConnector {
132
152
  * What a push to `after` changed, from the listing at `after` (read here when the caller holds none) against the
133
153
  * blobs read before (`cursor`: the JSON of each path's blob). A push's own commit lists are never read, so a force
134
154
  * push, or a push of more commits than its event lists, is read like any other. A push to another branch than the
135
- * default answers no change and the cursor it was given.
155
+ * default answers no change and the cursor it was given. A cursor this connector did not answer throws a
156
+ * `TypeError` before any request.
136
157
  */
137
158
  async changesSince(cursor, selection, signal) {
138
159
  const id = Number(selection.ids[0]);
@@ -140,7 +161,7 @@ export class GitHubDocumentsConnector {
140
161
  if (selection.ref !== undefined && selection.ref !== `refs/heads/${repository.defaultBranch}`) {
141
162
  return { changed: [], gone: [], cursor: cursor ?? '{}' };
142
163
  }
143
- const before = new Map(Object.entries(cursor === null ? {} : JSON.parse(cursor)));
164
+ const before = blobsOf(cursor);
144
165
  const after = selection.after ?? (await this.head(id, signal));
145
166
  const blobs = selection.listing ?? (await this.listing(id, after, signal));
146
167
  const now = new Map(blobs.map((blob) => [blob.path, blob.sha]));
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubDocumentsConnector.js","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubDocumentsConnector.js","sourceRoot":"","sources":["../../src/documents/GitHubDocumentsConnector.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @fileoverview The `./documents` entry: a GitHub App's installation mode (its JWT and installation tokens, the user's
3
- * web flow, what a user token reaches, the webhook signature, the daily reconcile, the uninstall) and
4
- * `GitHubDocumentsConnector`, a repository's documentation as an account source. Every call goes to GitHub's REST API
5
- * over an injected `fetch`.
3
+ * web flow, what a user token reaches, the webhook signature and its deliveries read as typed events, the daily
4
+ * reconcile, the uninstall) and `GitHubDocumentsConnector`, a repository's documentation as an account source. Every
5
+ * call goes to GitHub's REST API over an injected `fetch`, under a deadline, its answer read under a cap.
6
6
  * @module agentos-ext-github/documents
7
7
  */
8
8
  /** The documentation connector and the shape of a push it compares. */
@@ -12,13 +12,18 @@ export { readTree, pathFilter, extensionOf, TreeTooLarge, DOCUMENT_EXTENSIONS, S
12
12
  /** The app's JWT and installation tokens. */
13
13
  export { appJwt, GitHubAppCredential, type GitHubAppIdentity } from '../app/credential.js';
14
14
  /** The user's web flow on the auth module's redirect flow. */
15
- export { GitHubAppUserFlow, GITHUB_OAUTH_ENDPOINTS, type GitHubAppClient, type GitHubOAuthEndpoints } from '../app/userFlow.js';
15
+ export { GitHubAppUserFlow, GITHUB_OAUTH_ENDPOINTS, type GitHubAppClient, type GitHubAppUserFlowOptions, type GitHubOAuthEndpoints, } from '../app/userFlow.js';
16
16
  /** What a user token reaches, and the app's own installations. */
17
17
  export { userOfToken, installationsOfUser, repositoriesOfUser, listInstallations, uninstallInstallation, type GitHubAccount, type GitHubInstallation, type GitHubUser, type UserRepository, } from '../app/installations.js';
18
18
  /** A webhook delivery's signature. */
19
19
  export { verifyWebhookSignature } from '../app/webhook.js';
20
+ /** A webhook delivery read as a typed event once its signature holds. */
21
+ export { readWebhookDelivery, readWebhookRequest, WebhookDeliveryRefused, DEFAULT_MAX_DELIVERY_BYTES, type GitHubDelivery, type GitHubEvent, type GitHubEventRepository, type GitHubInstallationEvent, type GitHubInstallationRepositoriesEvent, type GitHubInstallationTargetEvent, type GitHubOtherEvent, type GitHubPingEvent, type GitHubPushEvent, type ReadWebhookOptions, type WebhookDeliveryInput, type WebhookRefusalReason, type WebhookRequestInput, } from '../app/events.js';
20
22
  /** The daily reconcile. */
21
23
  export { reconcileInstallations, type DeliveriesOutcome, type MovedRepository, type ReconcileLink, type ReconcileOptions, type ReconcileOutcome, type ReconcileRepository, type RefusedRedelivery, type UnreadableRepository, } from '../app/reconcile.js';
22
- /** The API version every call pins, GitHub's address, and the error of an answer outside 2xx. */
23
- export { GITHUB_API_BASE, GITHUB_API_VERSION, GitHubApiError, type GitHubApiOptions } from '../app/http.js';
24
+ /**
25
+ * The API version every call pins, GitHub's address, a call's deadline and an answer's cap, the error of an answer
26
+ * outside 2xx with its rate limit timing, and the error of a call that got no answer.
27
+ */
28
+ export { GITHUB_API_BASE, GITHUB_API_VERSION, GITHUB_MAX_ANSWER_BYTES, GITHUB_TIMEOUT_MS, GitHubApiError, GitHubNoAnswer, type GitHubApiOptions, type GitHubNoAnswerReason, type GitHubRefusalTiming, } from '../app/http.js';
24
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uEAAuE;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC7H,gGAAgG;AAChG,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AACnB,6CAA6C;AAC7C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChI,kEAAkE;AAClE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,sCAAsC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,2BAA2B;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,iGAAiG;AACjG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uEAAuE;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC7H,gGAAgG;AAChG,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AACnB,6CAA6C;AAC7C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,8DAA8D;AAC9D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,kEAAkE;AAClE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,sCAAsC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,yEAAyE;AACzE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,mCAAmC,EACxC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,2BAA2B;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @fileoverview The `./documents` entry: a GitHub App's installation mode (its JWT and installation tokens, the user's
3
- * web flow, what a user token reaches, the webhook signature, the daily reconcile, the uninstall) and
4
- * `GitHubDocumentsConnector`, a repository's documentation as an account source. Every call goes to GitHub's REST API
5
- * over an injected `fetch`.
3
+ * web flow, what a user token reaches, the webhook signature and its deliveries read as typed events, the daily
4
+ * reconcile, the uninstall) and `GitHubDocumentsConnector`, a repository's documentation as an account source. Every
5
+ * call goes to GitHub's REST API over an injected `fetch`, under a deadline, its answer read under a cap.
6
6
  * @module agentos-ext-github/documents
7
7
  */
8
8
  /** The documentation connector and the shape of a push it compares. */
@@ -12,13 +12,18 @@ export { readTree, pathFilter, extensionOf, TreeTooLarge, DOCUMENT_EXTENSIONS, S
12
12
  /** The app's JWT and installation tokens. */
13
13
  export { appJwt, GitHubAppCredential } from '../app/credential.js';
14
14
  /** The user's web flow on the auth module's redirect flow. */
15
- export { GitHubAppUserFlow, GITHUB_OAUTH_ENDPOINTS } from '../app/userFlow.js';
15
+ export { GitHubAppUserFlow, GITHUB_OAUTH_ENDPOINTS, } from '../app/userFlow.js';
16
16
  /** What a user token reaches, and the app's own installations. */
17
17
  export { userOfToken, installationsOfUser, repositoriesOfUser, listInstallations, uninstallInstallation, } from '../app/installations.js';
18
18
  /** A webhook delivery's signature. */
19
19
  export { verifyWebhookSignature } from '../app/webhook.js';
20
+ /** A webhook delivery read as a typed event once its signature holds. */
21
+ export { readWebhookDelivery, readWebhookRequest, WebhookDeliveryRefused, DEFAULT_MAX_DELIVERY_BYTES, } from '../app/events.js';
20
22
  /** The daily reconcile. */
21
23
  export { reconcileInstallations, } from '../app/reconcile.js';
22
- /** The API version every call pins, GitHub's address, and the error of an answer outside 2xx. */
23
- export { GITHUB_API_BASE, GITHUB_API_VERSION, GitHubApiError } from '../app/http.js';
24
+ /**
25
+ * The API version every call pins, GitHub's address, a call's deadline and an answer's cap, the error of an answer
26
+ * outside 2xx with its rate limit timing, and the error of a call that got no answer.
27
+ */
28
+ export { GITHUB_API_BASE, GITHUB_API_VERSION, GITHUB_MAX_ANSWER_BYTES, GITHUB_TIMEOUT_MS, GitHubApiError, GitHubNoAnswer, } from '../app/http.js';
24
29
  //# sourceMappingURL=index.js.map