@caplets/core 0.18.9 → 0.20.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/attach/options.d.ts +10 -0
- package/dist/attach/server.d.ts +5 -0
- package/dist/caplet-files-bundle.d.ts +430 -0
- package/dist/caplet-files.d.ts +3 -266
- package/dist/caplet-source/bundle.d.ts +7 -0
- package/dist/caplet-source/filesystem.d.ts +7 -0
- package/dist/caplet-source/filesystem.js +2 -0
- package/dist/caplet-source/index.d.ts +4 -0
- package/dist/caplet-source/parse.d.ts +35 -0
- package/dist/caplet-source/types.d.ts +9 -0
- package/dist/caplet-source.js +7011 -0
- package/dist/cli/auth.d.ts +40 -2
- package/dist/cli/cloud-add.d.ts +8 -0
- package/dist/cli/code-mode.d.ts +16 -0
- package/dist/cli/commands.d.ts +8 -1
- package/dist/cli/doctor.d.ts +21 -0
- package/dist/cli/setup-caplet.d.ts +12 -0
- package/dist/cli/setup.d.ts +11 -0
- package/dist/cli-tools.d.ts +1 -1
- package/dist/cli.d.ts +8 -1
- package/dist/cloud/apply.d.ts +36 -0
- package/dist/cloud/client.d.ts +30 -0
- package/dist/cloud/presence.d.ts +29 -0
- package/dist/cloud/project-root.d.ts +2 -0
- package/dist/cloud/runtime-adapter.d.ts +23 -0
- package/dist/cloud/runtime-http.d.ts +6 -0
- package/dist/cloud/sync.d.ts +10 -0
- package/dist/cloud-auth/client.d.ts +57 -0
- package/dist/cloud-auth/errors.d.ts +11 -0
- package/dist/cloud-auth/open-url.d.ts +7 -0
- package/dist/cloud-auth/store.d.ts +35 -0
- package/dist/cloud-auth/types.d.ts +67 -0
- package/dist/code-mode/api.d.ts +32 -0
- package/dist/code-mode/declarations.d.ts +5 -0
- package/dist/code-mode/diagnostics.d.ts +8 -0
- package/dist/code-mode/index.d.ts +4 -0
- package/dist/code-mode/logs.d.ts +21 -0
- package/dist/code-mode/runner.d.ts +15 -0
- package/dist/code-mode/runtime-api.generated.d.ts +1 -0
- package/dist/code-mode/sandbox.d.ts +28 -0
- package/dist/code-mode/static-analysis.d.ts +2 -0
- package/dist/code-mode/tool.d.ts +11 -0
- package/dist/code-mode/types.d.ts +120 -0
- package/dist/code-mode.js +147855 -0
- package/dist/{completion-RqzHpHRY.js → completion-CbazRAiL.js} +20 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config-runtime.d.ts +183 -0
- package/dist/config-runtime.js +421 -0
- package/dist/config.d.ts +76 -9
- package/dist/downstream.d.ts +20 -2
- package/dist/engine.d.ts +20 -0
- package/dist/exposure/direct-names.d.ts +9 -0
- package/dist/exposure/discovery.d.ts +75 -0
- package/dist/exposure/policy.d.ts +8 -0
- package/dist/filesystem-Kkg32TOJ.js +66 -0
- package/dist/generated-tool-input-schema.d.ts +89 -59
- package/dist/generated-tool-input-schema.js +172 -1
- package/dist/graphql.d.ts +1 -1
- package/dist/http-actions.d.ts +1 -1
- package/dist/index.d.ts +48 -0
- package/dist/index.js +4176 -501
- package/dist/native/options.d.ts +22 -3
- package/dist/native/remote.d.ts +2 -1
- package/dist/native/service.d.ts +13 -3
- package/dist/native/tools.d.ts +2 -0
- package/dist/native.d.ts +1 -1
- package/dist/native.js +3 -431
- package/dist/observed-output-shapes/extract.d.ts +5 -0
- package/dist/observed-output-shapes/file-store.d.ts +17 -0
- package/dist/observed-output-shapes/index.d.ts +7 -0
- package/dist/observed-output-shapes/key.d.ts +14 -0
- package/dist/observed-output-shapes/merge.d.ts +2 -0
- package/dist/observed-output-shapes/pure.d.ts +5 -0
- package/dist/observed-output-shapes/pure.js +241 -0
- package/dist/observed-output-shapes/schema.d.ts +1 -0
- package/dist/observed-output-shapes/types.d.ts +84 -0
- package/dist/observed-output-shapes/typescript.d.ts +7 -0
- package/dist/observed-output-shapes-uzAMQPhg.js +485 -0
- package/dist/observed-output-shapes.js +2 -0
- package/dist/openapi.d.ts +1 -1
- package/dist/project-binding/attach.d.ts +46 -0
- package/dist/project-binding/errors.d.ts +17 -0
- package/dist/project-binding/gitignore.d.ts +5 -0
- package/dist/project-binding/index.d.ts +2 -0
- package/dist/project-binding/mutagen.d.ts +65 -0
- package/dist/project-binding/routes.d.ts +9 -0
- package/dist/project-binding/session.d.ts +82 -0
- package/dist/project-binding/sync-filter.d.ts +19 -0
- package/dist/project-binding/sync-size.d.ts +27 -0
- package/dist/project-binding/transport.d.ts +21 -0
- package/dist/project-binding/types.d.ts +31 -0
- package/dist/project-binding/workspaces.d.ts +60 -0
- package/dist/project-binding.js +22 -0
- package/dist/redaction.d.ts +14 -0
- package/dist/redaction.js +30 -0
- package/dist/registry.d.ts +4 -0
- package/dist/remote/options.d.ts +44 -0
- package/dist/remote/selection.d.ts +26 -0
- package/dist/remote-control/types.d.ts +1 -1
- package/dist/runtime-plan/features.d.ts +7 -0
- package/dist/runtime-plan/index.d.ts +4 -0
- package/dist/runtime-plan/planner.d.ts +5 -0
- package/dist/runtime-plan/resources.d.ts +13 -0
- package/dist/runtime-plan/types.d.ts +82 -0
- package/dist/runtime-plan.js +281 -0
- package/dist/schemas-1HZ0kFpx.js +4270 -0
- package/dist/{generated-tool-input-schema--kVuUNc5.js → schemas-BZ6BBrh7.js} +1 -161
- package/dist/serve/daemon/config.d.ts +8 -0
- package/dist/serve/daemon/index.d.ts +16 -0
- package/dist/serve/daemon/paths.d.ts +3 -0
- package/dist/serve/daemon/platform-darwin.d.ts +2 -0
- package/dist/serve/daemon/platform-linux.d.ts +2 -0
- package/dist/serve/daemon/platform-windows.d.ts +2 -0
- package/dist/serve/daemon/platform.d.ts +9 -0
- package/dist/serve/daemon/process.d.ts +5 -0
- package/dist/serve/daemon/types.d.ts +86 -0
- package/dist/serve/http.d.ts +8 -0
- package/dist/serve/index.d.ts +5 -1
- package/dist/serve/native-session.d.ts +19 -0
- package/dist/serve/options.d.ts +1 -0
- package/dist/serve/session.d.ts +15 -3
- package/dist/server/options.d.ts +1 -1
- package/dist/{options-DnOUjft1.js → service-D0MwLNyb.js} +38003 -27618
- package/dist/setup/hash.d.ts +3 -0
- package/dist/setup/local-store.d.ts +34 -0
- package/dist/setup/runner.d.ts +40 -0
- package/dist/setup/types.d.ts +52 -0
- package/dist/stable-json.d.ts +3 -0
- package/dist/stable-json.js +26 -0
- package/dist/tools.d.ts +38 -12
- package/dist/validation-CdqbI2zN.js +174 -0
- package/package.json +48 -6
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
//#region src/runtime-plan/types.ts
|
|
2
|
+
const HIDDEN_REASON_CODES = [
|
|
3
|
+
"setup_required",
|
|
4
|
+
"setup_running",
|
|
5
|
+
"setup_failed",
|
|
6
|
+
"verify_failed",
|
|
7
|
+
"backend_auth_required",
|
|
8
|
+
"backend_check_failed",
|
|
9
|
+
"project_binding_required",
|
|
10
|
+
"project_binding_syncing",
|
|
11
|
+
"project_binding_blocked",
|
|
12
|
+
"project_binding_stale",
|
|
13
|
+
"provider_unavailable",
|
|
14
|
+
"provider_capacity_exhausted",
|
|
15
|
+
"provider_queue_timeout",
|
|
16
|
+
"policy_denied",
|
|
17
|
+
"billing_required",
|
|
18
|
+
"subscription_past_due",
|
|
19
|
+
"usage_limit_reached",
|
|
20
|
+
"email_verification_required",
|
|
21
|
+
"docker_required",
|
|
22
|
+
"docker_denied",
|
|
23
|
+
"browser_required",
|
|
24
|
+
"browser_denied",
|
|
25
|
+
"resource_class_denied",
|
|
26
|
+
"local_only",
|
|
27
|
+
"invalid_bundle",
|
|
28
|
+
"unsupported_backend"
|
|
29
|
+
];
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/runtime-plan/features.ts
|
|
32
|
+
function inferRuntimeFeatures(caplet) {
|
|
33
|
+
const provenance = [];
|
|
34
|
+
for (const feature of explicitFeatures(caplet)) provenance.push({
|
|
35
|
+
feature,
|
|
36
|
+
source: "explicit",
|
|
37
|
+
matched: "runtime.features"
|
|
38
|
+
});
|
|
39
|
+
for (const command of commandRecords(caplet)) {
|
|
40
|
+
const text = [command.command, ...command.args].join(" ");
|
|
41
|
+
const dockerMatch = matchDocker(command.command, command.args);
|
|
42
|
+
if (dockerMatch) provenance.push({
|
|
43
|
+
feature: "docker",
|
|
44
|
+
source: command.source,
|
|
45
|
+
matched: dockerMatch,
|
|
46
|
+
command: text
|
|
47
|
+
});
|
|
48
|
+
const browserMatch = matchBrowser(command.command, command.args);
|
|
49
|
+
if (browserMatch) provenance.push({
|
|
50
|
+
feature: "browser",
|
|
51
|
+
source: command.source,
|
|
52
|
+
matched: browserMatch,
|
|
53
|
+
command: text
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
features: orderedFeatures([...new Set(provenance.map((entry) => entry.feature))]),
|
|
58
|
+
provenance
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function explicitFeatures(caplet) {
|
|
62
|
+
const runtime = caplet.runtime;
|
|
63
|
+
if (!runtime || typeof runtime !== "object" || Array.isArray(runtime)) return [];
|
|
64
|
+
const features = runtime.features;
|
|
65
|
+
return Array.isArray(features) ? features.filter((feature) => feature === "docker" || feature === "browser") : [];
|
|
66
|
+
}
|
|
67
|
+
function commandRecords(caplet) {
|
|
68
|
+
return [
|
|
69
|
+
...setupCommands(caplet.setup, "setup.commands"),
|
|
70
|
+
...setupCommands(caplet.setup, "setup.verify", true),
|
|
71
|
+
...mcpCommands(caplet),
|
|
72
|
+
...cliCommands(caplet)
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
function setupCommands(setup, source, verify = false) {
|
|
76
|
+
if (!setup || typeof setup !== "object" || Array.isArray(setup)) return [];
|
|
77
|
+
const values = setup[verify ? "verify" : "commands"];
|
|
78
|
+
if (!Array.isArray(values)) return [];
|
|
79
|
+
return values.flatMap((value) => commandRecordFrom(value, source));
|
|
80
|
+
}
|
|
81
|
+
function mcpCommands(caplet) {
|
|
82
|
+
if (caplet.backend !== "mcp" || typeof caplet.command !== "string") return [];
|
|
83
|
+
return [{
|
|
84
|
+
source: "mcp.command",
|
|
85
|
+
command: caplet.command,
|
|
86
|
+
args: stringArray(caplet.args)
|
|
87
|
+
}];
|
|
88
|
+
}
|
|
89
|
+
function cliCommands(caplet) {
|
|
90
|
+
if (caplet.backend !== "cli") return [];
|
|
91
|
+
const records = [];
|
|
92
|
+
if (typeof caplet.command === "string") records.push({
|
|
93
|
+
source: "cli.command",
|
|
94
|
+
command: caplet.command,
|
|
95
|
+
args: stringArray(caplet.args)
|
|
96
|
+
});
|
|
97
|
+
const actions = caplet.actions;
|
|
98
|
+
if (actions && typeof actions === "object" && !Array.isArray(actions)) for (const action of Object.values(actions)) records.push(...commandRecordFrom(action, "cli.action"));
|
|
99
|
+
return records;
|
|
100
|
+
}
|
|
101
|
+
function commandRecordFrom(value, source) {
|
|
102
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return [];
|
|
103
|
+
const command = value.command;
|
|
104
|
+
if (typeof command !== "string") return [];
|
|
105
|
+
return [{
|
|
106
|
+
source,
|
|
107
|
+
command,
|
|
108
|
+
args: stringArray(value.args)
|
|
109
|
+
}];
|
|
110
|
+
}
|
|
111
|
+
function stringArray(value) {
|
|
112
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
113
|
+
}
|
|
114
|
+
function matchDocker(command, args) {
|
|
115
|
+
const text = [command, ...args].join(" ").toLowerCase();
|
|
116
|
+
if (text.includes("docker-mcp")) return "docker-mcp";
|
|
117
|
+
if (/\bdocker(?:-compose)?\b/u.test(text)) return command === "docker" ? command : text;
|
|
118
|
+
return text.includes("docker mcp") ? "docker mcp" : void 0;
|
|
119
|
+
}
|
|
120
|
+
function matchBrowser(command, args) {
|
|
121
|
+
const text = [command, ...args].join(" ").toLowerCase();
|
|
122
|
+
if (text.includes("@playwright/mcp")) return "@playwright/mcp";
|
|
123
|
+
if (text.includes("playwright install")) return "playwright install";
|
|
124
|
+
if (text.includes("playwright")) return "playwright";
|
|
125
|
+
if (text.includes("browser-use")) return "browser-use";
|
|
126
|
+
if (text.includes("puppeteer")) return "puppeteer";
|
|
127
|
+
if (text.includes("chromium")) return "chromium";
|
|
128
|
+
return /\bchrome\b/u.test(text) ? "chrome" : void 0;
|
|
129
|
+
}
|
|
130
|
+
function orderedFeatures(features) {
|
|
131
|
+
return ["docker", "browser"].filter((feature) => features.includes(feature));
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/runtime-plan/resources.ts
|
|
135
|
+
const defaults = {
|
|
136
|
+
small: {
|
|
137
|
+
class: "small",
|
|
138
|
+
cpu: 1,
|
|
139
|
+
memoryMb: 1024,
|
|
140
|
+
diskMb: 4096
|
|
141
|
+
},
|
|
142
|
+
medium: {
|
|
143
|
+
class: "medium",
|
|
144
|
+
cpu: 2,
|
|
145
|
+
memoryMb: 4096,
|
|
146
|
+
diskMb: 8192
|
|
147
|
+
},
|
|
148
|
+
standard: {
|
|
149
|
+
class: "standard",
|
|
150
|
+
cpu: 2,
|
|
151
|
+
memoryMb: 4096,
|
|
152
|
+
diskMb: 8192
|
|
153
|
+
},
|
|
154
|
+
large: {
|
|
155
|
+
class: "large",
|
|
156
|
+
cpu: 4,
|
|
157
|
+
memoryMb: 8192,
|
|
158
|
+
diskMb: 20480
|
|
159
|
+
},
|
|
160
|
+
heavy: {
|
|
161
|
+
class: "heavy",
|
|
162
|
+
cpu: 8,
|
|
163
|
+
memoryMb: 16384,
|
|
164
|
+
diskMb: 40960
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const rank = {
|
|
168
|
+
small: 0,
|
|
169
|
+
standard: 1,
|
|
170
|
+
medium: 1,
|
|
171
|
+
large: 2,
|
|
172
|
+
heavy: 3
|
|
173
|
+
};
|
|
174
|
+
function resourceClassRank(value) {
|
|
175
|
+
return rank[value] ?? 0;
|
|
176
|
+
}
|
|
177
|
+
function isRuntimeResourceClassAllowed(requested, maximum) {
|
|
178
|
+
return resourceClassRank(requested) <= resourceClassRank(maximum);
|
|
179
|
+
}
|
|
180
|
+
function resolveRuntimeResources(inputOrCaplet, features, policy) {
|
|
181
|
+
const caplet = inputOrCaplet;
|
|
182
|
+
const input = features === void 0 ? inputOrCaplet : {
|
|
183
|
+
backend: typeof caplet.backend === "string" ? caplet.backend : void 0,
|
|
184
|
+
features,
|
|
185
|
+
explicitClass: explicitResourceClass$1(caplet),
|
|
186
|
+
setupRequired: Boolean(caplet.setup),
|
|
187
|
+
policy
|
|
188
|
+
};
|
|
189
|
+
const requested = input.explicitClass ?? defaultResourceClass(input);
|
|
190
|
+
const capped = capClass(requested, input.policy?.maxClass);
|
|
191
|
+
return {
|
|
192
|
+
...defaults[capped] ?? defaults.standard,
|
|
193
|
+
...requested !== capped ? { cappedByPolicy: input.policy?.maxClass } : {}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function defaultResourceClass(input) {
|
|
197
|
+
const hasDocker = input.features.includes("docker");
|
|
198
|
+
const hasBrowser = input.features.includes("browser");
|
|
199
|
+
if (hasDocker && hasBrowser) return "heavy";
|
|
200
|
+
if (hasDocker || hasBrowser) return "large";
|
|
201
|
+
if (input.backend === "cli" || input.backend === "mcp" || input.setupRequired) return "medium";
|
|
202
|
+
return "small";
|
|
203
|
+
}
|
|
204
|
+
function explicitResourceClass$1(caplet) {
|
|
205
|
+
const runtime = caplet.runtime;
|
|
206
|
+
if (!runtime || typeof runtime !== "object" || Array.isArray(runtime)) return void 0;
|
|
207
|
+
const resources = runtime.resources;
|
|
208
|
+
if (!resources || typeof resources !== "object" || Array.isArray(resources)) return void 0;
|
|
209
|
+
const value = resources.class;
|
|
210
|
+
return typeof value === "string" ? value : void 0;
|
|
211
|
+
}
|
|
212
|
+
function capClass(requested, maxClass) {
|
|
213
|
+
if (!maxClass) return requested;
|
|
214
|
+
return isRuntimeResourceClassAllowed(requested, maxClass) ? requested : maxClass;
|
|
215
|
+
}
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/runtime-plan/planner.ts
|
|
218
|
+
function planCapletRuntimeRoutes(caplets, options = {}) {
|
|
219
|
+
return caplets.map((caplet) => planSingleCaplet(caplet, options));
|
|
220
|
+
}
|
|
221
|
+
function planCapletRuntimeRoute(caplet, options = {}) {
|
|
222
|
+
return planCapletRuntimeRoutes([caplet], options)[0] ?? planSingleCaplet(caplet, options);
|
|
223
|
+
}
|
|
224
|
+
function planSingleCaplet(caplet, options) {
|
|
225
|
+
const route = classifyCapletRuntimeRoute(caplet);
|
|
226
|
+
const setupRequired = Boolean(caplet.setup);
|
|
227
|
+
const projectBindingRequired = projectBindingRequiredFor(caplet);
|
|
228
|
+
const features = inferRuntimeFeatures(caplet);
|
|
229
|
+
const runtime = {
|
|
230
|
+
features: features.features,
|
|
231
|
+
featureProvenance: features.provenance,
|
|
232
|
+
resources: resolveRuntimeResources({
|
|
233
|
+
backend: typeof caplet.backend === "string" ? caplet.backend : void 0,
|
|
234
|
+
features: features.features,
|
|
235
|
+
explicitClass: explicitResourceClass(caplet),
|
|
236
|
+
policy: options.resourcePolicy,
|
|
237
|
+
setupRequired
|
|
238
|
+
})
|
|
239
|
+
};
|
|
240
|
+
return {
|
|
241
|
+
id: String(caplet.server ?? ""),
|
|
242
|
+
backend: typeof caplet.backend === "string" ? caplet.backend : "unknown",
|
|
243
|
+
route,
|
|
244
|
+
setupRequired,
|
|
245
|
+
authRequired: authRequired("auth" in caplet ? caplet.auth : void 0),
|
|
246
|
+
...route === "process" || route === "project_bound_process" ? { setupTarget: setupTargetFor(options.deployment) } : {},
|
|
247
|
+
projectBindingRequired,
|
|
248
|
+
runtime,
|
|
249
|
+
caplet
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function classifyCapletRuntimeRoute(caplet) {
|
|
253
|
+
if (projectBindingRequiredFor(caplet)) return "project_bound_process";
|
|
254
|
+
if (caplet.setup) return "process";
|
|
255
|
+
if (caplet.backend === "cli") return "process";
|
|
256
|
+
if (caplet.backend === "mcp") return caplet.transport === "stdio" || Boolean(caplet.command) ? "process" : "worker_safe";
|
|
257
|
+
if (caplet.backend === "openapi" || caplet.backend === "graphql" || caplet.backend === "http") return "worker_safe";
|
|
258
|
+
if (caplet.backend === "caplets") return "worker_safe";
|
|
259
|
+
return "local_only";
|
|
260
|
+
}
|
|
261
|
+
function setupTargetFor(deployment) {
|
|
262
|
+
if (deployment === "local") return "local_host";
|
|
263
|
+
return deployment === "self_hosted" ? "remote_host" : "hosted_sandbox";
|
|
264
|
+
}
|
|
265
|
+
function authRequired(auth) {
|
|
266
|
+
return auth !== null && typeof auth === "object" && "type" in auth && auth.type !== "none";
|
|
267
|
+
}
|
|
268
|
+
function projectBindingRequiredFor(caplet) {
|
|
269
|
+
const projectBinding = caplet.projectBinding;
|
|
270
|
+
return Boolean(projectBinding) && typeof projectBinding === "object" && !Array.isArray(projectBinding) && projectBinding.required === true;
|
|
271
|
+
}
|
|
272
|
+
function explicitResourceClass(caplet) {
|
|
273
|
+
const runtime = caplet.runtime;
|
|
274
|
+
if (!runtime || typeof runtime !== "object" || Array.isArray(runtime)) return void 0;
|
|
275
|
+
const resources = runtime.resources;
|
|
276
|
+
if (!resources || typeof resources !== "object" || Array.isArray(resources)) return void 0;
|
|
277
|
+
const value = resources.class;
|
|
278
|
+
return value === "small" || value === "medium" || value === "standard" || value === "large" || value === "heavy" ? value : void 0;
|
|
279
|
+
}
|
|
280
|
+
//#endregion
|
|
281
|
+
export { HIDDEN_REASON_CODES, classifyCapletRuntimeRoute, inferRuntimeFeatures, isRuntimeResourceClassAllowed, planCapletRuntimeRoute, planCapletRuntimeRoutes, resolveRuntimeResources, resourceClassRank };
|