@braidhq/source-loader-github 0.1.0 → 0.2.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.
- package/README.md +38 -0
- package/dist/GithubSourceLoaderPlugin.d.ts +49 -0
- package/dist/GithubSourceLoaderPlugin.d.ts.map +1 -0
- package/dist/GithubSourceLoaderPlugin.js +421 -0
- package/dist/GithubSourceLoaderPlugin.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -4
- package/dist/.tsbuildinfo +0 -1
- package/dist/GithubLoader.d.ts +0 -62
- package/dist/GithubLoader.d.ts.map +0 -1
- package/dist/GithubLoader.js +0 -228
- package/dist/GithubLoader.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @braidhq/source-loader-github
|
|
2
|
+
|
|
3
|
+
Braid keeps a product's intent and its code aligned in one knowledge graph, and lets plugins feed that graph from outside sources. `@braidhq/source-loader-github` is the plugin that ingests a repository's GitHub Issues as markdown, so the closed issues that shipped as code become intent units in a workspace.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
The github loader turns a repo's Issues into a directory of markdown files, one per issue, and keeps that directory current through an incremental, cursor-based sync.
|
|
8
|
+
|
|
9
|
+
- **The Ingest**: Each issue renders to `<destination>/issues/<number>.md` with a deterministic YAML frontmatter, the body, and an optional `## Comments` section, so an unchanged issue stays byte-identical across syncs.
|
|
10
|
+
- **The Filter**: The realized-intent filter (always on) writes an issue only when it is closed and carries a linked merged pull request, so speculative or abandoned issues never reach the ledger.
|
|
11
|
+
- **The Cursor**: Sync tracks a `since` cursor on disk and reactively deletes files whose issue no longer passes the filter, so incremental runs stay cheap and the directory stays aligned.
|
|
12
|
+
|
|
13
|
+
## Structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
src/
|
|
17
|
+
├── GithubSourceLoaderPlugin.ts the github loader, config, provision, sync, realized-intent filter, webhook
|
|
18
|
+
└── index.ts re-exports the factory and its config type
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- **GithubSourceLoaderPlugin**: The `createGithubLoader` factory built through the sdk plugin builder. It holds the config schema, the REST issue and comment fetches, the GraphQL realized-intent check, the markdown renderer, the cursor read and write, and the webhook rules.
|
|
22
|
+
|
|
23
|
+
## Realized-intent filter
|
|
24
|
+
|
|
25
|
+
An issue is written to disk only when its state is `closed` and at least one merged pull request is cross-referenced from it. The link is read from GitHub's GraphQL `CROSS_REFERENCED_EVENT` timeline, which covers any PR that references the issue, broader than the closing-keyword association alone. This encodes Braid's intent-and-code convergence contract, so open, abandoned, and docs-only-closed issues do not pollute the graph, and a re-provision stays idempotent.
|
|
26
|
+
|
|
27
|
+
The check needs an authenticated token, since GitHub's GraphQL endpoint rejects anonymous requests. The REST issue list itself works anonymously, so this only bites once the loader reaches the linked-PR probe. Sync advances its cursor over every raw issue it examined, not just the survivors, so a not-yet-merged issue does not re-burn a GraphQL probe on every run.
|
|
28
|
+
|
|
29
|
+
## Boundaries
|
|
30
|
+
|
|
31
|
+
- **Owns Its Directory**: The `issues/` tree and the cursor file are the loader's to write. It renders deterministically, so byte-stable output keeps downstream fingerprints quiet.
|
|
32
|
+
- **No Credentials On Disk**: The token resolves from `${GH_TOKEN}` or any env var through `${VAR}` interpolation. Only rendered markdown lands in the destination, never the token.
|
|
33
|
+
- **A Plugin, Not A Service**: It implements core's `SourceLoader` port through the sdk factory, and exposes a webhook capability for `issues`, `issue_comment`, and `ping` deliveries.
|
|
34
|
+
|
|
35
|
+
## Dependencies
|
|
36
|
+
|
|
37
|
+
- **Depends On**: `@braidhq/core` for the port, `@braidhq/schema` for shared types, `@braidhq/sdk` for the factory, `yaml` for frontmatter, and `zod`.
|
|
38
|
+
- **Consumed By**: The server composition root, where `composeFsApp` registers the github loader in the default plugin bundle.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { SourceLoaderPlugin } from '@braidhq/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Inject `fetchFn` for tests. Real callers use globalThis.fetch.
|
|
5
|
+
*/
|
|
6
|
+
export type FetchFn = typeof globalThis.fetch;
|
|
7
|
+
export declare const GithubLoaderConfig: z.ZodObject<{
|
|
8
|
+
owner: z.ZodString;
|
|
9
|
+
repo: z.ZodString;
|
|
10
|
+
state: z.ZodDefault<z.ZodEnum<{
|
|
11
|
+
open: "open";
|
|
12
|
+
closed: "closed";
|
|
13
|
+
all: "all";
|
|
14
|
+
}>>;
|
|
15
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
includeComments: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
includePullRequests: z.ZodDefault<z.ZodBoolean>;
|
|
18
|
+
token: z.ZodDefault<z.ZodString>;
|
|
19
|
+
apiBaseUrl: z.ZodDefault<z.ZodString>;
|
|
20
|
+
graphqlUrl: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type GithubLoaderConfig = z.infer<typeof GithubLoaderConfig>;
|
|
23
|
+
export interface GithubLoaderDeps {
|
|
24
|
+
/** Inject for tests. Real callers use globalThis.fetch. */
|
|
25
|
+
fetchFn?: FetchFn;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build a SourceLoader for a GitHub repository's Issues.
|
|
29
|
+
* The `destination` is owned by the loader.
|
|
30
|
+
* Each issue is written as `<destination>/issues/<number>.md`,
|
|
31
|
+
* with a deterministic YAML frontmatter, body, and `## Comments` section.
|
|
32
|
+
* Untouched issues stay byte-identical across `sync`,
|
|
33
|
+
* so downstream sha-based fingerprints don't churn.
|
|
34
|
+
*
|
|
35
|
+
* **Realized-intent filter (always on)**: an issue is written to disk only when its state is `closed`,
|
|
36
|
+
* and at least one merged pull request is cross-referenced from it via `CROSS_REFERENCED_EVENT` timeline items,
|
|
37
|
+
* which cover PRs that link the issue with or without closing keywords.
|
|
38
|
+
* This implements Braid's stated "intent + code convergence" contract.
|
|
39
|
+
* Pure speculative intent (open issues, abandoned issues, docs-only closes) does not pollute the ledger,
|
|
40
|
+
* and the same workspace re-provision is idempotent.
|
|
41
|
+
* The check uses GitHub's GraphQL API.
|
|
42
|
+
* Setups behind an enterprise proxy that only exposes REST can override `graphqlUrl`.
|
|
43
|
+
*
|
|
44
|
+
* Auth: pass the token via `${GH_TOKEN}` (or any other env var) in `config.token`.
|
|
45
|
+
* Tokens are never persisted on disk.
|
|
46
|
+
* Only the rendered markdown lands in `destination`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function createGithubLoader(deps?: GithubLoaderDeps): SourceLoaderPlugin;
|
|
49
|
+
//# sourceMappingURL=GithubSourceLoaderPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubSourceLoaderPlugin.d.ts","sourceRoot":"","sources":["../src/GithubSourceLoaderPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAOvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,KAAK,CAAA;AAE7C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBA2B7B,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AA+BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,gBAAqB,GAAG,kBAAkB,CAsHlF"}
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import { defineSourceLoaderPlugin } from '@braidhq/sdk';
|
|
5
|
+
import { stringify as stringifyYaml } from 'yaml';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export const GithubLoaderConfig = z.object({
|
|
8
|
+
owner: z.string().min(1),
|
|
9
|
+
repo: z.string().min(1),
|
|
10
|
+
state: z.enum(['open', 'closed', 'all']).default('all'),
|
|
11
|
+
labels: z.array(z.string().min(1)).optional(),
|
|
12
|
+
includeComments: z.boolean().default(true),
|
|
13
|
+
/**
|
|
14
|
+
* Deprecated. Once controlled whether PR-shaped entries leaked into the issue list.
|
|
15
|
+
* Now hard-wired to `false`,
|
|
16
|
+
* since the loader's "realized intent" semantics (see below) treat PRs as the code-side artefact,
|
|
17
|
+
* not as intent.
|
|
18
|
+
* Setting this to `true` is silently ignored after a one-time warn,
|
|
19
|
+
* so existing configs do not break. Drop the field at your next config edit.
|
|
20
|
+
*/
|
|
21
|
+
includePullRequests: z.boolean().default(false),
|
|
22
|
+
/**
|
|
23
|
+
* Auth token. Supports `${VAR}` interpolation against the server's process env.
|
|
24
|
+
* Defaults to `${GH_TOKEN}`.
|
|
25
|
+
* An empty string after interpolation means anonymous,
|
|
26
|
+
* with a 60 req/h rate limit and public repos only.
|
|
27
|
+
*/
|
|
28
|
+
// eslint-disable-next-line no-template-curly-in-string -- literal `${VAR}` placeholder for env interpolation, not a template string
|
|
29
|
+
token: z.string().default('${GH_TOKEN}'),
|
|
30
|
+
/** REST base URL. Override for GitHub Enterprise. */
|
|
31
|
+
apiBaseUrl: z.string().default('https://api.github.com'),
|
|
32
|
+
/** GraphQL endpoint. Defaults to `${apiBaseUrl}/graphql`. */
|
|
33
|
+
graphqlUrl: z.string().optional(),
|
|
34
|
+
});
|
|
35
|
+
const CURSOR_FILENAME = '.braid-github-cursor.json';
|
|
36
|
+
/**
|
|
37
|
+
* Build a SourceLoader for a GitHub repository's Issues.
|
|
38
|
+
* The `destination` is owned by the loader.
|
|
39
|
+
* Each issue is written as `<destination>/issues/<number>.md`,
|
|
40
|
+
* with a deterministic YAML frontmatter, body, and `## Comments` section.
|
|
41
|
+
* Untouched issues stay byte-identical across `sync`,
|
|
42
|
+
* so downstream sha-based fingerprints don't churn.
|
|
43
|
+
*
|
|
44
|
+
* **Realized-intent filter (always on)**: an issue is written to disk only when its state is `closed`,
|
|
45
|
+
* and at least one merged pull request is cross-referenced from it via `CROSS_REFERENCED_EVENT` timeline items,
|
|
46
|
+
* which cover PRs that link the issue with or without closing keywords.
|
|
47
|
+
* This implements Braid's stated "intent + code convergence" contract.
|
|
48
|
+
* Pure speculative intent (open issues, abandoned issues, docs-only closes) does not pollute the ledger,
|
|
49
|
+
* and the same workspace re-provision is idempotent.
|
|
50
|
+
* The check uses GitHub's GraphQL API.
|
|
51
|
+
* Setups behind an enterprise proxy that only exposes REST can override `graphqlUrl`.
|
|
52
|
+
*
|
|
53
|
+
* Auth: pass the token via `${GH_TOKEN}` (or any other env var) in `config.token`.
|
|
54
|
+
* Tokens are never persisted on disk.
|
|
55
|
+
* Only the rendered markdown lands in `destination`.
|
|
56
|
+
*/
|
|
57
|
+
export function createGithubLoader(deps = {}) {
|
|
58
|
+
const fetchFn = deps.fetchFn ?? globalThis.fetch;
|
|
59
|
+
return defineSourceLoaderPlugin({
|
|
60
|
+
kind: 'github',
|
|
61
|
+
configSchema: GithubLoaderConfig,
|
|
62
|
+
provision: async (config, destination) => {
|
|
63
|
+
const issuesDir = join(destination, 'issues');
|
|
64
|
+
await mkdir(issuesDir, { recursive: true });
|
|
65
|
+
warnDeprecated(config);
|
|
66
|
+
const headers = buildHeaders(config);
|
|
67
|
+
const rawIssues = await fetchIssues(fetchFn, config, headers, undefined);
|
|
68
|
+
const issues = await filterAndAnnotateRealizedIntent(fetchFn, config, headers, rawIssues);
|
|
69
|
+
// Cursor advances over every raw issue we examined,
|
|
70
|
+
// not just survivors of the realized-intent filter.
|
|
71
|
+
// See the same comment in `sync`.
|
|
72
|
+
let mostRecent = '';
|
|
73
|
+
for (const raw of rawIssues) {
|
|
74
|
+
if (raw.updated_at > mostRecent)
|
|
75
|
+
mostRecent = raw.updated_at;
|
|
76
|
+
}
|
|
77
|
+
for (const { issue, mergedPRs } of issues) {
|
|
78
|
+
const comments = await fetchCommentsIfNeeded(fetchFn, config, headers, issue);
|
|
79
|
+
const markdown = renderIssueMarkdown(config, issue, comments, mergedPRs);
|
|
80
|
+
const path = join(issuesDir, `${issue.number}.md`);
|
|
81
|
+
await writeIfChanged(path, markdown);
|
|
82
|
+
}
|
|
83
|
+
if (mostRecent)
|
|
84
|
+
await writeCursor(destination, { owner: config.owner, repo: config.repo, since: mostRecent });
|
|
85
|
+
return {
|
|
86
|
+
localPath: destination,
|
|
87
|
+
metadata: {
|
|
88
|
+
owner: config.owner,
|
|
89
|
+
repo: config.repo,
|
|
90
|
+
issueCount: issues.length,
|
|
91
|
+
fetchedRaw: rawIssues.length,
|
|
92
|
+
},
|
|
93
|
+
fetchedAt: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
sync: async (config, destination) => {
|
|
97
|
+
const issuesDir = join(destination, 'issues');
|
|
98
|
+
await mkdir(issuesDir, { recursive: true });
|
|
99
|
+
warnDeprecated(config);
|
|
100
|
+
const headers = buildHeaders(config);
|
|
101
|
+
const cursor = await readCursor(destination);
|
|
102
|
+
const sinceParam = cursor?.owner === config.owner && cursor.repo === config.repo
|
|
103
|
+
? cursor.since
|
|
104
|
+
: undefined;
|
|
105
|
+
const rawIssues = await fetchIssues(fetchFn, config, headers, sinceParam);
|
|
106
|
+
const issues = await filterAndAnnotateRealizedIntent(fetchFn, config, headers, rawIssues);
|
|
107
|
+
let added = 0;
|
|
108
|
+
let updated = 0;
|
|
109
|
+
// Advance the cursor across every raw issue we examined this sync,
|
|
110
|
+
// not just survivors.
|
|
111
|
+
// Otherwise an issue that is filtered out (no merged PR yet) keeps appearing in every subsequent `since=` query,
|
|
112
|
+
// and re-burns one GraphQL probe per sync until it eventually merges,
|
|
113
|
+
// which on a chatty repo can starve the rate budget.
|
|
114
|
+
let mostRecent = cursor?.since ?? '';
|
|
115
|
+
for (const raw of rawIssues) {
|
|
116
|
+
if (raw.updated_at > mostRecent)
|
|
117
|
+
mostRecent = raw.updated_at;
|
|
118
|
+
}
|
|
119
|
+
for (const { issue, mergedPRs } of issues) {
|
|
120
|
+
const comments = await fetchCommentsIfNeeded(fetchFn, config, headers, issue);
|
|
121
|
+
const markdown = renderIssueMarkdown(config, issue, comments, mergedPRs);
|
|
122
|
+
const path = join(issuesDir, `${issue.number}.md`);
|
|
123
|
+
const result = await writeIfChanged(path, markdown);
|
|
124
|
+
if (result === 'added')
|
|
125
|
+
added++;
|
|
126
|
+
else if (result === 'updated')
|
|
127
|
+
updated++;
|
|
128
|
+
}
|
|
129
|
+
// Reactive orphan delete: any issue that came back via `since=`,
|
|
130
|
+
// but failed the realized-intent filter (re-opened, PR unmerged, label removed, and so on),
|
|
131
|
+
// gets its on-disk file removed.
|
|
132
|
+
// This keeps the intent dir aligned with the current filter without a separate full-scan path.
|
|
133
|
+
// Issues that have not been touched since the last cursor do not show up in `rawIssues`.
|
|
134
|
+
// Those need a manual full reconcile, not in scope for incremental sync.
|
|
135
|
+
const survivors = new Set(issues.map(i => i.issue.number));
|
|
136
|
+
let removed = 0;
|
|
137
|
+
for (const raw of rawIssues) {
|
|
138
|
+
if (raw.pull_request !== undefined || survivors.has(raw.number))
|
|
139
|
+
continue;
|
|
140
|
+
const removedPath = join(issuesDir, `${raw.number}.md`);
|
|
141
|
+
if (await fileExists(removedPath)) {
|
|
142
|
+
await rm(removedPath);
|
|
143
|
+
removed++;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (mostRecent)
|
|
147
|
+
await writeCursor(destination, { owner: config.owner, repo: config.repo, since: mostRecent });
|
|
148
|
+
return {
|
|
149
|
+
changed: added + updated + removed > 0,
|
|
150
|
+
added,
|
|
151
|
+
updated,
|
|
152
|
+
removed,
|
|
153
|
+
metadata: {
|
|
154
|
+
owner: config.owner,
|
|
155
|
+
repo: config.repo,
|
|
156
|
+
since: sinceParam ?? null,
|
|
157
|
+
fetchedRaw: rawIssues.length,
|
|
158
|
+
},
|
|
159
|
+
fetchedAt: new Date().toISOString(),
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
webhook: {
|
|
163
|
+
repoIdentity: config => ({ provider: 'github', owner: config.owner, repo: config.repo }),
|
|
164
|
+
// This loader pulls issues and (optionally) comments.
|
|
165
|
+
// Push and other code-side events do not change what we would re-fetch,
|
|
166
|
+
// so accept but skip them.
|
|
167
|
+
// The receiver returns 202 (preserving GitHub's retry posture) without spending an API call.
|
|
168
|
+
shouldDispatch: (_config, delivery) => delivery.event === 'issues'
|
|
169
|
+
|| delivery.event === 'issue_comment'
|
|
170
|
+
|| delivery.event === 'ping',
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
function buildHeaders(config) {
|
|
175
|
+
const headers = {
|
|
176
|
+
'Accept': 'application/vnd.github+json',
|
|
177
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
178
|
+
'User-Agent': 'braid-source-loader-github',
|
|
179
|
+
};
|
|
180
|
+
const token = interpolateEnv(config.token).trim();
|
|
181
|
+
if (token.length > 0)
|
|
182
|
+
headers.Authorization = `Bearer ${token}`;
|
|
183
|
+
return headers;
|
|
184
|
+
}
|
|
185
|
+
async function fetchIssues(fetchFn, config, headers, since) {
|
|
186
|
+
const params = new URLSearchParams();
|
|
187
|
+
params.set('state', config.state);
|
|
188
|
+
params.set('per_page', '100');
|
|
189
|
+
params.set('sort', 'updated');
|
|
190
|
+
params.set('direction', 'asc');
|
|
191
|
+
if (config.labels && config.labels.length > 0)
|
|
192
|
+
params.set('labels', config.labels.join(','));
|
|
193
|
+
if (since)
|
|
194
|
+
params.set('since', since);
|
|
195
|
+
let url = `${config.apiBaseUrl}/repos/${encodeURIComponent(config.owner)}/${encodeURIComponent(config.repo)}/issues?${params.toString()}`;
|
|
196
|
+
const out = [];
|
|
197
|
+
while (url) {
|
|
198
|
+
const response = await fetchFn(url, { headers });
|
|
199
|
+
if (!response.ok) {
|
|
200
|
+
const body = await response.text().catch(() => '');
|
|
201
|
+
throw new Error(`githubLoader: GET ${url} failed (${response.status}): ${body.slice(0, 200)}`);
|
|
202
|
+
}
|
|
203
|
+
const page = (await response.json());
|
|
204
|
+
for (const issue of page) {
|
|
205
|
+
// PR-shaped entries are the code-side artefact.
|
|
206
|
+
// Their merged state is what gates issue inclusion in the realized-intent filter.
|
|
207
|
+
// They never become intent units themselves.
|
|
208
|
+
if (issue.pull_request !== undefined)
|
|
209
|
+
continue;
|
|
210
|
+
out.push(issue);
|
|
211
|
+
}
|
|
212
|
+
url = parseNextLink(response.headers.get('link')) ?? '';
|
|
213
|
+
}
|
|
214
|
+
return out;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Apply the "realized intent" filter.
|
|
218
|
+
* Keep only issues that have at least one merged PR in their `closedByPullRequestsReferences` association,
|
|
219
|
+
* and annotate each surviving issue with the merged-PR refs,
|
|
220
|
+
* so the markdown frontmatter can carry the provenance.
|
|
221
|
+
*
|
|
222
|
+
* Implementation note: GitHub REST does not expose closed-by-PR directly.
|
|
223
|
+
* It gives only `commit_id` on closed events, which is set for PR merges but also for plain commit-close references.
|
|
224
|
+
* GraphQL's `closedByPullRequestsReferences` is the canonical source.
|
|
225
|
+
* One round-trip per issue keeps the code simple.
|
|
226
|
+
* Batching with aliased subqueries is a future optimisation if rate limits bite.
|
|
227
|
+
*/
|
|
228
|
+
async function filterAndAnnotateRealizedIntent(fetchFn, config, headers, issues) {
|
|
229
|
+
const out = [];
|
|
230
|
+
for (const issue of issues) {
|
|
231
|
+
// PRs (which REST returns alongside issues) are the code-side artefact,
|
|
232
|
+
// not the intent.
|
|
233
|
+
// Always skip them irrespective of the deprecated `includePullRequests` knob.
|
|
234
|
+
if (issue.pull_request !== undefined)
|
|
235
|
+
continue;
|
|
236
|
+
// Only closed issues count.
|
|
237
|
+
// Open issues, even ones with a merged PR already linked,
|
|
238
|
+
// are still in flight and may need more work.
|
|
239
|
+
if (issue.state !== 'closed')
|
|
240
|
+
continue;
|
|
241
|
+
const mergedPRs = await fetchLinkedMergedPRs(fetchFn, config, headers, issue.number);
|
|
242
|
+
if (mergedPRs.length === 0)
|
|
243
|
+
continue;
|
|
244
|
+
out.push({ issue, mergedPRs });
|
|
245
|
+
}
|
|
246
|
+
return out;
|
|
247
|
+
}
|
|
248
|
+
// CROSS_REFERENCED_EVENT covers every PR that mentions the issue.
|
|
249
|
+
// Closing-keyword PRs ("Closes #N"), in-flight "WIP for #N" PRs,
|
|
250
|
+
// and follow-ups that just reference the issue all generate this event.
|
|
251
|
+
// That is broader than `closedByPullRequestsReferences`,
|
|
252
|
+
// which only returns PRs with a closing keyword.
|
|
253
|
+
// The realized-intent semantic is "any merged PR is associated with this closed issue",
|
|
254
|
+
// not "the PR that closed it".
|
|
255
|
+
const LINKED_MERGED_PRS_QUERY = `query($owner: String!, $repo: String!, $number: Int!) {
|
|
256
|
+
repository(owner: $owner, name: $repo) {
|
|
257
|
+
issue(number: $number) {
|
|
258
|
+
timelineItems(first: 100, itemTypes: [CROSS_REFERENCED_EVENT]) {
|
|
259
|
+
nodes {
|
|
260
|
+
... on CrossReferencedEvent {
|
|
261
|
+
source {
|
|
262
|
+
__typename
|
|
263
|
+
... on PullRequest {
|
|
264
|
+
number
|
|
265
|
+
merged
|
|
266
|
+
mergeCommit { oid }
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}`;
|
|
275
|
+
async function fetchLinkedMergedPRs(fetchFn, config, headers, issueNumber) {
|
|
276
|
+
const url = config.graphqlUrl ?? `${config.apiBaseUrl}/graphql`;
|
|
277
|
+
const response = await fetchFn(url, {
|
|
278
|
+
method: 'POST',
|
|
279
|
+
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
280
|
+
body: JSON.stringify({
|
|
281
|
+
query: LINKED_MERGED_PRS_QUERY,
|
|
282
|
+
variables: { owner: config.owner, repo: config.repo, number: issueNumber },
|
|
283
|
+
}),
|
|
284
|
+
});
|
|
285
|
+
if (!response.ok) {
|
|
286
|
+
const body = await response.text().catch(() => '');
|
|
287
|
+
if (response.status === 401) {
|
|
288
|
+
throw new Error(
|
|
289
|
+
// GitHub's GraphQL endpoint rejects anonymous requests.
|
|
290
|
+
// The realized-intent filter needs `GH_TOKEN` (or any other env var referenced via `${VAR}` in config.token).
|
|
291
|
+
// The REST issue list works anonymously,
|
|
292
|
+
// so this only bites when the loader reaches the linked-PR check.
|
|
293
|
+
// Surface it actionably.
|
|
294
|
+
`githubLoader: realized-intent filter requires an authenticated token (set GH_TOKEN or override config.token). GitHub GraphQL returned 401 for issue ${issueNumber}.`);
|
|
295
|
+
}
|
|
296
|
+
throw new Error(`githubLoader: GraphQL POST failed (${response.status}) for issue ${issueNumber}: ${body.slice(0, 200)}`);
|
|
297
|
+
}
|
|
298
|
+
const payload = await response.json();
|
|
299
|
+
if (payload.errors && payload.errors.length > 0)
|
|
300
|
+
throw new Error(`githubLoader: GraphQL errors for issue ${issueNumber}: ${payload.errors.map(e => e.message).join('; ')}`);
|
|
301
|
+
const nodes = payload.data?.repository?.issue?.timelineItems?.nodes ?? [];
|
|
302
|
+
const seen = new Set();
|
|
303
|
+
const out = [];
|
|
304
|
+
for (const node of nodes) {
|
|
305
|
+
if (node.source.__typename !== 'PullRequest')
|
|
306
|
+
continue;
|
|
307
|
+
const pr = node.source;
|
|
308
|
+
if (!pr.merged || seen.has(pr.number))
|
|
309
|
+
continue;
|
|
310
|
+
seen.add(pr.number);
|
|
311
|
+
out.push({ number: pr.number, mergeCommit: pr.mergeCommit?.oid ?? null });
|
|
312
|
+
}
|
|
313
|
+
return out;
|
|
314
|
+
}
|
|
315
|
+
let warnedDeprecatedIncludePullRequests = false;
|
|
316
|
+
function warnDeprecated(config) {
|
|
317
|
+
if (config.includePullRequests && !warnedDeprecatedIncludePullRequests) {
|
|
318
|
+
warnedDeprecatedIncludePullRequests = true;
|
|
319
|
+
console.warn('githubLoader: `includePullRequests` is deprecated and now always treated as false. '
|
|
320
|
+
+ 'The realized-intent filter excludes PR-shaped entries; remove the flag from PRODUCT.md.');
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
async function fetchCommentsIfNeeded(fetchFn, config, headers, issue) {
|
|
324
|
+
if (!config.includeComments || issue.comments === 0)
|
|
325
|
+
return [];
|
|
326
|
+
const params = new URLSearchParams();
|
|
327
|
+
params.set('per_page', '100');
|
|
328
|
+
let url = `${config.apiBaseUrl}/repos/${encodeURIComponent(config.owner)}/${encodeURIComponent(config.repo)}/issues/${issue.number}/comments?${params.toString()}`;
|
|
329
|
+
const out = [];
|
|
330
|
+
while (url) {
|
|
331
|
+
const response = await fetchFn(url, { headers });
|
|
332
|
+
if (!response.ok) {
|
|
333
|
+
const body = await response.text().catch(() => '');
|
|
334
|
+
throw new Error(`githubLoader: GET ${url} failed (${response.status}): ${body.slice(0, 200)}`);
|
|
335
|
+
}
|
|
336
|
+
const page = (await response.json());
|
|
337
|
+
out.push(...page);
|
|
338
|
+
url = parseNextLink(response.headers.get('link')) ?? '';
|
|
339
|
+
}
|
|
340
|
+
out.sort((a, b) => a.created_at.localeCompare(b.created_at));
|
|
341
|
+
return out;
|
|
342
|
+
}
|
|
343
|
+
function renderIssueMarkdown(config, issue, comments, mergedPRs) {
|
|
344
|
+
const labels = (issue.labels ?? [])
|
|
345
|
+
.map(l => typeof l === 'string' ? l : l.name)
|
|
346
|
+
.filter((name) => typeof name === 'string' && name.length > 0)
|
|
347
|
+
.sort();
|
|
348
|
+
const frontmatter = {
|
|
349
|
+
number: issue.number,
|
|
350
|
+
title: issue.title,
|
|
351
|
+
state: issue.state,
|
|
352
|
+
author: issue.user?.login ?? null,
|
|
353
|
+
labels,
|
|
354
|
+
createdAt: issue.created_at,
|
|
355
|
+
updatedAt: issue.updated_at,
|
|
356
|
+
url: issue.html_url,
|
|
357
|
+
// The merged PRs linked to this closed issue.
|
|
358
|
+
// Drives the realized-intent semantics,
|
|
359
|
+
// an issue only lands here when state is `closed` and at least one linked merged PR exists.
|
|
360
|
+
linkedMergedPRs: mergedPRs.map(p => ({ number: p.number, mergeCommit: p.mergeCommit })),
|
|
361
|
+
};
|
|
362
|
+
const yaml = stringifyYaml(frontmatter, { lineWidth: 0 }).trimEnd();
|
|
363
|
+
const body = (issue.body ?? '').trimEnd();
|
|
364
|
+
const parts = [`---\n${yaml}\n---`, '', body];
|
|
365
|
+
if (config.includeComments && comments.length > 0) {
|
|
366
|
+
parts.push('', '## Comments');
|
|
367
|
+
for (const comment of comments) {
|
|
368
|
+
const author = comment.user?.login ?? 'unknown';
|
|
369
|
+
parts.push('', `### ${author} — ${comment.created_at}`, '', (comment.body ?? '').trimEnd());
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
return `${parts.join('\n').trimEnd()}\n`;
|
|
373
|
+
}
|
|
374
|
+
async function fileExists(path) {
|
|
375
|
+
try {
|
|
376
|
+
await stat(path);
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
async function writeIfChanged(path, content) {
|
|
384
|
+
let existing;
|
|
385
|
+
try {
|
|
386
|
+
existing = await readFile(path, 'utf-8');
|
|
387
|
+
}
|
|
388
|
+
catch {
|
|
389
|
+
existing = undefined;
|
|
390
|
+
}
|
|
391
|
+
if (existing === content)
|
|
392
|
+
return 'unchanged';
|
|
393
|
+
await writeFile(path, content, 'utf-8');
|
|
394
|
+
return existing === undefined ? 'added' : 'updated';
|
|
395
|
+
}
|
|
396
|
+
async function readCursor(destination) {
|
|
397
|
+
try {
|
|
398
|
+
const raw = await readFile(join(destination, CURSOR_FILENAME), 'utf-8');
|
|
399
|
+
return JSON.parse(raw);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return undefined;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async function writeCursor(destination, cursor) {
|
|
406
|
+
await writeFile(join(destination, CURSOR_FILENAME), `${JSON.stringify(cursor, null, 2)}\n`, 'utf-8');
|
|
407
|
+
}
|
|
408
|
+
function parseNextLink(header) {
|
|
409
|
+
if (!header)
|
|
410
|
+
return undefined;
|
|
411
|
+
for (const part of header.split(',')) {
|
|
412
|
+
const match = part.trim().match(/^<([^>]+)>;\s*rel="next"$/);
|
|
413
|
+
if (match)
|
|
414
|
+
return match[1];
|
|
415
|
+
}
|
|
416
|
+
return undefined;
|
|
417
|
+
}
|
|
418
|
+
function interpolateEnv(input) {
|
|
419
|
+
return input.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/g, (_match, name) => process.env[name] ?? '');
|
|
420
|
+
}
|
|
421
|
+
//# sourceMappingURL=GithubSourceLoaderPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubSourceLoaderPlugin.js","sourceRoot":"","sources":["../src/GithubSourceLoaderPlugin.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './GithubSourceLoaderPlugin.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './GithubSourceLoaderPlugin.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@braidhq/source-loader-github",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "GitHub Issues source-loader plugin for Braid. Ingest issues + comments into markdown.",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/mroops0111/braid.git",
|
|
10
|
+
"directory": "packages/source-loader-github"
|
|
11
|
+
},
|
|
7
12
|
"exports": {
|
|
8
13
|
".": "./src/index.ts"
|
|
9
14
|
},
|
|
@@ -16,7 +21,7 @@
|
|
|
16
21
|
"scripts": {
|
|
17
22
|
"build": "tsc -p tsconfig.json",
|
|
18
23
|
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
|
|
19
|
-
"test": "vitest run",
|
|
24
|
+
"test": "vitest run --coverage",
|
|
20
25
|
"clean": "rm -rf dist .turbo *.tsbuildinfo coverage"
|
|
21
26
|
},
|
|
22
27
|
"dependencies": {
|
|
@@ -24,12 +29,12 @@
|
|
|
24
29
|
"@braidhq/schema": "workspace:*",
|
|
25
30
|
"@braidhq/sdk": "workspace:*",
|
|
26
31
|
"yaml": "^2.9.0",
|
|
27
|
-
"zod": "^
|
|
32
|
+
"zod": "^4.2.1"
|
|
28
33
|
},
|
|
29
34
|
"devDependencies": {
|
|
30
35
|
"@braidhq/test-utils": "workspace:*",
|
|
31
36
|
"typescript": "^6.0.3",
|
|
32
|
-
"vitest": "^4.1.
|
|
37
|
+
"vitest": "^4.1.10"
|
|
33
38
|
},
|
|
34
39
|
"publishConfig": {
|
|
35
40
|
"access": "public",
|
package/dist/.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../schema/src/common.ts","../../schema/src/agent.ts","../../schema/src/batch.ts","../../schema/src/drift.ts","../../schema/src/ontology.ts","../../schema/src/model.ts","../../schema/src/proposal.ts","../../schema/src/clarify.ts","../../schema/src/decision.ts","../../schema/src/validation.ts","../../schema/src/errors.ts","../../schema/src/history.ts","../../schema/src/mcp.ts","../../schema/src/source.ts","../../schema/src/plugin.ts","../../schema/src/proposal-preview.ts","../../schema/src/qa.ts","../../schema/src/storage.ts","../../schema/src/workspace.ts","../../schema/src/skill.ts","../../schema/src/source-unit-state.ts","../../schema/src/user.ts","../../schema/src/view.ts","../../schema/src/index.ts","../../core/src/domain/errors.ts","../../core/src/domain/workspace/workspace.ts","../../core/src/domain/batch/batchplan.ts","../../core/src/domain/batch/batchplanrepository.ts","../../core/src/domain/clock.ts","../../core/src/domain/events/workspaceevent.ts","../../core/src/domain/hitl/clarifyticket.ts","../../core/src/domain/hitl/clarifyticketrepository.ts","../../core/src/domain/hitl/proposal.ts","../../core/src/domain/hitl/proposalrepository.ts","../../core/src/domain/plugin/plugin.ts","../../core/src/domain/plugin/ontology.ts","../../core/src/domain/skill/skillmanifest.ts","../../core/src/domain/agent/agentbinding.ts","../../core/src/domain/plugin/agentplugin.ts","../../core/src/domain/plugin/generator.ts","../../core/src/domain/plugin/sourceloader.ts","../../core/src/domain/model/modelrepository.ts","../../core/src/domain/plugin/storageplugin.ts","../../core/src/domain/plugin/pluginregistry.ts","../../core/src/domain/skill/skillrunner.ts","../../core/src/domain/history/workspacehistory.ts","../../core/src/domain/skill/runrepository.ts","../../core/src/domain/users/userdirectory.ts","../../core/src/application/perworkspacelock.ts","../../core/src/domain/model/graphserializer.ts","../../core/src/application/workspacebootstrap.ts","../../core/src/application/workspaceeventbus.ts","../../core/src/domain/workspace/workspacerepository.ts","../../core/src/application/workspaceservice.ts","../../core/src/application/enrichcommitauthor.ts","../../core/src/application/historyservice.ts","../../core/src/domain/hitl/decisionrepository.ts","../../core/src/domain/ids.ts","../../core/src/domain/model/model.ts","../../core/src/infrastructure/validation/evidencevalidator.ts","../../core/src/infrastructure/validation/orphanedgevalidator.ts","../../core/src/application/validationservice.ts","../../core/src/application/hitlservice.ts","../../core/src/domain/source/sourceunitdigest.ts","../../core/src/domain/source/sourceunitstaterepository.ts","../../core/src/domain/source/computesourceunitdiff.ts","../../core/src/application/sourceunitstateservice.ts","../../core/src/application/batchservice.ts","../../core/src/application/modelservice.ts","../../core/src/application/sourceloaderrunner.ts","../../core/src/builtinskillsroot.ts","../../core/src/domain/paginate.ts","../../core/src/domain/skill/skillregistry.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/stream/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.3/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/index.d.ts","../../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/pino.d.ts","../../core/src/infrastructure/logger.ts","../../core/src/infrastructure/skill/skillstructurevalidator.ts","../../core/src/infrastructure/systemclock.ts","../../core/src/infrastructure/validation/ontologytypevalidator.ts","../../core/src/infrastructure/validation/structuralvalidator.ts","../../core/src/infrastructure/validation/index.ts","../../core/src/index.ts","../../sdk/src/types.ts","../../sdk/src/validation.ts","../../sdk/src/defineagentplugin.ts","../../sdk/src/defineontology.ts","../../sdk/src/definesourceloader.ts","../../sdk/src/definestorageplugin.ts","../../sdk/src/defineviewgenerator.ts","../../sdk/src/index.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/line-counter.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/errors.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyreviver.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/log.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/tojs.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/scalar.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringify.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/collection.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/types.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/map.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/seq.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/string.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/util.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/schema.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createnode.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/pair.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/tags.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/options.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/node.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/alias.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/document.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/directives.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/composer.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/lexer.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/parser.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.d.ts","../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.d.ts","../src/githubloader.ts","../src/index.ts"],"fileIdsList":[[149,210,211,213,221,225,228,230,231,232,244],[149,212,213,221,225,228,230,231,232,244],[213,221,225,228,230,231,232,244],[149,213,221,225,228,230,231,232,244,253],[149,213,214,219,221,224,225,228,230,231,232,234,244,249,262],[149,213,214,215,221,224,225,228,230,231,232,244],[149,213,221,225,228,230,231,232,244],[149,213,216,221,225,228,230,231,232,244,263],[149,213,217,218,221,225,228,230,231,232,235,244],[149,213,218,221,225,228,230,231,232,244,249,259],[149,213,219,221,224,225,228,230,231,232,234,244],[149,212,213,220,221,225,228,230,231,232,244],[149,213,221,222,225,228,230,231,232,244],[149,213,221,223,224,225,228,230,231,232,244],[149,212,213,221,224,225,228,230,231,232,244],[149,213,221,224,225,226,228,230,231,232,244,249,262],[149,213,221,224,225,226,228,230,231,232,244,249,251,253],[149,200,213,221,224,225,227,228,230,231,232,234,244,249,262],[149,213,221,224,225,227,228,230,231,232,234,244,249,259,262],[149,213,221,225,227,228,229,230,231,232,244,249,259,262],[147,148,149,150,151,152,153,154,155,156,157,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270],[149,213,221,224,225,228,230,231,232,244],[149,213,221,225,228,230,232,244],[149,213,221,225,228,230,231,232,233,244,262],[149,213,221,224,225,228,230,231,232,234,244,249],[149,213,221,225,228,230,231,232,235,244],[149,213,221,225,228,230,231,232,236,244],[149,213,221,224,225,228,230,231,232,239,244],[149,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269],[149,213,221,225,228,230,231,232,241,244],[149,213,221,225,228,230,231,232,242,244],[149,213,218,221,225,228,230,231,232,234,244,253],[149,213,221,224,225,228,230,231,232,244,245],[149,213,221,225,228,230,231,232,244,246,263,266],[149,213,221,224,225,228,230,231,232,244,249,252,253],[149,213,221,225,228,230,231,232,244,250,253],[149,213,221,225,228,230,231,232,244,251],[149,213,221,225,228,230,231,232,244,253,263],[149,213,221,225,228,230,231,232,244,254],[149,210,213,221,225,228,230,231,232,244,249,256,262],[149,213,221,225,228,230,231,232,244,249,255],[149,213,221,224,225,228,230,231,232,244,257,258],[149,213,221,225,228,230,231,232,244,257,258],[149,213,218,221,225,228,230,231,232,234,244,249,259],[149,213,221,225,228,230,231,232,244,260],[149,213,221,225,228,230,231,232,234,244,261],[149,213,221,225,227,228,230,231,232,242,244,262],[149,213,221,225,228,230,231,232,244,263,264],[149,213,218,221,225,228,230,231,232,244,264],[149,213,221,225,228,230,231,232,244,249,265],[149,213,221,225,228,230,231,232,233,244,266],[149,213,221,225,228,230,231,232,244,267],[149,213,216,221,225,228,230,231,232,244],[149,213,218,221,225,228,230,231,232,244],[149,213,221,225,228,230,231,232,244,263],[149,200,213,221,225,228,230,231,232,244],[149,213,221,225,228,230,231,232,244,262],[149,213,221,225,228,230,231,232,244,268],[149,213,221,225,228,230,231,232,239,244],[149,213,221,225,228,230,231,232,244,258],[149,200,213,221,224,225,226,228,230,231,232,239,244,249,253,262,265,266,268],[149,213,221,225,228,230,231,232,244,249,269],[149,213,221,225,228,230,231,232,244,251,270],[149,213,221,225,227,228,230,231,232,244,271],[149,213,221,224,225,228,230,231,232,244,268,272,273],[149,213,221,224,225,228,230,231,232,244,271],[149,164,167,170,171,213,221,225,228,230,231,232,244,262],[149,167,213,221,225,228,230,231,232,244,249,262],[149,167,171,213,221,225,228,230,231,232,244,262],[149,213,221,225,228,230,231,232,244,249],[149,161,213,221,225,228,230,231,232,244],[149,165,213,221,225,228,230,231,232,244],[149,163,164,167,213,221,225,228,230,231,232,244,262],[149,213,221,225,228,230,231,232,234,244,259],[149,213,221,225,228,230,231,232,244,271],[149,161,213,221,225,228,230,231,232,244,271],[149,163,167,213,221,225,228,230,231,232,234,244,262],[149,158,159,160,162,166,213,221,224,225,228,230,231,232,244,249,262],[149,167,176,184,213,221,225,228,230,231,232,244],[149,159,165,213,221,225,228,230,231,232,244],[149,167,194,195,213,221,225,228,230,231,232,244],[149,159,162,167,213,221,225,228,230,231,232,244,253,262,271],[149,167,213,221,225,228,230,231,232,244],[149,163,167,213,221,225,228,230,231,232,244,262],[149,158,213,221,225,228,230,231,232,244],[149,161,162,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,213,221,225,228,230,231,232,244],[149,167,187,190,213,221,225,228,230,231,232,244],[149,167,176,177,178,213,221,225,228,230,231,232,244],[149,165,167,177,179,213,221,225,228,230,231,232,244],[149,166,213,221,225,228,230,231,232,244],[149,159,161,167,213,221,225,228,230,231,232,244],[149,167,171,177,179,213,221,225,228,230,231,232,244],[149,171,213,221,225,228,230,231,232,244],[149,165,167,170,213,221,225,228,230,231,232,244,262],[149,159,163,167,176,213,221,225,228,230,231,232,244],[149,167,187,213,221,225,228,230,231,232,244],[149,179,213,221,225,228,230,231,232,244],[149,159,163,167,171,213,221,225,228,230,231,232,244],[149,161,167,194,213,221,225,228,230,231,232,244,253,268,271],[149,213,221,225,228,230,231,232,244,291,314,315,319,321,322],[149,213,221,225,228,230,231,232,244,299,309,315,321],[149,213,221,225,228,230,231,232,244,321],[149,213,221,225,228,230,231,232,244,291,295,298,307,308,309,312,314,315,320,322],[149,213,221,225,228,230,231,232,244,290],[149,213,221,225,228,230,231,232,244,290,291,295,298,299,307,308,309,312,313,314,315,319,320,321,323,324,325,326,327,328,329],[149,213,221,225,228,230,231,232,244,294,307,312],[149,213,221,225,228,230,231,232,244,294,295,296,298,307,315,319,321],[149,213,221,225,228,230,231,232,244,308,309,315],[149,213,221,225,228,230,231,232,244,295,298,307,312,315,320,321],[149,213,221,225,228,230,231,232,244,294,295,296,298,307,308,314,319,320,321],[149,213,221,225,228,230,231,232,244,294,296,308,309,310,311,315,319],[149,213,221,225,228,230,231,232,244,294,315,319],[149,213,221,225,228,230,231,232,244,315,321],[149,213,221,225,228,230,231,232,244,294,295,296,297,306,309,312,315,319],[149,213,221,225,228,230,231,232,244,294,295,296,297,309,310,312,315,319],[149,213,221,225,228,230,231,232,244,290,292,293,295,299,309,312,313,315,322],[149,213,221,225,228,230,231,232,244,291,295,315,319],[149,213,221,225,228,230,231,232,244,319],[149,213,221,225,228,230,231,232,244,316,317,318],[149,213,221,225,228,230,231,232,244,292,314,315,321,323],[149,213,221,225,228,230,231,232,244,299],[149,213,221,225,228,230,231,232,244,299,308,312,314],[149,213,221,225,228,230,231,232,244,299,314],[149,213,221,225,228,230,231,232,244,295,296,298,307,309,310,314,315],[149,213,221,225,228,230,231,232,244,294,298,299,306,307,309],[149,213,221,225,228,230,231,232,244,294,295,296,299,306,307,309,312],[149,213,221,225,228,230,231,232,244,314,320,321],[149,213,221,225,228,230,231,232,244,295],[149,213,221,225,228,230,231,232,244,295,296],[149,213,221,225,228,230,231,232,244,293,294,296,300,301,302,303,304,305,307,310,312],[72,149,213,221,225,228,230,231,232,244],[63,64,149,213,221,225,228,230,231,232,244],[60,61,63,65,66,71,149,213,221,225,228,230,231,232,244],[61,63,149,213,221,225,228,230,231,232,244],[71,149,213,221,225,228,230,231,232,244],[63,149,213,221,225,228,230,231,232,244],[60,61,63,66,67,68,69,70,149,213,221,225,228,230,231,232,244],[60,61,62,149,213,221,225,228,230,231,232,244],[97,98,99,100,101,102,103,105,107,109,117,118,122,125,127,129,131,136,140,149,213,221,225,228,230,231,232,244],[97,121,149,213,221,225,228,230,231,232,244],[97,98,102,118,119,120,121,122,124,125,127,128,149,213,221,225,228,230,231,232,244],[97,98,99,102,104,105,106,107,115,119,121,122,123,125,127,128,130,131,135,149,213,221,225,228,230,231,232,244],[97,115,149,213,221,225,228,230,231,232,244],[97,149,213,221,225,228,230,231,232,244],[97,98,99,102,114,117,125,149,213,221,225,226,228,230,231,232,236,244],[97,102,127,137,138,139,149,213,221,225,228,230,231,232,244],[97,99,117,132,133,134,149,213,221,225,228,230,231,232,244],[97,99,115,119,123,149,213,221,225,228,230,231,232,244],[97,103,149,213,221,225,228,230,231,232,244],[97,98,99,126,149,213,221,225,228,230,231,232,244],[149,213,221,225,228,230,231,232,236,244,262],[97,99,110,149,213,221,225,228,230,231,232,244],[97,98,149,213,221,225,228,230,231,232,244],[99,100,149,213,221,225,228,230,231,232,244],[97,99,149,213,221,225,228,230,231,232,244],[97,104,149,213,221,225,228,230,231,232,244],[97,106,149,213,221,225,228,230,231,232,244],[97,98,131,149,213,221,225,228,230,231,232,244],[97,108,111,149,213,221,225,228,230,231,232,244],[97,108,149,213,221,225,228,230,231,232,244],[73,97,149,213,221,225,228,230,231,232,244],[97,98,108,109,112,113,114,116,149,213,221,225,228,230,231,232,244],[97,108,115,149,213,221,225,228,230,231,232,244],[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,138,139,140,141,142,143,144,145,146,149,213,221,225,228,230,231,232,244,275,276,277,280],[149,213,221,225,228,230,231,232,240,244,274],[97,102,149,213,221,225,228,230,231,232,244],[133,134,149,213,221,225,228,230,231,232,244,278,279],[97,109,149,213,221,225,228,230,231,232,244],[73,74,149,213,221,225,228,230,231,232,244],[73,74,80,149,213,221,225,228,230,231,232,244],[73,149,213,221,225,228,230,231,232,244],[73,83,149,213,221,225,228,230,231,232,244],[73,74,79,149,213,221,225,228,230,231,232,244],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,149,213,221,225,228,230,231,232,244],[73,74,77,78,149,213,221,225,228,230,231,232,244],[73,74,87,149,213,221,225,228,230,231,232,244],[74,79,80,85,149,213,221,225,228,230,231,232,244],[73,74,86,92,149,213,221,225,228,230,231,232,244],[73,74,86,149,213,221,225,228,230,231,232,244],[73,74,75,86,87,91,149,213,221,225,228,230,231,232,244],[73,97,149,213,221,225,228,230,231,232,244,281,282,283],[149,213,221,225,228,230,231,232,244,282,284,285,286,287,288],[149,213,221,225,228,230,231,232,244,281],[73,97,149,213,221,225,226,228,230,231,232,236,240,244,281,289,330],[149,213,221,225,228,230,231,232,244,331]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},"718b4d0a057e07da825d36a6c2e457c89bb4d3508d8236aacf7763dd51bfbd90","86a93a1dd3c6e6c0f3309fc9d0c6a24b7b4a40663078f7899ad53ed31307c66e","0aa656454344d9623de79d7b85011e091c837518db1d817f288f7ebb9671cb25","7defb8532808241df922c2e908ec9534f9f0a95af70249a428860a346ef0ce77","6ad5b8ca1d9831689a9c64d9d1b392fa240629a0d7c2a90bf42706895bb4c5d0","70ccf5da42a725c107a5d94433264616d04727d1465f991b213168ae374b3ddc","d0a93491328fa1c1bd3441f848959af3101815c4beeb5c9e845d993c31887199","a7ea8a556f71b26be6019bb516cd8dc98de0dc5c491e534ced87ca487b86c321","6a0d099da2d898721cb3640311b97b4f69f170af4a81df0800ed4584ac6e1c7e","3cd54579452ac5040dbc9bce1a26981b97e4a32ef49ec466944a1d3408b8a03d","4513c23ec50d425e5693fb35b0421ca25893b0001c9c11d7de48ce10066e66b3","1ae65bad71dbc7eb90292ec61326059f7db3a0ff47215a044381849a0d757901","68a5c7b0050cb6f6f51fb449edbe753f1c50c4c61376b31e45b2af9d13403cc2","f8b7f57678186eebac8b2ce3c09416397abfcd10055cdabc784af4795715100c","2eae7282cc80a89dbabc9b7add8c17c1233db7f4b96e1bd1fe03fab03e3ceb9f","79b8503e9e17e5f46cc6f3db4a280e9c75286aa3d9fde8db7854bacdb8128ff0","9391a986f88d02ab000e7bad4e68b058c05c764892369b7ec7cba68e2ab707e6","4ffebbd25aa6e374f652be9c9a41686b13f38b050a634c1b641d24c9f4e288fb","baae1406398ec75aa83cb6232dd8c42cd72b79431832300b7a0db477fe4a9eec","58d8ca318064e41edd159228d062136763b2263e3efb9ee4e90b6f54b66bc77b","5458bc228965bab1c8df8b110a9c0f79336db881d21d67de3b58f2bb55810bc7","3fe4e2b9f450b0b7cc36adf205b9b571855a9192259f812a1b27c6e253035611","6c122a02e83fbd9a9e16f8e3b14e311ff545ae89330676e67c0621509f523d04","0365df03669b4a7ca8ed1b2d81da18c7d120a7736c6ea9f6f491dc3b7207f71b","7358a02c2483472796ec353152323bb71b0343d7c8c2ecfdab3bc4e7b48487c1","97ae2665f81c72461d2b422b7ced3f80176e38c64b44882c56407c9bfa584109","200aaef73d1727d5667c365ef25c5202cbf60adf54d98145f35f184e49565d40","954a1d5ca6fae7f2d3bdebaf65a67af8eafb65a19d6e8be4c4525955d508fc78","09f6f70820deacf4ea10a6fe818abb82f17c41b619b91d94742d0151c1fdf0e1","92eebeb93443e52bbbcbd83cc866a76646f90fb7ba505fa3e9aa3d2589b4ca06","668ec2cece8b9005be5ec9ed3e8915eaac21abea6c9ba76d22869d91f9e6f798","b31a029d874144e8bad726d5c459cf6e98765ff35f6edcb7a660d4a695f47597","69e37b0739720625d4805d0684de815e11d30f1464829fac9a82af95048ab72e","a00cc4a57ef20b04265808079af7a8c10967934baf9167b0f8f9d14ec275ff79","092dc005c0692073b6d6a8f1f99f1bd98e9b474ce26e923adf4a378c11ec34f6","a007a07d1939242a56739daa62171bb8ac1f807de3e9e2c04a9226af3c6b9c93","bfa89617c6933f2a116438cac4e416e12f4e94128d8a5dcee85f9385b7a01bd0","6e0015110e56ecc455baddc4d45c456b4b5ef3d526cf235a09bbb85707844d49","b1b13288c510bf4945d573a0f6ff7ad40a9ea0ee1631418c440322a7ac5da32c","40489a100257bdb3062bc0168259af319d05e666d65adc1e81b5502c0338c732","d22610efa5b8aa788fcdb637c63561048dafd13b07ea9437235fc554cc0a888c","eb3553bcc50a820f32b67e3d6364406ff899f67e59fe6ff8b62845218e1a84c6","3710fa3f965210581a1e29fec4cacd29129ae33119dc21d9edd1c314f35dbaa9","5df38cb34bd5e6e370c73f19b5748b3079b29ce93efa48fe034ebe90d9d3e979","a71d143de73694d872bfa38df046fe82ff7de8f60d8378d874f2a4cc4391b557","f6e0b2f35dc76876b121af2ea8a4ed7edd9336232d0563a0fdda7a6d49303846","6c7a5cbe589783a9e9bb06e09d3287251aca03b4dcd4ac5fcd4ba53c0add9f99","e150a9e5b02a32c074ec785dc054ac815c0544f4c087f66ed902b75a4c7bbe68","e18d315ea210a591e16b9c121732cff22ed7b9e99f94ed4837919896446f8ca3","f612ff367c0f056eb8d42f5a83ee553d33c25b1a78a3bbaf8001a85df9894d07","d6840664bd703ae3d1161228bf415d61c99fcc9ae869d326498d9c806c76d40c","535dc933114cb19889c39d8634aa30525807b07629f76aa926455d889102bec0","e783b4cd7c82cc1ae9053366cb1e34dee6173c310a12c8d529852ff2f61ee19e","b9594943ff18cf4e05c3cb799753b9598f843755f6fcaa48f1835a0a79dde3a0","41f953a563501155e03223f4c968fadaa531f340ef12acc7b76a05a8e9bcc1f3","a1fafa1ab7571e0115504b60638614d8c5385327d8eedaaca0d4d29dfb822b59","e4946ef1c73f1f19dec379990887191330f66593bdd97eca915756985587d841","83b0800983530aa593b007644862f7b5c567643dbba36be99377ad198a01e241","287d9aaea064e275e4021e1378f582e0d46674367d9346f1623999f4debae9d7","860b83da3c541eaf5bfa2812fd0b76f0e8fe128b23a31e969e24e85139a09ad9","6ea38c98716213119ef6e68a7827c76e8239ff3512f12296ef70600415e3d0f7","dc9ee9763ecba6b22bed656fe147c36abc5084b9ba4a7f685afcc40397e42b52","6cd27bccdfe2f919c6e106885327a1ec4e5839f47f6d3689fedb46fc1160a260","e5b8ce73ac8b19346d8d396a8de723e30223be083514666973c05941b1f7324a","e44cb4941a7bff86b2944dc46b4b0cabf97ce477ba124896769e7b48d36fd180","5a2070df3c3e3d740bfaec08831508e83da6e3e9d711162d232986ddc80feb28","5050b7b1cdf506a381c09e5d0f5b0072349be6e51daaa98e346b8eaa31ecab6d","01d796d5655f9350535ccd041ddd0ebcdf5c81f139cce4116aae7381e6fe465d","7b2d9ed76cb118b3102f8b0c20aeeb4102884c4bf4e0c1ddaef72fb03ac88ca3","b5656c0842488dbd3e067668c510720e353d7e015738ab184e8e8743a46d482c","8e418aaf071953731672198bcbf2882380513aada33c02a6c444123910592da5","bdfae5510baa6cc7c6b61c0f7b08ffb90e2a960a2412bfe4c12af15b3f61903c","1685f6560b470725c7c08b4f7cbc4dc59b800043f20b2bb228227208ba610077",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"719412f054e6ecc35489462c9a21bab0323d173a7d04e55b0ace4b5d86fbeb07","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"3db996ecdee7aabecc5385976cc07eb66216034a273c07b17d1a85292e9bab0c","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"5e66972e83eb4dc7123939bf816e6cbd9ad81af5552db1cab84e6bd9c64d2ecc","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1},{"version":"4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","impliedFormat":1},{"version":"9eb1d2dceae65d1c82fc6be7e9b6b19cf3ca93c364678611107362b6ad4d2d41","impliedFormat":1},{"version":"8065e20ac0ad0536d4f1c8d4c2303272a4d25c450bea8d25deb25697d19300e5","impliedFormat":1},"7eb46249a4c90cfd5f456a73c18eaef83219171ffcf84a22586630329f011e8a","df4a81282d7c5621db20a4e768ff659a0372948b56d3218619927ab656a90ad5","22a1336f32d5d82a888622ece4f460db550b4c7383e4fa8befd62e8b723fdc6e","bca57bc4cde56e41819022a749ed54b20a7b2229f26503177d8554ff55dc4454","78cfbbcb8889d6905435790e7f3f46f61d24f915def282e7b409916f090db147","b547279f165a43ff3ff4c1e833cea87654920e385306fe7c3367d52c04fba8fc","4b50e5bd24c5a4000805347928a1460242d91242e35a145c8f8a81c19fbb0742","36697b6aa06bcb36d368e7e3114956af60d2a5050249a49950b956473dba16ac","a2691471d1f731ee4fbcca17e9288baf83a656cd77dc733dd9920028f9da0583","4d5f6030531c4d84a263553d4ef732f3f6d51b2f38c2d22adee5b4152b29b807","a218c5016d94c0ba5a7e2e8f18807ca024798716b9cd7c6b719ff9339f0fd41a","da36c8a722a86fdda7df290afe4b4291ba05cfb47dc9b86275bba36019f3d601","5d5177353cc776a3c530350894dab114a617d135e6c5e2c2d4e6115b89d58890","8fd0a255e05b70041b1a3f99372a7b25f04f05406ca47ff17f9bd08911747de1","c79ecf8911004ffa849989372fe2c227a446cb321881fc48c745d6189db21001",{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"bea7cae6a8b2d41fd1a9d70475b54d741dd7ca2103904934858108eec0336a69","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"afb5e9a110ff72b60783e0fe65ce1a28adbe6ab5f30d2dc31e2fb099e0f86de4","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"1720be851bdb7cdbff68061522a71d9ddaa69db1fe90c6819a26953da05942f2","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"5aba114bbe74f6a1cd96ad27af2fc381019dd3cdfdc03cb0855b7f5a56973caf","signature":"dbb08ac8c0ba893d56ee198f3f3d8fe46c4622889c399a71e07519e4a0718d89"},{"version":"22d0129825317fb29473a00b76ac330f0886a6fe93d85092d91ad36b33779f06","signature":"55c7f5504cd65f8e21a53861f8879239b1e1f17ee89541d0d2b45f8b15b20003"}],"root":[331,332],"options":{"allowSyntheticDefaultImports":true,"allowUnreachableCode":false,"allowUnusedLabels":false,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[210,1],[211,1],[212,2],[149,3],[213,4],[214,5],[215,6],[147,7],[216,8],[217,9],[218,10],[219,11],[220,12],[221,13],[222,13],[223,14],[224,15],[225,16],[226,17],[150,7],[148,7],[227,18],[228,19],[229,20],[271,21],[230,22],[231,23],[232,22],[233,24],[234,25],[235,26],[236,27],[237,27],[238,27],[239,28],[240,29],[241,30],[242,31],[243,32],[244,33],[245,33],[246,34],[247,7],[248,7],[249,35],[250,36],[251,37],[252,35],[253,38],[254,39],[255,40],[256,41],[257,42],[258,43],[259,44],[260,45],[261,46],[262,47],[263,48],[264,49],[265,50],[266,51],[267,52],[151,22],[152,7],[153,53],[154,54],[155,7],[156,55],[157,7],[201,56],[202,57],[203,58],[204,58],[205,59],[206,7],[207,4],[208,60],[209,57],[268,61],[269,62],[270,63],[272,64],[274,65],[273,66],[58,7],[59,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[56,7],[1,7],[57,7],[176,67],[189,68],[173,69],[190,70],[199,71],[164,72],[165,73],[163,74],[198,75],[193,76],[197,77],[167,78],[186,79],[166,80],[196,81],[161,82],[162,76],[168,83],[169,7],[175,84],[172,83],[159,85],[200,86],[191,87],[179,88],[178,83],[180,89],[183,90],[177,91],[181,92],[194,75],[170,93],[171,94],[184,95],[160,70],[188,96],[187,83],[174,94],[182,97],[185,98],[192,7],[158,7],[195,99],[323,100],[292,7],[310,101],[322,102],[321,103],[291,104],[330,105],[293,7],[311,106],[320,107],[297,108],[308,109],[315,110],[312,111],[295,112],[294,113],[307,114],[298,115],[314,116],[316,117],[317,118],[318,118],[319,119],[324,7],[290,7],[325,118],[326,120],[300,121],[301,121],[302,121],[309,122],[313,123],[299,124],[327,125],[328,126],[303,7],[296,127],[304,128],[305,129],[306,130],[329,109],[73,131],[65,132],[72,133],[67,7],[68,7],[66,134],[69,135],[60,7],[61,7],[62,131],[64,136],[70,7],[71,137],[63,138],[141,139],[128,140],[129,141],[136,142],[142,143],[122,144],[143,145],[140,146],[135,147],[124,148],[125,149],[127,150],[144,151],[111,152],[100,153],[101,154],[102,144],[98,144],[103,144],[119,155],[104,153],[105,156],[130,144],[106,153],[107,157],[131,144],[123,155],[132,158],[115,144],[145,7],[112,159],[113,160],[109,160],[108,161],[117,162],[114,160],[116,163],[120,155],[110,155],[146,152],[118,155],[139,144],[137,155],[138,144],[121,144],[99,153],[126,155],[281,164],[275,165],[276,144],[277,166],[133,144],[280,167],[278,168],[134,144],[279,168],[75,169],[76,169],[81,170],[74,171],[82,169],[77,169],[84,172],[85,173],[97,174],[86,171],[79,175],[78,169],[88,176],[89,177],[80,173],[90,173],[93,178],[94,169],[87,179],[91,169],[95,169],[83,169],[96,171],[92,180],[284,181],[285,181],[286,181],[287,181],[288,181],[289,182],[282,144],[283,183],[331,184],[332,185]],"version":"6.0.3"}
|
package/dist/GithubLoader.d.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { SourceLoaderPlugin } from '@braidhq/core';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
/**
|
|
4
|
-
* Inject `fetchFn` for tests; real callers use globalThis.fetch.
|
|
5
|
-
*/
|
|
6
|
-
export type FetchFn = typeof globalThis.fetch;
|
|
7
|
-
export declare const GithubLoaderConfig: z.ZodObject<{
|
|
8
|
-
owner: z.ZodString;
|
|
9
|
-
repo: z.ZodString;
|
|
10
|
-
state: z.ZodDefault<z.ZodEnum<["open", "closed", "all"]>>;
|
|
11
|
-
labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
-
includeComments: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
-
/**
|
|
14
|
-
* GitHub's REST treats PRs as a subtype of issues. Default `false` so a
|
|
15
|
-
* source declared as "issues" doesn't silently pick up PR threads too.
|
|
16
|
-
*/
|
|
17
|
-
includePullRequests: z.ZodDefault<z.ZodBoolean>;
|
|
18
|
-
/**
|
|
19
|
-
* Auth token. Supports `${VAR}` interpolation against the server's process
|
|
20
|
-
* env. Defaults to `${GH_TOKEN}`. An empty string after interpolation
|
|
21
|
-
* means anonymous (60 req/h rate limit, public repos only).
|
|
22
|
-
*/
|
|
23
|
-
token: z.ZodDefault<z.ZodString>;
|
|
24
|
-
/** REST base URL. Override for GitHub Enterprise. */
|
|
25
|
-
apiBaseUrl: z.ZodDefault<z.ZodString>;
|
|
26
|
-
}, "strip", z.ZodTypeAny, {
|
|
27
|
-
owner: string;
|
|
28
|
-
repo: string;
|
|
29
|
-
state: "open" | "closed" | "all";
|
|
30
|
-
includeComments: boolean;
|
|
31
|
-
includePullRequests: boolean;
|
|
32
|
-
token: string;
|
|
33
|
-
apiBaseUrl: string;
|
|
34
|
-
labels?: string[] | undefined;
|
|
35
|
-
}, {
|
|
36
|
-
owner: string;
|
|
37
|
-
repo: string;
|
|
38
|
-
state?: "open" | "closed" | "all" | undefined;
|
|
39
|
-
labels?: string[] | undefined;
|
|
40
|
-
includeComments?: boolean | undefined;
|
|
41
|
-
includePullRequests?: boolean | undefined;
|
|
42
|
-
token?: string | undefined;
|
|
43
|
-
apiBaseUrl?: string | undefined;
|
|
44
|
-
}>;
|
|
45
|
-
export type GithubLoaderConfig = z.infer<typeof GithubLoaderConfig>;
|
|
46
|
-
export interface GithubLoaderDeps {
|
|
47
|
-
/** Inject for tests. Real callers use globalThis.fetch. */
|
|
48
|
-
fetchFn?: FetchFn;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Build a SourceLoader for a GitHub repository's Issues. The `destination`
|
|
52
|
-
* is owned by the loader: each issue is written as
|
|
53
|
-
* `<destination>/issues/<number>.md` with a deterministic YAML frontmatter
|
|
54
|
-
* + body + `## Comments` section. Untouched issues stay byte-identical
|
|
55
|
-
* across `sync` so downstream sha-based fingerprints don't churn.
|
|
56
|
-
*
|
|
57
|
-
* Auth: pass the token via `${GH_TOKEN}` (or any other env var) in
|
|
58
|
-
* `config.token`. Tokens are never persisted on disk; only the rendered
|
|
59
|
-
* markdown lands in `destination`.
|
|
60
|
-
*/
|
|
61
|
-
export declare function createGithubLoader(deps?: GithubLoaderDeps): SourceLoaderPlugin;
|
|
62
|
-
//# sourceMappingURL=GithubLoader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GithubLoader.d.ts","sourceRoot":"","sources":["../src/GithubLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAOvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,KAAK,CAAA;AAE7C,eAAO,MAAM,kBAAkB;;;;;;IAM7B;;;OAGG;;IAEH;;;;OAIG;;IAGH,qDAAqD;;;;;;;;;;;;;;;;;;;;EAErD,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,gBAAqB,GAAG,kBAAkB,CAgElF"}
|
package/dist/GithubLoader.js
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
import { defineSourceLoader } from '@braidhq/sdk';
|
|
5
|
-
import { stringify as stringifyYaml } from 'yaml';
|
|
6
|
-
import { z } from 'zod';
|
|
7
|
-
export const GithubLoaderConfig = z.object({
|
|
8
|
-
owner: z.string().min(1),
|
|
9
|
-
repo: z.string().min(1),
|
|
10
|
-
state: z.enum(['open', 'closed', 'all']).default('all'),
|
|
11
|
-
labels: z.array(z.string().min(1)).optional(),
|
|
12
|
-
includeComments: z.boolean().default(true),
|
|
13
|
-
/**
|
|
14
|
-
* GitHub's REST treats PRs as a subtype of issues. Default `false` so a
|
|
15
|
-
* source declared as "issues" doesn't silently pick up PR threads too.
|
|
16
|
-
*/
|
|
17
|
-
includePullRequests: z.boolean().default(false),
|
|
18
|
-
/**
|
|
19
|
-
* Auth token. Supports `${VAR}` interpolation against the server's process
|
|
20
|
-
* env. Defaults to `${GH_TOKEN}`. An empty string after interpolation
|
|
21
|
-
* means anonymous (60 req/h rate limit, public repos only).
|
|
22
|
-
*/
|
|
23
|
-
// eslint-disable-next-line no-template-curly-in-string -- literal `${VAR}` placeholder for env interpolation, NOT a template string
|
|
24
|
-
token: z.string().default('${GH_TOKEN}'),
|
|
25
|
-
/** REST base URL. Override for GitHub Enterprise. */
|
|
26
|
-
apiBaseUrl: z.string().default('https://api.github.com'),
|
|
27
|
-
});
|
|
28
|
-
const CURSOR_FILENAME = '.braid-github-cursor.json';
|
|
29
|
-
/**
|
|
30
|
-
* Build a SourceLoader for a GitHub repository's Issues. The `destination`
|
|
31
|
-
* is owned by the loader: each issue is written as
|
|
32
|
-
* `<destination>/issues/<number>.md` with a deterministic YAML frontmatter
|
|
33
|
-
* + body + `## Comments` section. Untouched issues stay byte-identical
|
|
34
|
-
* across `sync` so downstream sha-based fingerprints don't churn.
|
|
35
|
-
*
|
|
36
|
-
* Auth: pass the token via `${GH_TOKEN}` (or any other env var) in
|
|
37
|
-
* `config.token`. Tokens are never persisted on disk; only the rendered
|
|
38
|
-
* markdown lands in `destination`.
|
|
39
|
-
*/
|
|
40
|
-
export function createGithubLoader(deps = {}) {
|
|
41
|
-
const fetchFn = deps.fetchFn ?? globalThis.fetch;
|
|
42
|
-
return defineSourceLoader({
|
|
43
|
-
kind: 'github',
|
|
44
|
-
configSchema: GithubLoaderConfig,
|
|
45
|
-
ingest: async (config, destination) => {
|
|
46
|
-
const issuesDir = join(destination, 'issues');
|
|
47
|
-
await mkdir(issuesDir, { recursive: true });
|
|
48
|
-
const headers = buildHeaders(config);
|
|
49
|
-
const issues = await fetchIssues(fetchFn, config, headers, undefined);
|
|
50
|
-
let mostRecent = '';
|
|
51
|
-
for (const issue of issues) {
|
|
52
|
-
if (issue.updated_at > mostRecent)
|
|
53
|
-
mostRecent = issue.updated_at;
|
|
54
|
-
const comments = await fetchCommentsIfNeeded(fetchFn, config, headers, issue);
|
|
55
|
-
const markdown = renderIssueMarkdown(config, issue, comments);
|
|
56
|
-
const path = join(issuesDir, `${issue.number}.md`);
|
|
57
|
-
await writeIfChanged(path, markdown);
|
|
58
|
-
}
|
|
59
|
-
if (mostRecent)
|
|
60
|
-
await writeCursor(destination, { owner: config.owner, repo: config.repo, since: mostRecent });
|
|
61
|
-
return {
|
|
62
|
-
localPath: destination,
|
|
63
|
-
metadata: { owner: config.owner, repo: config.repo, issueCount: issues.length },
|
|
64
|
-
fetchedAt: new Date().toISOString(),
|
|
65
|
-
};
|
|
66
|
-
},
|
|
67
|
-
sync: async (config, destination) => {
|
|
68
|
-
const issuesDir = join(destination, 'issues');
|
|
69
|
-
await mkdir(issuesDir, { recursive: true });
|
|
70
|
-
const headers = buildHeaders(config);
|
|
71
|
-
const cursor = await readCursor(destination);
|
|
72
|
-
const sinceParam = cursor?.owner === config.owner && cursor.repo === config.repo
|
|
73
|
-
? cursor.since
|
|
74
|
-
: undefined;
|
|
75
|
-
const issues = await fetchIssues(fetchFn, config, headers, sinceParam);
|
|
76
|
-
let added = 0;
|
|
77
|
-
let updated = 0;
|
|
78
|
-
let mostRecent = cursor?.since ?? '';
|
|
79
|
-
for (const issue of issues) {
|
|
80
|
-
if (issue.updated_at > mostRecent)
|
|
81
|
-
mostRecent = issue.updated_at;
|
|
82
|
-
const comments = await fetchCommentsIfNeeded(fetchFn, config, headers, issue);
|
|
83
|
-
const markdown = renderIssueMarkdown(config, issue, comments);
|
|
84
|
-
const path = join(issuesDir, `${issue.number}.md`);
|
|
85
|
-
const result = await writeIfChanged(path, markdown);
|
|
86
|
-
if (result === 'added')
|
|
87
|
-
added++;
|
|
88
|
-
else if (result === 'updated')
|
|
89
|
-
updated++;
|
|
90
|
-
}
|
|
91
|
-
if (mostRecent)
|
|
92
|
-
await writeCursor(destination, { owner: config.owner, repo: config.repo, since: mostRecent });
|
|
93
|
-
return {
|
|
94
|
-
changed: added + updated > 0,
|
|
95
|
-
added,
|
|
96
|
-
updated,
|
|
97
|
-
removed: 0,
|
|
98
|
-
metadata: { owner: config.owner, repo: config.repo, since: sinceParam ?? null },
|
|
99
|
-
fetchedAt: new Date().toISOString(),
|
|
100
|
-
};
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
function buildHeaders(config) {
|
|
105
|
-
const headers = {
|
|
106
|
-
'Accept': 'application/vnd.github+json',
|
|
107
|
-
'X-GitHub-Api-Version': '2022-11-28',
|
|
108
|
-
'User-Agent': 'braid-source-loader-github',
|
|
109
|
-
};
|
|
110
|
-
const token = interpolateEnv(config.token).trim();
|
|
111
|
-
if (token.length > 0)
|
|
112
|
-
headers.Authorization = `Bearer ${token}`;
|
|
113
|
-
return headers;
|
|
114
|
-
}
|
|
115
|
-
async function fetchIssues(fetchFn, config, headers, since) {
|
|
116
|
-
const params = new URLSearchParams();
|
|
117
|
-
params.set('state', config.state);
|
|
118
|
-
params.set('per_page', '100');
|
|
119
|
-
params.set('sort', 'updated');
|
|
120
|
-
params.set('direction', 'asc');
|
|
121
|
-
if (config.labels && config.labels.length > 0)
|
|
122
|
-
params.set('labels', config.labels.join(','));
|
|
123
|
-
if (since)
|
|
124
|
-
params.set('since', since);
|
|
125
|
-
let url = `${config.apiBaseUrl}/repos/${encodeURIComponent(config.owner)}/${encodeURIComponent(config.repo)}/issues?${params.toString()}`;
|
|
126
|
-
const out = [];
|
|
127
|
-
while (url) {
|
|
128
|
-
const response = await fetchFn(url, { headers });
|
|
129
|
-
if (!response.ok) {
|
|
130
|
-
const body = await response.text().catch(() => '');
|
|
131
|
-
throw new Error(`githubLoader: GET ${url} failed (${response.status}): ${body.slice(0, 200)}`);
|
|
132
|
-
}
|
|
133
|
-
const page = (await response.json());
|
|
134
|
-
for (const issue of page) {
|
|
135
|
-
if (!config.includePullRequests && issue.pull_request !== undefined)
|
|
136
|
-
continue;
|
|
137
|
-
out.push(issue);
|
|
138
|
-
}
|
|
139
|
-
url = parseNextLink(response.headers.get('link')) ?? '';
|
|
140
|
-
}
|
|
141
|
-
return out;
|
|
142
|
-
}
|
|
143
|
-
async function fetchCommentsIfNeeded(fetchFn, config, headers, issue) {
|
|
144
|
-
if (!config.includeComments || issue.comments === 0)
|
|
145
|
-
return [];
|
|
146
|
-
const params = new URLSearchParams();
|
|
147
|
-
params.set('per_page', '100');
|
|
148
|
-
let url = `${config.apiBaseUrl}/repos/${encodeURIComponent(config.owner)}/${encodeURIComponent(config.repo)}/issues/${issue.number}/comments?${params.toString()}`;
|
|
149
|
-
const out = [];
|
|
150
|
-
while (url) {
|
|
151
|
-
const response = await fetchFn(url, { headers });
|
|
152
|
-
if (!response.ok) {
|
|
153
|
-
const body = await response.text().catch(() => '');
|
|
154
|
-
throw new Error(`githubLoader: GET ${url} failed (${response.status}): ${body.slice(0, 200)}`);
|
|
155
|
-
}
|
|
156
|
-
const page = (await response.json());
|
|
157
|
-
out.push(...page);
|
|
158
|
-
url = parseNextLink(response.headers.get('link')) ?? '';
|
|
159
|
-
}
|
|
160
|
-
out.sort((a, b) => a.created_at.localeCompare(b.created_at));
|
|
161
|
-
return out;
|
|
162
|
-
}
|
|
163
|
-
function renderIssueMarkdown(config, issue, comments) {
|
|
164
|
-
const labels = (issue.labels ?? [])
|
|
165
|
-
.map(l => typeof l === 'string' ? l : l.name)
|
|
166
|
-
.filter((name) => typeof name === 'string' && name.length > 0)
|
|
167
|
-
.sort();
|
|
168
|
-
const frontmatter = {
|
|
169
|
-
number: issue.number,
|
|
170
|
-
title: issue.title,
|
|
171
|
-
state: issue.state,
|
|
172
|
-
author: issue.user?.login ?? null,
|
|
173
|
-
labels,
|
|
174
|
-
createdAt: issue.created_at,
|
|
175
|
-
updatedAt: issue.updated_at,
|
|
176
|
-
url: issue.html_url,
|
|
177
|
-
};
|
|
178
|
-
const yaml = stringifyYaml(frontmatter, { lineWidth: 0 }).trimEnd();
|
|
179
|
-
const body = (issue.body ?? '').trimEnd();
|
|
180
|
-
const parts = [`---\n${yaml}\n---`, '', body];
|
|
181
|
-
if (config.includeComments && comments.length > 0) {
|
|
182
|
-
parts.push('', '## Comments');
|
|
183
|
-
for (const comment of comments) {
|
|
184
|
-
const author = comment.user?.login ?? 'unknown';
|
|
185
|
-
parts.push('', `### ${author} — ${comment.created_at}`, '', (comment.body ?? '').trimEnd());
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return `${parts.join('\n').trimEnd()}\n`;
|
|
189
|
-
}
|
|
190
|
-
async function writeIfChanged(path, content) {
|
|
191
|
-
let existing;
|
|
192
|
-
try {
|
|
193
|
-
existing = await readFile(path, 'utf-8');
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
existing = undefined;
|
|
197
|
-
}
|
|
198
|
-
if (existing === content)
|
|
199
|
-
return 'unchanged';
|
|
200
|
-
await writeFile(path, content, 'utf-8');
|
|
201
|
-
return existing === undefined ? 'added' : 'updated';
|
|
202
|
-
}
|
|
203
|
-
async function readCursor(destination) {
|
|
204
|
-
try {
|
|
205
|
-
const raw = await readFile(join(destination, CURSOR_FILENAME), 'utf-8');
|
|
206
|
-
return JSON.parse(raw);
|
|
207
|
-
}
|
|
208
|
-
catch {
|
|
209
|
-
return undefined;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
async function writeCursor(destination, cursor) {
|
|
213
|
-
await writeFile(join(destination, CURSOR_FILENAME), `${JSON.stringify(cursor, null, 2)}\n`, 'utf-8');
|
|
214
|
-
}
|
|
215
|
-
function parseNextLink(header) {
|
|
216
|
-
if (!header)
|
|
217
|
-
return undefined;
|
|
218
|
-
for (const part of header.split(',')) {
|
|
219
|
-
const match = part.trim().match(/^<([^>]+)>;\s*rel="next"$/);
|
|
220
|
-
if (match)
|
|
221
|
-
return match[1];
|
|
222
|
-
}
|
|
223
|
-
return undefined;
|
|
224
|
-
}
|
|
225
|
-
function interpolateEnv(input) {
|
|
226
|
-
return input.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/g, (_match, name) => process.env[name] ?? '');
|
|
227
|
-
}
|
|
228
|
-
//# sourceMappingURL=GithubLoader.js.map
|
package/dist/GithubLoader.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GithubLoader.js","sourceRoot":"","sources":["../src/GithubLoader.ts"],"names":[],"mappings":"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"}
|