stitchkit 0.90.4 → 0.90.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/CHANGELOG.md +68 -0
- package/dist/agent-runtime-coding-tools.js +3 -3
- package/dist/agent-runtime-harness.js +4 -4
- package/dist/agent-runtime-sandbox.js +3 -3
- package/dist/agent-runtime.js +7 -7
- package/dist/cli.js +60 -17
- package/dist/{index-32vjke6q.js → index-1bnkzq95.js} +1 -1
- package/dist/{index-19ryv24q.js → index-83fafqw8.js} +3 -3
- package/dist/{index-y47z614h.js → index-fqg5mfk7.js} +145 -32
- package/dist/{index-6atvfjc1.js → index-s208wab5.js} +1 -1
- package/dist/{index-7t0wq6j5.js → index-tgh3ksfh.js} +5 -5
- package/dist/{index-kzxpsf8y.js → index-zsdgd1tz.js} +1 -1
- package/dist/index.js +7 -7
- package/dist/node.js +2 -2
- package/dist/observability/index.js +1 -1
- package/dist/remote.js +1 -1
- package/dist/server/index.js +6 -6
- package/dist/testing.js +2 -2
- package/dist/tool-invoker.js +5 -5
- package/dist/tools/cli-args.d.ts +10 -8
- package/dist/tools/cli-args.d.ts.map +1 -1
- package/dist/tools/cli-installer.d.ts +7 -2
- package/dist/tools/cli-installer.d.ts.map +1 -1
- package/dist/tools/cli-view.d.ts.map +1 -1
- package/dist/tools/cli.d.ts.map +1 -1
- package/dist/tools/connections/index.js +37 -4
- package/dist/tools/connections/mcp-envelope.d.ts +44 -0
- package/dist/tools/connections/mcp-envelope.d.ts.map +1 -0
- package/dist/tools/connections/mcp.d.ts.map +1 -1
- package/dist/tools.js +11 -11
- package/dist/tracking.js +1 -1
- package/llms-full.txt +78 -8
- package/package.json +1 -1
- package/dist/{index-8crm1srv.js → index-3yqgj323.js} +3 -3
- package/dist/{index-vcnfwrtr.js → index-8pjqv3zh.js} +6 -6
- package/dist/{index-db51n3xr.js → index-ra6txecz.js} +3 -3
|
@@ -6,6 +6,12 @@ import {
|
|
|
6
6
|
withDefsDialect
|
|
7
7
|
} from "../../index-fenaekmk.js";
|
|
8
8
|
import"../../index-cby4ar3v.js";
|
|
9
|
+
import {
|
|
10
|
+
AppError
|
|
11
|
+
} from "../../index-scs3f1eg.js";
|
|
12
|
+
import {
|
|
13
|
+
safeJsonParse
|
|
14
|
+
} from "../../index-kzfs85xp.js";
|
|
9
15
|
import {
|
|
10
16
|
isRecord
|
|
11
17
|
} from "../../index-77fekveh.js";
|
|
@@ -514,6 +520,34 @@ class McpHttpClient {
|
|
|
514
520
|
}
|
|
515
521
|
}
|
|
516
522
|
|
|
523
|
+
// src/tools/connections/mcp-envelope.ts
|
|
524
|
+
function unwrapMcpResult(result) {
|
|
525
|
+
if (!isRecord(result))
|
|
526
|
+
return result;
|
|
527
|
+
if (result.structuredContent !== undefined)
|
|
528
|
+
return result.structuredContent;
|
|
529
|
+
if (!Array.isArray(result.content))
|
|
530
|
+
return result;
|
|
531
|
+
const only = result.content.length === 1 ? result.content[0] : undefined;
|
|
532
|
+
if (!isRecord(only) || only.type !== "text" || typeof only.text !== "string")
|
|
533
|
+
return result;
|
|
534
|
+
try {
|
|
535
|
+
return safeJsonParse(only.text);
|
|
536
|
+
} catch {
|
|
537
|
+
return only.text;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
var UPSTREAM_TOOL_ERROR = "UPSTREAM_TOOL_ERROR";
|
|
541
|
+
function mcpToolFailure(toolName, result) {
|
|
542
|
+
const payload = unwrapMcpResult(result);
|
|
543
|
+
if (isRecord(payload) && typeof payload.error === "string") {
|
|
544
|
+
const details = isRecord(payload.details) ? payload.details : undefined;
|
|
545
|
+
const message = typeof details?.message === "string" ? details.message : payload.error;
|
|
546
|
+
return new AppError(payload.error, message, 502, details);
|
|
547
|
+
}
|
|
548
|
+
return new AppError(UPSTREAM_TOOL_ERROR, `External MCP tool "${toolName}" returned an error`, 502, payload === undefined ? undefined : { upstream: payload });
|
|
549
|
+
}
|
|
550
|
+
|
|
517
551
|
// src/tools/connections/runtime.ts
|
|
518
552
|
import { z } from "zod";
|
|
519
553
|
async function withConnectionToken(params, body) {
|
|
@@ -608,10 +642,9 @@ async function mountMcpConnection(connection, instanceId, onSkipped) {
|
|
|
608
642
|
return withConnectionToken({ instanceId, provider: connection.token, client, context }, async (token) => {
|
|
609
643
|
await client.initialize(token, context.signal);
|
|
610
644
|
const result = await client.request("tools/call", { name, arguments: context.input }, token, context.signal);
|
|
611
|
-
if (isRecord(result) && result.isError === true)
|
|
612
|
-
throw
|
|
613
|
-
|
|
614
|
-
return result;
|
|
645
|
+
if (isRecord(result) && result.isError === true)
|
|
646
|
+
throw mcpToolFailure(name, result);
|
|
647
|
+
return context.source === "cli" ? unwrapMcpResult(result) : result;
|
|
615
648
|
}).finally(() => client.teardown());
|
|
616
649
|
}
|
|
617
650
|
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a discovered MCP tool's answer is, per transport.
|
|
3
|
+
*
|
|
4
|
+
* `tools/call` returns an envelope — `{ content: [...], structuredContent? }` —
|
|
5
|
+
* and an agent mount needs exactly that: the parts are what a model is shown.
|
|
6
|
+
* The CLI transport is different in kind, because the handler's value is what
|
|
7
|
+
* gets printed, piped and aggregated. Handed the envelope, `--count-by status`
|
|
8
|
+
* groups the *parts* and answers `no record carries the field "status" —
|
|
9
|
+
* available: text, type`, and `--json` emits the answer as a JSON string nested
|
|
10
|
+
* inside `content[0].text`, so every consumer unwraps before anything works.
|
|
11
|
+
*
|
|
12
|
+
* So the CLI unwraps, and only the CLI. The order is the server's own order of
|
|
13
|
+
* preference: `structuredContent` is the answer when the server sent one; a lone
|
|
14
|
+
* text part is the answer when it parses as JSON, and its text when it does not.
|
|
15
|
+
* Anything else — several parts, an image, audio — is passed through whole,
|
|
16
|
+
* because picking one part out of many would be inventing an answer.
|
|
17
|
+
*/
|
|
18
|
+
import { AppError } from '../../contract/errors.js';
|
|
19
|
+
export declare function unwrapMcpResult(result: unknown): unknown;
|
|
20
|
+
/**
|
|
21
|
+
* The class a relayed failure carries when the server sent no structured body.
|
|
22
|
+
*
|
|
23
|
+
* Not `INTERNAL_SERVER_ERROR`: nothing of ours broke. The honest statement is
|
|
24
|
+
* that the call failed upstream and we cannot say more than the server did.
|
|
25
|
+
*/
|
|
26
|
+
export declare const UPSTREAM_TOOL_ERROR = "UPSTREAM_TOOL_ERROR";
|
|
27
|
+
/**
|
|
28
|
+
* Turn a failed `CallToolResult` into the error the caller can act on.
|
|
29
|
+
*
|
|
30
|
+
* The line this replaces threw a one-sentence `Error` and discarded the result,
|
|
31
|
+
* which cost three things at once: the code (so `exitCodes` had nothing to map
|
|
32
|
+
* and every remote failure exited `1`), the message the operator needed, and the
|
|
33
|
+
* error's own class — a plain `Error` is an *unexpected* error to the runner, so
|
|
34
|
+
* it printed a code frame of the framework bundle before the JSON failure and
|
|
35
|
+
* was then scrubbed to a bare `INTERNAL_SERVER_ERROR`.
|
|
36
|
+
*
|
|
37
|
+
* A structured `{ error, details }` body is the remote contract's own refusal
|
|
38
|
+
* and is relayed as one. Anything else keeps the framework's sentence and
|
|
39
|
+
* carries what the server did send — reporting less than we have is not caution.
|
|
40
|
+
* The status is 502 either way: whatever the code says, the failure happened
|
|
41
|
+
* upstream, and a consumer re-serving it over HTTP should say so.
|
|
42
|
+
*/
|
|
43
|
+
export declare function mcpToolFailure(toolName: string, result: unknown): AppError;
|
|
44
|
+
//# sourceMappingURL=mcp-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-envelope.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp-envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAaxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,CAa1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAIhF,OAAO,EACL,KAAK,0BAA0B,EAIhC,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,SAAS,CAAC;AAQlE,gEAAgE;AAChE,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,0BAA0B,GACpC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAqElC"}
|
package/dist/tools.js
CHANGED
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
buildToolManifest,
|
|
22
22
|
describeToolCatalog,
|
|
23
23
|
mountAgent
|
|
24
|
-
} from "./index-
|
|
24
|
+
} from "./index-83fafqw8.js";
|
|
25
25
|
import"./index-7rkhw9ec.js";
|
|
26
26
|
import {
|
|
27
27
|
argumentsDigest
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./index-4fpa9dy2.js";
|
|
38
38
|
import {
|
|
39
39
|
createToolInvoker
|
|
40
|
-
} from "./index-
|
|
40
|
+
} from "./index-tgh3ksfh.js";
|
|
41
41
|
import {
|
|
42
42
|
WaitTimeoutError,
|
|
43
43
|
createCli,
|
|
@@ -46,22 +46,22 @@ import {
|
|
|
46
46
|
fetchPinnedDocument,
|
|
47
47
|
readCapped,
|
|
48
48
|
runWaitOperation
|
|
49
|
-
} from "./index-
|
|
49
|
+
} from "./index-fqg5mfk7.js";
|
|
50
50
|
import"./index-sbdmyz75.js";
|
|
51
51
|
import {
|
|
52
52
|
collectToolSurface
|
|
53
|
-
} from "./index-
|
|
53
|
+
} from "./index-zsdgd1tz.js";
|
|
54
54
|
import {
|
|
55
55
|
collectTools,
|
|
56
56
|
createToolRunner,
|
|
57
57
|
formatToolError
|
|
58
|
-
} from "./index-
|
|
58
|
+
} from "./index-1bnkzq95.js";
|
|
59
59
|
import {
|
|
60
60
|
ToolExecutionControlError,
|
|
61
61
|
executeToolMethod,
|
|
62
62
|
isToolExecutionControlError,
|
|
63
63
|
toolResultFromError
|
|
64
|
-
} from "./index-
|
|
64
|
+
} from "./index-8pjqv3zh.js";
|
|
65
65
|
import {
|
|
66
66
|
getRequestContext,
|
|
67
67
|
getTraceId,
|
|
@@ -78,17 +78,12 @@ import {
|
|
|
78
78
|
ManagedFilePathSchema,
|
|
79
79
|
ManagedFileRefSchema
|
|
80
80
|
} from "./index-6k1937bx.js";
|
|
81
|
-
import {
|
|
82
|
-
AppError,
|
|
83
|
-
STITCH_ERROR_STATUS
|
|
84
|
-
} from "./index-scs3f1eg.js";
|
|
85
81
|
import {
|
|
86
82
|
resolvePropagationContext
|
|
87
83
|
} from "./index-zcgf3gqf.js";
|
|
88
84
|
import {
|
|
89
85
|
coerceJsonArgs
|
|
90
86
|
} from "./index-7zbps32p.js";
|
|
91
|
-
import"./index-kzfs85xp.js";
|
|
92
87
|
import {
|
|
93
88
|
createRuntimeToolFactory,
|
|
94
89
|
defineRuntimeTool
|
|
@@ -105,6 +100,11 @@ import {
|
|
|
105
100
|
validateMcpRoundPolicy
|
|
106
101
|
} from "./index-fenaekmk.js";
|
|
107
102
|
import"./index-cby4ar3v.js";
|
|
103
|
+
import {
|
|
104
|
+
AppError,
|
|
105
|
+
STITCH_ERROR_STATUS
|
|
106
|
+
} from "./index-scs3f1eg.js";
|
|
107
|
+
import"./index-kzfs85xp.js";
|
|
108
108
|
import {
|
|
109
109
|
isRecord
|
|
110
110
|
} from "./index-77fekveh.js";
|
package/dist/tracking.js
CHANGED
package/llms-full.txt
CHANGED
|
@@ -7489,9 +7489,12 @@ same Zod schema an HTTP or MCP call does.
|
|
|
7489
7489
|
| `--quiet` | Suppress non-essential stderr output |
|
|
7490
7490
|
| `--dry-run` | Print the resolved call without executing |
|
|
7491
7491
|
| `--help`, `-h` | Usage — top-level or per-command flag table |
|
|
7492
|
+
| `--help <text>` | List only the commands matching a substring |
|
|
7492
7493
|
| `--count-by <field>` | Count records per distinct value — see [Aggregate views](#aggregate-views) |
|
|
7493
7494
|
| `--sum <f> [--by <g>]`| Total a numeric field, optionally grouped |
|
|
7494
|
-
| `--
|
|
7495
|
+
| `--sort <field>` | Order records by a field, largest first |
|
|
7496
|
+
| `--ascending` | Flip `--sort` to smallest first |
|
|
7497
|
+
| `--top <n>` | Keep the n leading entries of the view asked for |
|
|
7495
7498
|
| `--table <a,b>` | Render named fields as an aligned table |
|
|
7496
7499
|
|
|
7497
7500
|
stdout carries the result; structured errors and progress go to stderr. With
|
|
@@ -7502,6 +7505,34 @@ diagnostics remain ordinary stderr text. This keeps stdout pipeable and
|
|
|
7502
7505
|
`VALIDATION_ERROR → 1`, `UNAUTHORIZED → 2`, `FORBIDDEN → 3`, `NOT_FOUND → 4`,
|
|
7503
7506
|
…) — override per app with `exitCodes`.
|
|
7504
7507
|
|
|
7508
|
+
### A narrower question than "all of them"
|
|
7509
|
+
|
|
7510
|
+
On a discovered surface `--help` is the only way to learn what exists, and that
|
|
7511
|
+
can be two hundred commands. At that size the list stops being an answer: it
|
|
7512
|
+
scrolls past a person and costs an agent the same context an unfiltered result
|
|
7513
|
+
would. So there is a question between "one command" and "all of them":
|
|
7514
|
+
|
|
7515
|
+
```bash
|
|
7516
|
+
myapp --help broadcast # also: -h broadcast · help broadcast · --help=broadcast
|
|
7517
|
+
```
|
|
7518
|
+
|
|
7519
|
+
```
|
|
7520
|
+
Commands matching "broadcast" (3 of 205):
|
|
7521
|
+
broadcast_send Send a broadcast to every subscriber
|
|
7522
|
+
broadcast_cancel Stop a running broadcast
|
|
7523
|
+
announce_publish Publish an announcement as a broadcast
|
|
7524
|
+
```
|
|
7525
|
+
|
|
7526
|
+
The description is searched as well as the name, because the word someone knows
|
|
7527
|
+
is often in the sentence rather than the name — `announce_publish` above is
|
|
7528
|
+
matched that way. The count says what was left out.
|
|
7529
|
+
|
|
7530
|
+
**No match is an exit code**, not an empty success: `0` over an empty list reads
|
|
7531
|
+
as "there are none", which is a different statement from "none of these". It
|
|
7532
|
+
exits with whatever `NOT_FOUND` maps to (`4` by default). Bare `--help` is
|
|
7533
|
+
unchanged, and `--help=false` still means what it always did — the reserved
|
|
7534
|
+
boolean's negation — so one value never carries two meanings.
|
|
7535
|
+
|
|
7505
7536
|
## Application global options
|
|
7506
7537
|
|
|
7507
7538
|
`--json` and friends above are the framework's. An application usually has
|
|
@@ -7632,9 +7663,20 @@ myapp item_list --top 5 --by status # same view, written the other way ro
|
|
|
7632
7663
|
myapp item_list --table id,status # the one human-facing shape
|
|
7633
7664
|
```
|
|
7634
7665
|
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7666
|
+
Two words, one each: **`--by` groups, `--sort` orders.** That leaves `--top` a
|
|
7667
|
+
single meaning everywhere — *the n leading entries of the view you asked for* —
|
|
7668
|
+
so the question a CLI actually gets asked composes out of the parts:
|
|
7669
|
+
|
|
7670
|
+
```bash
|
|
7671
|
+
myapp item_list --top 5 --sort messages --table id,messages # the five biggest, as a table
|
|
7672
|
+
myapp item_list --sort messages --top 5 --json # the same five, as records
|
|
7673
|
+
myapp item_list --sort name --ascending # ordered the other way
|
|
7674
|
+
```
|
|
7675
|
+
|
|
7676
|
+
Groups come back largest first for the same reason. A record that carries no
|
|
7677
|
+
value for the sort field sorts **last in both directions**: it is not the
|
|
7678
|
+
smallest, it is not on the scale at all, and letting it lead an ascending list
|
|
7679
|
+
would answer a question nobody asked.
|
|
7638
7680
|
|
|
7639
7681
|
Three rules worth knowing before you rely on them:
|
|
7640
7682
|
|
|
@@ -7646,6 +7688,8 @@ Three rules worth knowing before you rely on them:
|
|
|
7646
7688
|
over an object with two array fields, is refused rather than guessed.
|
|
7647
7689
|
- **Without a view flag the output is byte-for-byte what it was.** The flags are
|
|
7648
7690
|
reserved CLI behaviour like `--json`; they never reach a tool argument.
|
|
7691
|
+
- **Ordering and grouping do not mix.** `--sort` with `--by`, `--count-by` or
|
|
7692
|
+
`--sum` is refused rather than given a second meaning.
|
|
7649
7693
|
|
|
7650
7694
|
A failed call still reports its own error and exit code. An aggregate over an
|
|
7651
7695
|
error is not an answer to the question that was asked.
|
|
@@ -7725,8 +7769,12 @@ import {
|
|
|
7725
7769
|
// otherwise everyone who already installed it never receives the fix.
|
|
7726
7770
|
assertCliPublishable(previous, next)
|
|
7727
7771
|
|
|
7728
|
-
// Serving:
|
|
7729
|
-
|
|
7772
|
+
// Serving: omit `asset` and one script covers every published target, selecting
|
|
7773
|
+
// by uname at run time — otherwise that dispatch is the last hand-written piece
|
|
7774
|
+
// of the install path, and every publisher writes the same x86_64 → x64 table.
|
|
7775
|
+
renderCliInstaller({ manifest, binaryName: 'myapp' })
|
|
7776
|
+
// Or pin one target explicitly:
|
|
7777
|
+
renderCliInstaller({ manifest, asset: selectCliBuildAsset(manifest, target), binaryName: 'myapp' })
|
|
7730
7778
|
|
|
7731
7779
|
// Checking: bounded, at most once per interval, silent on any failure.
|
|
7732
7780
|
const check = await checkCliUpdate({ manifestUrl, currentVersion, lastCheckedAt })
|
|
@@ -7772,6 +7820,28 @@ One unconvertible schema no longer takes the connection down with it. The tool
|
|
|
7772
7820
|
is skipped and **named** (`onSkippedTool`, or a stderr line by default), so a
|
|
7773
7821
|
surface of two hundred tools is not lost to one.
|
|
7774
7822
|
|
|
7823
|
+
**A remote refusal keeps its code.** A failed `tools/call` used to become a
|
|
7824
|
+
one-sentence `Error` with the result discarded, which cost three things at once:
|
|
7825
|
+
the code (so `exitCodes` had nothing to map and every remote failure exited `1`),
|
|
7826
|
+
the message the operator needed, and the error's own class — a plain `Error` is
|
|
7827
|
+
an *unexpected* error to the runner, so it printed a code frame of the framework
|
|
7828
|
+
bundle before the JSON failure and was then scrubbed to `INTERNAL_SERVER_ERROR`.
|
|
7829
|
+
A structured `{ error, details }` body is now relayed as the contract error it
|
|
7830
|
+
is, on every transport; anything else fails as `UPSTREAM_TOOL_ERROR` carrying
|
|
7831
|
+
what the server did send. Not `INTERNAL_SERVER_ERROR`, because nothing of ours
|
|
7832
|
+
broke.
|
|
7833
|
+
|
|
7834
|
+
**On the CLI a discovered command prints the answer, not the envelope.**
|
|
7835
|
+
`tools/call` returns `{ content: [...], structuredContent? }`, and an agent mount
|
|
7836
|
+
needs exactly that — the parts are what a model is shown. The CLI is different in
|
|
7837
|
+
kind, because the handler's value is what gets printed, piped and aggregated:
|
|
7838
|
+
handed the envelope, `--count-by status` groups the *content parts* and answers
|
|
7839
|
+
`no record carries the field "status" — available: text, type`. So the CLI
|
|
7840
|
+
transport unwraps, and only it: `structuredContent` when the server sent one, a
|
|
7841
|
+
lone text part when it parses as JSON, its text when it does not. Several parts,
|
|
7842
|
+
an image or audio pass through whole — picking one of many would be inventing an
|
|
7843
|
+
answer.
|
|
7844
|
+
|
|
7775
7845
|
|
|
7776
7846
|
## Auth parity
|
|
7777
7847
|
|
|
@@ -17224,11 +17294,11 @@ SDK nor the `ai` peer.
|
|
|
17224
17294
|
| `CliBuildAssetSchema` / `CliBuildAsset` | schema / _type_ | one download; `size` and `sha256` describe the **decompressed** bytes |
|
|
17225
17295
|
| `CliBuildTargetSchema` / `CliBuildTarget` | schema / _type_ | `{ platform, arch }` |
|
|
17226
17296
|
| `CliBuildStampSchema` / `CliBuildStamp` | schema / _type_ | the version/commit/build time carried inside a binary |
|
|
17227
|
-
| `CliInstallerConfig` | _type_ | manifest,
|
|
17297
|
+
| `CliInstallerConfig` | _type_ | manifest, binary name, default install directory, and an optional `asset` — omit it for one script that selects the target by `uname` |
|
|
17228
17298
|
| `CliUpdateCheckConfig` / `CliUpdateCheck` | _type_ | check inputs, and its four answers — `skipped`, `current`, `outdated`, `unknown` |
|
|
17229
17299
|
| `CliUpdateApplyConfig` / `AppliedCliUpdate` | _type_ | apply inputs and the replaced path, byte count and digest |
|
|
17230
17300
|
| `CliProfileStore` / `CliProfileStoreConfig` / `ResolvedCliProfile` | _type_ | the profile store, its directory/schema/hint config, and one resolution |
|
|
17231
|
-
| `CliResultView` | _type_ | the requested
|
|
17301
|
+
| `CliResultView` | _type_ | the requested view — `count`, `sum`, or `records` (ordered and/or table-rendered) |
|
|
17232
17302
|
| `CliViewOutput` | _type_ | a JSON value, or the one human-facing text shape |
|
|
17233
17303
|
| `CliGlobalOptionsParse` | _type_ | `{ argv, globals }` returned by `extractCliGlobalOptions` |
|
|
17234
17304
|
| `CliArgvRoute` | _type_ | `{ command, commandArgv, topLevelHelp, version, error? }` returned by `routeCliArgv` |
|
package/package.json
CHANGED
|
@@ -18,13 +18,13 @@ import {
|
|
|
18
18
|
probeAgentProcessSandbox,
|
|
19
19
|
refuseMissingCodingPath
|
|
20
20
|
} from "./index-gte38nbm.js";
|
|
21
|
+
import {
|
|
22
|
+
defineRuntimeTool
|
|
23
|
+
} from "./index-8z9we758.js";
|
|
21
24
|
import {
|
|
22
25
|
conflict,
|
|
23
26
|
forbidden
|
|
24
27
|
} from "./index-scs3f1eg.js";
|
|
25
|
-
import {
|
|
26
|
-
defineRuntimeTool
|
|
27
|
-
} from "./index-8z9we758.js";
|
|
28
28
|
|
|
29
29
|
// src/agent-runtime/coding-tool-contract.ts
|
|
30
30
|
import { z } from "zod";
|
|
@@ -7,20 +7,20 @@ import {
|
|
|
7
7
|
normalizeError,
|
|
8
8
|
validateDeclaredOutput
|
|
9
9
|
} from "./index-2hryh65w.js";
|
|
10
|
+
import {
|
|
11
|
+
coerceJsonArgs
|
|
12
|
+
} from "./index-7zbps32p.js";
|
|
13
|
+
import {
|
|
14
|
+
objectShapeKeys
|
|
15
|
+
} from "./index-fenaekmk.js";
|
|
10
16
|
import {
|
|
11
17
|
AppError,
|
|
12
18
|
STITCH_ERROR_STATUS,
|
|
13
19
|
isStitchErrorCode
|
|
14
20
|
} from "./index-scs3f1eg.js";
|
|
15
|
-
import {
|
|
16
|
-
coerceJsonArgs
|
|
17
|
-
} from "./index-7zbps32p.js";
|
|
18
21
|
import {
|
|
19
22
|
isUnsafeKey
|
|
20
23
|
} from "./index-kzfs85xp.js";
|
|
21
|
-
import {
|
|
22
|
-
objectShapeKeys
|
|
23
|
-
} from "./index-fenaekmk.js";
|
|
24
24
|
import {
|
|
25
25
|
isRecord
|
|
26
26
|
} from "./index-77fekveh.js";
|
|
@@ -47,14 +47,14 @@ import {
|
|
|
47
47
|
joinRoutePath,
|
|
48
48
|
parseTrailingWildcard
|
|
49
49
|
} from "./index-kazec06k.js";
|
|
50
|
+
import {
|
|
51
|
+
resolveTraceContext
|
|
52
|
+
} from "./index-zcgf3gqf.js";
|
|
50
53
|
import {
|
|
51
54
|
AppError,
|
|
52
55
|
badRequest,
|
|
53
56
|
forbidden
|
|
54
57
|
} from "./index-scs3f1eg.js";
|
|
55
|
-
import {
|
|
56
|
-
resolveTraceContext
|
|
57
|
-
} from "./index-zcgf3gqf.js";
|
|
58
58
|
import {
|
|
59
59
|
isUnsafeKey,
|
|
60
60
|
safeJsonParse
|