toolcraft 0.0.550 → 0.0.552

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/composition.json CHANGED
@@ -98,7 +98,7 @@
98
98
  },
99
99
  {
100
100
  "name": "tiny-http-mcp-server",
101
- "version": "0.1.97",
101
+ "version": "0.1.98",
102
102
  "license": "MIT"
103
103
  },
104
104
  {
@@ -113,7 +113,7 @@
113
113
  },
114
114
  {
115
115
  "name": "toolcraft",
116
- "version": "0.0.550",
116
+ "version": "0.0.552",
117
117
  "license": "MIT"
118
118
  },
119
119
  {
@@ -123,7 +123,7 @@
123
123
  },
124
124
  {
125
125
  "name": "toolcraft-schema",
126
- "version": "0.0.550",
126
+ "version": "0.0.552",
127
127
  "license": "MIT"
128
128
  },
129
129
  {
@@ -98,7 +98,7 @@
98
98
  },
99
99
  {
100
100
  "name": "tiny-http-mcp-server",
101
- "version": "0.1.97",
101
+ "version": "0.1.98",
102
102
  "license": "MIT"
103
103
  },
104
104
  {
@@ -113,7 +113,7 @@
113
113
  },
114
114
  {
115
115
  "name": "toolcraft",
116
- "version": "0.0.550",
116
+ "version": "0.0.552",
117
117
  "license": "MIT"
118
118
  },
119
119
  {
@@ -123,7 +123,7 @@
123
123
  },
124
124
  {
125
125
  "name": "toolcraft-schema",
126
- "version": "0.0.550",
126
+ "version": "0.0.552",
127
127
  "license": "MIT"
128
128
  },
129
129
  {
@@ -18,7 +18,7 @@
18
18
  },
19
19
  {
20
20
  "name": "tiny-http-mcp-server",
21
- "version": "0.1.97",
21
+ "version": "0.1.98",
22
22
  "license": "MIT"
23
23
  },
24
24
  {
@@ -226,13 +226,13 @@ original host receiver. The parser accepts
226
226
  `token_type`, `scope`, `expires_in` (seconds), `expires_at` (epoch seconds), and
227
227
  `expiresAt` (epoch milliseconds). Numeric absolute expiry wins over relative
228
228
  lifetime; the options timestamp wins over response timestamps. The optional
229
- `now` clock anchors a new import. JSON is bounded to 64 KiB/64 levels; malformed
229
+ `now` clock anchors a new import. JSON has no implicit byte or depth ceiling; malformed
230
230
  credentials, scope, timing, accessors and non-JSON metadata are rejected without
231
231
  quoting the input. The parser makes no network or storage requests.
232
232
  For named native persistence, `createResourceBoundOAuthStores(authStore,
233
233
  namespace, identity).importSession(session, { signal, timeoutMs })` explicitly
234
234
  replaces the bound grant and original client in one locked document. It takes
235
- an owned, bounded session snapshot before waiting; validates resource/issuer
235
+ an owned session snapshot before waiting; validates resource/issuer
236
236
  binding; marks full registrations as caller-owned; and retires previous clients.
237
237
  Its durable marker suppresses stale automatic environment imports after tokens
238
238
  are cleared. Like reset, explicit import can recover a corrupt old document
@@ -243,8 +243,8 @@ with `parseOAuthClientRegistration`). Dynamic clients infer their original ID
243
243
  and secret from that response and reuse it without registering another app.
244
244
  Explicit ID/secret values must agree with the imported response. Sessions and
245
245
  native registration stores retain arrays, issuance/expiry timestamps and JSON
246
- provider metadata. Registration input is copied, bounded to 64 KiB and 64
247
- levels, and rejects invalid standard field types and non-JSON extensions.
246
+ provider metadata. Registration input is copied without an implicit byte or depth
247
+ ceiling and rejects invalid standard field types and non-JSON extensions.
248
248
  An optional registration `issuer` must match discovery and the persisted
249
249
  authorization server exactly. Contradictory metadata fails without activating
250
250
  or redeeming the grant. `client_secret_expires_at` uses Unix epoch seconds;
@@ -1,5 +1,5 @@
1
1
  import type { OAuthClientRegistration, StoredOAuthClient } from "./types.js";
2
- /** Validate and copy a bounded JSON DCR response without quoting credential input. */
2
+ /** Validate and copy a JSON DCR response without quoting credential input. */
3
3
  export declare function parseOAuthClientRegistration(value: unknown): OAuthClientRegistration;
