stitchkit 0.113.0 → 0.113.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 (82) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/contract/errors.d.ts +1 -0
  3. package/dist/contract/errors.d.ts.map +1 -1
  4. package/dist/entrypoints/agent-runtime/browser.js +2 -2
  5. package/dist/entrypoints/agent-runtime/coding-tools.js +4 -4
  6. package/dist/entrypoints/agent-runtime/harness.js +7 -7
  7. package/dist/entrypoints/agent-runtime/realtime.js +2 -2
  8. package/dist/entrypoints/agent-runtime/sandbox.js +4 -4
  9. package/dist/entrypoints/agent-runtime/sqlite/bun.js +6 -6
  10. package/dist/entrypoints/agent-runtime/sqlite/node.js +6 -6
  11. package/dist/entrypoints/agent-runtime/testing.js +6 -6
  12. package/dist/entrypoints/agent-runtime.js +13 -13
  13. package/dist/entrypoints/application/grammy.js +1 -1
  14. package/dist/entrypoints/application.js +2 -2
  15. package/dist/entrypoints/cli.js +10 -10
  16. package/dist/entrypoints/contract.js +2 -2
  17. package/dist/entrypoints/files.js +1 -1
  18. package/dist/entrypoints/index.js +5 -5
  19. package/dist/entrypoints/node.js +7 -7
  20. package/dist/entrypoints/observability.js +1 -1
  21. package/dist/entrypoints/realtime.js +3 -3
  22. package/dist/entrypoints/remote.js +1 -1
  23. package/dist/entrypoints/server.js +8 -8
  24. package/dist/entrypoints/testing.js +3 -3
  25. package/dist/entrypoints/tools/connections.js +8 -8
  26. package/dist/entrypoints/tools/contract.js +2 -2
  27. package/dist/entrypoints/tools/invoker.js +7 -7
  28. package/dist/entrypoints/tools/mcp.js +9 -9
  29. package/dist/entrypoints/tools.js +15 -15
  30. package/dist/{index-yjnmac9b.js → index-09dyy94r.js} +1 -1
  31. package/dist/{index-zm1k7hhv.js → index-0gbn42hr.js} +3 -3
  32. package/dist/{index-86sxnvpr.js → index-0pfk3c1p.js} +1 -1
  33. package/dist/{index-eddzs589.js → index-2s7wv547.js} +3 -3
  34. package/dist/{index-h1spd9kv.js → index-4e36ts8b.js} +1 -1
  35. package/dist/{index-556g5hsh.js → index-5gmrx6sc.js} +1 -1
  36. package/dist/{index-2qymcsq2.js → index-5zxe0f3h.js} +3 -3
  37. package/dist/{index-5jjda9a4.js → index-6ez1r4j2.js} +4 -4
  38. package/dist/{index-8asb62xn.js → index-7ysby53h.js} +1 -1
  39. package/dist/{index-ppf5nerp.js → index-8swt2h9y.js} +1 -1
  40. package/dist/{index-z4ga1fa1.js → index-a31p9ekx.js} +6 -6
  41. package/dist/{index-k8fbzggr.js → index-awbed0mk.js} +1 -1
  42. package/dist/{index-nk1mh535.js → index-bv51s0f4.js} +1 -1
  43. package/dist/{index-54q2mghq.js → index-cn7xenet.js} +5 -5
  44. package/dist/{index-epmnrnth.js → index-dsa676h8.js} +24 -7
  45. package/dist/{index-fynr93w4.js → index-e40rzw1m.js} +1 -1
  46. package/dist/{index-ykdcnq1f.js → index-grn4brx1.js} +1 -1
  47. package/dist/{index-4dh3hfs7.js → index-kvga921h.js} +4 -4
  48. package/dist/{index-j9gxbztg.js → index-pd578538.js} +1 -0
  49. package/dist/{index-dsxrcseb.js → index-ptjx84pr.js} +2 -2
  50. package/dist/{index-jy9wq8tp.js → index-rbzq0q16.js} +1 -1
  51. package/dist/{index-pvh3z03x.js → index-shg5xc9t.js} +1 -1
  52. package/dist/{index-xmgjtkvr.js → index-sps9s3aj.js} +1 -1
  53. package/dist/{index-jgwqc38k.js → index-vf9c59t3.js} +2 -2
  54. package/dist/{index-pzw0fpek.js → index-vgtzdykw.js} +1 -1
  55. package/dist/{index-gpbk7yse.js → index-xtc8k5n9.js} +172 -117
  56. package/dist/{index-k0zfcxf5.js → index-z8fnfj42.js} +1 -1
  57. package/dist/{index-gz9jf461.js → index-zbs0g0v2.js} +1 -1
  58. package/dist/tools/cli/command-shape.d.ts +4 -0
  59. package/dist/tools/cli/command-shape.d.ts.map +1 -0
  60. package/dist/tools/cli/format.d.ts.map +1 -1
  61. package/dist/tools/cli/help.d.ts.map +1 -1
  62. package/dist/tools/cli/invoke.d.ts +1 -1
  63. package/dist/tools/cli/invoke.d.ts.map +1 -1
  64. package/dist/tools/cli/managed-surface.d.ts +3 -2
  65. package/dist/tools/cli/managed-surface.d.ts.map +1 -1
  66. package/dist/tools/cli/policy.d.ts +2 -0
  67. package/dist/tools/cli/policy.d.ts.map +1 -1
  68. package/dist/tools/cli/run-managed.d.ts.map +1 -1
  69. package/dist/tools/cli/session.d.ts +0 -1
  70. package/dist/tools/cli/session.d.ts.map +1 -1
  71. package/dist/tools/cli/unavailable.d.ts +10 -0
  72. package/dist/tools/cli/unavailable.d.ts.map +1 -0
  73. package/dist/tools/connections/runtime.d.ts +1 -1
  74. package/dist/tools/schema/json-schema-origin.d.ts +6 -5
  75. package/dist/tools/schema/json-schema-origin.d.ts.map +1 -1
  76. package/llms/cli.2.txt +15 -4
  77. package/llms/cli.txt +31 -2
  78. package/llms/server.4.txt +1 -1
  79. package/llms/tools-connections.txt +1 -1
  80. package/llms-full.txt +48 -8
  81. package/llms.txt +2 -2
  82. package/package.json +1 -1
