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.
Files changed (116) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.js +10 -5
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/streaming.d.ts.map +1 -1
  5. package/dist/lib/streaming.js +6 -7
  6. package/dist/lib/streaming.js.map +1 -1
  7. package/dist/lib/telemetry/build-event.d.ts +4 -0
  8. package/dist/lib/telemetry/build-event.d.ts.map +1 -1
  9. package/dist/lib/telemetry/build-event.js +12 -123
  10. package/dist/lib/telemetry/build-event.js.map +1 -1
  11. package/dist/lib/telemetry/index.d.ts +1 -2
  12. package/dist/lib/telemetry/index.d.ts.map +1 -1
  13. package/dist/lib/telemetry/index.js +1 -2
  14. package/dist/lib/telemetry/index.js.map +1 -1
  15. package/dist/lib/telemetry/serialize.d.ts.map +1 -1
  16. package/dist/lib/telemetry/serialize.js +2 -4
  17. package/dist/lib/telemetry/serialize.js.map +1 -1
  18. package/dist/lib/telemetry/types.d.ts +2 -6
  19. package/dist/lib/telemetry/types.d.ts.map +1 -1
  20. package/dist/lib/telemetry/wire-metadata.d.ts +10 -0
  21. package/dist/lib/telemetry/wire-metadata.d.ts.map +1 -0
  22. package/dist/lib/telemetry/wire-metadata.js +28 -0
  23. package/dist/lib/telemetry/wire-metadata.js.map +1 -0
  24. package/dist/test/streaming.test.js +10 -49
  25. package/dist/test/streaming.test.js.map +1 -1
  26. package/dist/test/telemetry.test.js +31 -45
  27. package/dist/test/telemetry.test.js.map +1 -1
  28. package/package.json +4 -5
  29. package/dist/lib/classify/builtins.d.ts +0 -7
  30. package/dist/lib/classify/builtins.d.ts.map +0 -1
  31. package/dist/lib/classify/builtins.js +0 -107
  32. package/dist/lib/classify/builtins.js.map +0 -1
  33. package/dist/lib/classify/constants.d.ts +0 -46
  34. package/dist/lib/classify/constants.d.ts.map +0 -1
  35. package/dist/lib/classify/constants.js +0 -56
  36. package/dist/lib/classify/constants.js.map +0 -1
  37. package/dist/lib/classify/dispatch.d.ts +0 -8
  38. package/dist/lib/classify/dispatch.d.ts.map +0 -1
  39. package/dist/lib/classify/dispatch.js +0 -149
  40. package/dist/lib/classify/dispatch.js.map +0 -1
  41. package/dist/lib/classify/flags.d.ts +0 -6
  42. package/dist/lib/classify/flags.d.ts.map +0 -1
  43. package/dist/lib/classify/flags.js +0 -19
  44. package/dist/lib/classify/flags.js.map +0 -1
  45. package/dist/lib/classify/handlers/database-cli.d.ts +0 -3
  46. package/dist/lib/classify/handlers/database-cli.d.ts.map +0 -1
  47. package/dist/lib/classify/handlers/database-cli.js +0 -68
  48. package/dist/lib/classify/handlers/database-cli.js.map +0 -1
  49. package/dist/lib/classify/handlers/docker.d.ts +0 -6
  50. package/dist/lib/classify/handlers/docker.d.ts.map +0 -1
  51. package/dist/lib/classify/handlers/docker.js +0 -65
  52. package/dist/lib/classify/handlers/docker.js.map +0 -1
  53. package/dist/lib/classify/handlers/fs-delete.d.ts +0 -6
  54. package/dist/lib/classify/handlers/fs-delete.d.ts.map +0 -1
  55. package/dist/lib/classify/handlers/fs-delete.js +0 -14
  56. package/dist/lib/classify/handlers/fs-delete.js.map +0 -1
  57. package/dist/lib/classify/handlers/git.d.ts +0 -6
  58. package/dist/lib/classify/handlers/git.d.ts.map +0 -1
  59. package/dist/lib/classify/handlers/git.js +0 -95
  60. package/dist/lib/classify/handlers/git.js.map +0 -1
  61. package/dist/lib/classify/handlers/network-http.d.ts +0 -10
  62. package/dist/lib/classify/handlers/network-http.d.ts.map +0 -1
  63. package/dist/lib/classify/handlers/network-http.js +0 -56
  64. package/dist/lib/classify/handlers/network-http.js.map +0 -1
  65. package/dist/lib/classify/handlers/packages.d.ts +0 -6
  66. package/dist/lib/classify/handlers/packages.d.ts.map +0 -1
  67. package/dist/lib/classify/handlers/packages.js +0 -22
  68. package/dist/lib/classify/handlers/packages.js.map +0 -1
  69. package/dist/lib/classify/handlers/sed-awk.d.ts +0 -10
  70. package/dist/lib/classify/handlers/sed-awk.d.ts.map +0 -1
  71. package/dist/lib/classify/handlers/sed-awk.js +0 -40
  72. package/dist/lib/classify/handlers/sed-awk.js.map +0 -1
  73. package/dist/lib/classify/handlers/shell-and-runtime.d.ts +0 -14
  74. package/dist/lib/classify/handlers/shell-and-runtime.d.ts.map +0 -1
  75. package/dist/lib/classify/handlers/shell-and-runtime.js +0 -92
  76. package/dist/lib/classify/handlers/shell-and-runtime.js.map +0 -1
  77. package/dist/lib/classify/index.d.ts +0 -6
  78. package/dist/lib/classify/index.d.ts.map +0 -1
  79. package/dist/lib/classify/index.js +0 -6
  80. package/dist/lib/classify/index.js.map +0 -1
  81. package/dist/lib/classify/interpreter.d.ts +0 -5
  82. package/dist/lib/classify/interpreter.d.ts.map +0 -1
  83. package/dist/lib/classify/interpreter.js +0 -16
  84. package/dist/lib/classify/interpreter.js.map +0 -1
  85. package/dist/lib/classify/pipeline.d.ts +0 -10
  86. package/dist/lib/classify/pipeline.d.ts.map +0 -1
  87. package/dist/lib/classify/pipeline.js +0 -105
  88. package/dist/lib/classify/pipeline.js.map +0 -1
  89. package/dist/lib/classify.d.ts +0 -2
  90. package/dist/lib/classify.d.ts.map +0 -1
  91. package/dist/lib/classify.js +0 -2
  92. package/dist/lib/classify.js.map +0 -1
  93. package/dist/lib/telemetry/command-tokenize.d.ts +0 -6
  94. package/dist/lib/telemetry/command-tokenize.d.ts.map +0 -1
  95. package/dist/lib/telemetry/command-tokenize.js +0 -38
  96. package/dist/lib/telemetry/command-tokenize.js.map +0 -1
  97. package/dist/lib/telemetry/sensitivity.d.ts +0 -7
  98. package/dist/lib/telemetry/sensitivity.d.ts.map +0 -1
  99. package/dist/lib/telemetry/sensitivity.js +0 -81
  100. package/dist/lib/telemetry/sensitivity.js.map +0 -1
  101. package/dist/test/classify.test.d.ts +0 -2
  102. package/dist/test/classify.test.d.ts.map +0 -1
  103. package/dist/test/classify.test.js +0 -286
  104. package/dist/test/classify.test.js.map +0 -1
  105. package/dist/test/pipeline.test.d.ts +0 -2
  106. package/dist/test/pipeline.test.d.ts.map +0 -1
  107. package/dist/test/pipeline.test.js +0 -139
  108. package/dist/test/pipeline.test.js.map +0 -1
  109. package/dist/test/sensitivity.test.d.ts +0 -2
  110. package/dist/test/sensitivity.test.d.ts.map +0 -1
  111. package/dist/test/sensitivity.test.js +0 -192
  112. package/dist/test/sensitivity.test.js.map +0 -1
  113. package/dist/test/tokenize.test.d.ts +0 -2
  114. package/dist/test/tokenize.test.d.ts.map +0 -1
  115. package/dist/test/tokenize.test.js +0 -157
  116. package/dist/test/tokenize.test.js.map +0 -1
