craftdriver 1.7.0 → 1.8.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/CHANGELOG.md +23 -11
- package/README.md +13 -4
- package/dist/cli/agentSession.d.ts +62 -0
- package/dist/cli/agentSession.d.ts.map +1 -0
- package/dist/cli/agentSession.js +100 -0
- package/dist/cli/agentSession.js.map +1 -0
- package/dist/cli/artifactPaths.d.ts +42 -0
- package/dist/cli/artifactPaths.d.ts.map +1 -0
- package/dist/cli/artifactPaths.js +144 -0
- package/dist/cli/artifactPaths.js.map +1 -0
- package/dist/cli/bounds.d.ts +88 -0
- package/dist/cli/bounds.d.ts.map +1 -0
- package/dist/cli/bounds.js +128 -0
- package/dist/cli/bounds.js.map +1 -0
- package/dist/cli/client.d.ts +3 -0
- package/dist/cli/client.d.ts.map +1 -1
- package/dist/cli/client.js +24 -8
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/daemon.d.ts +3 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +152 -39
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/defaults.d.ts +23 -3
- package/dist/cli/defaults.d.ts.map +1 -1
- package/dist/cli/defaults.js +50 -5
- package/dist/cli/defaults.js.map +1 -1
- package/dist/cli/dispatcher.d.ts +54 -11
- package/dist/cli/dispatcher.d.ts.map +1 -1
- package/dist/cli/dispatcher.js +851 -54
- package/dist/cli/dispatcher.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +305 -56
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +14 -14
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +328 -180
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/journal.d.ts +153 -0
- package/dist/cli/journal.d.ts.map +1 -0
- package/dist/cli/journal.js +252 -0
- package/dist/cli/journal.js.map +1 -0
- package/dist/cli/lineReader.d.ts +33 -0
- package/dist/cli/lineReader.d.ts.map +1 -0
- package/dist/cli/lineReader.js +66 -0
- package/dist/cli/lineReader.js.map +1 -0
- package/dist/cli/locatorCandidates.d.ts +44 -0
- package/dist/cli/locatorCandidates.d.ts.map +1 -0
- package/dist/cli/locatorCandidates.js +190 -0
- package/dist/cli/locatorCandidates.js.map +1 -0
- package/dist/cli/mcp/artifacts.d.ts +39 -1
- package/dist/cli/mcp/artifacts.d.ts.map +1 -1
- package/dist/cli/mcp/artifacts.js +104 -9
- package/dist/cli/mcp/artifacts.js.map +1 -1
- package/dist/cli/mcp/bounds.d.ts +65 -0
- package/dist/cli/mcp/bounds.d.ts.map +1 -0
- package/dist/cli/mcp/bounds.js +124 -0
- package/dist/cli/mcp/bounds.js.map +1 -0
- package/dist/cli/mcp/params.d.ts +38 -0
- package/dist/cli/mcp/params.d.ts.map +1 -0
- package/dist/cli/mcp/params.js +174 -0
- package/dist/cli/mcp/params.js.map +1 -0
- package/dist/cli/mcp/server.d.ts +94 -16
- package/dist/cli/mcp/server.d.ts.map +1 -1
- package/dist/cli/mcp/server.js +304 -150
- package/dist/cli/mcp/server.js.map +1 -1
- package/dist/cli/mcp/tools.d.ts +62 -17
- package/dist/cli/mcp/tools.d.ts.map +1 -1
- package/dist/cli/mcp/tools.js +373 -158
- package/dist/cli/mcp/tools.js.map +1 -1
- package/dist/cli/pageSemantics.d.ts +42 -0
- package/dist/cli/pageSemantics.d.ts.map +1 -0
- package/dist/cli/pageSemantics.js +194 -0
- package/dist/cli/pageSemantics.js.map +1 -0
- package/dist/cli/parseArgs.d.ts +6 -18
- package/dist/cli/parseArgs.d.ts.map +1 -1
- package/dist/cli/parseArgs.js +689 -45
- package/dist/cli/parseArgs.js.map +1 -1
- package/dist/cli/protocol.d.ts +8 -0
- package/dist/cli/protocol.d.ts.map +1 -1
- package/dist/cli/sessionRegistry.d.ts +42 -0
- package/dist/cli/sessionRegistry.d.ts.map +1 -0
- package/dist/cli/sessionRegistry.js +99 -0
- package/dist/cli/sessionRegistry.js.map +1 -0
- package/dist/cli/snapshot.d.ts +100 -18
- package/dist/cli/snapshot.d.ts.map +1 -1
- package/dist/cli/snapshot.js +248 -102
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/stateStore.d.ts +50 -0
- package/dist/cli/stateStore.d.ts.map +1 -0
- package/dist/cli/stateStore.js +122 -0
- package/dist/cli/stateStore.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/bidi/index.d.ts +1 -1
- package/dist/lib/bidi/index.d.ts.map +1 -1
- package/dist/lib/bidi/index.js +2 -2
- package/dist/lib/bidi/index.js.map +1 -1
- package/dist/lib/bidi/logs.d.ts +3 -0
- package/dist/lib/bidi/logs.d.ts.map +1 -1
- package/dist/lib/bidi/logs.js +7 -0
- package/dist/lib/bidi/logs.js.map +1 -1
- package/dist/lib/bidi/network.d.ts +14 -1
- package/dist/lib/bidi/network.d.ts.map +1 -1
- package/dist/lib/bidi/network.js +45 -7
- package/dist/lib/bidi/network.js.map +1 -1
- package/dist/lib/bidi/storage.d.ts +30 -6
- package/dist/lib/bidi/storage.d.ts.map +1 -1
- package/dist/lib/bidi/storage.js +190 -45
- package/dist/lib/bidi/storage.js.map +1 -1
- package/dist/lib/bidi/types.d.ts +7 -2
- package/dist/lib/bidi/types.d.ts.map +1 -1
- package/dist/lib/browser.d.ts +6 -3
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +140 -30
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/browserContext.d.ts +54 -18
- package/dist/lib/browserContext.d.ts.map +1 -1
- package/dist/lib/browserContext.js +295 -92
- package/dist/lib/browserContext.js.map +1 -1
- package/dist/lib/by.d.ts +3 -3
- package/dist/lib/by.d.ts.map +1 -1
- package/dist/lib/by.js +7 -3
- package/dist/lib/by.js.map +1 -1
- package/dist/lib/driver.d.ts +7 -0
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +12 -0
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/errors.d.ts +8 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +8 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/initScript.d.ts +9 -0
- package/dist/lib/initScript.d.ts.map +1 -0
- package/dist/lib/initScript.js +14 -0
- package/dist/lib/initScript.js.map +1 -0
- package/dist/lib/page.d.ts +22 -0
- package/dist/lib/page.d.ts.map +1 -1
- package/dist/lib/page.js +48 -0
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/secureFile.d.ts +8 -0
- package/dist/lib/secureFile.d.ts.map +1 -0
- package/dist/lib/secureFile.js +67 -0
- package/dist/lib/secureFile.js.map +1 -0
- package/dist/lib/sessionStateValidation.d.ts +35 -0
- package/dist/lib/sessionStateValidation.d.ts.map +1 -0
- package/dist/lib/sessionStateValidation.js +223 -0
- package/dist/lib/sessionStateValidation.js.map +1 -0
- package/dist/lib/tracing.d.ts +2 -1
- package/dist/lib/tracing.d.ts.map +1 -1
- package/dist/lib/tracing.js +12 -1
- package/dist/lib/tracing.js.map +1 -1
- package/docs/agents.md +56 -61
- package/docs/api-reference.md +2 -1
- package/docs/browser-api.md +24 -4
- package/docs/browser-context.md +18 -12
- package/docs/cli.md +346 -26
- package/docs/error-codes.md +5 -4
- package/docs/getting-started.md +6 -1
- package/docs/index.md +1 -1
- package/docs/mcp.md +129 -62
- package/docs/public/examples/agent-actions.html +48 -0
- package/docs/public/examples/agent-debug.html +86 -0
- package/docs/public/examples/agent-late-mutation.html +18 -0
- package/docs/public/examples/agent-ref-shift.html +33 -0
- package/docs/recipes/login-once-reuse-session.md +32 -4
- package/docs/session-management.md +64 -3
- package/docs/why-craftdriver.md +1 -1
- package/package.json +3 -1
- package/skills/craftdriver/SKILL.md +59 -75
- package/skills/craftdriver/agents/openai.yaml +4 -0
- package/skills/craftdriver/cheatsheet.md +18 -4
- package/skills/craftdriver/cli.md +194 -68
- package/skills/craftdriver/patterns.md +14 -8
- package/skills/craftdriver/workflow.md +149 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Cap on any single string argument, unless a spec narrows it further. */
|
|
2
|
+
export declare const DEFAULT_MAX_STRING = 8192;
|
|
3
|
+
/** Cap on any array argument, unless a spec narrows it further. */
|
|
4
|
+
export declare const DEFAULT_MAX_ITEMS = 50;
|
|
5
|
+
interface Common {
|
|
6
|
+
description?: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type ParamSpec = (Common & {
|
|
10
|
+
type: 'string';
|
|
11
|
+
maxLength?: number;
|
|
12
|
+
/** Allowed values. Anything else is rejected, listing the valid set. */
|
|
13
|
+
enum?: readonly string[];
|
|
14
|
+
}) | (Common & {
|
|
15
|
+
type: 'number';
|
|
16
|
+
min?: number;
|
|
17
|
+
max?: number;
|
|
18
|
+
integer?: boolean;
|
|
19
|
+
}) | (Common & {
|
|
20
|
+
type: 'boolean';
|
|
21
|
+
}) | (Common & {
|
|
22
|
+
type: 'string[]';
|
|
23
|
+
maxItems?: number;
|
|
24
|
+
maxLength?: number;
|
|
25
|
+
});
|
|
26
|
+
export type ParamSpecs = Record<string, ParamSpec>;
|
|
27
|
+
/** JSON Schema for `tools/list`, derived from the same specs validation uses. */
|
|
28
|
+
export declare function toInputSchema(specs: ParamSpecs): Record<string, unknown>;
|
|
29
|
+
/**
|
|
30
|
+
* Validate and normalize tool arguments.
|
|
31
|
+
*
|
|
32
|
+
* Throws `INVALID_ARGUMENT` — which the server maps to JSON-RPC `-32602` —
|
|
33
|
+
* before anything reaches the dispatcher. Returns only declared keys, so a
|
|
34
|
+
* field that slipped past cannot ride along into a browser command.
|
|
35
|
+
*/
|
|
36
|
+
export declare function validateArgs(tool: string, specs: ParamSpecs, raw: unknown): Record<string, unknown>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/params.ts"],"names":[],"mappings":"AAiBA,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,UAAU,MAAM;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GACjB,CAAC,MAAM,GAAG;IACR,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,CAAC,GACF,CAAC,MAAM,GAAG;IACR,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,GACF,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAC9B,CAAC,MAAM,GAAG;IACR,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEP,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgDxE;AAQD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,OAAO,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqGzB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool argument descriptors: one declaration, two consumers.
|
|
3
|
+
*
|
|
4
|
+
* A tool's `inputSchema` tells the model what to send; runtime validation
|
|
5
|
+
* decides what actually reaches the dispatcher. Written separately they drift,
|
|
6
|
+
* and the drift is invisible — the schema keeps promising a constraint nobody
|
|
7
|
+
* enforces. Here both are derived from the same `ParamSpec`, so a tool cannot
|
|
8
|
+
* advertise one contract and accept another.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately not a JSON Schema engine. Tool arguments on this surface are
|
|
11
|
+
* flat — strings, numbers, booleans, and string arrays — and a general
|
|
12
|
+
* validator would be a large dependency-shaped thing to maintain for a shape
|
|
13
|
+
* this narrow. Anything needing more expressiveness than this is a sign the
|
|
14
|
+
* tool should be split, not that the descriptor should grow.
|
|
15
|
+
*/
|
|
16
|
+
import { CraftdriverError, ErrorCode } from '../../lib/errors.js';
|
|
17
|
+
/** Cap on any single string argument, unless a spec narrows it further. */
|
|
18
|
+
export const DEFAULT_MAX_STRING = 8192;
|
|
19
|
+
/** Cap on any array argument, unless a spec narrows it further. */
|
|
20
|
+
export const DEFAULT_MAX_ITEMS = 50;
|
|
21
|
+
/** JSON Schema for `tools/list`, derived from the same specs validation uses. */
|
|
22
|
+
export function toInputSchema(specs) {
|
|
23
|
+
const properties = {};
|
|
24
|
+
const required = [];
|
|
25
|
+
for (const [name, spec] of Object.entries(specs)) {
|
|
26
|
+
if (spec.required)
|
|
27
|
+
required.push(name);
|
|
28
|
+
const base = {};
|
|
29
|
+
if (spec.description)
|
|
30
|
+
base.description = spec.description;
|
|
31
|
+
switch (spec.type) {
|
|
32
|
+
case 'string':
|
|
33
|
+
properties[name] = {
|
|
34
|
+
type: 'string',
|
|
35
|
+
...base,
|
|
36
|
+
maxLength: spec.maxLength ?? DEFAULT_MAX_STRING,
|
|
37
|
+
...(spec.enum ? { enum: [...spec.enum] } : {}),
|
|
38
|
+
};
|
|
39
|
+
break;
|
|
40
|
+
case 'number':
|
|
41
|
+
properties[name] = {
|
|
42
|
+
type: spec.integer ? 'integer' : 'number',
|
|
43
|
+
...base,
|
|
44
|
+
...(spec.min !== undefined ? { minimum: spec.min } : {}),
|
|
45
|
+
...(spec.max !== undefined ? { maximum: spec.max } : {}),
|
|
46
|
+
};
|
|
47
|
+
break;
|
|
48
|
+
case 'boolean':
|
|
49
|
+
properties[name] = { type: 'boolean', ...base };
|
|
50
|
+
break;
|
|
51
|
+
case 'string[]':
|
|
52
|
+
properties[name] = {
|
|
53
|
+
type: 'array',
|
|
54
|
+
...base,
|
|
55
|
+
items: { type: 'string', maxLength: spec.maxLength ?? DEFAULT_MAX_STRING },
|
|
56
|
+
maxItems: spec.maxItems ?? DEFAULT_MAX_ITEMS,
|
|
57
|
+
};
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties,
|
|
64
|
+
...(required.length > 0 ? { required } : {}),
|
|
65
|
+
// Advertised as well as enforced: a model that sends an extra field should
|
|
66
|
+
// be able to learn from the schema that it will be refused.
|
|
67
|
+
additionalProperties: false,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function invalid(tool, message, detail) {
|
|
71
|
+
return new CraftdriverError(ErrorCode.INVALID_ARGUMENT, `${tool}: ${message}`, {
|
|
72
|
+
...(detail ? { detail } : {}),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate and normalize tool arguments.
|
|
77
|
+
*
|
|
78
|
+
* Throws `INVALID_ARGUMENT` — which the server maps to JSON-RPC `-32602` —
|
|
79
|
+
* before anything reaches the dispatcher. Returns only declared keys, so a
|
|
80
|
+
* field that slipped past cannot ride along into a browser command.
|
|
81
|
+
*/
|
|
82
|
+
export function validateArgs(tool, specs, raw) {
|
|
83
|
+
if (raw === undefined || raw === null)
|
|
84
|
+
raw = {};
|
|
85
|
+
if (typeof raw !== 'object' || Array.isArray(raw)) {
|
|
86
|
+
throw invalid(tool, 'arguments must be an object');
|
|
87
|
+
}
|
|
88
|
+
const args = raw;
|
|
89
|
+
// Unknown fields are refused rather than ignored: silently dropping one
|
|
90
|
+
// means a model that misspelled a required argument sees a successful call
|
|
91
|
+
// that did something other than what it asked for.
|
|
92
|
+
const known = new Set(Object.keys(specs));
|
|
93
|
+
const unknown = Object.keys(args).filter((key) => !known.has(key));
|
|
94
|
+
if (unknown.length > 0) {
|
|
95
|
+
throw invalid(tool, `unknown argument "${unknown[0]}"`, {
|
|
96
|
+
unknown,
|
|
97
|
+
allowed: [...known],
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const out = {};
|
|
101
|
+
for (const [name, spec] of Object.entries(specs)) {
|
|
102
|
+
const value = args[name];
|
|
103
|
+
if (value === undefined || value === null) {
|
|
104
|
+
if (spec.required)
|
|
105
|
+
throw invalid(tool, `missing required argument "${name}"`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
switch (spec.type) {
|
|
109
|
+
case 'string': {
|
|
110
|
+
if (typeof value !== 'string') {
|
|
111
|
+
throw invalid(tool, `"${name}" must be a string, got ${typeof value}`);
|
|
112
|
+
}
|
|
113
|
+
const max = spec.maxLength ?? DEFAULT_MAX_STRING;
|
|
114
|
+
if (value.length > max) {
|
|
115
|
+
throw invalid(tool, `"${name}" is too long (${value.length} chars; max ${max})`);
|
|
116
|
+
}
|
|
117
|
+
if (spec.enum && !spec.enum.includes(value)) {
|
|
118
|
+
throw invalid(tool, `"${name}" must be one of: ${spec.enum.join(', ')}`, {
|
|
119
|
+
allowed: [...spec.enum],
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
out[name] = value;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case 'number': {
|
|
126
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
127
|
+
// NaN and Infinity are `typeof number` but serialize to null and
|
|
128
|
+
// break every downstream range check, so they are rejected here.
|
|
129
|
+
throw invalid(tool, `"${name}" must be a finite number`);
|
|
130
|
+
}
|
|
131
|
+
if (spec.integer && !Number.isInteger(value)) {
|
|
132
|
+
throw invalid(tool, `"${name}" must be an integer`);
|
|
133
|
+
}
|
|
134
|
+
if (spec.min !== undefined && value < spec.min) {
|
|
135
|
+
throw invalid(tool, `"${name}" must be >= ${spec.min}`);
|
|
136
|
+
}
|
|
137
|
+
if (spec.max !== undefined && value > spec.max) {
|
|
138
|
+
throw invalid(tool, `"${name}" must be <= ${spec.max}`);
|
|
139
|
+
}
|
|
140
|
+
out[name] = value;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case 'boolean': {
|
|
144
|
+
if (typeof value !== 'boolean') {
|
|
145
|
+
throw invalid(tool, `"${name}" must be a boolean, got ${typeof value}`);
|
|
146
|
+
}
|
|
147
|
+
out[name] = value;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case 'string[]': {
|
|
151
|
+
if (!Array.isArray(value)) {
|
|
152
|
+
throw invalid(tool, `"${name}" must be an array of strings`);
|
|
153
|
+
}
|
|
154
|
+
const maxItems = spec.maxItems ?? DEFAULT_MAX_ITEMS;
|
|
155
|
+
if (value.length > maxItems) {
|
|
156
|
+
throw invalid(tool, `"${name}" has too many items (${value.length}; max ${maxItems})`);
|
|
157
|
+
}
|
|
158
|
+
const maxLength = spec.maxLength ?? DEFAULT_MAX_STRING;
|
|
159
|
+
value.forEach((item, index) => {
|
|
160
|
+
if (typeof item !== 'string') {
|
|
161
|
+
throw invalid(tool, `"${name}[${index}]" must be a string, got ${typeof item}`);
|
|
162
|
+
}
|
|
163
|
+
if (item.length > maxLength) {
|
|
164
|
+
throw invalid(tool, `"${name}[${index}]" is too long (${item.length} chars; max ${maxLength})`);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
out[name] = [...value];
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/cli/mcp/params.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/mcp/server.d.ts
CHANGED
|
@@ -1,22 +1,53 @@
|
|
|
1
|
+
import type { LaunchOptions } from '../../lib/browser.js';
|
|
2
|
+
import { type AgentSessionRunner } from '../agentSession.js';
|
|
3
|
+
import { type ToolDef } from './tools.js';
|
|
4
|
+
import { ArtifactStore } from './artifacts.js';
|
|
1
5
|
/**
|
|
2
|
-
*
|
|
6
|
+
* Choose the protocol version to answer with.
|
|
3
7
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* swap in the SDK without changing tool definitions in `tools.ts`.
|
|
8
|
-
*
|
|
9
|
-
* Protocol version we advertise: 2024-11-05. If the client offers a
|
|
10
|
-
* newer one we just echo theirs back — the methods we implement are
|
|
11
|
-
* stable across versions to date.
|
|
12
|
-
*
|
|
13
|
-
* Lifecycle:
|
|
14
|
-
* client → initialize → server returns capabilities + info
|
|
15
|
-
* client → notifications/initialized (no response)
|
|
16
|
-
* client ⇆ tools/list, tools/call, ...
|
|
17
|
-
* stdin EOF (or SIGINT/SIGTERM) → close browser, exit 0
|
|
8
|
+
* A client asking for a version we support gets it. Anything else — unknown,
|
|
9
|
+
* malformed, or missing — gets our default, which the spec allows and which
|
|
10
|
+
* is honest about what this server actually implements.
|
|
18
11
|
*/
|
|
19
|
-
|
|
12
|
+
export declare function negotiateProtocolVersion(requested: unknown): string;
|
|
13
|
+
/** Maximum UTF-8 payload for one MCP JSON line. Shared with the daemon. */
|
|
14
|
+
export declare const MCP_MAX_FRAME_BYTES: number;
|
|
15
|
+
export interface JsonRpcRequest {
|
|
16
|
+
jsonrpc: '2.0';
|
|
17
|
+
id?: number | string | null;
|
|
18
|
+
method: string;
|
|
19
|
+
params?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface JsonRpcSuccess {
|
|
22
|
+
jsonrpc: '2.0';
|
|
23
|
+
id: number | string | null;
|
|
24
|
+
result: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface JsonRpcError {
|
|
27
|
+
jsonrpc: '2.0';
|
|
28
|
+
id: number | string | null;
|
|
29
|
+
error: {
|
|
30
|
+
code: number;
|
|
31
|
+
message: string;
|
|
32
|
+
data?: unknown;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export type JsonRpcResponse = JsonRpcSuccess | JsonRpcError;
|
|
36
|
+
interface ContentBlock {
|
|
37
|
+
type: 'text' | 'image';
|
|
38
|
+
text?: string;
|
|
39
|
+
data?: string;
|
|
40
|
+
mimeType?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ToolCallResult {
|
|
43
|
+
content: ContentBlock[];
|
|
44
|
+
isError?: boolean;
|
|
45
|
+
structuredContent?: unknown;
|
|
46
|
+
}
|
|
47
|
+
export interface McpSignalSource {
|
|
48
|
+
once(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
|
|
49
|
+
off(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
|
|
50
|
+
}
|
|
20
51
|
export interface McpServerOptions {
|
|
21
52
|
launch: LaunchOptions;
|
|
22
53
|
/** Stream for incoming messages; defaults to process.stdin. */
|
|
@@ -29,6 +60,53 @@ export interface McpServerOptions {
|
|
|
29
60
|
artifactsDir?: string;
|
|
30
61
|
/** Override the spill threshold in bytes (default 2048; env: $CRAFTDRIVER_MCP_SPILL_BYTES). */
|
|
31
62
|
spillBytes?: number;
|
|
63
|
+
/** Override the envelope cap (default 32 KiB; env: $CRAFTDRIVER_MCP_MAX_RESPONSE_BYTES). */
|
|
64
|
+
maxResponseBytes?: number;
|
|
65
|
+
/** Internal injection point for protocol and lifecycle tests. */
|
|
66
|
+
sessionFactory?: () => AgentSessionRunner;
|
|
67
|
+
/** Internal injection point for SIGINT/SIGTERM lifecycle tests. */
|
|
68
|
+
signalSource?: McpSignalSource;
|
|
69
|
+
}
|
|
70
|
+
export interface ClassifiedJsonRpcMessage {
|
|
71
|
+
kind: 'request' | 'notification';
|
|
72
|
+
message: JsonRpcRequest;
|
|
73
|
+
}
|
|
74
|
+
/** Decode exactly one JSON value after newline framing has completed. */
|
|
75
|
+
export declare function decodeJsonLine(line: string): unknown;
|
|
76
|
+
/** Classify by presence of an `id`; validation remains a separate concern. */
|
|
77
|
+
export declare function classifyJsonRpcMessage(value: unknown): ClassifiedJsonRpcMessage;
|
|
78
|
+
export declare function serializeJsonRpcResponse(response: JsonRpcResponse): string;
|
|
79
|
+
export declare function sendJsonRpcResponse(output: NodeJS.WritableStream, response: JsonRpcResponse): void;
|
|
80
|
+
interface SnapshotState {
|
|
81
|
+
snapshotsOn: boolean;
|
|
82
|
+
artifacts: ArtifactStore;
|
|
83
|
+
spillBytes: number;
|
|
84
|
+
/** Envelope cap, applied to failures as well as successes. */
|
|
85
|
+
maxResponseBytes: number;
|
|
86
|
+
}
|
|
87
|
+
interface RouterContext {
|
|
88
|
+
session: AgentSessionRunner;
|
|
89
|
+
snapshotState: SnapshotState;
|
|
32
90
|
}
|
|
33
91
|
export declare function runMcpServer(opts: McpServerOptions): Promise<void>;
|
|
92
|
+
export declare function routeJsonRpcMethod(classified: ClassifiedJsonRpcMessage, ctx: RouterContext): Promise<JsonRpcResponse | null>;
|
|
93
|
+
interface ToolResultContext {
|
|
94
|
+
artifacts: ArtifactStore;
|
|
95
|
+
spillBytes: number;
|
|
96
|
+
delta?: string;
|
|
97
|
+
/** Cap on the complete serialized result; defaults from the environment. */
|
|
98
|
+
maxResponseBytes?: number;
|
|
99
|
+
}
|
|
100
|
+
/** Render an already-computed tool value without invoking browser work. */
|
|
101
|
+
export declare function serializeToolSuccess(tool: ToolDef, value: unknown, ctx: ToolResultContext): Promise<ToolCallResult>;
|
|
102
|
+
/**
|
|
103
|
+
* Render a tool failure without requiring a session or transport.
|
|
104
|
+
*
|
|
105
|
+
* Bounded like a success. An error carries page-derived text — an assertion
|
|
106
|
+
* message quoting a whole element, a driver error echoing a selector — so
|
|
107
|
+
* leaving the failure path unbounded left the envelope cap trivially
|
|
108
|
+
* bypassable by whatever the page put in the message.
|
|
109
|
+
*/
|
|
110
|
+
export declare function serializeToolFailure(error: unknown, maxResponseBytes?: number): ToolCallResult;
|
|
111
|
+
export {};
|
|
34
112
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/server.ts"],"names":[],"mappings":"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"}
|