package/llms/cli.2.txt CHANGED
@@ -149,9 +149,10 @@ One unconvertible schema does not take the connection down. The tool
149
149
  is skipped and **named** (`onSkippedTool`, or a stderr line by default), so a
150
150
  surface of two hundred tools is not lost to one.
151
151
 
152
- **A discovered schema is checked locally, except for its unions.** The arguments are
153
- coerced and parsed against the schema the server advertised, so a missing field or a
154
- wrong scalar is refused before anything is sent. A union in that schema is not judged
152
+ **A discovered schema leaves unions and string formats to its server.** The arguments are
153
+ coerced and parsed against the schema the server advertised. Reported structural failures
154
+ (a missing field, wrong scalar type, unknown key or enum value) and bounds stay local.
155
+ A union in that schema is not judged
155
156
  here: a server's presentation may join a discriminated union into one object whose
156
157
  shared field is an unlabelled `anyOf` (a stitchkit server with `flattenUnionInput`
157
158
  does), and judged against that, a wrong value could only be refused with every branch
@@ -159,6 +160,16 @@ listed. The value goes to the server, which holds the original schema, and its r
159
160
  names the one wrong field — `blocks.0.data.artifactId: expected string` rather than
160
161
  `No union branch matched — branch 1 … and 6 more branches`.
161
162
 
163
+ String formats and patterns also lose the author's error messages in JSON Schema. A
164
+ restored `date-time`, email, UUID or regex check would substitute Zod's generic wording.
165
+ Those `invalid_format` refusals go to the remote instead: a bare `2026-10-12` reaches
166
+ the original datetime schema, whose answer can explain that a full UTC timestamp such
167
+ as `2026-10-12T00:00:00Z` is required. This also applies inside arrays, objects and
168
+ record keys. A mixed refusal retains only its reported local reasons; a record-key
169
+ wrapper stays local when it contains any of those reasons. A schema authored locally
170
+ keeps its complete verdict, including custom errors and refinements. No second parse
171
+ invents checks that the first parse did not reach. See [ADR 0272](../decisions/0272-a-restored-string-format-is-judged-by-its-server.md).
172
+
162
173
  MCP connection limits follow the operation phase. `initialize`, the initialized
163
174
  notification, `tools/list` and legacy endpoint discovery use `limits.discovery`;
164
175
  `tools/call` uses `limits.call`. A mounted call's handshake still uses discovery
