@easynet/agent-tool-buildin 0.0.73 → 0.0.74
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/core-tools-manifest.json +130 -0
- package/dist/src/iterm/itermRunCommandInSession.d.ts +6 -0
- package/dist/src/iterm/itermRunCommandInSession.d.ts.map +1 -1
- package/dist/src/iterm/itermRunCommandInSession.js +95 -5
- package/dist/src/iterm/itermRunCommandInSession.js.map +1 -1
- package/dist/src/iterm/itermSendText.d.ts.map +1 -1
- package/dist/src/iterm/itermSendText.js +4 -3
- package/dist/src/iterm/itermSendText.js.map +1 -1
- package/package.json +3 -2
- package/dist/example/basic-usage.d.ts +0 -2
- package/dist/example/basic-usage.d.ts.map +0 -1
- package/dist/example/basic-usage.js +0 -15
- package/dist/example/basic-usage.js.map +0 -1
|
@@ -999,6 +999,136 @@
|
|
|
999
999
|
"exportName": "itermSendText",
|
|
1000
1000
|
"sideEffect": "local_write"
|
|
1001
1001
|
},
|
|
1002
|
+
{
|
|
1003
|
+
"name": "itermRunCommandInSession",
|
|
1004
|
+
"description": "Run a shell command in an iTerm session and capture bounded terminal output.",
|
|
1005
|
+
"inputSchema": {
|
|
1006
|
+
"type": "object",
|
|
1007
|
+
"properties": {
|
|
1008
|
+
"command": {
|
|
1009
|
+
"type": "string"
|
|
1010
|
+
},
|
|
1011
|
+
"windowId": {
|
|
1012
|
+
"type": "number"
|
|
1013
|
+
},
|
|
1014
|
+
"tabIndex": {
|
|
1015
|
+
"type": "number"
|
|
1016
|
+
},
|
|
1017
|
+
"sessionId": {
|
|
1018
|
+
"type": "string"
|
|
1019
|
+
},
|
|
1020
|
+
"waitMs": {
|
|
1021
|
+
"type": "number"
|
|
1022
|
+
},
|
|
1023
|
+
"maxOutputLines": {
|
|
1024
|
+
"type": "number"
|
|
1025
|
+
},
|
|
1026
|
+
"outputOffsetLines": {
|
|
1027
|
+
"type": "number"
|
|
1028
|
+
}
|
|
1029
|
+
},
|
|
1030
|
+
"required": [
|
|
1031
|
+
"command"
|
|
1032
|
+
]
|
|
1033
|
+
},
|
|
1034
|
+
"outputSchema": {
|
|
1035
|
+
"type": "object",
|
|
1036
|
+
"properties": {
|
|
1037
|
+
"result": {
|
|
1038
|
+
"type": "object",
|
|
1039
|
+
"properties": {
|
|
1040
|
+
"command": {
|
|
1041
|
+
"type": "string"
|
|
1042
|
+
},
|
|
1043
|
+
"sessionId": {
|
|
1044
|
+
"type": "string"
|
|
1045
|
+
},
|
|
1046
|
+
"output": {
|
|
1047
|
+
"type": "string"
|
|
1048
|
+
},
|
|
1049
|
+
"totalBufferLines": {
|
|
1050
|
+
"type": "number"
|
|
1051
|
+
},
|
|
1052
|
+
"returnedLineCount": {
|
|
1053
|
+
"type": "number"
|
|
1054
|
+
},
|
|
1055
|
+
"outputOffsetLines": {
|
|
1056
|
+
"type": "number"
|
|
1057
|
+
},
|
|
1058
|
+
"isOutputTruncated": {
|
|
1059
|
+
"type": "boolean"
|
|
1060
|
+
},
|
|
1061
|
+
"readError": {
|
|
1062
|
+
"type": "string"
|
|
1063
|
+
},
|
|
1064
|
+
"text": {
|
|
1065
|
+
"type": "string"
|
|
1066
|
+
},
|
|
1067
|
+
"newline": {
|
|
1068
|
+
"type": "boolean"
|
|
1069
|
+
},
|
|
1070
|
+
"windowId": {
|
|
1071
|
+
"type": "number"
|
|
1072
|
+
},
|
|
1073
|
+
"tabIndex": {
|
|
1074
|
+
"type": "number"
|
|
1075
|
+
},
|
|
1076
|
+
"sessionUniqueId": {
|
|
1077
|
+
"type": "string"
|
|
1078
|
+
}
|
|
1079
|
+
},
|
|
1080
|
+
"required": [
|
|
1081
|
+
"command",
|
|
1082
|
+
"sessionId",
|
|
1083
|
+
"output",
|
|
1084
|
+
"totalBufferLines",
|
|
1085
|
+
"returnedLineCount",
|
|
1086
|
+
"outputOffsetLines",
|
|
1087
|
+
"isOutputTruncated",
|
|
1088
|
+
"readError",
|
|
1089
|
+
"text",
|
|
1090
|
+
"newline",
|
|
1091
|
+
"windowId",
|
|
1092
|
+
"tabIndex",
|
|
1093
|
+
"sessionUniqueId"
|
|
1094
|
+
]
|
|
1095
|
+
},
|
|
1096
|
+
"evidence": {
|
|
1097
|
+
"type": "array",
|
|
1098
|
+
"items": {
|
|
1099
|
+
"type": "object",
|
|
1100
|
+
"properties": {
|
|
1101
|
+
"type": {
|
|
1102
|
+
"type": "string"
|
|
1103
|
+
},
|
|
1104
|
+
"ref": {
|
|
1105
|
+
"type": "string"
|
|
1106
|
+
},
|
|
1107
|
+
"summary": {
|
|
1108
|
+
"type": "string"
|
|
1109
|
+
},
|
|
1110
|
+
"createdAt": {
|
|
1111
|
+
"type": "string"
|
|
1112
|
+
}
|
|
1113
|
+
},
|
|
1114
|
+
"required": [
|
|
1115
|
+
"type",
|
|
1116
|
+
"ref",
|
|
1117
|
+
"summary",
|
|
1118
|
+
"createdAt"
|
|
1119
|
+
]
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
},
|
|
1123
|
+
"required": [
|
|
1124
|
+
"result",
|
|
1125
|
+
"evidence"
|
|
1126
|
+
]
|
|
1127
|
+
},
|
|
1128
|
+
"sourcePath": "src/iterm/itermRunCommandInSession",
|
|
1129
|
+
"exportName": "itermRunCommandInSession",
|
|
1130
|
+
"sideEffect": "local_write"
|
|
1131
|
+
},
|
|
1002
1132
|
{
|
|
1003
1133
|
"name": "itermGetSessionInfo",
|
|
1004
1134
|
"description": "Get detailed info for a specific iTerm session (panel) by id / uniqueId / tty.",
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run a shell command in an iTerm session and capture bounded terminal output.
|
|
3
|
+
* @tool
|
|
4
|
+
* @effect local_write
|
|
5
|
+
*/
|
|
1
6
|
export declare function itermRunCommandInSession(args: {
|
|
2
7
|
command: string;
|
|
3
8
|
windowId?: number;
|
|
@@ -15,6 +20,7 @@ export declare function itermRunCommandInSession(args: {
|
|
|
15
20
|
returnedLineCount: number;
|
|
16
21
|
outputOffsetLines: number;
|
|
17
22
|
isOutputTruncated: boolean;
|
|
23
|
+
readError: string;
|
|
18
24
|
text: string;
|
|
19
25
|
newline: boolean;
|
|
20
26
|
windowId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itermRunCommandInSession.d.ts","sourceRoot":"","sources":["../../../src/iterm/itermRunCommandInSession.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"itermRunCommandInSession.d.ts","sourceRoot":"","sources":["../../../src/iterm/itermRunCommandInSession.ts"],"names":[],"mappings":"AAqJA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;;;;;;;;;;;;;;;;;;;;;;GAsEA"}
|
|
@@ -20,8 +20,9 @@ async function pickTargetSession(preferredSessionId) {
|
|
|
20
20
|
try {
|
|
21
21
|
const { result } = await itermListCurrentWindowSessions();
|
|
22
22
|
const sessions = result.sessions ?? [];
|
|
23
|
-
const nonCurrent = sessions.find((s) => !s.isCurrentSession && s.sessionId);
|
|
24
|
-
|
|
23
|
+
const nonCurrent = sessions.find((s) => !s.isCurrentSession && (s.sessionUniqueId || s.sessionId));
|
|
24
|
+
const preferred = nonCurrent?.sessionUniqueId ?? nonCurrent?.sessionId;
|
|
25
|
+
return typeof preferred === "string" && preferred.trim() ? preferred : undefined;
|
|
25
26
|
}
|
|
26
27
|
catch {
|
|
27
28
|
return undefined;
|
|
@@ -50,33 +51,121 @@ async function captureStableOutput(args) {
|
|
|
50
51
|
isOutputTruncated: startInclusive > 0 || endExclusive < totalBufferLines,
|
|
51
52
|
};
|
|
52
53
|
}
|
|
54
|
+
function createCommandMarkers() {
|
|
55
|
+
const nonce = `${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
56
|
+
return {
|
|
57
|
+
begin: `__ITB_BEGIN_${nonce}__`,
|
|
58
|
+
endPrefix: `__ITB_END_${nonce}__:`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function quoteSingleForShell(value) {
|
|
62
|
+
return `'${value.replaceAll("'", `'\\''`)}'`;
|
|
63
|
+
}
|
|
64
|
+
function wrapCommand(command, begin, endPrefix) {
|
|
65
|
+
const shellCommand = quoteSingleForShell(command);
|
|
66
|
+
return `echo ${JSON.stringify(begin)}; sh -lc ${shellCommand}; __itb_ec=$?; echo ${JSON.stringify(endPrefix)}$__itb_ec`;
|
|
67
|
+
}
|
|
68
|
+
function extractMarkedOutput(buffer, begin, endPrefix) {
|
|
69
|
+
const lines = buffer.split("\n");
|
|
70
|
+
let beginIndex = -1;
|
|
71
|
+
let endIndex = -1;
|
|
72
|
+
let exitCode = null;
|
|
73
|
+
for (let i = lines.length - 1; i >= 0; i -= 1) {
|
|
74
|
+
const line = lines[i] ?? "";
|
|
75
|
+
if (endIndex < 0 && line.includes(endPrefix)) {
|
|
76
|
+
endIndex = i;
|
|
77
|
+
const idx = line.indexOf(endPrefix);
|
|
78
|
+
const raw = idx >= 0 ? line.slice(idx + endPrefix.length).trim() : "";
|
|
79
|
+
const parsed = Number.parseInt(raw, 10);
|
|
80
|
+
exitCode = Number.isFinite(parsed) ? parsed : null;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (endIndex >= 0 && line.includes(begin)) {
|
|
84
|
+
beginIndex = i;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (beginIndex < 0 || endIndex < 0 || endIndex <= beginIndex)
|
|
89
|
+
return null;
|
|
90
|
+
return {
|
|
91
|
+
output: lines.slice(beginIndex + 1, endIndex).join("\n").trimEnd(),
|
|
92
|
+
exitCode,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async function captureWithRetry(args) {
|
|
96
|
+
const delays = [0, 700, 1200];
|
|
97
|
+
let last = {
|
|
98
|
+
output: "",
|
|
99
|
+
totalBufferLines: 0,
|
|
100
|
+
returnedLineCount: 0,
|
|
101
|
+
isOutputTruncated: false,
|
|
102
|
+
};
|
|
103
|
+
for (const wait of delays) {
|
|
104
|
+
if (wait > 0)
|
|
105
|
+
await sleep(wait);
|
|
106
|
+
last = await captureStableOutput(args);
|
|
107
|
+
if (args.beginMarker && args.endMarkerPrefix) {
|
|
108
|
+
const extracted = extractMarkedOutput(last.output, args.beginMarker, args.endMarkerPrefix);
|
|
109
|
+
if (extracted) {
|
|
110
|
+
return {
|
|
111
|
+
...last,
|
|
112
|
+
output: extracted.output,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (last.output.trim().length > 0)
|
|
117
|
+
return last;
|
|
118
|
+
}
|
|
119
|
+
return last;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Run a shell command in an iTerm session and capture bounded terminal output.
|
|
123
|
+
* @tool
|
|
124
|
+
* @effect local_write
|
|
125
|
+
*/
|
|
53
126
|
export async function itermRunCommandInSession(args) {
|
|
54
127
|
const cmd = validateCommand(args.command);
|
|
128
|
+
const markers = createCommandMarkers();
|
|
129
|
+
const wrappedCommand = wrapCommand(cmd, markers.begin, markers.endPrefix);
|
|
55
130
|
const targetSessionId = await pickTargetSession(args.sessionId);
|
|
56
131
|
const targetArgs = { windowId: args.windowId, tabIndex: args.tabIndex, sessionId: targetSessionId };
|
|
57
|
-
const { result, evidence } = await itermSendText({ text:
|
|
132
|
+
const { result, evidence } = await itermSendText({ text: wrappedCommand, ...targetArgs, newline: true });
|
|
58
133
|
await sleep(args.waitMs ?? DEFAULT_WAIT_MS);
|
|
59
134
|
const maxOutputLines = Math.max(1, Math.floor(args.maxOutputLines ?? DEFAULT_MAX_OUTPUT_LINES));
|
|
60
135
|
const outputOffsetLines = Math.max(0, Math.floor(args.outputOffsetLines ?? 0));
|
|
61
|
-
const resolvedSessionId = targetSessionId ?? result.sessionId;
|
|
136
|
+
const resolvedSessionId = targetSessionId ?? result.sessionUniqueId ?? result.sessionId;
|
|
62
137
|
let output = "";
|
|
63
138
|
let totalBufferLines = 0;
|
|
64
139
|
let returnedLineCount = 0;
|
|
65
140
|
let isOutputTruncated = false;
|
|
141
|
+
let readError = "";
|
|
66
142
|
try {
|
|
67
|
-
|
|
143
|
+
let captured = await captureWithRetry({
|
|
68
144
|
windowId: args.windowId,
|
|
69
145
|
tabIndex: args.tabIndex,
|
|
70
146
|
sessionId: resolvedSessionId,
|
|
71
147
|
maxOutputLines,
|
|
72
148
|
outputOffsetLines,
|
|
149
|
+
beginMarker: markers.begin,
|
|
150
|
+
endMarkerPrefix: markers.endPrefix,
|
|
73
151
|
});
|
|
152
|
+
if (!captured.output.trim()) {
|
|
153
|
+
captured = await captureWithRetry({
|
|
154
|
+
windowId: args.windowId,
|
|
155
|
+
tabIndex: args.tabIndex,
|
|
156
|
+
maxOutputLines,
|
|
157
|
+
outputOffsetLines,
|
|
158
|
+
beginMarker: markers.begin,
|
|
159
|
+
endMarkerPrefix: markers.endPrefix,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
74
162
|
output = captured.output;
|
|
75
163
|
totalBufferLines = captured.totalBufferLines;
|
|
76
164
|
returnedLineCount = captured.returnedLineCount;
|
|
77
165
|
isOutputTruncated = captured.isOutputTruncated;
|
|
78
166
|
}
|
|
79
167
|
catch (err) {
|
|
168
|
+
readError = err instanceof Error ? err.message : String(err);
|
|
80
169
|
console.error("[itermRunCommandInSession] readSessionContents failed:", err);
|
|
81
170
|
}
|
|
82
171
|
return {
|
|
@@ -89,6 +178,7 @@ export async function itermRunCommandInSession(args) {
|
|
|
89
178
|
returnedLineCount,
|
|
90
179
|
outputOffsetLines,
|
|
91
180
|
isOutputTruncated,
|
|
181
|
+
readError,
|
|
92
182
|
},
|
|
93
183
|
evidence: [
|
|
94
184
|
...(evidence ?? []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itermRunCommandInSession.js","sourceRoot":"","sources":["../../../src/iterm/itermRunCommandInSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,iBAAiB,CAAC,eAAe,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,kBAA2B;IAC1D,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,8BAA8B,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"itermRunCommandInSession.js","sourceRoot":"","sources":["../../../src/iterm/itermRunCommandInSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itermSendText.d.ts","sourceRoot":"","sources":["../../../src/iterm/itermSendText.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"itermSendText.d.ts","sourceRoot":"","sources":["../../../src/iterm/itermSendText.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;;;;;;;;;;;GAiEA"}
|
|
@@ -23,9 +23,10 @@ export async function itermSendText(args) {
|
|
|
23
23
|
try {
|
|
24
24
|
const { result } = await itermListCurrentWindowSessions();
|
|
25
25
|
const sessions = result.sessions ?? [];
|
|
26
|
-
const nonCurrentSession = sessions.find((s) => !s.isCurrentSession && s.sessionId);
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const nonCurrentSession = sessions.find((s) => !s.isCurrentSession && (s.sessionUniqueId || s.sessionId));
|
|
27
|
+
const preferred = nonCurrentSession?.sessionUniqueId ?? nonCurrentSession?.sessionId;
|
|
28
|
+
if (typeof preferred === "string" && preferred.trim()) {
|
|
29
|
+
targetSessionId = preferred;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itermSendText.js","sourceRoot":"","sources":["../../../src/iterm/itermSendText.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAMnC;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAErC,oFAAoF;IACpF,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,8BAA8B,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CACrC,CAAC,
|
|
1
|
+
{"version":3,"file":"itermSendText.js","sourceRoot":"","sources":["../../../src/iterm/itermSendText.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAMnC;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAErC,oFAAoF;IACpF,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,8BAA8B,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CACrC,CAAC,CAA+E,EAAE,EAAE,CAClF,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,CAC5D,CAAC;YACF,MAAM,SAAS,GAAG,iBAAiB,EAAE,eAAe,IAAI,iBAAiB,EAAE,SAAS,CAAC;YACrF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtD,eAAe,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAEnD,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,GAAG,oBAAoB,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,eAAe;SAC3B,CAAC;QACF,oCAAoC,sBAAsB,CAAC,IAAI,CAAC,GAAG,aAAa,EAAE;QAClF,GAAG,iBAAiB,CAAC;YACnB,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,eAAe;SAC5B,CAAC;QACF,UAAU;KACX,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO;QACL,MAAM,EAAE;YACN,GAAG,MAAM;YACT,IAAI;YACJ,OAAO;SACR;QACD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,eAAe;gBACpB,OAAO,EAAE,QAAQ,IAAI,CAAC,MAAM,oBAAoB,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,GAAG,eAAe,IAAI,eAAe,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1L,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@easynet/agent-tool-buildin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.74",
|
|
4
4
|
"description": "Tools extension for @easynet/agent-tool: FS, HTTP, util, security (sandbox, SSRF). Same contract as any other extension.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"test:iterm-integration": "vitest run test/integration/itermTools.integration.test.ts",
|
|
32
32
|
"test:macos-integration": "vitest run test/integration/macosTools.integration.test.ts",
|
|
33
33
|
"test:macos-integration:write": "vitest run test/integration/macosTools.integration.test.ts",
|
|
34
|
-
"typecheck": "tsc --noEmit"
|
|
34
|
+
"typecheck": "tsc -p tsconfig.build.json --noEmit"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"node-html-parser": "^6.1.13"
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@easynet/agent-tool": "*",
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
44
45
|
"@semantic-release/git": "^10.0.1",
|
|
45
46
|
"@semantic-release/npm": "^12.0.0",
|
|
46
47
|
"@types/jmespath": "^0.15.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["../../example/basic-usage.ts"],"names":[],"mappings":""}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ToolRegistry } from "@easynet/agent-tool/runtime";
|
|
2
|
-
import { register, getExtensionContext, runWithExtensionContext, } from "@easynet/agent-tool-buildin";
|
|
3
|
-
import * as ItermTools from "@easynet/agent-tool-buildin/iterm";
|
|
4
|
-
function main() {
|
|
5
|
-
// 1) Create runtime registry
|
|
6
|
-
const registry = new ToolRegistry();
|
|
7
|
-
register(registry);
|
|
8
|
-
// 2) Use extension context helpers
|
|
9
|
-
const ctx = getExtensionContext();
|
|
10
|
-
void runWithExtensionContext(ctx, async () => undefined);
|
|
11
|
-
// 3) Print minimal result
|
|
12
|
-
console.log(registry.list().length, Object.keys(ItermTools).length);
|
|
13
|
-
}
|
|
14
|
-
main();
|
|
15
|
-
//# sourceMappingURL=basic-usage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-usage.js","sourceRoot":"","sources":["../../example/basic-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAEhE,SAAS,IAAI;IACX,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnB,mCAAmC;IACnC,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;IAClC,KAAK,uBAAuB,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;IAEzD,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,IAAI,EAAE,CAAC"}
|