@elizaos/plugin-shell 2.0.0-alpha.3 → 2.0.0-alpha.5
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/approvals/allowlist.d.ts.map +1 -1
- package/dist/approvals/analysis.d.ts +1 -1
- package/dist/approvals/analysis.d.ts.map +1 -1
- package/dist/approvals/index.d.ts +3 -3
- package/dist/approvals/index.d.ts.map +1 -1
- package/dist/approvals/service.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -85
- package/dist/index.js.map +9 -9
- package/dist/services/shellService.d.ts.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../approvals/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,YAAY,EACb,MAAM,SAAS,CAAC;AAgCjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAmED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../approvals/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,YAAY,EACb,MAAM,SAAS,CAAC;AAgCjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAmED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAmC7E;AASD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,qBAAqB,CA8C7D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,CAyCjD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAoB3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CA8BnD;AAsBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACzC,qBAAqB,CAuBvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,CAoDxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,UAAU,EAAE,iBAAiB,GAAG,IAAI,GACnC,kBAAkB,GAAG,IAAI,CAoB3B;AAqFD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CA+BT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAwCT;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAG1E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAGtD"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Functions for analyzing shell commands for security evaluation.
|
|
5
5
|
* Parses commands, resolves executables, and evaluates against allowlists.
|
|
6
6
|
*/
|
|
7
|
-
import type { CommandResolution,
|
|
7
|
+
import type { CommandResolution, ExecAllowlistAnalysis, ExecAllowlistEntry, ExecAllowlistEvaluation, ExecCommandAnalysis } from "./types";
|
|
8
8
|
/**
|
|
9
9
|
* Resolve command to executable info
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../approvals/analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../approvals/analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAmIjB;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACtB,iBAAiB,GAAG,IAAI,CAQ1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACtB,iBAAiB,GAAG,IAAI,CAQ1B;AA2PD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,mBAAmB,CAyCtB;AAwKD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAMjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAKtE;AAwBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C,GAAG,OAAO,CAqCV;AAoED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,uBAAuB,CAoC1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,qBAAqB,CAsFxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,GAAG,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,OAAO,CAOV"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Command execution approval system for plugin-shell.
|
|
5
5
|
* Provides allowlist management, command analysis, and approval workflows.
|
|
6
6
|
*/
|
|
7
|
-
export type { CommandResolution, ExecAllowlistAnalysis, ExecAllowlistEntry, ExecAllowlistEvaluation, ExecApprovalDecision, ExecApprovalRequest, ExecApprovalResult, ExecApprovalsAgent, ExecApprovalsDefaults, ExecApprovalsFile, ExecApprovalsResolved, ExecApprovalsSnapshot, ExecAsk, ExecCommandAnalysis, ExecCommandSegment, ExecHost, ExecSecurity, } from "./types";
|
|
8
|
-
export { DEFAULT_SAFE_BINS, EXEC_APPROVAL_DEFAULTS } from "./types";
|
|
9
7
|
export { addAllowlistEntry, ensureApprovals, getApprovalFilePath, getApprovalSocketPath, loadApprovals, matchAllowlist, maxAsk, minSecurity, normalizeApprovals, readApprovalsSnapshot, recordAllowlistUse, resolveApprovals, resolveApprovalsFromFile, saveApprovals, } from "./allowlist";
|
|
10
8
|
export { analyzeShellCommand, evaluateExecAllowlist, evaluateShellAllowlist, isSafeBinUsage, normalizeSafeBins, requiresExecApproval, resolveCommandFromArgv, resolveCommandResolution, resolveSafeBins, } from "./analysis";
|
|
11
|
-
export {
|
|
9
|
+
export { type CommandCheckResult, ExecApprovalService } from "./service";
|
|
10
|
+
export type { CommandResolution, ExecAllowlistAnalysis, ExecAllowlistEntry, ExecAllowlistEvaluation, ExecApprovalDecision, ExecApprovalRequest, ExecApprovalResult, ExecApprovalsAgent, ExecApprovalsDefaults, ExecApprovalsFile, ExecApprovalsResolved, ExecApprovalsSnapshot, ExecAsk, ExecCommandAnalysis, ExecCommandSegment, ExecHost, ExecSecurity, } from "./types";
|
|
11
|
+
export { DEFAULT_SAFE_BINS, EXEC_APPROVAL_DEFAULTS } from "./types";
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../approvals/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../approvals/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEzE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../approvals/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../approvals/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAQ,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAgC,OAAO,EAAE,MAAM,eAAe,CAAC;AAyBtE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EAErB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,8BAA8B;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,iCAAiC;IACjC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAmB;IACrC,qBAAqB,SACwD;IAE7E,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAc;gBAEnB,OAAO,CAAC,EAAE,aAAa;IAMnC;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,qBAAqB;IAKnD;;OAEG;IACH,SAAS,IAAI,qBAAqB;IAOlC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlC;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,IAAI,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6I/B;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8DhF;;OAEG;IACG,oBAAoB,CACxB,OAAO,EAAE,mBAAmB,EAC5B,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACjC,GACA,OAAO,CAAC,IAAI,CAAC;IAkEhB;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAwCxE;AAgBD,eAAe,mBAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export default shellPlugin;
|
|
|
4
4
|
export { clearHistory } from "./actions/clearHistory";
|
|
5
5
|
export { executeCommand } from "./actions/executeCommand";
|
|
6
6
|
export { processAction } from "./actions/processAction";
|
|
7
|
-
export { addAllowlistEntry, analyzeShellCommand,
|
|
7
|
+
export { addAllowlistEntry, analyzeShellCommand, type CommandCheckResult, type CommandResolution, DEFAULT_SAFE_BINS, EXEC_APPROVAL_DEFAULTS, type ExecAllowlistAnalysis, type ExecAllowlistEntry, type ExecAllowlistEvaluation, type ExecApprovalDecision, type ExecApprovalRequest, type ExecApprovalResult, ExecApprovalService, type ExecApprovalsAgent, type ExecApprovalsDefaults, type ExecApprovalsFile, type ExecApprovalsResolved, type ExecApprovalsSnapshot, type ExecAsk, type ExecCommandAnalysis, type ExecCommandSegment, type ExecHost, type ExecSecurity, ensureApprovals, evaluateExecAllowlist, evaluateShellAllowlist, getApprovalFilePath, getApprovalSocketPath, isSafeBinUsage, loadApprovals, matchAllowlist, maxAsk, minSecurity, normalizeApprovals, normalizeSafeBins, readApprovalsSnapshot, recordAllowlistUse, requiresExecApproval, resolveApprovals, resolveApprovalsFromFile, resolveCommandFromArgv, resolveCommandResolution, resolveSafeBins, saveApprovals, } from "./approvals";
|
|
8
8
|
export { shellHistoryProvider } from "./providers/shellHistoryProvider";
|
|
9
9
|
export { addSession, appendOutput, clearFinished, createSessionSlug, deleteSession, drainSession, getFinishedSession, getSession, listFinishedSessions, listRunningSessions, markBackgrounded, markExited, resetProcessRegistryForTests, setJobTtlMs, tail, trimWithCap, } from "./services/processRegistry";
|
|
10
10
|
export { ShellService } from "./services/shellService";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C,eAAO,MAAM,WAAW,EAAE,MAOzB,CAAC;AAEF,eAAe,WAAW,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C,eAAO,MAAM,WAAW,EAAE,MAOzB,CAAC;AAEF,eAAe,WAAW,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,4BAA4B,EAC5B,WAAW,EACX,IAAI,EACJ,WAAW,GACZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,WAAW,EACX,GAAG,EACH,UAAU,EACV,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
18
18
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
19
19
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// node_modules/@lydell/node-pty/eventEmitter2.js
|
|
22
22
|
var require_eventEmitter2 = __commonJS((exports) => {
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
24
|
var EventEmitter2 = function() {
|
|
@@ -63,7 +63,7 @@ var require_eventEmitter2 = __commonJS((exports) => {
|
|
|
63
63
|
exports.EventEmitter2 = EventEmitter2;
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
//
|
|
66
|
+
// node_modules/@lydell/node-pty/terminal.js
|
|
67
67
|
var require_terminal = __commonJS((exports) => {
|
|
68
68
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
69
69
|
var events_1 = __require("events");
|
|
@@ -251,7 +251,7 @@ var require_terminal = __commonJS((exports) => {
|
|
|
251
251
|
exports.Terminal = Terminal;
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
-
//
|
|
254
|
+
// node_modules/@lydell/node-pty/shared/conout.js
|
|
255
255
|
var require_conout = __commonJS((exports) => {
|
|
256
256
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
257
257
|
function getWorkerPipeName(conoutPipeName) {
|
|
@@ -260,9 +260,9 @@ var require_conout = __commonJS((exports) => {
|
|
|
260
260
|
exports.getWorkerPipeName = getWorkerPipeName;
|
|
261
261
|
});
|
|
262
262
|
|
|
263
|
-
//
|
|
263
|
+
// node_modules/@lydell/node-pty/windowsConoutConnection.js
|
|
264
264
|
var require_windowsConoutConnection = __commonJS((exports) => {
|
|
265
|
-
var __dirname = "/Users/shawwalters/eliza-
|
|
265
|
+
var __dirname = "/Users/shawwalters/eliza-workspace/plugins/plugin-shell/typescript/node_modules/@lydell/node-pty";
|
|
266
266
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
267
267
|
function adopt(value) {
|
|
268
268
|
return value instanceof P ? value : new P(function(resolve) {
|
|
@@ -435,7 +435,7 @@ var require_windowsConoutConnection = __commonJS((exports) => {
|
|
|
435
435
|
exports.ConoutConnection = ConoutConnection;
|
|
436
436
|
});
|
|
437
437
|
|
|
438
|
-
//
|
|
438
|
+
// node_modules/@lydell/node-pty/package.json
|
|
439
439
|
var require_package = __commonJS((exports, module) => {
|
|
440
440
|
module.exports = {
|
|
441
441
|
name: "@lydell/node-pty",
|
|
@@ -470,7 +470,7 @@ var require_package = __commonJS((exports, module) => {
|
|
|
470
470
|
};
|
|
471
471
|
});
|
|
472
472
|
|
|
473
|
-
//
|
|
473
|
+
// node_modules/@lydell/node-pty/requireBinary.js
|
|
474
474
|
var require_requireBinary = __commonJS((exports) => {
|
|
475
475
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
476
476
|
var PACKAGE_NAME = "@lydell/node-pty-" + process.platform + "-" + process.arch;
|
|
@@ -511,9 +511,9 @@ Your platform (` + process.platform + "-" + process.arch + ") might not be suppo
|
|
|
511
511
|
}
|
|
512
512
|
});
|
|
513
513
|
|
|
514
|
-
//
|
|
514
|
+
// node_modules/@lydell/node-pty/windowsPtyAgent.js
|
|
515
515
|
var require_windowsPtyAgent = __commonJS((exports) => {
|
|
516
|
-
var __dirname = "/Users/shawwalters/eliza-
|
|
516
|
+
var __dirname = "/Users/shawwalters/eliza-workspace/plugins/plugin-shell/typescript/node_modules/@lydell/node-pty";
|
|
517
517
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
518
518
|
var fs5 = __require("fs");
|
|
519
519
|
var path6 = __require("path");
|
|
@@ -729,7 +729,7 @@ var require_windowsPtyAgent = __commonJS((exports) => {
|
|
|
729
729
|
}
|
|
730
730
|
});
|
|
731
731
|
|
|
732
|
-
//
|
|
732
|
+
// node_modules/@lydell/node-pty/utils.js
|
|
733
733
|
var require_utils = __commonJS((exports) => {
|
|
734
734
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
735
735
|
function assign(target) {
|
|
@@ -747,7 +747,7 @@ var require_utils = __commonJS((exports) => {
|
|
|
747
747
|
exports.assign = assign;
|
|
748
748
|
});
|
|
749
749
|
|
|
750
|
-
//
|
|
750
|
+
// node_modules/@lydell/node-pty/windowsTerminal.js
|
|
751
751
|
var require_windowsTerminal = __commonJS((exports) => {
|
|
752
752
|
var __extends = exports && exports.__extends || function() {
|
|
753
753
|
var extendStatics = function(d, b) {
|
|
@@ -925,7 +925,7 @@ var require_windowsTerminal = __commonJS((exports) => {
|
|
|
925
925
|
exports.WindowsTerminal = WindowsTerminal;
|
|
926
926
|
});
|
|
927
927
|
|
|
928
|
-
//
|
|
928
|
+
// node_modules/@lydell/node-pty/unixTerminal.js
|
|
929
929
|
var require_unixTerminal = __commonJS((exports) => {
|
|
930
930
|
var __extends = exports && exports.__extends || function() {
|
|
931
931
|
var extendStatics = function(d, b) {
|
|
@@ -1171,7 +1171,7 @@ var require_unixTerminal = __commonJS((exports) => {
|
|
|
1171
1171
|
exports.UnixTerminal = UnixTerminal;
|
|
1172
1172
|
});
|
|
1173
1173
|
|
|
1174
|
-
//
|
|
1174
|
+
// node_modules/@lydell/node-pty/index.js
|
|
1175
1175
|
var require_node_pty = __commonJS((exports) => {
|
|
1176
1176
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1177
1177
|
var terminalCtor;
|
|
@@ -1759,6 +1759,13 @@ Process still running.`,
|
|
|
1759
1759
|
]
|
|
1760
1760
|
]
|
|
1761
1761
|
};
|
|
1762
|
+
// approvals/allowlist.ts
|
|
1763
|
+
import crypto2 from "node:crypto";
|
|
1764
|
+
import fs from "node:fs";
|
|
1765
|
+
import os from "node:os";
|
|
1766
|
+
import path from "node:path";
|
|
1767
|
+
import { logger as logger4 } from "@elizaos/core";
|
|
1768
|
+
|
|
1762
1769
|
// approvals/types.ts
|
|
1763
1770
|
var DEFAULT_SAFE_BINS = [
|
|
1764
1771
|
"jq",
|
|
@@ -1778,12 +1785,8 @@ var EXEC_APPROVAL_DEFAULTS = {
|
|
|
1778
1785
|
autoAllowSkills: false,
|
|
1779
1786
|
timeoutMs: 120000
|
|
1780
1787
|
};
|
|
1788
|
+
|
|
1781
1789
|
// approvals/allowlist.ts
|
|
1782
|
-
import crypto2 from "node:crypto";
|
|
1783
|
-
import fs from "node:fs";
|
|
1784
|
-
import os from "node:os";
|
|
1785
|
-
import path from "node:path";
|
|
1786
|
-
import { logger as logger4 } from "@elizaos/core";
|
|
1787
1790
|
var DEFAULT_SOCKET_PATH = "~/.eliza/exec-approvals.sock";
|
|
1788
1791
|
var DEFAULT_FILE_PATH = "~/.eliza/exec-approvals.json";
|
|
1789
1792
|
var DEFAULT_AGENT_ID = "default";
|
|
@@ -2179,16 +2182,8 @@ function maxAsk(a, b) {
|
|
|
2179
2182
|
// approvals/analysis.ts
|
|
2180
2183
|
import fs2 from "node:fs";
|
|
2181
2184
|
import path2 from "node:path";
|
|
2182
|
-
var DISALLOWED_PIPELINE_TOKENS = new Set([
|
|
2183
|
-
|
|
2184
|
-
"<",
|
|
2185
|
-
"`",
|
|
2186
|
-
`
|
|
2187
|
-
`,
|
|
2188
|
-
"\r",
|
|
2189
|
-
"(",
|
|
2190
|
-
")"
|
|
2191
|
-
]);
|
|
2185
|
+
var DISALLOWED_PIPELINE_TOKENS = new Set([">", "<", "`", `
|
|
2186
|
+
`, "\r", "(", ")"]);
|
|
2192
2187
|
var DOUBLE_QUOTE_ESCAPES = new Set(["\\", '"', "$", "`", `
|
|
2193
2188
|
`, "\r"]);
|
|
2194
2189
|
var WINDOWS_UNSUPPORTED_TOKENS = new Set([
|
|
@@ -2866,10 +2861,7 @@ function requiresExecApproval(params) {
|
|
|
2866
2861
|
return params.ask === "always" || params.ask === "on-miss" && params.security === "allowlist" && (!params.analysisOk || !params.allowlistSatisfied);
|
|
2867
2862
|
}
|
|
2868
2863
|
// approvals/service.ts
|
|
2869
|
-
import {
|
|
2870
|
-
logger as logger5,
|
|
2871
|
-
Service
|
|
2872
|
-
} from "@elizaos/core";
|
|
2864
|
+
import { logger as logger5, Service } from "@elizaos/core";
|
|
2873
2865
|
var EXEC_APPROVAL_OPTIONS = [
|
|
2874
2866
|
{ name: "allow-once", description: "Allow this one time" },
|
|
2875
2867
|
{ name: "allow-always", description: "Always allow this" },
|
|
@@ -3051,11 +3043,7 @@ class ExecApprovalService extends Service {
|
|
|
3051
3043
|
timedOut: false
|
|
3052
3044
|
};
|
|
3053
3045
|
}
|
|
3054
|
-
const descriptionLines = [
|
|
3055
|
-
"**Exec Approval Required**",
|
|
3056
|
-
"",
|
|
3057
|
-
`Command: \`${request.command}\``
|
|
3058
|
-
];
|
|
3046
|
+
const descriptionLines = ["**Exec Approval Required**", "", `Command: \`${request.command}\``];
|
|
3059
3047
|
if (request.cwd) {
|
|
3060
3048
|
descriptionLines.push(`CWD: \`${request.cwd}\``);
|
|
3061
3049
|
}
|
|
@@ -3103,11 +3091,7 @@ class ExecApprovalService extends Service {
|
|
|
3103
3091
|
}
|
|
3104
3092
|
throw new Error("ApprovalService not available");
|
|
3105
3093
|
}
|
|
3106
|
-
const descriptionLines = [
|
|
3107
|
-
"**Exec Approval Required**",
|
|
3108
|
-
"",
|
|
3109
|
-
`Command: \`${request.command}\``
|
|
3110
|
-
];
|
|
3094
|
+
const descriptionLines = ["**Exec Approval Required**", "", `Command: \`${request.command}\``];
|
|
3111
3095
|
if (request.cwd) {
|
|
3112
3096
|
descriptionLines.push(`CWD: \`${request.cwd}\``);
|
|
3113
3097
|
}
|
|
@@ -3131,7 +3115,7 @@ class ExecApprovalService extends Service {
|
|
|
3131
3115
|
resolvedPath: request.resolvedPath
|
|
3132
3116
|
}
|
|
3133
3117
|
},
|
|
3134
|
-
onSelect: async (option,
|
|
3118
|
+
onSelect: async (option, _task, _rt) => {
|
|
3135
3119
|
const decision = mapOptionToDecision(option);
|
|
3136
3120
|
if (decision === "allow-always" && request.resolvedPath) {
|
|
3137
3121
|
await this.addToAllowlist(request.resolvedPath, request.agentId);
|
|
@@ -3146,7 +3130,7 @@ class ExecApprovalService extends Service {
|
|
|
3146
3130
|
}
|
|
3147
3131
|
}
|
|
3148
3132
|
},
|
|
3149
|
-
onTimeout: async (
|
|
3133
|
+
onTimeout: async (_task, _rt) => {
|
|
3150
3134
|
if (callbacks?.onTimeout) {
|
|
3151
3135
|
await callbacks.onTimeout();
|
|
3152
3136
|
} else if (callbacks?.onDenied) {
|
|
@@ -3207,9 +3191,6 @@ function mapOptionToDecision(option) {
|
|
|
3207
3191
|
return "allow-once";
|
|
3208
3192
|
case "allow-always":
|
|
3209
3193
|
return "allow-always";
|
|
3210
|
-
case "deny":
|
|
3211
|
-
case "cancel":
|
|
3212
|
-
case "ABORT":
|
|
3213
3194
|
default:
|
|
3214
3195
|
return "deny";
|
|
3215
3196
|
}
|
|
@@ -3377,7 +3358,6 @@ var DEFAULT_FORBIDDEN_COMMANDS = [
|
|
|
3377
3358
|
":(){:|:&};:"
|
|
3378
3359
|
];
|
|
3379
3360
|
function loadShellConfig() {
|
|
3380
|
-
const enabled = process.env.SHELL_ENABLED === "true";
|
|
3381
3361
|
const allowedDirectory = process.env.SHELL_ALLOWED_DIRECTORY || process.cwd();
|
|
3382
3362
|
const timeout = parseInt(process.env.SHELL_TIMEOUT || "30000", 10);
|
|
3383
3363
|
const maxOutputChars = parseInt(process.env.SHELL_MAX_OUTPUT_CHARS || "200000", 10);
|
|
@@ -3387,7 +3367,7 @@ function loadShellConfig() {
|
|
|
3387
3367
|
const customForbidden = process.env.SHELL_FORBIDDEN_COMMANDS ? process.env.SHELL_FORBIDDEN_COMMANDS.split(",").map((cmd) => cmd.trim()) : [];
|
|
3388
3368
|
const forbiddenCommands = [...new Set([...DEFAULT_FORBIDDEN_COMMANDS, ...customForbidden])];
|
|
3389
3369
|
const config = {
|
|
3390
|
-
enabled,
|
|
3370
|
+
enabled: true,
|
|
3391
3371
|
allowedDirectory,
|
|
3392
3372
|
timeout,
|
|
3393
3373
|
forbiddenCommands,
|
|
@@ -3401,23 +3381,18 @@ function loadShellConfig() {
|
|
|
3401
3381
|
const errorMessage = parseResult.error.issues?.[0]?.message || parseResult.error.toString();
|
|
3402
3382
|
throw new Error(`Shell plugin configuration error: ${errorMessage}`);
|
|
3403
3383
|
}
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
throw new Error(`SHELL_ALLOWED_DIRECTORY is not a directory: ${allowedDirectory}`);
|
|
3409
|
-
}
|
|
3410
|
-
config.allowedDirectory = path3.resolve(allowedDirectory);
|
|
3411
|
-
logger7.info(`Shell plugin enabled with allowed directory: ${config.allowedDirectory}, ` + `background: ${allowBackground}, timeout: ${timeout}ms`);
|
|
3412
|
-
} catch (error) {
|
|
3413
|
-
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
3414
|
-
throw new Error(`SHELL_ALLOWED_DIRECTORY does not exist: ${allowedDirectory}`);
|
|
3415
|
-
}
|
|
3416
|
-
throw error;
|
|
3384
|
+
try {
|
|
3385
|
+
const stats = fs3.statSync(allowedDirectory);
|
|
3386
|
+
if (!stats.isDirectory()) {
|
|
3387
|
+
throw new Error(`SHELL_ALLOWED_DIRECTORY is not a directory: ${allowedDirectory}`);
|
|
3417
3388
|
}
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3389
|
+
config.allowedDirectory = path3.resolve(allowedDirectory);
|
|
3390
|
+
logger7.info(`Shell plugin enabled with allowed directory: ${config.allowedDirectory}, ` + `background: ${allowBackground}, timeout: ${timeout}ms`);
|
|
3391
|
+
} catch (error) {
|
|
3392
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
3393
|
+
throw new Error(`SHELL_ALLOWED_DIRECTORY does not exist: ${allowedDirectory}`);
|
|
3394
|
+
}
|
|
3395
|
+
throw error;
|
|
3421
3396
|
}
|
|
3422
3397
|
return config;
|
|
3423
3398
|
}
|
|
@@ -4427,16 +4402,6 @@ class ShellService extends Service2 {
|
|
|
4427
4402
|
this.scopeKey = scopeKey;
|
|
4428
4403
|
}
|
|
4429
4404
|
async executeCommand(command, conversationId) {
|
|
4430
|
-
if (!this.shellConfig.enabled) {
|
|
4431
|
-
return {
|
|
4432
|
-
success: false,
|
|
4433
|
-
stdout: "",
|
|
4434
|
-
stderr: "Shell plugin is disabled. Set SHELL_ENABLED=true to enable.",
|
|
4435
|
-
exitCode: 1,
|
|
4436
|
-
error: "Shell plugin disabled",
|
|
4437
|
-
executedIn: this.currentDirectory
|
|
4438
|
-
};
|
|
4439
|
-
}
|
|
4440
4405
|
if (!command || typeof command !== "string") {
|
|
4441
4406
|
return {
|
|
4442
4407
|
success: false,
|
|
@@ -4447,6 +4412,42 @@ class ShellService extends Service2 {
|
|
|
4447
4412
|
executedIn: this.currentDirectory
|
|
4448
4413
|
};
|
|
4449
4414
|
}
|
|
4415
|
+
if (this.runtime && this.runtime.sandboxMode) {
|
|
4416
|
+
const hostApiUrl = this.runtime.getSetting("SANDBOX_HOST_API_URL") ?? "http://localhost:2138";
|
|
4417
|
+
const runtimeFetch = this.runtime.fetch ?? globalThis.fetch;
|
|
4418
|
+
logger9.info(`[shell:sandbox] routing exec to ${hostApiUrl}: ${command.substring(0, 100)}`);
|
|
4419
|
+
try {
|
|
4420
|
+
const response = await runtimeFetch(`${hostApiUrl}/api/sandbox/exec`, {
|
|
4421
|
+
method: "POST",
|
|
4422
|
+
headers: { "Content-Type": "application/json" },
|
|
4423
|
+
body: JSON.stringify({
|
|
4424
|
+
command,
|
|
4425
|
+
workdir: this.currentDirectory,
|
|
4426
|
+
timeoutMs: 30000
|
|
4427
|
+
})
|
|
4428
|
+
});
|
|
4429
|
+
const result2 = await response.json();
|
|
4430
|
+
logger9.info(`[shell:sandbox] exec completed: exit=${result2.exitCode} duration=${result2.durationMs}ms`);
|
|
4431
|
+
return {
|
|
4432
|
+
success: result2.exitCode === 0,
|
|
4433
|
+
stdout: result2.stdout,
|
|
4434
|
+
stderr: result2.stderr,
|
|
4435
|
+
exitCode: result2.exitCode,
|
|
4436
|
+
executedIn: this.currentDirectory
|
|
4437
|
+
};
|
|
4438
|
+
} catch (err) {
|
|
4439
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
4440
|
+
logger9.error(`[shell:sandbox] exec failed: ${errMsg}`);
|
|
4441
|
+
return {
|
|
4442
|
+
success: false,
|
|
4443
|
+
stdout: "",
|
|
4444
|
+
stderr: `Sandbox exec failed: ${errMsg}`,
|
|
4445
|
+
exitCode: 1,
|
|
4446
|
+
error: "Sandbox remote execution failed",
|
|
4447
|
+
executedIn: this.currentDirectory
|
|
4448
|
+
};
|
|
4449
|
+
}
|
|
4450
|
+
}
|
|
4450
4451
|
const trimmedCommand = command.trim();
|
|
4451
4452
|
if (!isSafeCommand(trimmedCommand)) {
|
|
4452
4453
|
return {
|
|
@@ -4487,15 +4488,6 @@ class ShellService extends Service2 {
|
|
|
4487
4488
|
return result;
|
|
4488
4489
|
}
|
|
4489
4490
|
async exec(command, options = {}) {
|
|
4490
|
-
if (!this.shellConfig.enabled) {
|
|
4491
|
-
return {
|
|
4492
|
-
status: "failed",
|
|
4493
|
-
exitCode: 1,
|
|
4494
|
-
durationMs: 0,
|
|
4495
|
-
aggregated: "Shell plugin is disabled. Set SHELL_ENABLED=true to enable.",
|
|
4496
|
-
reason: "Shell plugin disabled"
|
|
4497
|
-
};
|
|
4498
|
-
}
|
|
4499
4491
|
if (!command || typeof command !== "string") {
|
|
4500
4492
|
return {
|
|
4501
4493
|
status: "failed",
|
|
@@ -5603,4 +5595,4 @@ export {
|
|
|
5603
5595
|
BRACKETED_PASTE_END
|
|
5604
5596
|
};
|
|
5605
5597
|
|
|
5606
|
-
//# debugId=
|
|
5598
|
+
//# debugId=20C8338CDBDDBAFA64756E2164756E21
|