@@ -279,7 +290,7 @@ SDK nor the `ai` peer.
279
290
 
280
291
  | Export | Kind | Summary |
281
292
  |--------|------|---------|
282
- | `createCli` | function | build and run a CLI from contracts — [guide](../guide/cli.md) |
293
+ | `createCli` | function | build and run a CLI from contracts; a runtime catalogue field conflicting with reserved/global argv options disables only that entry, retained in help with its reason; invocation returns `CLI_COMMAND_UNAVAILABLE` before side effects — [guide](../guide/cli.md#when-one-runtime-command-cannot-be-represented-in-argv) |
283
294
  | `defineCliCommand` | function | define one Zod-typed CLI-only executable command with optional validated-result presentation/exit policy |
284
295
  | `parseCliArgs` | function | argv → typed tool args against a schema; inline `--field:=JSON` assigns a whole JSON value, including null, while ordinary string flags remain lexical; named array options together with bare positionals require an explicit `positionals` policy (advanced) |
285
296
  | `routeCliArgv` | function | select the command out of argv without duplicating the global-option grammar (advanced) |
package/llms/cli.txt CHANGED
@@ -490,13 +490,42 @@ command name — validated against the declared schema, and kept out of every
490
490
  operation's arguments: `handoff_read` above receives `{ handoffId: 'u' }` and
491
491
  nothing else. The values reach `resolveAuth(globals)`, `context(auth, globals)`
492
492
  and a native command's `globals`. An invalid value is an argument error naming
493
- the flag; a name that collides with a framework option, or with a field of any
494
- command, is refused at startup rather than shadowing it silently. Past a bare
493
+ the flag. An application global that collides with a framework option is refused
494
+ at startup. Field collisions in authored commands are configuration errors;
495
+ runtime catalogue entries are isolated as described below. Past a bare
495
496
  `--` every token is a literal, so a positional value that reads like a global
496
497
  survives intact.
497
498
 
498
499
  Both help levels list them under `Application options:`.
499
500
 
501
+ ## When one runtime command cannot be represented in argv
502
+
503
+ A `runtimeTools` catalogue can change independently of the CLI application. An
504
+ entry whose input declares a framework option such as `json`, or a field shadowed
505
+ by an application global such as `caller`, cannot receive that field through argv.
506
+ Only that entry becomes unavailable. Other commands still run, and top-level,
507
+ filtered and command-specific help retain the entry and its full reason:
508
+
509
+ ```text
510
+ inspect Inspect an operation [unavailable]
511
+ Unavailable: [stitchkit] CLI command "inspect" declares field(s) shadowed by application global options: caller
512
+ ```
513
+
514
+ Calling it returns `CLI_COMMAND_UNAVAILABLE`, `retryable: false`, and the same
515
+ reason in `details.message` on stderr; the default exit code is 1. `--json`
516
+ compacts the error as usual; `exitCodes` and `errorHint` apply. The refusal precedes
517
+ command argument parsing, stdin, context, hooks and the handler; `--dry-run` cannot
518
+ turn it into success. A known unavailable `--wait` target returns the same refusal;
519
+ an unknown target keeps `NOT_FOUND`.
520
+
521
+ This isolates only reserved/global **field** conflicts in `runtimeTools`.
522
+ Native commands and contract-defined `services` still fail at startup for those
523
+ conflicts. Duplicate or reserved command names and invalid local aliases,
524
+ positionals or passthrough policies remain configuration errors for every entry.
525
+ `createCliInvoker` receives globals and command input separately and has no argv
526
+ projection, so its own `caller` or `json` input stays callable without renaming.
527
+ See [ADR 0273](../decisions/0273-a-runtime-cli-field-conflict-is-one-commands-unavailability.md).
528
+
500
529
  ## When the managed surface cannot resolve
501
530
 
502
531
  A CLI whose commands come from a running server declares them with a factory,
package/llms/server.4.txt CHANGED
@@ -553,7 +553,7 @@ core never models them (ADR 0002). But stitchkit itself emits a set of its own:
553
553
  `FILE_INSPECTION_REJECTED`, `FILE_TOO_LARGE`, `FILE_EXISTS`,
554
554
  `REALTIME_CONTRACT_VIOLATION`, `APPLICATION_NOT_ACCEPTING`, `NOT_IMPLEMENTED`,
555
555
  `WAIT_TIMEOUT`,
556
- `WAIT_FAILED`, `DOWNLOAD_NOT_FOUND`, `VIEW_HTTP_ERROR`,
556
+ `WAIT_FAILED`, `CLI_COMMAND_UNAVAILABLE`, `DOWNLOAD_NOT_FOUND`, `VIEW_HTTP_ERROR`,
557
557
  `CONNECTION_TIMEOUT`, `CONNECTION_RESPONSE_TOO_LARGE`,
558
558
  `CONNECTION_REQUEST_FAILED`, `UPSTREAM_TOOL_ERROR`,
559
559
  `OPERATION_NOT_SUCCEEDED`, `STREAM_ITEM_INVALID`, `STREAM_FRAME_TOO_LARGE`,
@@ -27,7 +27,7 @@ and approval path.
27
27
  | `ConnectionPhase` / `ConnectionOperation` / `ConnectionFailureContext` | _type_ | closed operation/phase vocabulary and measured read context for existing typed connection errors |
28
28
  | `ConnectionTimeoutError` / `ConnectionResponseTooLargeError` | class | bounded operation refusal, with phase, operation and finite observed bytes; safe tool projection retains the raw cause locally |
29
29
  | `defineOpenApiConnection` | function | declare one OpenAPI document (object, JSON text or JSON URL) as a tool surface |
30
- | `mountConnections` | function | discover every connection and return readonly `RuntimeToolDefinition`s for `mountAgent`; a call's arguments are parsed against the discovered schema before sending, except its unions, which the server judges (ADR 0266) |
30
+ | `mountConnections` | function | discover every connection and return readonly `RuntimeToolDefinition`s for `mountAgent`; reported structural failures and bounds stay local, while unions and string-format/pattern refusals (including inside record keys) are judged by the server that owns the original schema (ADR 0266, ADR 0272) |
31
31
  | `ConnectionAuthorizationRequiredError` | class | typed reauthorization signal raised on `401` with credentials resolved again on the next call |
32
32
  | `ConnectionBudgetExceededError` | class | the mount would expose more foreign tools than its declared budget |
33
33
  | `ConnectionRequestError` | class | any non-`2xx` connection response other than the reauthorization signal |
package/llms-full.txt CHANGED
@@ -10289,13 +10289,42 @@ command name — validated against the declared schema, and kept out of every
10289
10289
  operation's arguments: `handoff_read` above receives `{ handoffId: 'u' }` and
10290
10290
  nothing else. The values reach `resolveAuth(globals)`, `context(auth, globals)`
10291
10291
  and a native command's `globals`. An invalid value is an argument error naming
10292
- the flag; a name that collides with a framework option, or with a field of any
10293
- command, is refused at startup rather than shadowing it silently. Past a bare
10292
+ the flag. An application global that collides with a framework option is refused
10293
+ at startup. Field collisions in authored commands are configuration errors;
10294
+ runtime catalogue entries are isolated as described below. Past a bare
10294
10295
  `--` every token is a literal, so a positional value that reads like a global
10295
10296
  survives intact.
10296
10297
 
10297
10298
  Both help levels list them under `Application options:`.
10298
10299
 
10300
+ ## When one runtime command cannot be represented in argv
10301
+
10302
+ A `runtimeTools` catalogue can change independently of the CLI application. An
10303
+ entry whose input declares a framework option such as `json`, or a field shadowed
10304
+ by an application global such as `caller`, cannot receive that field through argv.
10305
+ Only that entry becomes unavailable. Other commands still run, and top-level,
10306
+ filtered and command-specific help retain the entry and its full reason:
10307
+
10308
+ ```text
10309
+ inspect Inspect an operation [unavailable]
10310
+ Unavailable: [stitchkit] CLI command "inspect" declares field(s) shadowed by application global options: caller
10311
+ ```
10312
+
10313
+ Calling it returns `CLI_COMMAND_UNAVAILABLE`, `retryable: false`, and the same
10314
+ reason in `details.message` on stderr; the default exit code is 1. `--json`
10315
+ compacts the error as usual; `exitCodes` and `errorHint` apply. The refusal precedes
10316
+ command argument parsing, stdin, context, hooks and the handler; `--dry-run` cannot
10317
+ turn it into success. A known unavailable `--wait` target returns the same refusal;
10318
+ an unknown target keeps `NOT_FOUND`.
10319
+
10320
+ This isolates only reserved/global **field** conflicts in `runtimeTools`.
10321
+ Native commands and contract-defined `services` still fail at startup for those
10322
+ conflicts. Duplicate or reserved command names and invalid local aliases,
10323
+ positionals or passthrough policies remain configuration errors for every entry.
10324
+ `createCliInvoker` receives globals and command input separately and has no argv
10325
+ projection, so its own `caller` or `json` input stays callable without renaming.
10326
+ See [ADR 0273](../decisions/0273-a-runtime-cli-field-conflict-is-one-commands-unavailability.md).
10327
+
10299
10328
  ## When the managed surface cannot resolve
10300
10329
 
10301
10330
  A CLI whose commands come from a running server declares them with a factory,
@@ -10900,9 +10929,10 @@ One unconvertible schema does not take the connection down. The tool
10900
10929
  is skipped and **named** (`onSkippedTool`, or a stderr line by default), so a
10901
10930
  surface of two hundred tools is not lost to one.
10902
10931
 
10903
- **A discovered schema is checked locally, except for its unions.** The arguments are
10904
- coerced and parsed against the schema the server advertised, so a missing field or a
10905
- wrong scalar is refused before anything is sent. A union in that schema is not judged
10932
+ **A discovered schema leaves unions and string formats to its server.** The arguments are
10933
+ coerced and parsed against the schema the server advertised. Reported structural failures
10934
+ (a missing field, wrong scalar type, unknown key or enum value) and bounds stay local.
10935
+ A union in that schema is not judged
10906
10936
  here: a server's presentation may join a discriminated union into one object whose
10907
10937
  shared field is an unlabelled `anyOf` (a stitchkit server with `flattenUnionInput`
10908
10938
  does), and judged against that, a wrong value could only be refused with every branch
@@ -10910,6 +10940,16 @@ listed. The value goes to the server, which holds the original schema, and its r
10910
10940
  names the one wrong field — `blocks.0.data.artifactId: expected string` rather than
10911
10941
  `No union branch matched — branch 1 … and 6 more branches`.
10912
10942
 
10943
+ String formats and patterns also lose the author's error messages in JSON Schema. A
10944
+ restored `date-time`, email, UUID or regex check would substitute Zod's generic wording.
10945
+ Those `invalid_format` refusals go to the remote instead: a bare `2026-10-12` reaches
10946
+ the original datetime schema, whose answer can explain that a full UTC timestamp such
10947
+ as `2026-10-12T00:00:00Z` is required. This also applies inside arrays, objects and
10948
+ record keys. A mixed refusal retains only its reported local reasons; a record-key
10949
+ wrapper stays local when it contains any of those reasons. A schema authored locally
10950
+ keeps its complete verdict, including custom errors and refinements. No second parse
10951
+ invents checks that the first parse did not reach. See [ADR 0272](../decisions/0272-a-restored-string-format-is-judged-by-its-server.md).
10952
+
10913
10953
  MCP connection limits follow the operation phase. `initialize`, the initialized
10914
10954
  notification, `tools/list` and legacy endpoint discovery use `limits.discovery`;
10915
10955
  `tools/call` uses `limits.call`. A mounted call's handshake still uses discovery
@@ -13057,7 +13097,7 @@ core never models them (ADR 0002). But stitchkit itself emits a set of its own:
13057
13097
  `FILE_INSPECTION_REJECTED`, `FILE_TOO_LARGE`, `FILE_EXISTS`,
13058
13098
  `REALTIME_CONTRACT_VIOLATION`, `APPLICATION_NOT_ACCEPTING`, `NOT_IMPLEMENTED`,
13059
13099
  `WAIT_TIMEOUT`,
13060
- `WAIT_FAILED`, `DOWNLOAD_NOT_FOUND`, `VIEW_HTTP_ERROR`,
13100
+ `WAIT_FAILED`, `CLI_COMMAND_UNAVAILABLE`, `DOWNLOAD_NOT_FOUND`, `VIEW_HTTP_ERROR`,
13061
13101
  `CONNECTION_TIMEOUT`, `CONNECTION_RESPONSE_TOO_LARGE`,
13062
13102
  `CONNECTION_REQUEST_FAILED`, `UPSTREAM_TOOL_ERROR`,
13063
13103
  `OPERATION_NOT_SUCCEEDED`, `STREAM_ITEM_INVALID`, `STREAM_FRAME_TOO_LARGE`,
@@ -23103,7 +23143,7 @@ and approval path.
23103
23143
  | `ConnectionPhase` / `ConnectionOperation` / `ConnectionFailureContext` | _type_ | closed operation/phase vocabulary and measured read context for existing typed connection errors |
23104
23144
  | `ConnectionTimeoutError` / `ConnectionResponseTooLargeError` | class | bounded operation refusal, with phase, operation and finite observed bytes; safe tool projection retains the raw cause locally |
23105
23145
  | `defineOpenApiConnection` | function | declare one OpenAPI document (object, JSON text or JSON URL) as a tool surface |
23106
- | `mountConnections` | function | discover every connection and return readonly `RuntimeToolDefinition`s for `mountAgent`; a call's arguments are parsed against the discovered schema before sending, except its unions, which the server judges (ADR 0266) |
23146
+ | `mountConnections` | function | discover every connection and return readonly `RuntimeToolDefinition`s for `mountAgent`; reported structural failures and bounds stay local, while unions and string-format/pattern refusals (including inside record keys) are judged by the server that owns the original schema (ADR 0266, ADR 0272) |
23107
23147
  | `ConnectionAuthorizationRequiredError` | class | typed reauthorization signal raised on `401` with credentials resolved again on the next call |
23108
23148
  | `ConnectionBudgetExceededError` | class | the mount would expose more foreign tools than its declared budget |
23109
23149
  | `ConnectionRequestError` | class | any non-`2xx` connection response other than the reauthorization signal |
@@ -23582,7 +23622,7 @@ SDK nor the `ai` peer.
23582
23622
 
23583
23623
  | Export | Kind | Summary |
23584
23624
  |--------|------|---------|
23585
- | `createCli` | function | build and run a CLI from contracts — [guide](../guide/cli.md) |
23625
+ | `createCli` | function | build and run a CLI from contracts; a runtime catalogue field conflicting with reserved/global argv options disables only that entry, retained in help with its reason; invocation returns `CLI_COMMAND_UNAVAILABLE` before side effects — [guide](../guide/cli.md#when-one-runtime-command-cannot-be-represented-in-argv) |
23586
23626
  | `defineCliCommand` | function | define one Zod-typed CLI-only executable command with optional validated-result presentation/exit policy |
23587
23627
  | `parseCliArgs` | function | argv → typed tool args against a schema; inline `--field:=JSON` assigns a whole JSON value, including null, while ordinary string flags remain lexical; named array options together with bare positionals require an explicit `positionals` policy (advanced) |
23588
23628
  | `routeCliArgv` | function | select the command out of argv without duplicating the global-option grammar (advanced) |
package/llms.txt CHANGED
@@ -17,8 +17,8 @@ Load the slice for each entrypoint your code imports — `import … from 'stitc
17
17
  - **stitchkit/tools/mcp**: [llms/tools-mcp.txt](llms/tools-mcp.txt) 1.8 KB
18
18
  - **stitchkit/tools/contract**: [llms/tools-contract.txt](llms/tools-contract.txt) 0.2 KB
19
19
  - **stitchkit/tools/invoker**: [llms/tools-invoker.txt](llms/tools-invoker.txt) 0.2 KB
20
- - **stitchkit/tools/connections**: [llms/tools-connections.txt](llms/tools-connections.txt) 3.8 KB
21
- - **stitchkit/cli**: [llms/cli.txt](llms/cli.txt) 45.3 KB → [llms/cli.2.txt](llms/cli.2.txt) 21.4 KB
20
+ - **stitchkit/tools/connections**: [llms/tools-connections.txt](llms/tools-connections.txt) 3.9 KB
21
+ - **stitchkit/cli**: [llms/cli.txt](llms/cli.txt) 47.0 KB → [llms/cli.2.txt](llms/cli.2.txt) 22.5 KB
22
22
  - **stitchkit/cli/publish**: [llms/cli-publish.txt](llms/cli-publish.txt) 1.5 KB
23
23
  - **stitchkit/remote**: [llms/remote.txt](llms/remote.txt) 1.0 KB
24
24
  - **stitchkit/contract**: [llms/contract.txt](llms/contract.txt) 31.9 KB
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stitchkit",
3
- "version": "0.113.0",
3
+ "version": "0.113.2",
4
4
  "description": "Contract-first backend framework — one defineContract() into an HTTP API, MCP tools, AI-agent tools and a typed client. Bun and Node.",
5
5
  "keywords": [
6
6
  "bun",