@@ -1,149 +0,0 @@
1
- import { basename } from "path";
2
- import { UNKNOWN, PACKAGE_RUN } from "./constants.js";
3
- import { findMainCommand } from "./pipeline.js";
4
- import { normalizeInterpreter } from "./interpreter.js";
5
- import { tryClassifyBuiltin } from "./builtins.js";
6
- import { classifyRm } from "./handlers/fs-delete.js";
7
- import { classifyGit } from "./handlers/git.js";
8
- import { classifyCurlWget } from "./handlers/network-http.js";
9
- import { classifyShell, classifyScriptRunner } from "./handlers/shell-and-runtime.js";
10
- import { classifyPackage } from "./handlers/packages.js";
11
- import { classifyDocker } from "./handlers/docker.js";
12
- import { classifyDatabaseCli } from "./handlers/database-cli.js";
13
- /**
14
- * Find the next actual command after a given index (e.g., after "cd dir").
15
- */
16
- function findMainCommandAfterIndex(components, startIndex) {
17
- const operators = ["&&", "||", "|", ";", "&"];
18
- let foundOperator = false;
19
- for (let i = startIndex + 1; i < components.length; i++) {
20
- const comp = components[i].trim();
21
- if (operators.includes(comp)) {
22
- foundOperator = true;
23
- continue;
24
- }
25
- if (foundOperator && comp && !comp.startsWith("-")) {
26
- const nextCmd = basename(comp);
27
- if (nextCmd) {
28
- return classifyCommandComponents([nextCmd, ...components.slice(i + 1)]);
29
- }
30
- }
31
- }
32
- return UNKNOWN;
33
- }
34
- /** Sudo options that take a separate argument (mirrors server normalize_components). */
35
- const SUDO_VALUE_FLAGS = new Set([
36
- "-u",
37
- "--user",
38
- "-g",
39
- "--group",
40
- "-h",
41
- "--host",
42
- "-p",
43
- "--prompt",
44
- "-C",
45
- "-T",
46
- "-R",
47
- "-t",
48
- ]);
49
- /**
50
- * Drop leading `sudo` and its flags/options so the remainder is the wrapped command.
51
- * Aligns with optimus_security/.../argv_rules/shared.py normalize_components.
52
- */
53
- function stripSudoArgv(components) {
54
- if (!components.length) {
55
- return components;
56
- }
57
- if (basename(components[0].trim()).toLowerCase() !== "sudo") {
58
- return components;
59
- }
60
- const comp = components;
61
- let i = 1;
62
- const len = comp.length;
63
- while (i < len) {
64
- const tok = comp[i];
65
- if (tok === "--") {
66
- i += 1;
67
- break;
68
- }
69
- if (SUDO_VALUE_FLAGS.has(tok)) {
70
- i += 2;
71
- continue;
72
- }
73
- if (tok.startsWith("-")) {
74
- i += 1;
75
- continue;
76
- }
77
- break;
78
- }
79
- return i < len ? comp.slice(i) : comp;
80
- }
81
- function classifySudo(components) {
82
- if (components.length <= 1) {
83
- return UNKNOWN;
84
- }
85
- const inner = stripSudoArgv(components);
86
- if (!inner.length) {
87
- return UNKNOWN;
88
- }
89
- const first = basename(inner[0].trim()).toLowerCase();
90
- if (first === "sudo" && inner.length === components.length) {
91
- return UNKNOWN;
92
- }
93
- return classifyCommandComponents(inner);
94
- }
95
- /**
96
- * Classify command components and return action type.
97
- * @param components List of command parts, e.g., ["rm", "-rf", "/tmp/build"]
98
- * @returns Action type string, e.g., "filesystem_delete"
99
- */
100
- export function classifyCommandComponents(components) {
101
- if (!components || !components.length) {
102
- return UNKNOWN;
103
- }
104
- let cmd = findMainCommand(components);
105
- if (!cmd) {
106
- return UNKNOWN;
107
- }
108
- cmd = normalizeInterpreter(cmd);
109
- if (cmd === "rm") {
110
- return classifyRm(components);
111
- }
112
- if (cmd === "git") {
113
- return classifyGit(components);
114
- }
115
- if (cmd === "curl" || cmd === "wget") {
116
- return classifyCurlWget(components);
117
- }
118
- if (["bash", "sh", "dash", "zsh"].includes(cmd)) {
119
- return classifyShell(components);
120
- }
121
- if (["python", "python3", "node", "ruby", "perl", "php"].includes(cmd)) {
122
- return classifyScriptRunner(components);
123
- }
124
- if (["npm", "pip", "pip3", "cargo", "gem", "pnpm", "bun"].includes(cmd)) {
125
- return classifyPackage(components);
126
- }
127
- if (["pytest", "py.test"].includes(cmd)) {
128
- return PACKAGE_RUN;
129
- }
130
- if (cmd === "docker") {
131
- return classifyDocker(components);
132
- }
133
- if (cmd === "sudo") {
134
- return classifySudo(components);
135
- }
136
- const dbType = classifyDatabaseCli(cmd, components);
137
- if (dbType !== null) {
138
- return dbType;
139
- }
140
- if (["cd", "pushd", "popd", "pwd"].includes(cmd)) {
141
- return findMainCommandAfterIndex(components, 0);
142
- }
143
- const builtin = tryClassifyBuiltin(cmd, components);
144
- if (builtin !== null) {
145
- return builtin;
146
- }
147
- return UNKNOWN;
148
- }
149
- //# sourceMappingURL=dispatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/lib/classify/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Check if a flag is present in components.
3
- * Handles both -f (single char) and -rf (cluster).
4
- */
5
- export declare function hasFlag(components: string[], flag: string): boolean;
6
- //# sourceMappingURL=flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/lib/classify/flags.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAanE"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Check if a flag is present in components.
3
- * Handles both -f (single char) and -rf (cluster).
4
- */
5
- export function hasFlag(components, flag) {
6
- const needle = `-${flag}`;
7
- for (const comp of components) {
8
- if (comp === needle) {
9
- return true;
10
- }
11
- if (comp.startsWith("-") && !comp.startsWith("--")) {
12
- if (comp.slice(1).includes(flag)) {
13
- return true;
14
- }
15
- }
16
- }
17
- return false;
18
- }
19
- //# sourceMappingURL=flags.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../src/lib/classify/flags.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,UAAoB,EAAE,IAAY;IACxD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ActionType } from "../constants.js";
2
- export declare function classifyDatabaseCli(cmd: string, components: string[]): ActionType | null;
3
- //# sourceMappingURL=database-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-cli.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/database-cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA0ClD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CA8BxF"}
@@ -1,68 +0,0 @@
1
- /**
2
- * Classify database CLI invocations (sqlite3, psql, mysql, mariadb) into nah db_read / db_write.
3
- */
4
- import { DB_READ, DB_WRITE, UNKNOWN } from "../constants.js";
5
- const DB_CLI = new Set(["sqlite3", "psql", "mysql", "mariadb"]);
6
- /** Substrings after the DB path / connection args — mutating SQL or DDL. */
7
- const MUTATING_SQL_HINTS = [
8
- "insert into",
9
- "update ",
10
- "delete from",
11
- "merge into",
12
- "drop table",
13
- "drop database",
14
- "drop index",
15
- "truncate table",
16
- "alter table",
17
- "create table",
18
- "create index",
19
- "replace into",
20
- "attach database",
21
- "detach database",
22
- "vacuum",
23
- "pragma writable_schema",
24
- "pragma journal_mode",
25
- "pragma user_version",
26
- ];
27
- /** Read-oriented or introspection patterns. */
28
- const READ_SQL_HINTS = [
29
- "select ",
30
- "explain ",
31
- "pragma ",
32
- "show tables",
33
- "show databases",
34
- "describe ",
35
- "desc ",
36
- "\\dt",
37
- "\\d ",
38
- ".schema",
39
- ".tables",
40
- ".dump",
41
- ];
42
- export function classifyDatabaseCli(cmd, components) {
43
- const base = cmd.toLowerCase();
44
- if (!DB_CLI.has(base)) {
45
- return null;
46
- }
47
- const tail = components.slice(1).join(" ").toLowerCase();
48
- if (!tail.trim()) {
49
- // Interactive shell or unknown — not "unknown" taxonomy; DB tooling.
50
- return DB_READ;
51
- }
52
- // e.g. `sqlite3 ./app.db` — opens DB without SQL on the line
53
- if (components.length === 2 && /\.(db|sqlite3?)$/i.test(components[1].trim())) {
54
- return DB_READ;
55
- }
56
- if (MUTATING_SQL_HINTS.some((h) => tail.includes(h))) {
57
- return DB_WRITE;
58
- }
59
- if (READ_SQL_HINTS.some((h) => tail.includes(h))) {
60
- return DB_READ;
61
- }
62
- // sqlite3 path "SQL" with quoted one-liner e.g. sqlite3 db "DROP TABLE t"
63
- if (tail.includes("drop ") || tail.includes("alter ") || tail.includes("truncate")) {
64
- return DB_WRITE;
65
- }
66
- return UNKNOWN;
67
- }
68
- //# sourceMappingURL=database-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-cli.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/database-cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,kBAAkB,GAAsB;IAC5C,aAAa;IACb,SAAS;IACT,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;IACR,wBAAwB;IACxB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF,+CAA+C;AAC/C,MAAM,cAAc,GAAsB;IACxC,SAAS;IACT,UAAU;IACV,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;CACR,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,UAAoB;IACnE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,qEAAqE;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,0EAA0E;IAC1E,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,6 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * Classify docker commands.
4
- */
5
- export declare function classifyDocker(components: string[]): ActionType;
6
- //# sourceMappingURL=docker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/docker.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AA4BzB;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAuC/D"}
@@ -1,65 +0,0 @@
1
- import { basename } from "path";
2
- import { CONTAINER_DESTRUCTIVE, CONTAINER_EXEC, CONTAINER_READ, CONTAINER_WRITE, UNKNOWN, } from "../constants.js";
3
- /**
4
- * Find the docker subcommand, skipping docker-level flags like --debug, -H <host>, etc.
5
- * docker [global-options] COMMAND [command-options]
6
- */
7
- function findDockerSubcommand(components) {
8
- // Docker global flags that consume the next token as their value.
9
- const DOCKER_FLAGS_WITH_VALUE = new Set([
10
- "-H", "--host",
11
- "--tlscacert", "--tlscert", "--tlskey",
12
- "--config", "--context", "-c",
13
- "--log-level", "-l",
14
- ]);
15
- let i = 1; // skip "docker"
16
- while (i < components.length) {
17
- const tok = components[i];
18
- if (DOCKER_FLAGS_WITH_VALUE.has(tok)) {
19
- i += 2; // skip flag and its value
20
- }
21
- else if (tok.startsWith("-")) {
22
- i += 1; // skip standalone boolean flag (e.g. --debug, --tls)
23
- }
24
- else {
25
- return tok;
26
- }
27
- }
28
- return null;
29
- }
30
- /**
31
- * Classify docker commands.
32
- */
33
- export function classifyDocker(components) {
34
- if (components.length < 2) {
35
- return UNKNOWN;
36
- }
37
- // docker may appear at a non-zero index (e.g. in a pipeline: something | docker ps).
38
- // Slice from docker's position so findDockerSubcommand always scans from index 1.
39
- const dockerIdx = components.findIndex((tok) => basename(tok).toLowerCase() === "docker");
40
- if (dockerIdx < 0) {
41
- return UNKNOWN;
42
- }
43
- const dockerComponents = components.slice(dockerIdx);
44
- const sub = findDockerSubcommand(dockerComponents);
45
- if (sub === null) {
46
- return UNKNOWN;
47
- }
48
- if (sub === "rm" || sub === "rmi" || sub === "prune") {
49
- return CONTAINER_DESTRUCTIVE;
50
- }
51
- if (["run", "exec"].includes(sub)) {
52
- return CONTAINER_EXEC;
53
- }
54
- if (["stop", "kill"].includes(sub)) {
55
- return CONTAINER_DESTRUCTIVE;
56
- }
57
- if (["ps", "inspect", "logs", "images", "pull"].includes(sub)) {
58
- return CONTAINER_READ;
59
- }
60
- if (["build", "create", "push", "tag", "network", "volume"].includes(sub)) {
61
- return CONTAINER_WRITE;
62
- }
63
- return CONTAINER_WRITE;
64
- }
65
- //# sourceMappingURL=docker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,eAAe,EACf,OAAO,GAER,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,SAAS,oBAAoB,CAAC,UAAoB;IAChD,kEAAkE;IAClE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;QACtC,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,WAAW,EAAE,UAAU;QACtC,UAAU,EAAE,WAAW,EAAE,IAAI;QAC7B,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB;IAC3B,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B;QACpC,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAoB;IACjD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,qFAAqF;IACrF,kFAAkF;IAClF,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC1F,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1E,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -1,6 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * Classify rm command based on flags.
4
- */
5
- export declare function classifyRm(components: string[]): ActionType;
6
- //# sourceMappingURL=fs-delete.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-delete.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/fs-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAS3D"}
@@ -1,14 +0,0 @@
1
- import { FILESYSTEM_DELETE, } from "../constants.js";
2
- import { hasFlag } from "../flags.js";
3
- /**
4
- * Classify rm command based on flags.
5
- */
6
- export function classifyRm(components) {
7
- const hasR = hasFlag(components, "r");
8
- const hasF = hasFlag(components, "f");
9
- if ((hasR && hasF) || hasR || hasF) {
10
- return FILESYSTEM_DELETE;
11
- }
12
- return FILESYSTEM_DELETE;
13
- }
14
- //# sourceMappingURL=fs-delete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-delete.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/fs-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAoB;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -1,6 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * Classify git command based on subcommand and flags.
4
- */
5
- export declare function classifyGit(components: string[]): ActionType;
6
- //# sourceMappingURL=git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAwBzB;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CA6E5D"}
@@ -1,95 +0,0 @@
1
- import { GIT_DISCARD, GIT_HISTORY_REWRITE, GIT_REMOTE_WRITE, GIT_SAFE, GIT_WRITE, UNKNOWN, } from "../constants.js";
2
- import { hasFlag } from "../flags.js";
3
- import { basename } from "path";
4
- /**
5
- * Find the git subcommand, skipping git-level flags like -C <path>, --git-dir, etc.
6
- */
7
- function findGitSubcommand(components) {
8
- // Git-level flags that take a value argument (skip flag + value)
9
- const GIT_FLAGS_WITH_VALUE = new Set(["-C", "--git-dir", "--work-tree", "--namespace", "-c"]);
10
- let i = 1; // skip "git"
11
- while (i < components.length) {
12
- const tok = components[i];
13
- if (GIT_FLAGS_WITH_VALUE.has(tok)) {
14
- i += 2; // skip flag and its value
15
- }
16
- else if (tok.startsWith("-")) {
17
- i += 1; // skip standalone flag
18
- }
19
- else {
20
- return { sub: tok, args: components.slice(i + 1) };
21
- }
22
- }
23
- return null;
24
- }
25
- /**
26
- * Classify git command based on subcommand and flags.
27
- */
28
- export function classifyGit(components) {
29
- if (components.length < 2) {
30
- return UNKNOWN;
31
- }
32
- // Dispatch is based on findMainCommand(), which may pick git from a later token
33
- // (e.g. in pipelines) or from a full-path token like /usr/bin/git.
34
- const gitIdx = components.findIndex((tok) => basename(tok).toLowerCase() === "git");
35
- if (gitIdx < 0) {
36
- return UNKNOWN;
37
- }
38
- const gitComponents = components.slice(gitIdx);
39
- const parsed = findGitSubcommand(gitComponents);
40
- if (!parsed)
41
- return UNKNOWN;
42
- const { sub, args } = parsed;
43
- if (sub === "push") {
44
- if (args.includes("--force") ||
45
- args.includes("-f") ||
46
- hasFlag(args, "f") ||
47
- args.includes("--force-with-lease") ||
48
- args.some((a) => a.startsWith("--force-with-lease="))) {
49
- return GIT_HISTORY_REWRITE;
50
- }
51
- return GIT_REMOTE_WRITE;
52
- }
53
- if (sub === "reset") {
54
- if (args.includes("--hard")) {
55
- return GIT_DISCARD;
56
- }
57
- return GIT_WRITE;
58
- }
59
- if (sub === "branch") {
60
- if (args.includes("-D") || args.includes("--force")) {
61
- return GIT_HISTORY_REWRITE;
62
- }
63
- if (args.includes("-d") || args.includes("--delete")) {
64
- return GIT_DISCARD;
65
- }
66
- // git branch with no flags is read-only (lists branches)
67
- if (args.length === 0) {
68
- return GIT_SAFE;
69
- }
70
- return GIT_WRITE;
71
- }
72
- if (sub === "tag") {
73
- if (args.includes("--force") || args.includes("-f")) {
74
- return GIT_HISTORY_REWRITE;
75
- }
76
- if (args.includes("--delete") || args.includes("-d")) {
77
- return GIT_DISCARD;
78
- }
79
- return GIT_WRITE;
80
- }
81
- if (sub === "clean") {
82
- return GIT_HISTORY_REWRITE;
83
- }
84
- if (["rebase", "cherry-pick"].includes(sub)) {
85
- return GIT_HISTORY_REWRITE;
86
- }
87
- if (["config", "checkout", "add", "commit", "pull", "fetch", "merge"].includes(sub)) {
88
- return GIT_WRITE;
89
- }
90
- if (["log", "show", "status", "diff", "remote"].includes(sub)) {
91
- return GIT_SAFE;
92
- }
93
- return GIT_WRITE;
94
- }
95
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,OAAO,GAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAoB;IAC7C,iEAAiE;IACjE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;IACxB,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B;QACpC,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAoB;IAC9C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IACpF,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE7B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,IACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,EACrD,CAAC;YACD,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,10 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * Classify curl/wget command based on method and data flags.
4
- */
5
- export declare function classifyCurlWget(components: string[]): ActionType;
6
- /**
7
- * Classify httpie (http/https command) based on HTTP method and data.
8
- */
9
- export declare function classifyHttpie(components: string[]): ActionType;
10
- //# sourceMappingURL=network-http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-http.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/network-http.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAsBjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAkC/D"}
@@ -1,56 +0,0 @@
1
- import { basename } from "path";
2
- import { NETWORK_OUTBOUND, NETWORK_WRITE, } from "../constants.js";
3
- /**
4
- * Classify curl/wget command based on method and data flags.
5
- */
6
- export function classifyCurlWget(components) {
7
- // curl/wget may appear at a non-zero index (e.g. in a pipeline: cmd -d x | curl url).
8
- // Slice from its position so we only inspect flags that belong to this invocation.
9
- const cmdIdx = components.findIndex((tok) => ["curl", "wget"].includes(basename(tok).toLowerCase()));
10
- const args = cmdIdx >= 0 ? components.slice(cmdIdx + 1) : components.slice(1);
11
- for (let i = 0; i < args.length; i++) {
12
- if (args[i] === "-X" && i + 1 < args.length) {
13
- const method = args[i + 1].toUpperCase();
14
- if (["POST", "PUT", "DELETE", "PATCH"].includes(method)) {
15
- return NETWORK_WRITE;
16
- }
17
- }
18
- }
19
- if (args.includes("--data") || args.includes("-d")) {
20
- return NETWORK_WRITE;
21
- }
22
- return NETWORK_OUTBOUND;
23
- }
24
- /**
25
- * Classify httpie (http/https command) based on HTTP method and data.
26
- */
27
- export function classifyHttpie(components) {
28
- const cmdIdx = components.findIndex((tok) => ["http", "https"].includes(basename(tok).toLowerCase()));
29
- const args = cmdIdx >= 0 ? components.slice(cmdIdx + 1) : components.slice(1);
30
- const WRITE_METHODS = new Set(["POST", "PUT", "PATCH", "DELETE"]);
31
- for (let i = 0; i < args.length; i++) {
32
- const arg = args[i];
33
- // curl-style: -X POST
34
- if (arg === "-X" && i + 1 < args.length) {
35
- if (WRITE_METHODS.has(args[i + 1].toUpperCase())) {
36
- return NETWORK_WRITE;
37
- }
38
- }
39
- // httpie native positional method: http POST https://api.com
40
- if (WRITE_METHODS.has(arg.toUpperCase())) {
41
- return NETWORK_WRITE;
42
- }
43
- }
44
- for (const arg of args) {
45
- if (arg === "--json" || arg === "-j" ||
46
- arg === "--form" || arg === "-f" ||
47
- arg === "--data" || arg === "-d" ||
48
- arg.startsWith("--form") ||
49
- arg.startsWith("--json") ||
50
- arg.startsWith("--data")) {
51
- return NETWORK_WRITE;
52
- }
53
- }
54
- return NETWORK_OUTBOUND;
55
- }
56
- //# sourceMappingURL=network-http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-http.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/network-http.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * Classify package manager commands.
4
- */
5
- export declare function classifyPackage(components: string[]): ActionType;
6
- //# sourceMappingURL=packages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/packages.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAkBhE"}
@@ -1,22 +0,0 @@
1
- import { basename } from "path";
2
- import { PACKAGE_INSTALL, PACKAGE_RUN, PACKAGE_UNINSTALL, UNKNOWN, } from "../constants.js";
3
- const PACKAGE_MANAGERS = new Set(["npm", "pip", "pip3", "cargo", "gem", "pnpm", "bun"]);
4
- /**
5
- * Classify package manager commands.
6
- */
7
- export function classifyPackage(components) {
8
- // Package manager may appear at a non-zero index (e.g. in a pipeline: cmd | npm install).
9
- const cmdIdx = components.findIndex((tok) => PACKAGE_MANAGERS.has(basename(tok).toLowerCase()));
10
- const args = cmdIdx >= 0 ? components.slice(cmdIdx + 1) : components.slice(1);
11
- if (args.some((arg) => ["install", "i", "ci"].includes(arg))) {
12
- return PACKAGE_INSTALL;
13
- }
14
- if (args.some((arg) => ["uninstall", "remove", "rm"].includes(arg))) {
15
- return PACKAGE_UNINSTALL;
16
- }
17
- if (args.includes("run")) {
18
- return PACKAGE_RUN;
19
- }
20
- return UNKNOWN;
21
- }
22
- //# sourceMappingURL=packages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,OAAO,GAER,MAAM,iBAAiB,CAAC;AAEzB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAoB;IAClD,0FAA0F;IAC1F,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9E,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,10 +0,0 @@
1
- import { type ActionType } from "../constants.js";
2
- /**
3
- * sed -i/-I/--in-place = filesystem_write; otherwise read (stdin transform).
4
- */
5
- export declare function classifySed(components: string[]): ActionType;
6
- /**
7
- * awk with system()/getline/pipes/redirection = lang_exec; else filesystem_read.
8
- */
9
- export declare function classifyAwk(components: string[]): ActionType;
10
- //# sourceMappingURL=sed-awk.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sed-awk.d.ts","sourceRoot":"","sources":["../../../../src/lib/classify/handlers/sed-awk.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAe5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,CAe5D"}