@vymalo/opencode-devtools 0.12.0 → 0.14.0
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/catalog.d.ts +7 -7
- package/dist/catalog.js +27 -26
- package/dist/catalog.js.map +1 -1
- package/dist/groups/codec.js +162 -135
- package/dist/groups/codec.js.map +1 -1
- package/dist/groups/convert.js +116 -89
- package/dist/groups/convert.js.map +1 -1
- package/dist/groups/crypto.js +247 -186
- package/dist/groups/crypto.js.map +1 -1
- package/dist/groups/datetime.js +265 -215
- package/dist/groups/datetime.js.map +1 -1
- package/dist/groups/http.d.ts +6 -6
- package/dist/groups/http.js +272 -248
- package/dist/groups/http.js.map +1 -1
- package/dist/groups/math.js +157 -127
- package/dist/groups/math.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib.js +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/logging.d.ts +6 -6
- package/dist/logging.js +59 -62
- package/dist/logging.js.map +1 -1
- package/dist/opencode.d.ts +4 -4
- package/dist/opencode.js +71 -75
- package/dist/opencode.js.map +1 -1
- package/dist/schema.d.ts +41 -41
- package/dist/schema.js +43 -48
- package/dist/schema.js.map +1 -1
- package/dist/tool-spec.d.ts +27 -27
- package/dist/tool-spec.js +24 -16
- package/dist/tool-spec.js.map +1 -1
- package/dist/tools.d.ts +8 -8
- package/dist/tools.js +80 -73
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +27 -27
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/catalog.d.ts
CHANGED
|
@@ -4,15 +4,15 @@ export type { ToolGroup } from "./schema.js";
|
|
|
4
4
|
export type { NeutralResult, ToolContext, ToolSpec } from "./tool-spec.js";
|
|
5
5
|
export declare const TOOL_GROUPS: readonly ToolGroup[];
|
|
6
6
|
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
* Groups registered when the operator doesn't specify. The five deterministic,
|
|
8
|
+
* offline groups are on; `http` performs network egress and is opt-in.
|
|
9
|
+
*/
|
|
10
10
|
export declare const DEFAULT_GROUPS: readonly ToolGroup[];
|
|
11
11
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
* The single source of truth for the devtools tool surface, shared by the
|
|
13
|
+
* OpenCode plugin and the MCP server. Filter by `group` to gate what an agent
|
|
14
|
+
* sees.
|
|
15
|
+
*/
|
|
16
16
|
export declare const DEVTOOLS_TOOLS: readonly ToolSpec[];
|
|
17
17
|
/** The catalog tools enabled for the given groups. */
|
|
18
18
|
export declare function selectTools(groups: readonly ToolGroup[]): ToolSpec[];
|
package/dist/catalog.js
CHANGED
|
@@ -5,40 +5,41 @@ import { DATETIME_TOOLS } from "./groups/datetime.js";
|
|
|
5
5
|
import { HTTP_TOOLS } from "./groups/http.js";
|
|
6
6
|
import { MATH_TOOLS } from "./groups/math.js";
|
|
7
7
|
export const TOOL_GROUPS = [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
"math",
|
|
9
|
+
"codec",
|
|
10
|
+
"crypto",
|
|
11
|
+
"datetime",
|
|
12
|
+
"convert",
|
|
13
|
+
"http"
|
|
14
14
|
];
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
* Groups registered when the operator doesn't specify. The five deterministic,
|
|
17
|
+
* offline groups are on; `http` performs network egress and is opt-in.
|
|
18
|
+
*/
|
|
19
19
|
export const DEFAULT_GROUPS = [
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
"math",
|
|
21
|
+
"codec",
|
|
22
|
+
"crypto",
|
|
23
|
+
"datetime",
|
|
24
|
+
"convert"
|
|
25
25
|
];
|
|
26
26
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
* The single source of truth for the devtools tool surface, shared by the
|
|
28
|
+
* OpenCode plugin and the MCP server. Filter by `group` to gate what an agent
|
|
29
|
+
* sees.
|
|
30
|
+
*/
|
|
31
31
|
export const DEVTOOLS_TOOLS = [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
...MATH_TOOLS,
|
|
33
|
+
...CODEC_TOOLS,
|
|
34
|
+
...CRYPTO_TOOLS,
|
|
35
|
+
...DATETIME_TOOLS,
|
|
36
|
+
...CONVERT_TOOLS,
|
|
37
|
+
...HTTP_TOOLS
|
|
38
38
|
];
|
|
39
39
|
/** The catalog tools enabled for the given groups. */
|
|
40
40
|
export function selectTools(groups) {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const enabled = new Set(groups);
|
|
42
|
+
return DEVTOOLS_TOOLS.filter((spec) => enabled.has(spec.group));
|
|
43
43
|
}
|
|
44
|
+
|
|
44
45
|
//# sourceMappingURL=catalog.js.map
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAAA,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAO3B,OAAO,MAAM,cAAoC;CAC/C;CACA;CACA;CACA;CACA;CACA;AACF;;;;;AAMA,OAAO,MAAM,iBAAuC;CAClD;CACA;CACA;CACA;CACA;AACF;;;;;;AAOA,OAAO,MAAM,iBAAsC;CACjD,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL;;AAGA,OAAO,SAAS,YAAY,QAA0C;CACpE,MAAM,UAAU,IAAI,IAAI,MAAM;CAC9B,OAAO,eAAe,QAAQ,SAAS,QAAQ,IAAI,KAAK,KAAK,CAAC;AAChE","names":[],"sources":["../src/catalog.ts"],"version":3,"file":"catalog.js","sourceRoot":""}
|
package/dist/groups/codec.js
CHANGED
|
@@ -1,141 +1,168 @@
|
|
|
1
1
|
import { deflateRawSync, gunzipSync, gzipSync, inflateRawSync } from "node:zlib";
|
|
2
2
|
import { json, reqString, text } from "../tool-spec.js";
|
|
3
3
|
// Cap decompressed output so a small gzip/deflate "bomb" can't exhaust memory.
|
|
4
|
-
const MAX_DECOMPRESSED_BYTES =
|
|
4
|
+
const MAX_DECOMPRESSED_BYTES = 5e7;
|
|
5
5
|
export const CODEC_TOOLS = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
6
|
+
{
|
|
7
|
+
name: "codec_base64",
|
|
8
|
+
group: "codec",
|
|
9
|
+
description: "Base64 encode or decode text. Supports standard and URL-safe (base64url) alphabets.",
|
|
10
|
+
input: {
|
|
11
|
+
mode: {
|
|
12
|
+
type: "string",
|
|
13
|
+
enum: ["encode", "decode"],
|
|
14
|
+
description: "Direction."
|
|
15
|
+
},
|
|
16
|
+
input: {
|
|
17
|
+
type: "string",
|
|
18
|
+
description: "Text to encode, or base64 to decode."
|
|
19
|
+
},
|
|
20
|
+
urlSafe: {
|
|
21
|
+
type: "boolean",
|
|
22
|
+
optional: true,
|
|
23
|
+
description: "Use the URL-safe base64url alphabet (default false)."
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
handler: (args) => {
|
|
27
|
+
const mode = reqString(args, "mode");
|
|
28
|
+
const input = reqString(args, "input");
|
|
29
|
+
const urlSafe = args.urlSafe === true;
|
|
30
|
+
const encoding = urlSafe ? "base64url" : "base64";
|
|
31
|
+
if (mode === "encode") {
|
|
32
|
+
return text(Buffer.from(input, "utf8").toString(encoding));
|
|
33
|
+
}
|
|
34
|
+
return text(Buffer.from(input, encoding).toString("utf8"));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "codec_hex",
|
|
39
|
+
group: "codec",
|
|
40
|
+
description: "Hex (base16) encode or decode text.",
|
|
41
|
+
input: {
|
|
42
|
+
mode: {
|
|
43
|
+
type: "string",
|
|
44
|
+
enum: ["encode", "decode"],
|
|
45
|
+
description: "Direction."
|
|
46
|
+
},
|
|
47
|
+
input: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Text to encode, or hex to decode."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
handler: (args) => {
|
|
53
|
+
const mode = reqString(args, "mode");
|
|
54
|
+
const input = reqString(args, "input");
|
|
55
|
+
if (mode === "encode") {
|
|
56
|
+
return text(Buffer.from(input, "utf8").toString("hex"));
|
|
57
|
+
}
|
|
58
|
+
// Buffer.from(…, "hex") silently truncates at the first bad nibble — reject
|
|
59
|
+
// odd-length or non-hex input instead of returning a corrupted result.
|
|
60
|
+
const cleaned = input.replace(/\s+/g, "");
|
|
61
|
+
if (cleaned.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(cleaned)) {
|
|
62
|
+
throw new Error("invalid hex: expected an even number of [0-9a-f] digits");
|
|
63
|
+
}
|
|
64
|
+
return text(Buffer.from(cleaned, "hex").toString("utf8"));
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "codec_url",
|
|
69
|
+
group: "codec",
|
|
70
|
+
description: "URL-encode or decode a string (percent-encoding). Use `component` for a query value, otherwise the whole URL is treated leniently.",
|
|
71
|
+
input: {
|
|
72
|
+
mode: {
|
|
73
|
+
type: "string",
|
|
74
|
+
enum: ["encode", "decode"],
|
|
75
|
+
description: "Direction."
|
|
76
|
+
},
|
|
77
|
+
input: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Text to encode or decode."
|
|
80
|
+
},
|
|
81
|
+
component: {
|
|
82
|
+
type: "boolean",
|
|
83
|
+
optional: true,
|
|
84
|
+
description: "Encode as a single URI component (default true)."
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
handler: (args) => {
|
|
88
|
+
const mode = reqString(args, "mode");
|
|
89
|
+
const input = reqString(args, "input");
|
|
90
|
+
const component = args.component !== false;
|
|
91
|
+
if (mode === "encode") {
|
|
92
|
+
return text(component ? encodeURIComponent(input) : encodeURI(input));
|
|
93
|
+
}
|
|
94
|
+
return text(component ? decodeURIComponent(input) : decodeURI(input));
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "codec_jwt_decode",
|
|
99
|
+
group: "codec",
|
|
100
|
+
description: "Decode a JWT into its header and payload claims WITHOUT verifying the signature. The result is explicitly unverified — never trust it for auth decisions.",
|
|
101
|
+
input: { token: {
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "The compact JWT (header.payload.signature)."
|
|
104
|
+
} },
|
|
105
|
+
handler: (args) => {
|
|
106
|
+
const token = reqString(args, "token").trim();
|
|
107
|
+
const parts = token.split(".");
|
|
108
|
+
if (parts.length < 2) {
|
|
109
|
+
throw new Error("not a JWT: expected at least header.payload");
|
|
110
|
+
}
|
|
111
|
+
const decode = (segment) => {
|
|
112
|
+
const decoded = Buffer.from(segment, "base64url").toString("utf8");
|
|
113
|
+
return JSON.parse(decoded);
|
|
114
|
+
};
|
|
115
|
+
const header = decode(parts[0]);
|
|
116
|
+
const payload = decode(parts[1]);
|
|
117
|
+
return json({
|
|
118
|
+
header,
|
|
119
|
+
payload,
|
|
120
|
+
signaturePresent: parts.length >= 3 && parts[2].length > 0,
|
|
121
|
+
verified: false
|
|
122
|
+
}, `Decoded JWT (UNVERIFIED):\nheader: ${JSON.stringify(header)}\npayload: ${JSON.stringify(payload, null, 2)}`);
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "codec_gzip",
|
|
127
|
+
group: "codec",
|
|
128
|
+
description: "Compress or decompress text with gzip or raw deflate. Compressed output is returned as base64; to decompress, pass base64 input.",
|
|
129
|
+
input: {
|
|
130
|
+
mode: {
|
|
131
|
+
type: "string",
|
|
132
|
+
enum: ["compress", "decompress"],
|
|
133
|
+
description: "Direction."
|
|
134
|
+
},
|
|
135
|
+
input: {
|
|
136
|
+
type: "string",
|
|
137
|
+
description: "Text to compress, or base64 of compressed bytes to decompress."
|
|
138
|
+
},
|
|
139
|
+
algorithm: {
|
|
140
|
+
type: "string",
|
|
141
|
+
optional: true,
|
|
142
|
+
enum: ["gzip", "deflate"],
|
|
143
|
+
description: "Compression algorithm (default gzip)."
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
handler: (args) => {
|
|
147
|
+
const mode = reqString(args, "mode");
|
|
148
|
+
const input = reqString(args, "input");
|
|
149
|
+
const algorithm = args.algorithm === "deflate" ? "deflate" : "gzip";
|
|
150
|
+
if (mode === "compress") {
|
|
151
|
+
const raw = Buffer.from(input, "utf8");
|
|
152
|
+
const out = algorithm === "gzip" ? gzipSync(raw) : deflateRawSync(raw);
|
|
153
|
+
return json({
|
|
154
|
+
algorithm,
|
|
155
|
+
base64: out.toString("base64"),
|
|
156
|
+
originalBytes: raw.length,
|
|
157
|
+
compressedBytes: out.length
|
|
158
|
+
}, out.toString("base64"));
|
|
159
|
+
}
|
|
160
|
+
const compressed = Buffer.from(input, "base64");
|
|
161
|
+
const opts = { maxOutputLength: MAX_DECOMPRESSED_BYTES };
|
|
162
|
+
const out = algorithm === "gzip" ? gunzipSync(compressed, opts) : inflateRawSync(compressed, opts);
|
|
163
|
+
return text(out.toString("utf8"));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
140
166
|
];
|
|
167
|
+
|
|
141
168
|
//# sourceMappingURL=codec.js.map
|
package/dist/groups/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"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","names":[],"sources":["../../src/groups/codec.ts"],"version":3,"file":"codec.js","sourceRoot":""}
|