4
4
  export declare function normalizeStoredOAuthClient(value: unknown): StoredOAuthClient | null;
5
5
  /** Fresh DCR may describe a normalized loopback port; saved identity stays exact. */
@@ -2,7 +2,7 @@ import { copyBoundedOAuthJson } from "./bounded-json.js";
2
2
  import { loopbackTarget } from "./loopback-authorization.js";
3
3
  import { normalizeOAuthScope } from "./scope.js";
4
4
  import { normalizeOAuthTokenEndpointAuthMethod } from "./token-auth-method.js";
5
- /** Validate and copy a bounded JSON DCR response without quoting credential input. */
5
+ /** Validate and copy a JSON DCR response without quoting credential input. */
6
6
  export function parseOAuthClientRegistration(value) {
7
7
  const invalid = () => new Error("Invalid OAuth client registration metadata");
8
8
  const result = copyBoundedOAuthJson(value, "Invalid OAuth client registration metadata");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tiny-http-mcp-server",
3
- "version": "0.1.97",
3
+ "version": "0.1.98",
4
4
  "description": "Minimal MCP server over HTTP built on tiny-stdio-mcp-server",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -217,7 +217,7 @@ function isJsonValue(value, options = {}) {
217
217
  if (maxNodes !== Infinity && (!Number.isSafeInteger(maxNodes) || maxNodes < 1))
218
218
  throw new Error("maxNodes must be a positive safe integer");
219
219
  if (maxDepth !== Infinity && (!Number.isSafeInteger(maxDepth) || maxDepth < 0))
220
- throw new Error("maxDepth must be a nonnegative safe integer");
220
+ throw new Error("maxDepth must be a nonnegative safe integer or Infinity");
221
221
  const ancestors = /* @__PURE__ */ new Set();
222
222
  const stack = [];
223
223
  function* properties(item2) {
@@ -258,7 +258,7 @@ function isJsonValue(value, options = {}) {
258
258
  }
259
259
  hookOwner = Object.getPrototypeOf(hookOwner);
260
260
  }
261
- if (Array.isArray(item) && item.length > maxNodes)
261
+ if (Array.isArray(item) && item.length > maxNodes - nodes)
262
262
  return false;
263
263
  ancestors.add(item);
264
264
  stack.push({ owner: item, children: properties(item), depth });
@@ -8,7 +8,7 @@
8
8
  },
9
9
  {
10
10
  "name": "toolcraft-schema",
11
- "version": "0.0.550",
11
+ "version": "0.0.552",
12
12
  "license": "MIT"
13
13
  }
14
14
  ]
@@ -11,7 +11,7 @@ export function isJsonValue(value, options = {}) {
11
11
  if (maxNodes !== Infinity && (!Number.isSafeInteger(maxNodes) || maxNodes < 1))
12
12
  throw new Error("maxNodes must be a positive safe integer");
13
13
  if (maxDepth !== Infinity && (!Number.isSafeInteger(maxDepth) || maxDepth < 0))
14
- throw new Error("maxDepth must be a nonnegative safe integer");
14
+ throw new Error("maxDepth must be a nonnegative safe integer or Infinity");
15
15
  const ancestors = new Set();
16
16
  const stack = [];
17
17
  function* properties(item) {
@@ -55,7 +55,7 @@ export function isJsonValue(value, options = {}) {
55
55
  }
56
56
  hookOwner = Object.getPrototypeOf(hookOwner);
57
57
  }
58
- if (Array.isArray(item) && item.length > maxNodes)
58
+ if (Array.isArray(item) && item.length > maxNodes - nodes)
59
59
  return false;
60
60
  ancestors.add(item);
61
61
  stack.push({ owner: item, children: properties(item), depth });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolcraft-schema",
3
- "version": "0.0.550",
3
+ "version": "0.0.552",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolcraft",
3
- "version": "0.0.550",
3
+ "version": "0.0.552",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -162,7 +162,7 @@
162
162
  "yaml"
163
163
  ],
164
164
  "optionalDependencies": {
165
- "toolcraft-schema": "0.0.550",
165
+ "toolcraft-schema": "0.0.552",
166
166
  "toolcraft-design": "*",
167
167
  "@poe-code/frontmatter": "*",
168
168
  "@poe-code/agent-mcp-config": "*",