@framers/agentos-ext-github 0.7.0 → 0.8.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 +33 -3
- package/dist/__tests__/links.test.d.ts +8 -0
- package/dist/__tests__/links.test.d.ts.map +1 -0
- package/dist/__tests__/links.test.js +182 -0
- package/dist/__tests__/links.test.js.map +1 -0
- package/dist/__tests__/refs.test.d.ts +7 -0
- package/dist/__tests__/refs.test.d.ts.map +1 -0
- package/dist/__tests__/refs.test.js +420 -0
- package/dist/__tests__/refs.test.js.map +1 -0
- package/dist/documents/GitHubDocumentsConnector.d.ts +74 -17
- package/dist/documents/GitHubDocumentsConnector.d.ts.map +1 -1
- package/dist/documents/GitHubDocumentsConnector.js +118 -20
- package/dist/documents/GitHubDocumentsConnector.js.map +1 -1
- package/dist/documents/index.d.ts +16 -6
- package/dist/documents/index.d.ts.map +1 -1
- package/dist/documents/index.js +16 -6
- package/dist/documents/index.js.map +1 -1
- package/dist/documents/links.d.ts +50 -0
- package/dist/documents/links.d.ts.map +1 -0
- package/dist/documents/links.js +216 -0
- package/dist/documents/links.js.map +1 -0
- package/dist/documents/tree.d.ts +44 -0
- package/dist/documents/tree.d.ts.map +1 -1
- package/dist/documents/tree.js +68 -0
- package/dist/documents/tree.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The GitHub addresses a person pastes, read without a request: a repository, a folder or a file on
|
|
3
|
+
* github.com, and a file on raw.githubusercontent.com. Any other address on GitHub's hosts is refused, so no form of a
|
|
4
|
+
* GitHub address is read as another site's page; an address on any other host is not GitHub's.
|
|
5
|
+
* @module agentos-ext-github/documents/links
|
|
6
|
+
*/
|
|
7
|
+
/** The hosts of GitHub's site, where a repository, a folder and a file are read. */
|
|
8
|
+
const SITE_HOSTS = new Set(['github.com', 'www.github.com']);
|
|
9
|
+
/** The host that serves a repository's files as their bytes alone. */
|
|
10
|
+
const RAW_HOST = 'raw.githubusercontent.com';
|
|
11
|
+
/** GitHub's other hosts, whose addresses name no repository, folder or file read here: gists, the API, archives, uploads. */
|
|
12
|
+
const OTHER_HOSTS = new Set(['gist.github.com', 'api.github.com', 'codeload.github.com', 'uploads.github.com']);
|
|
13
|
+
/** The domain under which GitHub serves its users' content: raw files, gists, release assets, avatars. */
|
|
14
|
+
const CONTENT_DOMAIN = 'githubusercontent.com';
|
|
15
|
+
/** First path segments of github.com that name GitHub's own pages, never an account. */
|
|
16
|
+
const SITE_PAGES = new Set([
|
|
17
|
+
'about', 'account', 'apps', 'codespaces', 'collections', 'contact', 'copilot', 'customer-stories', 'dashboard',
|
|
18
|
+
'enterprise', 'events', 'explore', 'features', 'issues', 'join', 'login', 'logout', 'marketplace', 'new',
|
|
19
|
+
'notifications', 'organizations', 'orgs', 'pricing', 'pulls', 'search', 'security', 'sessions', 'settings', 'site',
|
|
20
|
+
'sponsors', 'stars', 'topics', 'trending', 'users', 'watching',
|
|
21
|
+
]);
|
|
22
|
+
/** An account's login: letters, digits, dashes and underscores, starting with a letter or a digit. */
|
|
23
|
+
const OWNER = /^[A-Za-z0-9][A-Za-z0-9_-]{0,99}$/;
|
|
24
|
+
/** A repository's name: letters, digits, dots, dashes and underscores. */
|
|
25
|
+
const REPO = /^[A-Za-z0-9._-]{1,100}$/;
|
|
26
|
+
/** An address with a scheme and an authority (`https://`, `http://`, `git://`, `ssh://`), whatever the scheme. */
|
|
27
|
+
const SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*:\/\//;
|
|
28
|
+
/** An opaque address, such as `mailto:` or `javascript:`, which names no host. */
|
|
29
|
+
const OPAQUE = /^[A-Za-z][A-Za-z0-9+-]*:/;
|
|
30
|
+
/**
|
|
31
|
+
* Credentials before a host and a path with no scheme, `<user>:<password>@<host>/...`, which reads as an opaque address
|
|
32
|
+
* by the URL standard and which a browser opens as an `https://` address carrying the credentials: an `@` before the
|
|
33
|
+
* first `/`, `?` or `#`, and a `/` after the host. An opaque address of an `@` alone (`mailto:someone@github.com`) has
|
|
34
|
+
* no path and stays opaque.
|
|
35
|
+
*/
|
|
36
|
+
const CREDENTIALS = /^[^/?#\s@]*@[^/?#\s]*\//;
|
|
37
|
+
/** Git's address of a repository over SSH without a scheme: `git@github.com:<owner>/<repo>.git`. */
|
|
38
|
+
const SCP = /^([A-Za-z0-9._-]+)@([^/:\s]+):(?!\/)(.*)$/;
|
|
39
|
+
/** A refusal: the address is GitHub's, and names nothing read here. */
|
|
40
|
+
function refused() {
|
|
41
|
+
return { kind: 'refused' };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The address a text holds, read as its `https://` form: the scheme is dropped whatever it is, and a text without one
|
|
45
|
+
* (`github.com/<owner>/<repo>`, `<user>:<password>@github.com/<owner>/<repo>`) is read as if it had it. Null for an
|
|
46
|
+
* opaque address and for text that is no address.
|
|
47
|
+
*/
|
|
48
|
+
function addressOf(text) {
|
|
49
|
+
const scheme = SCHEME.exec(text);
|
|
50
|
+
if (scheme === null && OPAQUE.test(text) && !CREDENTIALS.test(text))
|
|
51
|
+
return null;
|
|
52
|
+
try {
|
|
53
|
+
return new URL(`https://${scheme === null ? text : text.slice(scheme[0].length)}`);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Text that is no address; the parser's message would quote it.
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A host as an address names it, in lower case, without the dots that end it: the URL standard keeps every one
|
|
62
|
+
* (`github.com..` is a host of its own there), and GitHub's hosts are answered whatever their spelling. Read by a loop,
|
|
63
|
+
* so a host of many dots costs one pass.
|
|
64
|
+
*/
|
|
65
|
+
function hostOf(host) {
|
|
66
|
+
let end = host.length;
|
|
67
|
+
while (end > 0 && host.charCodeAt(end - 1) === 0x2e)
|
|
68
|
+
end -= 1;
|
|
69
|
+
return host.slice(0, end).toLowerCase();
|
|
70
|
+
}
|
|
71
|
+
/** True for a host of GitHub's: its site, its raw files, its other hosts and the hosts of its users' content. */
|
|
72
|
+
function isGitHubHost(host) {
|
|
73
|
+
return SITE_HOSTS.has(host) || host === RAW_HOST || OTHER_HOSTS.has(host) || host === CONTENT_DOMAIN || host.endsWith(`.${CONTENT_DOMAIN}`);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* An address's path as its segments, each decoded, without a trailing slash; null for a path with an empty segment
|
|
77
|
+
* or an escape that does not decode.
|
|
78
|
+
*/
|
|
79
|
+
function segmentsOf(pathname) {
|
|
80
|
+
const raw = pathname.split('/').slice(1);
|
|
81
|
+
if (raw.length > 0 && raw[raw.length - 1] === '')
|
|
82
|
+
raw.pop();
|
|
83
|
+
const segments = [];
|
|
84
|
+
for (const segment of raw) {
|
|
85
|
+
if (segment === '')
|
|
86
|
+
return null;
|
|
87
|
+
try {
|
|
88
|
+
segments.push(decodeURIComponent(segment));
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return segments;
|
|
95
|
+
}
|
|
96
|
+
/** True for a text holding a control character, which no ref or path a link names holds. */
|
|
97
|
+
function hasControl(text) {
|
|
98
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
99
|
+
const code = text.charCodeAt(index);
|
|
100
|
+
if (code < 0x20 || code === 0x7f)
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A folder's or a file's `<ref>/<path>` from the segments after `/tree/`, `/blob/` or `/raw/`, GitHub's own form of a
|
|
107
|
+
* branch by its full name (`refs/heads/<branch>`) read as the branch. Null for none, for another kind of reference
|
|
108
|
+
* (`refs/tags/`, `refs/pull/`), and for a text with an empty, `.` or `..` segment or a control character once decoded.
|
|
109
|
+
*/
|
|
110
|
+
function refAndPathOf(segments) {
|
|
111
|
+
let parts = segments;
|
|
112
|
+
if (parts[0] === 'refs') {
|
|
113
|
+
if (parts[1] !== 'heads' || parts.length < 3)
|
|
114
|
+
return null;
|
|
115
|
+
parts = parts.slice(2);
|
|
116
|
+
}
|
|
117
|
+
const text = parts.join('/');
|
|
118
|
+
if (text === '' || hasControl(text))
|
|
119
|
+
return null;
|
|
120
|
+
return text.split('/').every((part) => part !== '' && part !== '.' && part !== '..') ? text : null;
|
|
121
|
+
}
|
|
122
|
+
/** The owner and the repository of an address's first two segments, `.git` dropped; null when either is not one. */
|
|
123
|
+
function repositoryOf(segments) {
|
|
124
|
+
const owner = segments[0];
|
|
125
|
+
const name = segments[1];
|
|
126
|
+
const repo = name.endsWith('.git') ? name.slice(0, -'.git'.length) : name;
|
|
127
|
+
if (!OWNER.test(owner) || SITE_PAGES.has(owner.toLowerCase()) || !REPO.test(repo) || repo === '.' || repo === '..')
|
|
128
|
+
return null;
|
|
129
|
+
return { owner, repo };
|
|
130
|
+
}
|
|
131
|
+
/** What a path on github.com names. */
|
|
132
|
+
function siteLink(segments) {
|
|
133
|
+
if (segments.length < 2)
|
|
134
|
+
return refused();
|
|
135
|
+
const repository = repositoryOf(segments);
|
|
136
|
+
if (repository === null)
|
|
137
|
+
return refused();
|
|
138
|
+
if (segments.length === 2)
|
|
139
|
+
return { kind: 'github_repository', ...repository };
|
|
140
|
+
const view = segments[2];
|
|
141
|
+
if (view !== 'tree' && view !== 'blob' && view !== 'raw')
|
|
142
|
+
return refused();
|
|
143
|
+
const refAndPath = refAndPathOf(segments.slice(3));
|
|
144
|
+
if (refAndPath === null)
|
|
145
|
+
return refused();
|
|
146
|
+
const named = refAndPath.includes('/');
|
|
147
|
+
// GitHub shows the folder for a blob address that names a ref alone, and answers none for a raw one.
|
|
148
|
+
if (view === 'tree' || (view === 'blob' && !named))
|
|
149
|
+
return { kind: 'github_folder', ...repository, refAndPath };
|
|
150
|
+
if (!named)
|
|
151
|
+
return refused();
|
|
152
|
+
return { kind: 'github_file', ...repository, refAndPath, raw: view === 'raw' };
|
|
153
|
+
}
|
|
154
|
+
/** What a path on raw.githubusercontent.com names: `/<owner>/<repo>/<ref>/<path>`. */
|
|
155
|
+
function rawLink(segments) {
|
|
156
|
+
if (segments.length < 4)
|
|
157
|
+
return refused();
|
|
158
|
+
const repository = repositoryOf(segments);
|
|
159
|
+
const refAndPath = refAndPathOf(segments.slice(2));
|
|
160
|
+
if (repository === null || refAndPath === null || !refAndPath.includes('/'))
|
|
161
|
+
return refused();
|
|
162
|
+
return { kind: 'github_file', ...repository, refAndPath, raw: true };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* What a GitHub address names, read without a request. Null for an address whose host is not GitHub's, and for text
|
|
166
|
+
* that is no address; `refused` for an address on GitHub's hosts that names no repository, folder or file read here: an
|
|
167
|
+
* account, an issue, a pull request, a wiki, a release, a commit, a tag, a gist, the API, an archive, GitHub's own
|
|
168
|
+
* pages, an address that carries credentials (with a scheme or without one: `<user>:<password>@github.com/...`), and
|
|
169
|
+
* a host other than github.com, www.github.com and raw.githubusercontent.com. The scheme (or its absence), a port, the
|
|
170
|
+
* dots that end a host, `.git`, a trailing slash, a query and a fragment are ignored, and so is the `git` user of an
|
|
171
|
+
* SSH address (`git@github.com:<owner>/<repo>.git`).
|
|
172
|
+
*
|
|
173
|
+
* A folder's and a file's ref and path are answered as one text, each segment decoded, since a branch name may hold a
|
|
174
|
+
* slash; GitHub's form of a branch by its full name, `refs/heads/<branch>`, is read as the branch. A `/blob/` address
|
|
175
|
+
* whose text has no slash names a ref alone and is a folder, as GitHub shows it (its `/blob/<ref>` redirects to
|
|
176
|
+
* `/tree/<ref>`); one whose text has a slash is a file, which `resolveRef` may settle as a ref alone (an empty path).
|
|
177
|
+
*
|
|
178
|
+
* @param text The address as pasted; spaces around it are dropped.
|
|
179
|
+
* @throws TypeError when `text` is not a string.
|
|
180
|
+
*/
|
|
181
|
+
export function parseGitHubLink(text) {
|
|
182
|
+
if (typeof text !== 'string')
|
|
183
|
+
throw new TypeError('a link is a string');
|
|
184
|
+
const trimmed = text.trim();
|
|
185
|
+
if (trimmed === '')
|
|
186
|
+
return null;
|
|
187
|
+
const scp = SCP.exec(trimmed);
|
|
188
|
+
if (scp !== null) {
|
|
189
|
+
const host = hostOf(scp[2]);
|
|
190
|
+
if (!isGitHubHost(host))
|
|
191
|
+
return null;
|
|
192
|
+
if (scp[1] !== 'git' || !SITE_HOSTS.has(host))
|
|
193
|
+
return refused();
|
|
194
|
+
const address = addressOf(`${host}/${scp[3]}`);
|
|
195
|
+
const segments = address === null ? null : segmentsOf(address.pathname);
|
|
196
|
+
return segments === null ? refused() : siteLink(segments);
|
|
197
|
+
}
|
|
198
|
+
const address = addressOf(trimmed);
|
|
199
|
+
if (address === null)
|
|
200
|
+
return null;
|
|
201
|
+
const host = hostOf(address.hostname);
|
|
202
|
+
if (!isGitHubHost(host))
|
|
203
|
+
return null;
|
|
204
|
+
// A token in an address is a secret, never something to read a repository with.
|
|
205
|
+
if ((address.username !== '' && address.username !== 'git') || address.password !== '')
|
|
206
|
+
return refused();
|
|
207
|
+
const segments = segmentsOf(address.pathname);
|
|
208
|
+
if (segments === null)
|
|
209
|
+
return refused();
|
|
210
|
+
if (SITE_HOSTS.has(host))
|
|
211
|
+
return siteLink(segments);
|
|
212
|
+
if (host === RAW_HOST)
|
|
213
|
+
return rawLink(segments);
|
|
214
|
+
return refused();
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/documents/links.ts"],"names":[],"mappings":"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"}
|
package/dist/documents/tree.d.ts
CHANGED
|
@@ -48,6 +48,11 @@ export declare const CODE_EXTENSIONS: readonly string[];
|
|
|
48
48
|
export declare const GENERATED_CODE_ENDINGS: readonly string[];
|
|
49
49
|
/** True for a code file a tool wrote, by its name's ending ({@link GENERATED_CODE_ENDINGS}), in any case. */
|
|
50
50
|
export declare function isGeneratedCode(path: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The image files `planTree` answers as images by default: raster and vector images and icons. An image is never kept
|
|
53
|
+
* as documentation unless a filter's `extensions` names its extension.
|
|
54
|
+
*/
|
|
55
|
+
export declare const IMAGE_EXTENSIONS: readonly string[];
|
|
51
56
|
/** The files kept by default. */
|
|
52
57
|
export declare const DEFAULT_MAX_FILES = 2000;
|
|
53
58
|
/** The largest file kept by default: 10 MiB. */
|
|
@@ -112,4 +117,43 @@ export declare function readTree(fetchImpl: typeof fetch, token: string, reposit
|
|
|
112
117
|
* turning code on never drops a document a listing held.
|
|
113
118
|
*/
|
|
114
119
|
export declare function pathFilter(filter?: TreeFilter): (blobs: readonly TreeBlob[]) => TreeBlob[];
|
|
120
|
+
/**
|
|
121
|
+
* Why `planTree` leaves a file out: `folder` under a skipped folder; `kind` for a file that is neither documentation,
|
|
122
|
+
* code nor an image (data, configuration, a binary, a file with no extension); `image` for an image; `code` for code
|
|
123
|
+
* while code is not asked for; `generated` for code a tool wrote ({@link isGeneratedCode}), left out while code is asked
|
|
124
|
+
* for; `size` past the size bound; `count` past `maxFiles`.
|
|
125
|
+
*/
|
|
126
|
+
export type PlanSkipReason = 'folder' | 'kind' | 'image' | 'code' | 'generated' | 'size' | 'count';
|
|
127
|
+
/** One file of a tree with what becomes of it: kept as a `note`, or skipped with the reason. */
|
|
128
|
+
export interface PlannedBlob extends TreeBlob {
|
|
129
|
+
outcome: 'note' | {
|
|
130
|
+
skipped: PlanSkipReason;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/** What `planTree` keeps: a {@link TreeFilter}, a lower bound for a code file and the extensions read as images. */
|
|
134
|
+
export interface PlanTreeOptions extends TreeFilter {
|
|
135
|
+
/**
|
|
136
|
+
* While code is asked for (`includeCode`), a file of a code extension ({@link CODE_EXTENSIONS}) larger than this many
|
|
137
|
+
* bytes is skipped with `size`, whatever `extensions` names, below `maxFileBytes` when it is lower; `maxFileBytes`
|
|
138
|
+
* when absent. A non-negative integer.
|
|
139
|
+
*/
|
|
140
|
+
maxCodeBytes?: number;
|
|
141
|
+
/** The extensions, with their dot, of the files skipped as images ({@link IMAGE_EXTENSIONS} when absent). */
|
|
142
|
+
imageExtensions?: readonly string[];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* `pathFilter`'s sibling: every file of a tree, in path order, with its outcome under the same filter, so a caller can
|
|
146
|
+
* show what is left out and why. The files answered `note` are exactly those `pathFilter` keeps under the filter, a
|
|
147
|
+
* code file past `maxCodeBytes` aside; each file left out carries the first reason it is left out, in this order: where
|
|
148
|
+
* it is (`folder`), what it is (`kind`, `image`, `code`, `generated`), how large it is (`size`) and how many came first
|
|
149
|
+
* (`count`, the documentation keeping its places first and the code taking the room left, as in `pathFilter`). A file
|
|
150
|
+
* whose extension the filter's `extensions` names is documentation, an image's included; while code is asked for, one
|
|
151
|
+
* of a code extension keeps `maxCodeBytes` as its bound, as a code file a tool wrote is left out whatever `extensions`
|
|
152
|
+
* names. Each answer is a new object holding the file's `path`, `sha` and `size` and its `outcome`.
|
|
153
|
+
*
|
|
154
|
+
* @param blobs The files of a tree, as `readTree` answers them.
|
|
155
|
+
* @param options The filter, the code bound and the image extensions.
|
|
156
|
+
* @throws TypeError when `maxCodeBytes` is not a non-negative integer.
|
|
157
|
+
*/
|
|
158
|
+
export declare function planTree(blobs: readonly TreeBlob[], options?: PlanTreeOptions): PlannedBlob[];
|
|
115
159
|
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/documents/tree.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+FAA+F;AAC/F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+GAA+G;AAC/G,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0IAA0I;IAC1I,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAA2E,CAAC;AAE7H,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAuE,CAAC;AAErH;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGnD,CAAC;AAEF,6GAA6G;AAC7G,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,iCAAiC;AACjC,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAEvC,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,WAAa,CAAC;AAEjD,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAK5C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAMnC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IANrC;;;OAGG;gBAEQ,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,kBAA6B;CAKjD;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAsBD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,OAAO,KAAK,EACvB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAwB,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAyCrB;AAOD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,UAAe,GAAG,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAe9F"}
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/documents/tree.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+FAA+F;AAC/F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+GAA+G;AAC/G,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0IAA0I;IAC1I,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAA2E,CAAC;AAE7H,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAuE,CAAC;AAErH;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGnD,CAAC;AAEF,6GAA6G;AAC7G,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAE7C,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAEvC,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,WAAa,CAAC;AAEjD,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAK5C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAMnC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IANrC;;;OAGG;gBAEQ,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,kBAA6B;CAKjD;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAsBD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,OAAO,KAAK,EACvB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAwB,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAyCrB;AAOD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,UAAe,GAAG,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAe9F;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnG,gGAAgG;AAChG,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC;CAC/C;AAED,oHAAoH;AACpH,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6GAA6G;IAC7G,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,WAAW,EAAE,CAkCjG"}
|
package/dist/documents/tree.js
CHANGED
|
@@ -36,6 +36,13 @@ export function isGeneratedCode(path) {
|
|
|
36
36
|
const name = path.slice(path.lastIndexOf('/') + 1).toLowerCase();
|
|
37
37
|
return GENERATED_CODE_ENDINGS.some((ending) => name.endsWith(ending));
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* The image files `planTree` answers as images by default: raster and vector images and icons. An image is never kept
|
|
41
|
+
* as documentation unless a filter's `extensions` names its extension.
|
|
42
|
+
*/
|
|
43
|
+
export const IMAGE_EXTENSIONS = [
|
|
44
|
+
'.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp', '.ico', '.tif', '.tiff', '.avif', '.heic', '.heif',
|
|
45
|
+
];
|
|
39
46
|
/** The files kept by default. */
|
|
40
47
|
export const DEFAULT_MAX_FILES = 2_000;
|
|
41
48
|
/** The largest file kept by default: 10 MiB. */
|
|
@@ -172,4 +179,65 @@ export function pathFilter(filter = {}) {
|
|
|
172
179
|
return [...documentation, ...sources.slice(0, Math.max(room, 0))].sort(byPath);
|
|
173
180
|
};
|
|
174
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* `pathFilter`'s sibling: every file of a tree, in path order, with its outcome under the same filter, so a caller can
|
|
184
|
+
* show what is left out and why. The files answered `note` are exactly those `pathFilter` keeps under the filter, a
|
|
185
|
+
* code file past `maxCodeBytes` aside; each file left out carries the first reason it is left out, in this order: where
|
|
186
|
+
* it is (`folder`), what it is (`kind`, `image`, `code`, `generated`), how large it is (`size`) and how many came first
|
|
187
|
+
* (`count`, the documentation keeping its places first and the code taking the room left, as in `pathFilter`). A file
|
|
188
|
+
* whose extension the filter's `extensions` names is documentation, an image's included; while code is asked for, one
|
|
189
|
+
* of a code extension keeps `maxCodeBytes` as its bound, as a code file a tool wrote is left out whatever `extensions`
|
|
190
|
+
* names. Each answer is a new object holding the file's `path`, `sha` and `size` and its `outcome`.
|
|
191
|
+
*
|
|
192
|
+
* @param blobs The files of a tree, as `readTree` answers them.
|
|
193
|
+
* @param options The filter, the code bound and the image extensions.
|
|
194
|
+
* @throws TypeError when `maxCodeBytes` is not a non-negative integer.
|
|
195
|
+
*/
|
|
196
|
+
export function planTree(blobs, options = {}) {
|
|
197
|
+
if (options.maxCodeBytes !== undefined && !(Number.isSafeInteger(options.maxCodeBytes) && options.maxCodeBytes >= 0)) {
|
|
198
|
+
throw new TypeError('maxCodeBytes is a number of bytes: a non-negative integer');
|
|
199
|
+
}
|
|
200
|
+
const documents = new Set((options.extensions ?? DOCUMENT_EXTENSIONS).map((extension) => extension.toLowerCase()));
|
|
201
|
+
const codeAsked = options.includeCode === true;
|
|
202
|
+
const code = new Set(CODE_EXTENSIONS);
|
|
203
|
+
const images = new Set((options.imageExtensions ?? IMAGE_EXTENSIONS).map((extension) => extension.toLowerCase()));
|
|
204
|
+
const skip = new Set(options.skipFolders ?? SKIPPED_FOLDERS);
|
|
205
|
+
const maxFiles = options.maxFiles ?? DEFAULT_MAX_FILES;
|
|
206
|
+
const maxFileBytes = options.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES;
|
|
207
|
+
const maxCodeBytes = Math.min(options.maxCodeBytes ?? maxFileBytes, maxFileBytes);
|
|
208
|
+
const planned = [...blobs].sort(byPath).map((blob) => ({ path: blob.path, sha: blob.sha, size: blob.size, outcome: 'note' }));
|
|
209
|
+
const documentation = [];
|
|
210
|
+
const sources = [];
|
|
211
|
+
for (const blob of planned) {
|
|
212
|
+
const extension = extensionOf(blob.path);
|
|
213
|
+
if (inSkippedFolder(blob.path, skip))
|
|
214
|
+
blob.outcome = { skipped: 'folder' };
|
|
215
|
+
else if (codeAsked && code.has(extension) && isGeneratedCode(blob.path))
|
|
216
|
+
blob.outcome = { skipped: 'generated' };
|
|
217
|
+
else if (documents.has(extension)) {
|
|
218
|
+
// A code extension the filter names as documentation keeps the code bound while code is asked for.
|
|
219
|
+
if (blob.size > (codeAsked && code.has(extension) ? maxCodeBytes : maxFileBytes))
|
|
220
|
+
blob.outcome = { skipped: 'size' };
|
|
221
|
+
else
|
|
222
|
+
documentation.push(blob);
|
|
223
|
+
}
|
|
224
|
+
else if (code.has(extension)) {
|
|
225
|
+
if (!codeAsked)
|
|
226
|
+
blob.outcome = { skipped: 'code' };
|
|
227
|
+
else if (blob.size > maxCodeBytes)
|
|
228
|
+
blob.outcome = { skipped: 'size' };
|
|
229
|
+
else
|
|
230
|
+
sources.push(blob);
|
|
231
|
+
}
|
|
232
|
+
else
|
|
233
|
+
blob.outcome = { skipped: images.has(extension) ? 'image' : 'kind' };
|
|
234
|
+
}
|
|
235
|
+
// The documentation keeps its places under the count first, and the code takes the room left, as in pathFilter.
|
|
236
|
+
for (const blob of documentation.slice(maxFiles))
|
|
237
|
+
blob.outcome = { skipped: 'count' };
|
|
238
|
+
const room = Math.max(maxFiles - documentation.length, 0);
|
|
239
|
+
for (const blob of sources.slice(room))
|
|
240
|
+
blob.outcome = { skipped: 'count' };
|
|
241
|
+
return planned;
|
|
242
|
+
}
|
|
175
243
|
//# sourceMappingURL=tree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/documents/tree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/documents/tree.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
|
|
3
3
|
"id": "com.framers.integrations.github",
|
|
4
4
|
"name": "GitHub Extension",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.8.0",
|
|
6
6
|
"description": "GitHub API tools: 26 tools for repos, issues, PRs, branches, commits, releases, Actions, files, gists, and codebase indexing. Its ./documents entry adds a GitHub App's installation mode (the app's JWT, installation tokens, the user's web flow, webhook deliveries checked and read as typed events, a daily reconcile, every call under a deadline with rate limit timing) and a connector that reads a repository's documentation as account sources.",
|
|
7
7
|
"categories": ["tool", "developer"],
|
|
8
8
|
"extensions": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos-ext-github",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "GitHub API tools for AgentOS — search repos/code, manage issues/PRs, read files, create gists",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"@types/node": "^20.0.0",
|
|
45
45
|
"typescript": "^5.0.0",
|
|
46
46
|
"vitest": "^3.2.7",
|
|
47
|
-
"@framers/agentos": "^0.
|
|
48
|
-
"@framers/agentos
|
|
47
|
+
"@framers/agentos-ext-account-sources": "^0.9.6",
|
|
48
|
+
"@framers/agentos": "^0.14.25"
|
|
49
49
|
},
|
|
50
50
|
"engines": {
|
|
51
51
|
"node": ">=22"
|