@engineeros/connector 0.2.0 → 0.2.1
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 +1 -1
- package/package.json +1 -1
- package/src/runner.mjs +41 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Create a connection command from **Project steering -> Connect workspace**, then
|
|
|
10
10
|
npx --yes @engineeros/connector@latest pair PAIRING-CODE --url https://your-engineeros.example --workspace . --onboard
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The connector uploads a bounded ZIP snapshot for assessment, then stays online for rescans and Goal Runs. Onboarding never executes repository code. It excludes known secrets, dependency directories, build output, caches, Git metadata, and connector state before upload.
|
|
13
|
+
The connector uploads a bounded ZIP snapshot for assessment, then stays online for rescans and Goal Runs. Onboarding never executes repository code. It excludes known secrets, dependency directories, build output, compiled binaries, files larger than 5 MB, agent-tool caches, Git metadata, and connector state before upload.
|
|
14
14
|
|
|
15
15
|
An empty or document-only folder establishes a greenfield baseline. A code-bearing folder is assessed as brownfield. Use **Rescan** in Steering after the local workspace changes.
|
|
16
16
|
|
package/package.json
CHANGED
package/src/runner.mjs
CHANGED
|
@@ -8,9 +8,15 @@ import { deflateRaw } from "node:zlib";
|
|
|
8
8
|
|
|
9
9
|
const deflate = promisify(deflateRaw);
|
|
10
10
|
const MAX_ARCHIVE_BYTES = 25 * 1024 * 1024;
|
|
11
|
+
const MAX_SHAREABLE_FILE_BYTES = 5 * 1024 * 1024;
|
|
11
12
|
const MAX_WORKSPACE_FILES = 5_000;
|
|
12
13
|
const EXCLUDED_DIRECTORIES = new Set([
|
|
14
|
+
".agents",
|
|
15
|
+
".claude",
|
|
16
|
+
".codex",
|
|
13
17
|
".engineeros",
|
|
18
|
+
".forge",
|
|
19
|
+
".gemini",
|
|
14
20
|
".git",
|
|
15
21
|
".next",
|
|
16
22
|
".pytest_cache",
|
|
@@ -24,6 +30,29 @@ const EXCLUDED_DIRECTORIES = new Set([
|
|
|
24
30
|
"target",
|
|
25
31
|
"vendor",
|
|
26
32
|
]);
|
|
33
|
+
const EXCLUDED_PATH_PREFIXES = [".github/skills/"];
|
|
34
|
+
const EXCLUDED_FILE_EXTENSIONS = new Set([
|
|
35
|
+
".7z",
|
|
36
|
+
".a",
|
|
37
|
+
".bin",
|
|
38
|
+
".class",
|
|
39
|
+
".dll",
|
|
40
|
+
".dylib",
|
|
41
|
+
".exe",
|
|
42
|
+
".gz",
|
|
43
|
+
".jar",
|
|
44
|
+
".lib",
|
|
45
|
+
".o",
|
|
46
|
+
".obj",
|
|
47
|
+
".pyc",
|
|
48
|
+
".pyo",
|
|
49
|
+
".rar",
|
|
50
|
+
".so",
|
|
51
|
+
".tar",
|
|
52
|
+
".tgz",
|
|
53
|
+
".war",
|
|
54
|
+
".zip",
|
|
55
|
+
]);
|
|
27
56
|
const CODE_EXTENSIONS = new Set([
|
|
28
57
|
".c",
|
|
29
58
|
".cpp",
|
|
@@ -123,6 +152,10 @@ export async function workspaceSnapshot(workspace) {
|
|
|
123
152
|
excludedFileCount += 1;
|
|
124
153
|
continue;
|
|
125
154
|
}
|
|
155
|
+
if (details.size > MAX_SHAREABLE_FILE_BYTES) {
|
|
156
|
+
excludedFileCount += 1;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
126
159
|
totalBytes += details.size;
|
|
127
160
|
if (totalBytes > MAX_ARCHIVE_BYTES) {
|
|
128
161
|
throw new Error(
|
|
@@ -363,7 +396,15 @@ function isShareablePath(relative) {
|
|
|
363
396
|
if (parts.some((part) => EXCLUDED_DIRECTORIES.has(part.toLowerCase()))) {
|
|
364
397
|
return false;
|
|
365
398
|
}
|
|
399
|
+
if (
|
|
400
|
+
EXCLUDED_PATH_PREFIXES.some((prefix) =>
|
|
401
|
+
normalized.toLowerCase().startsWith(prefix),
|
|
402
|
+
)
|
|
403
|
+
) {
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
366
406
|
const name = parts.at(-1)?.toLowerCase() ?? "";
|
|
407
|
+
if (EXCLUDED_FILE_EXTENSIONS.has(path.posix.extname(name))) return false;
|
|
367
408
|
if (name === ".env.example" || name === ".env.sample") return true;
|
|
368
409
|
if (
|
|
369
410
|
name === ".env" ||
|