@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 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":"AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C;;;;;OAKG;IACH,oIAAoI;IACpI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IACxC,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACxD,6DAA6D;IAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAA;AAmCF,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE;IAC5D,MAAM,OAAO,GAAY,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAA;IAEzD,OAAO,wBAAwB,CAAC;QAC9B,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC7C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,cAAc,CAAC,MAAM,CAAC,CAAA;YACtB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YACpC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YACxE,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YACzF,oDAAoD;YACpD,oDAAoD;YACpD,kCAAkC;YAClC,IAAI,UAAU,GAAG,EAAE,CAAA;YACnB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,UAAU,GAAG,UAAU;oBAC7B,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;YAC/B,CAAC;YACD,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;gBACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAA;gBAClD,MAAM,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,UAAU;gBACZ,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAC/F,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE,MAAM,CAAC,MAAM;oBACzB,UAAU,EAAE,SAAS,CAAC,MAAM;iBAC7B;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe;aACjD,CAAA;QACH,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC7C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,cAAc,CAAC,MAAM,CAAC,CAAA;YACtB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;YAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;gBAC9E,CAAC,CAAC,MAAM,CAAC,KAAK;gBACd,CAAC,CAAC,SAAS,CAAA;YACb,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;YACzE,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YACzF,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,mEAAmE;YACnE,sBAAsB;YACtB,iHAAiH;YACjH,sEAAsE;YACtE,qDAAqD;YACrD,IAAI,UAAU,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAA;YACpC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,UAAU,GAAG,UAAU;oBAC7B,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;YAC/B,CAAC;YACD,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;gBACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAA;gBAClD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;gBACnD,IAAI,MAAM,KAAK,OAAO;oBACpB,KAAK,EAAE,CAAA;qBACJ,IAAI,MAAM,KAAK,SAAS;oBAC3B,OAAO,EAAE,CAAA;YACb,CAAC;YACD,iEAAiE;YACjE,4FAA4F;YAC5F,iCAAiC;YACjC,+FAA+F;YAC/F,yFAAyF;YACzF,yEAAyE;YACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1D,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC7D,SAAQ;gBACV,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAA;gBACvD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAA;oBACrB,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC;YACD,IAAI,UAAU;gBACZ,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAC/F,OAAO;gBACL,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC;gBACtC,KAAK;gBACL,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,UAAU,IAAI,IAAI;oBACzB,UAAU,EAAE,SAAS,CAAC,MAAM;iBAC7B;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe;aACjD,CAAA;QACH,CAAC;QACD,OAAO,EAAE;YACP,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACxF,sDAAsD;YACtD,wEAAwE;YACxE,2BAA2B;YAC3B,6FAA6F;YAC7F,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACpC,QAAQ,CAAC,KAAK,KAAK,QAAQ;mBACxB,QAAQ,CAAC,KAAK,KAAK,eAAe;mBAClC,QAAQ,CAAC,KAAK,KAAK,MAAM;SAC/B;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAA0B;IAC9C,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,6BAA6B;QACvC,sBAAsB,EAAE,YAAY;QACpC,YAAY,EAAE,4BAA4B;KAC3C,CAAA;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAA;IAC3C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,MAA0B,EAC1B,OAA+B,EAC/B,KAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,IAAI,KAAK;QACP,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC5B,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,UAAU,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IACzI,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,YAAY,QAAQ,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAChG,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAe,CAAA;QAClD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,gDAAgD;YAChD,kFAAkF;YAClF,6CAA6C;YAC7C,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;gBAClC,SAAQ;YACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;QACD,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACzD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAkBD;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,+BAA+B,CAC5C,OAAgB,EAChB,MAA0B,EAC1B,OAA+B,EAC/B,MAA2B;IAE3B,MAAM,GAAG,GAA0B,EAAE,CAAA;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,wEAAwE;QACxE,kBAAkB;QAClB,8EAA8E;QAC9E,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;YAClC,SAAQ;QACV,4BAA4B;QAC5B,0DAA0D;QAC1D,8CAA8C;QAC9C,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;YAC1B,SAAQ;QACV,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACpF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,SAAQ;QACV,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAuBD,kEAAkE;AAClE,iEAAiE;AACjE,wEAAwE;AACxE,yDAAyD;AACzD,iDAAiD;AACjD,wFAAwF;AACxF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;EAmB9B,CAAA;AAEF,KAAK,UAAU,oBAAoB,CACjC,OAAgB,EAChB,MAA0B,EAC1B,OAA+B,EAC/B,WAAmB;IAEnB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,MAAM,CAAC,UAAU,UAAU,CAAA;IAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC3D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,uBAAuB;YAC9B,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE;SAC3E,CAAC;KACH,CAAC,CAAA;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK;YACb,wDAAwD;YACxD,8GAA8G;YAC9G,yCAAyC;YACzC,kEAAkE;YAClE,yBAAyB;YACzB,uJAAuJ,WAAW,GAAG,CACtK,CAAA;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,MAAM,eAAe,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3H,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA2B,CAAA;IAC9D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5H,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAA;IACzE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,GAAG,GAAkB,EAAE,CAAA;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,aAAa;YAC1C,SAAQ;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,MAAsD,CAAA;QACtE,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;YACnC,SAAQ;QACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QACnB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,IAAI,mCAAmC,GAAG,KAAK,CAAA;AAC/C,SAAS,cAAc,CAAC,MAA0B;IAChD,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,mCAAmC,EAAE,CAAC;QACvE,mCAAmC,GAAG,IAAI,CAAA;QAE1C,OAAO,CAAC,IAAI,CACV,qFAAqF;cACnF,yFAAyF,CAC5F,CAAA;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAgB,EAChB,MAA0B,EAC1B,OAA+B,EAC/B,KAAe;IAEf,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QACjD,OAAO,EAAE,CAAA;IACX,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC7B,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,UAAU,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAClK,MAAM,GAAG,GAAiB,EAAE,CAAA;IAC5B,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,YAAY,QAAQ,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAChG,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACjB,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACzD,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAA0B,EAC1B,KAAe,EACf,QAA+B,EAC/B,SAAiC;IAEjC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5C,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7E,IAAI,EAAE,CAAA;IACT,MAAM,WAAW,GAAG;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;QACjC,MAAM;QACN,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,GAAG,EAAE,KAAK,CAAC,QAAQ;QACnB,8CAA8C;QAC9C,wCAAwC;QACxC,4FAA4F;QAC5F,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KACxF,CAAA;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACnE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACzC,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,IAAI,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,CAAA;YAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,MAAM,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAA;AAC1C,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,QAA4B,CAAA;IAChC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,CAAC;QACL,QAAQ,GAAG,SAAS,CAAA;IACtB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO;QACtB,OAAO,WAAW,CAAA;IACpB,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACvC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,WAAmB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAA;QACvE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAA;IACtC,CAAC;IACD,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,MAAkB;IAChE,MAAM,SAAS,CACb,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAClC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtC,OAAO,CACR,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAqB;IAC1C,IAAI,CAAC,MAAM;QACT,OAAO,SAAS,CAAA;IAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC5D,IAAI,KAAK;YACP,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AACtG,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './GithubLoader.js';
1
+ export * from './GithubSourceLoaderPlugin.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
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 './GithubLoader.js';
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,mBAAmB,CAAA"}
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.1.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": "^3.24.0"
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.0"
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"}
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"GithubLoader.js","sourceRoot":"","sources":["../src/GithubLoader.ts"],"names":[],"mappings":"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"}