optimus-tool-call 0.1.25 → 0.2.2
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/dist/index.d.ts +2 -2
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/streaming.d.ts.map +1 -1
- package/dist/lib/streaming.js +6 -7
- package/dist/lib/streaming.js.map +1 -1
- package/dist/lib/telemetry/build-event.d.ts +4 -0
- package/dist/lib/telemetry/build-event.d.ts.map +1 -1
- package/dist/lib/telemetry/build-event.js +12 -123
- package/dist/lib/telemetry/build-event.js.map +1 -1
- package/dist/lib/telemetry/index.d.ts +1 -2
- package/dist/lib/telemetry/index.d.ts.map +1 -1
- package/dist/lib/telemetry/index.js +1 -2
- package/dist/lib/telemetry/index.js.map +1 -1
- package/dist/lib/telemetry/serialize.d.ts.map +1 -1
- package/dist/lib/telemetry/serialize.js +2 -4
- package/dist/lib/telemetry/serialize.js.map +1 -1
- package/dist/lib/telemetry/types.d.ts +2 -6
- package/dist/lib/telemetry/types.d.ts.map +1 -1
- package/dist/lib/telemetry/wire-metadata.d.ts +10 -0
- package/dist/lib/telemetry/wire-metadata.d.ts.map +1 -0
- package/dist/lib/telemetry/wire-metadata.js +28 -0
- package/dist/lib/telemetry/wire-metadata.js.map +1 -0
- package/dist/test/streaming.test.js +10 -49
- package/dist/test/streaming.test.js.map +1 -1
- package/dist/test/telemetry.test.js +31 -45
- package/dist/test/telemetry.test.js.map +1 -1
- package/package.json +4 -5
- package/dist/lib/classify/builtins.d.ts +0 -7
- package/dist/lib/classify/builtins.d.ts.map +0 -1
- package/dist/lib/classify/builtins.js +0 -107
- package/dist/lib/classify/builtins.js.map +0 -1
- package/dist/lib/classify/constants.d.ts +0 -46
- package/dist/lib/classify/constants.d.ts.map +0 -1
- package/dist/lib/classify/constants.js +0 -56
- package/dist/lib/classify/constants.js.map +0 -1
- package/dist/lib/classify/dispatch.d.ts +0 -8
- package/dist/lib/classify/dispatch.d.ts.map +0 -1
- package/dist/lib/classify/dispatch.js +0 -149
- package/dist/lib/classify/dispatch.js.map +0 -1
- package/dist/lib/classify/flags.d.ts +0 -6
- package/dist/lib/classify/flags.d.ts.map +0 -1
- package/dist/lib/classify/flags.js +0 -19
- package/dist/lib/classify/flags.js.map +0 -1
- package/dist/lib/classify/handlers/database-cli.d.ts +0 -3
- package/dist/lib/classify/handlers/database-cli.d.ts.map +0 -1
- package/dist/lib/classify/handlers/database-cli.js +0 -68
- package/dist/lib/classify/handlers/database-cli.js.map +0 -1
- package/dist/lib/classify/handlers/docker.d.ts +0 -6
- package/dist/lib/classify/handlers/docker.d.ts.map +0 -1
- package/dist/lib/classify/handlers/docker.js +0 -65
- package/dist/lib/classify/handlers/docker.js.map +0 -1
- package/dist/lib/classify/handlers/fs-delete.d.ts +0 -6
- package/dist/lib/classify/handlers/fs-delete.d.ts.map +0 -1
- package/dist/lib/classify/handlers/fs-delete.js +0 -14
- package/dist/lib/classify/handlers/fs-delete.js.map +0 -1
- package/dist/lib/classify/handlers/git.d.ts +0 -6
- package/dist/lib/classify/handlers/git.d.ts.map +0 -1
- package/dist/lib/classify/handlers/git.js +0 -95
- package/dist/lib/classify/handlers/git.js.map +0 -1
- package/dist/lib/classify/handlers/network-http.d.ts +0 -10
- package/dist/lib/classify/handlers/network-http.d.ts.map +0 -1
- package/dist/lib/classify/handlers/network-http.js +0 -56
- package/dist/lib/classify/handlers/network-http.js.map +0 -1
- package/dist/lib/classify/handlers/packages.d.ts +0 -6
- package/dist/lib/classify/handlers/packages.d.ts.map +0 -1
- package/dist/lib/classify/handlers/packages.js +0 -22
- package/dist/lib/classify/handlers/packages.js.map +0 -1
- package/dist/lib/classify/handlers/sed-awk.d.ts +0 -10
- package/dist/lib/classify/handlers/sed-awk.d.ts.map +0 -1
- package/dist/lib/classify/handlers/sed-awk.js +0 -40
- package/dist/lib/classify/handlers/sed-awk.js.map +0 -1
- package/dist/lib/classify/handlers/shell-and-runtime.d.ts +0 -14
- package/dist/lib/classify/handlers/shell-and-runtime.d.ts.map +0 -1
- package/dist/lib/classify/handlers/shell-and-runtime.js +0 -92
- package/dist/lib/classify/handlers/shell-and-runtime.js.map +0 -1
- package/dist/lib/classify/index.d.ts +0 -6
- package/dist/lib/classify/index.d.ts.map +0 -1
- package/dist/lib/classify/index.js +0 -6
- package/dist/lib/classify/index.js.map +0 -1
- package/dist/lib/classify/interpreter.d.ts +0 -5
- package/dist/lib/classify/interpreter.d.ts.map +0 -1
- package/dist/lib/classify/interpreter.js +0 -16
- package/dist/lib/classify/interpreter.js.map +0 -1
- package/dist/lib/classify/pipeline.d.ts +0 -10
- package/dist/lib/classify/pipeline.d.ts.map +0 -1
- package/dist/lib/classify/pipeline.js +0 -105
- package/dist/lib/classify/pipeline.js.map +0 -1
- package/dist/lib/classify.d.ts +0 -2
- package/dist/lib/classify.d.ts.map +0 -1
- package/dist/lib/classify.js +0 -2
- package/dist/lib/classify.js.map +0 -1
- package/dist/lib/telemetry/command-tokenize.d.ts +0 -6
- package/dist/lib/telemetry/command-tokenize.d.ts.map +0 -1
- package/dist/lib/telemetry/command-tokenize.js +0 -38
- package/dist/lib/telemetry/command-tokenize.js.map +0 -1
- package/dist/lib/telemetry/sensitivity.d.ts +0 -7
- package/dist/lib/telemetry/sensitivity.d.ts.map +0 -1
- package/dist/lib/telemetry/sensitivity.js +0 -81
- package/dist/lib/telemetry/sensitivity.js.map +0 -1
- package/dist/test/classify.test.d.ts +0 -2
- package/dist/test/classify.test.d.ts.map +0 -1
- package/dist/test/classify.test.js +0 -286
- package/dist/test/classify.test.js.map +0 -1
- package/dist/test/pipeline.test.d.ts +0 -2
- package/dist/test/pipeline.test.d.ts.map +0 -1
- package/dist/test/pipeline.test.js +0 -139
- package/dist/test/pipeline.test.js.map +0 -1
- package/dist/test/sensitivity.test.d.ts +0 -2
- package/dist/test/sensitivity.test.d.ts.map +0 -1
- package/dist/test/sensitivity.test.js +0 -192
- package/dist/test/sensitivity.test.js.map +0 -1
- package/dist/test/tokenize.test.d.ts +0 -2
- package/dist/test/tokenize.test.d.ts.map +0 -1
- package/dist/test/tokenize.test.js +0 -157
- package/dist/test/tokenize.test.js.map +0 -1
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { FILESYSTEM_READ, FILESYSTEM_WRITE, LANG_EXEC, } from "../constants.js";
|
|
2
|
-
/**
|
|
3
|
-
* sed -i/-I/--in-place = filesystem_write; otherwise read (stdin transform).
|
|
4
|
-
*/
|
|
5
|
-
export function classifySed(components) {
|
|
6
|
-
for (let i = 1; i < components.length; i++) {
|
|
7
|
-
const comp = components[i];
|
|
8
|
-
if (comp === "-i" || comp === "-I" ||
|
|
9
|
-
comp.startsWith("-i") || comp.startsWith("-I") ||
|
|
10
|
-
comp.startsWith("--in-place")) {
|
|
11
|
-
return FILESYSTEM_WRITE;
|
|
12
|
-
}
|
|
13
|
-
if (comp.startsWith("-") && !comp.startsWith("--")) {
|
|
14
|
-
if (comp.includes("i") || comp.includes("I")) {
|
|
15
|
-
return FILESYSTEM_WRITE;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return FILESYSTEM_READ;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* awk with system()/getline/pipes/redirection = lang_exec; else filesystem_read.
|
|
23
|
-
*/
|
|
24
|
-
export function classifyAwk(components) {
|
|
25
|
-
for (let i = 1; i < components.length; i++) {
|
|
26
|
-
const comp = components[i];
|
|
27
|
-
if (comp.startsWith("-")) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (comp.includes("system(") ||
|
|
31
|
-
comp.includes("getline") ||
|
|
32
|
-
comp.includes("|") ||
|
|
33
|
-
comp.includes(">") ||
|
|
34
|
-
comp.includes("print >")) {
|
|
35
|
-
return LANG_EXEC;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return FILESYSTEM_READ;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=sed-awk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sed-awk.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/sed-awk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,SAAS,GAEV,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAoB;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,gBAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAoB;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type ActionType } from "../constants.js";
|
|
2
|
-
/**
|
|
3
|
-
* Classify shell (bash/sh) command based on flags.
|
|
4
|
-
*/
|
|
5
|
-
export declare function classifyShell(components: string[]): ActionType;
|
|
6
|
-
/**
|
|
7
|
-
* Classify script execution (python, node, ruby, etc.).
|
|
8
|
-
*/
|
|
9
|
-
export declare function classifyScriptRunner(components: string[]): ActionType;
|
|
10
|
-
/**
|
|
11
|
-
* Classify make based on read-only flags.
|
|
12
|
-
*/
|
|
13
|
-
export declare function classifyMake(components: string[]): ActionType;
|
|
14
|
-
//# sourceMappingURL=shell-and-runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shell-and-runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/shell-and-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAezB;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAc9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAkCrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAyB7D"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { basename } from "path";
|
|
2
|
-
import { LANG_EXEC, PACKAGE_RUN, FILESYSTEM_READ, } from "../constants.js";
|
|
3
|
-
import { hasFlag } from "../flags.js";
|
|
4
|
-
const TEST_RUN_MODULE_ROOTS = new Set(["pytest", "unittest", "nose", "nose2", "tox"]);
|
|
5
|
-
const SCRIPT_RUNNERS = new Set(["python", "python3", "node", "ruby", "perl", "php"]);
|
|
6
|
-
function moduleAfterM(components) {
|
|
7
|
-
for (let i = 0; i < components.length - 1; i++) {
|
|
8
|
-
if (components[i] === "-m" || components[i] === "--module") {
|
|
9
|
-
return components[i + 1] ?? null;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Classify shell (bash/sh) command based on flags.
|
|
16
|
-
*/
|
|
17
|
-
export function classifyShell(components) {
|
|
18
|
-
if (components.includes("-c") || hasFlag(components, "c")) {
|
|
19
|
-
return LANG_EXEC;
|
|
20
|
-
}
|
|
21
|
-
if (components.includes("-i")) {
|
|
22
|
-
return LANG_EXEC;
|
|
23
|
-
}
|
|
24
|
-
if (components.length > 1 && !components[1].startsWith("-")) {
|
|
25
|
-
return LANG_EXEC;
|
|
26
|
-
}
|
|
27
|
-
return LANG_EXEC;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Classify script execution (python, node, ruby, etc.).
|
|
31
|
-
*/
|
|
32
|
-
export function classifyScriptRunner(components) {
|
|
33
|
-
// Interpreter may appear at a non-zero index (e.g. in a pipeline: cmd | python script.py).
|
|
34
|
-
// Use findLastIndex to match the rightmost occurrence, consistent with findMainCommand's
|
|
35
|
-
// preference for the rightmost pipe segment.
|
|
36
|
-
const isScriptRunner = (tok) => {
|
|
37
|
-
const b = basename(tok).toLowerCase();
|
|
38
|
-
return SCRIPT_RUNNERS.has(b) || SCRIPT_RUNNERS.has(b.replace(/\d+(\.\d+)*$/, ""));
|
|
39
|
-
};
|
|
40
|
-
let cmdIdx = -1;
|
|
41
|
-
for (let i = components.length - 1; i >= 0; i--) {
|
|
42
|
-
if (isScriptRunner(components[i])) {
|
|
43
|
-
cmdIdx = i;
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
const cmdComponents = cmdIdx >= 0 ? components.slice(cmdIdx) : components;
|
|
48
|
-
if (cmdComponents.includes("-c") || hasFlag(cmdComponents, "c")) {
|
|
49
|
-
return LANG_EXEC;
|
|
50
|
-
}
|
|
51
|
-
if (cmdComponents.includes("-m") || cmdComponents.includes("--module") || hasFlag(cmdComponents, "m")) {
|
|
52
|
-
const mod = moduleAfterM(cmdComponents);
|
|
53
|
-
if (mod) {
|
|
54
|
-
const root = mod.split(".")[0] ?? "";
|
|
55
|
-
if (TEST_RUN_MODULE_ROOTS.has(root)) {
|
|
56
|
-
return PACKAGE_RUN;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return LANG_EXEC;
|
|
60
|
-
}
|
|
61
|
-
if (cmdComponents.length > 1 && !cmdComponents[1].startsWith("-")) {
|
|
62
|
-
return LANG_EXEC;
|
|
63
|
-
}
|
|
64
|
-
return LANG_EXEC;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Classify make based on read-only flags.
|
|
68
|
-
*/
|
|
69
|
-
export function classifyMake(components) {
|
|
70
|
-
const readOnlyFlags = {
|
|
71
|
-
"--dry-run": true,
|
|
72
|
-
"--help": true,
|
|
73
|
-
"--version": true,
|
|
74
|
-
"--just-print": true,
|
|
75
|
-
"--print-data-base": true,
|
|
76
|
-
"--question": true,
|
|
77
|
-
};
|
|
78
|
-
for (let i = 1; i < components.length; i++) {
|
|
79
|
-
const comp = components[i];
|
|
80
|
-
if (readOnlyFlags[comp]) {
|
|
81
|
-
return FILESYSTEM_READ;
|
|
82
|
-
}
|
|
83
|
-
if (comp.startsWith("-") && !comp.startsWith("--")) {
|
|
84
|
-
const flags = comp.slice(1);
|
|
85
|
-
if (flags.includes("n") || flags.includes("p") || flags.includes("q")) {
|
|
86
|
-
return FILESYSTEM_READ;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return LANG_EXEC;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=shell-and-runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shell-and-runtime.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/shell-and-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/classify/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/classify/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../../src/lib/classify/interpreter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWzD"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strip version suffix: python3.12 → python3, node22 → node.
|
|
3
|
-
*/
|
|
4
|
-
export function normalizeInterpreter(name) {
|
|
5
|
-
const canonicalNames = ["python3", "python", "pip3", "pip", "node", "ruby", "perl"];
|
|
6
|
-
for (const canonical of canonicalNames) {
|
|
7
|
-
if (name.startsWith(canonical)) {
|
|
8
|
-
const suffix = name.slice(canonical.length);
|
|
9
|
-
if (suffix && /^[0-9]/.test(suffix)) {
|
|
10
|
-
return canonical;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return name;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=interpreter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../../src/lib/classify/interpreter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpF,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Find the main executable command in a potentially complex command chain.
|
|
3
|
-
* Handles cases like: ["cd", "dir", "&&", "python", "-c", "..."]
|
|
4
|
-
* For pipes (|), uses the **first command in the rightmost segment** (so
|
|
5
|
-
* `ls | grep -i venv` → grep, not `venv`). Optional sink commands
|
|
6
|
-
* (head, tail, …) resolve to the previous segment when present.
|
|
7
|
-
* For sequences (&&, ||, ;), only examines the first statement
|
|
8
|
-
*/
|
|
9
|
-
export declare function findMainCommand(components: string[]): string | null;
|
|
10
|
-
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/lib/classify/pipeline.ts"],"names":[],"mappings":"AAkEA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAqCnE"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { basename } from "path";
|
|
2
|
-
const operators = ["&&", "||", "|", ";", "&", ">", "<", ">>", "2>/dev/null", "2>&1"];
|
|
3
|
-
const logicalOps = ["&&", "||", ";"];
|
|
4
|
-
const operatorSet = new Set(operators);
|
|
5
|
-
/**
|
|
6
|
-
* Commands that often terminate a pipeline only to trim/view output — for risk
|
|
7
|
-
* classification, attribute the line to the producer (e.g. pytest | head → pytest).
|
|
8
|
-
*/
|
|
9
|
-
const PIPELINE_SINK_COMMANDS = new Set([
|
|
10
|
-
"head",
|
|
11
|
-
"tail",
|
|
12
|
-
"less",
|
|
13
|
-
"more",
|
|
14
|
-
"wc",
|
|
15
|
-
"cat",
|
|
16
|
-
// Text ordering / dedup — do not steal attribution from `find | sort`, `grep | uniq`, etc.
|
|
17
|
-
"sort",
|
|
18
|
-
"uniq",
|
|
19
|
-
"nl",
|
|
20
|
-
"tac",
|
|
21
|
-
"rev",
|
|
22
|
-
"column",
|
|
23
|
-
"fmt",
|
|
24
|
-
"fold",
|
|
25
|
-
"paste",
|
|
26
|
-
"pr",
|
|
27
|
-
"split",
|
|
28
|
-
"expand",
|
|
29
|
-
"unexpand",
|
|
30
|
-
]);
|
|
31
|
-
function splitPipeSegments(statement) {
|
|
32
|
-
const segments = [];
|
|
33
|
-
let cur = [];
|
|
34
|
-
for (const tok of statement) {
|
|
35
|
-
if (tok === "|") {
|
|
36
|
-
segments.push(cur);
|
|
37
|
-
cur = [];
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
cur.push(tok);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
segments.push(cur);
|
|
44
|
-
return segments;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* First executable token in a segment (skip flags and operators).
|
|
48
|
-
*/
|
|
49
|
-
function firstCommandInSegment(segment) {
|
|
50
|
-
for (const comp of segment) {
|
|
51
|
-
const cmd = comp.trim();
|
|
52
|
-
if (!cmd || operatorSet.has(cmd) || cmd.startsWith("-")) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
// Tokenizer can leave a lone `\` before `|` when scripts use `\` line continuations.
|
|
56
|
-
if (cmd === "\\") {
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
return basename(cmd);
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Find the main executable command in a potentially complex command chain.
|
|
65
|
-
* Handles cases like: ["cd", "dir", "&&", "python", "-c", "..."]
|
|
66
|
-
* For pipes (|), uses the **first command in the rightmost segment** (so
|
|
67
|
-
* `ls | grep -i venv` → grep, not `venv`). Optional sink commands
|
|
68
|
-
* (head, tail, …) resolve to the previous segment when present.
|
|
69
|
-
* For sequences (&&, ||, ;), only examines the first statement
|
|
70
|
-
*/
|
|
71
|
-
export function findMainCommand(components) {
|
|
72
|
-
let endIndex = components.length;
|
|
73
|
-
for (let i = 0; i < components.length; i++) {
|
|
74
|
-
if (logicalOps.includes(components[i])) {
|
|
75
|
-
endIndex = i;
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const statement = components.slice(0, endIndex);
|
|
80
|
-
if (statement.includes("|")) {
|
|
81
|
-
const segments = splitPipeSegments(statement);
|
|
82
|
-
let idx = segments.length - 1;
|
|
83
|
-
while (idx >= 0) {
|
|
84
|
-
const cmd = firstCommandInSegment(segments[idx]);
|
|
85
|
-
if (!cmd) {
|
|
86
|
-
idx -= 1;
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (PIPELINE_SINK_COMMANDS.has(cmd) && idx > 0) {
|
|
90
|
-
idx -= 1;
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
return cmd;
|
|
94
|
-
}
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
for (const comp of statement) {
|
|
98
|
-
const cmd = comp.trim();
|
|
99
|
-
if (cmd && !operatorSet.has(cmd) && !cmd.startsWith("-")) {
|
|
100
|
-
return basename(cmd);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/lib/classify/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/classify.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/lib/classify.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
package/dist/lib/classify.js
DELETED
package/dist/lib/classify.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/lib/classify.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-tokenize.d.ts","sourceRoot":"","sources":["../../../src/lib/telemetry/command-tokenize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCzD"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simple command tokenizer. Handles basic quoting.
|
|
3
|
-
* Not a full shell parser, but sufficient for classification.
|
|
4
|
-
*/
|
|
5
|
-
export function tokenizeCommand(command) {
|
|
6
|
-
const tokens = [];
|
|
7
|
-
let current = "";
|
|
8
|
-
let inDoubleQuote = false;
|
|
9
|
-
let inSingleQuote = false;
|
|
10
|
-
let i = 0;
|
|
11
|
-
while (i < command.length) {
|
|
12
|
-
const ch = command[i];
|
|
13
|
-
if (ch === '"' && !inSingleQuote) {
|
|
14
|
-
inDoubleQuote = !inDoubleQuote;
|
|
15
|
-
i++;
|
|
16
|
-
}
|
|
17
|
-
else if (ch === "'" && !inDoubleQuote) {
|
|
18
|
-
inSingleQuote = !inSingleQuote;
|
|
19
|
-
i++;
|
|
20
|
-
}
|
|
21
|
-
else if ((ch === " " || ch === "\t") && !inDoubleQuote && !inSingleQuote) {
|
|
22
|
-
if (current) {
|
|
23
|
-
tokens.push(current);
|
|
24
|
-
current = "";
|
|
25
|
-
}
|
|
26
|
-
i++;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
current += ch;
|
|
30
|
-
i++;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (current) {
|
|
34
|
-
tokens.push(current);
|
|
35
|
-
}
|
|
36
|
-
return tokens;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=command-tokenize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-tokenize.js","sourceRoot":"","sources":["../../../src/lib/telemetry/command-tokenize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3E,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAC;YACd,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** True if path looks like credentials, secrets, or sensitive config locations. */
|
|
2
|
-
export declare function isSensitivePath(path: string): boolean;
|
|
3
|
-
/** True if a grep-style pattern suggests hunting for credentials. */
|
|
4
|
-
export declare function isCredentialSearchPattern(pattern: string): boolean;
|
|
5
|
-
/** True if URL points to sensitive internal resources or uses dangerous protocols. */
|
|
6
|
-
export declare function isSensitiveUrl(url: string): boolean;
|
|
7
|
-
//# sourceMappingURL=sensitivity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sensitivity.d.ts","sourceRoot":"","sources":["../../../src/lib/telemetry/sensitivity.ts"],"names":[],"mappings":"AAoCA,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,qEAAqE;AACrE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAwCnD"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
const SENSITIVE_PATH_SUBSTRINGS = [
|
|
2
|
-
"/.ssh/",
|
|
3
|
-
"/.aws/",
|
|
4
|
-
"/.gnupg/",
|
|
5
|
-
"/.azure/",
|
|
6
|
-
"/.docker/",
|
|
7
|
-
"/.kube/",
|
|
8
|
-
"/.config/gcloud",
|
|
9
|
-
"/.config/gh",
|
|
10
|
-
"/.git-credentials",
|
|
11
|
-
"/.netrc",
|
|
12
|
-
"/.env",
|
|
13
|
-
"/.env.local",
|
|
14
|
-
"/.npmrc",
|
|
15
|
-
"/.pypirc",
|
|
16
|
-
"/credentials",
|
|
17
|
-
"/secret",
|
|
18
|
-
"/token",
|
|
19
|
-
"id_rsa",
|
|
20
|
-
"id_ed25519",
|
|
21
|
-
"private_key",
|
|
22
|
-
];
|
|
23
|
-
const CREDENTIAL_SEARCH_KEYWORDS = [
|
|
24
|
-
"password",
|
|
25
|
-
"secret",
|
|
26
|
-
"token",
|
|
27
|
-
"api_key",
|
|
28
|
-
"apikey",
|
|
29
|
-
"private_key",
|
|
30
|
-
"begin.*private",
|
|
31
|
-
"aws_secret",
|
|
32
|
-
"bearer",
|
|
33
|
-
"authorization",
|
|
34
|
-
];
|
|
35
|
-
/** True if path looks like credentials, secrets, or sensitive config locations. */
|
|
36
|
-
export function isSensitivePath(path) {
|
|
37
|
-
if (!path)
|
|
38
|
-
return false;
|
|
39
|
-
const normalized = path.toLowerCase();
|
|
40
|
-
return SENSITIVE_PATH_SUBSTRINGS.some((p) => normalized.includes(p));
|
|
41
|
-
}
|
|
42
|
-
/** True if a grep-style pattern suggests hunting for credentials. */
|
|
43
|
-
export function isCredentialSearchPattern(pattern) {
|
|
44
|
-
if (!pattern)
|
|
45
|
-
return false;
|
|
46
|
-
const patternLower = pattern.toLowerCase();
|
|
47
|
-
return CREDENTIAL_SEARCH_KEYWORDS.some((keyword) => patternLower.includes(keyword));
|
|
48
|
-
}
|
|
49
|
-
/** True if URL points to sensitive internal resources or uses dangerous protocols. */
|
|
50
|
-
export function isSensitiveUrl(url) {
|
|
51
|
-
if (!url)
|
|
52
|
-
return false;
|
|
53
|
-
const urlLower = url.toLowerCase();
|
|
54
|
-
// file:// protocol — can read arbitrary local files
|
|
55
|
-
if (urlLower.startsWith("file://")) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
// Localhost and local IPs
|
|
59
|
-
if (urlLower.includes("localhost") ||
|
|
60
|
-
urlLower.includes("127.0.0.1") ||
|
|
61
|
-
urlLower.includes("0.0.0.0")) {
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
// AWS metadata service (169.254.169.254) — can retrieve IAM credentials
|
|
65
|
-
if (urlLower.includes("169.254.169.254")) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
// Private IP ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
|
|
69
|
-
const privateIpPattern = /\b(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3})\b/i;
|
|
70
|
-
if (privateIpPattern.test(url)) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
// Known internal service names
|
|
74
|
-
if (urlLower.includes("internal.") ||
|
|
75
|
-
urlLower.includes(".local") ||
|
|
76
|
-
urlLower.includes(".internal")) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=sensitivity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sensitivity.js","sourceRoot":"","sources":["../../../src/lib/telemetry/sensitivity.ts"],"names":[],"mappings":"AAAA,MAAM,yBAAyB,GAAG;IAChC,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,mBAAmB;IACnB,SAAS;IACT,OAAO;IACP,aAAa;IACb,SAAS;IACT,UAAU;IACV,cAAc;IACd,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,0BAA0B,GAAG;IACjC,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,eAAe;CAChB,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEnC,oDAAoD;IACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,IACE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,gBAAgB,GACpB,2GAA2G,CAAC;IAC9G,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,IACE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classify.test.d.ts","sourceRoot":"","sources":["../../src/test/classify.test.ts"],"names":[],"mappings":""}
|