@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.
Files changed (132) hide show
  1. package/dist/attach/options.d.ts +10 -0
  2. package/dist/attach/server.d.ts +5 -0
  3. package/dist/caplet-files-bundle.d.ts +430 -0
  4. package/dist/caplet-files.d.ts +3 -266
  5. package/dist/caplet-source/bundle.d.ts +7 -0
  6. package/dist/caplet-source/filesystem.d.ts +7 -0
  7. package/dist/caplet-source/filesystem.js +2 -0
  8. package/dist/caplet-source/index.d.ts +4 -0
  9. package/dist/caplet-source/parse.d.ts +35 -0
  10. package/dist/caplet-source/types.d.ts +9 -0
  11. package/dist/caplet-source.js +7011 -0
  12. package/dist/cli/auth.d.ts +40 -2
  13. package/dist/cli/cloud-add.d.ts +8 -0
  14. package/dist/cli/code-mode.d.ts +16 -0
  15. package/dist/cli/commands.d.ts +8 -1
  16. package/dist/cli/doctor.d.ts +21 -0
  17. package/dist/cli/setup-caplet.d.ts +12 -0
  18. package/dist/cli/setup.d.ts +11 -0
  19. package/dist/cli-tools.d.ts +1 -1
  20. package/dist/cli.d.ts +8 -1
  21. package/dist/cloud/apply.d.ts +36 -0
  22. package/dist/cloud/client.d.ts +30 -0
  23. package/dist/cloud/presence.d.ts +29 -0
  24. package/dist/cloud/project-root.d.ts +2 -0
  25. package/dist/cloud/runtime-adapter.d.ts +23 -0
  26. package/dist/cloud/runtime-http.d.ts +6 -0
  27. package/dist/cloud/sync.d.ts +10 -0
  28. package/dist/cloud-auth/client.d.ts +57 -0
  29. package/dist/cloud-auth/errors.d.ts +11 -0
  30. package/dist/cloud-auth/open-url.d.ts +7 -0
  31. package/dist/cloud-auth/store.d.ts +35 -0
  32. package/dist/cloud-auth/types.d.ts +67 -0
  33. package/dist/code-mode/api.d.ts +32 -0
  34. package/dist/code-mode/declarations.d.ts +5 -0
  35. package/dist/code-mode/diagnostics.d.ts +8 -0
  36. package/dist/code-mode/index.d.ts +4 -0
  37. package/dist/code-mode/logs.d.ts +21 -0
  38. package/dist/code-mode/runner.d.ts +15 -0
  39. package/dist/code-mode/runtime-api.generated.d.ts +1 -0
  40. package/dist/code-mode/sandbox.d.ts +28 -0
  41. package/dist/code-mode/static-analysis.d.ts +2 -0
  42. package/dist/code-mode/tool.d.ts +11 -0
  43. package/dist/code-mode/types.d.ts +120 -0
  44. package/dist/code-mode.js +147855 -0
  45. package/dist/{completion-RqzHpHRY.js → completion-CbazRAiL.js} +20 -1
  46. package/dist/config/paths.d.ts +2 -0
  47. package/dist/config-runtime.d.ts +183 -0
  48. package/dist/config-runtime.js +421 -0
  49. package/dist/config.d.ts +76 -9
  50. package/dist/downstream.d.ts +20 -2
  51. package/dist/engine.d.ts +20 -0
  52. package/dist/exposure/direct-names.d.ts +9 -0
  53. package/dist/exposure/discovery.d.ts +75 -0
  54. package/dist/exposure/policy.d.ts +8 -0
  55. package/dist/filesystem-Kkg32TOJ.js +66 -0
  56. package/dist/generated-tool-input-schema.d.ts +89 -59
  57. package/dist/generated-tool-input-schema.js +172 -1
  58. package/dist/graphql.d.ts +1 -1
  59. package/dist/http-actions.d.ts +1 -1
  60. package/dist/index.d.ts +48 -0
  61. package/dist/index.js +4176 -501
  62. package/dist/native/options.d.ts +22 -3
  63. package/dist/native/remote.d.ts +2 -1
  64. package/dist/native/service.d.ts +13 -3
  65. package/dist/native/tools.d.ts +2 -0
  66. package/dist/native.d.ts +1 -1
  67. package/dist/native.js +3 -431
  68. package/dist/observed-output-shapes/extract.d.ts +5 -0
  69. package/dist/observed-output-shapes/file-store.d.ts +17 -0
  70. package/dist/observed-output-shapes/index.d.ts +7 -0
  71. package/dist/observed-output-shapes/key.d.ts +14 -0
  72. package/dist/observed-output-shapes/merge.d.ts +2 -0
  73. package/dist/observed-output-shapes/pure.d.ts +5 -0
  74. package/dist/observed-output-shapes/pure.js +241 -0
  75. package/dist/observed-output-shapes/schema.d.ts +1 -0
  76. package/dist/observed-output-shapes/types.d.ts +84 -0
  77. package/dist/observed-output-shapes/typescript.d.ts +7 -0
  78. package/dist/observed-output-shapes-uzAMQPhg.js +485 -0
  79. package/dist/observed-output-shapes.js +2 -0
  80. package/dist/openapi.d.ts +1 -1
  81. package/dist/project-binding/attach.d.ts +46 -0
  82. package/dist/project-binding/errors.d.ts +17 -0
  83. package/dist/project-binding/gitignore.d.ts +5 -0
  84. package/dist/project-binding/index.d.ts +2 -0
  85. package/dist/project-binding/mutagen.d.ts +65 -0
  86. package/dist/project-binding/routes.d.ts +9 -0
  87. package/dist/project-binding/session.d.ts +82 -0
  88. package/dist/project-binding/sync-filter.d.ts +19 -0
  89. package/dist/project-binding/sync-size.d.ts +27 -0
  90. package/dist/project-binding/transport.d.ts +21 -0
  91. package/dist/project-binding/types.d.ts +31 -0
  92. package/dist/project-binding/workspaces.d.ts +60 -0
  93. package/dist/project-binding.js +22 -0
  94. package/dist/redaction.d.ts +14 -0
  95. package/dist/redaction.js +30 -0
  96. package/dist/registry.d.ts +4 -0
  97. package/dist/remote/options.d.ts +44 -0
  98. package/dist/remote/selection.d.ts +26 -0
  99. package/dist/remote-control/types.d.ts +1 -1
  100. package/dist/runtime-plan/features.d.ts +7 -0
  101. package/dist/runtime-plan/index.d.ts +4 -0
  102. package/dist/runtime-plan/planner.d.ts +5 -0
  103. package/dist/runtime-plan/resources.d.ts +13 -0
  104. package/dist/runtime-plan/types.d.ts +82 -0
  105. package/dist/runtime-plan.js +281 -0
  106. package/dist/schemas-1HZ0kFpx.js +4270 -0
  107. package/dist/{generated-tool-input-schema--kVuUNc5.js → schemas-BZ6BBrh7.js} +1 -161
  108. package/dist/serve/daemon/config.d.ts +8 -0
  109. package/dist/serve/daemon/index.d.ts +16 -0
  110. package/dist/serve/daemon/paths.d.ts +3 -0
  111. package/dist/serve/daemon/platform-darwin.d.ts +2 -0
  112. package/dist/serve/daemon/platform-linux.d.ts +2 -0
  113. package/dist/serve/daemon/platform-windows.d.ts +2 -0
  114. package/dist/serve/daemon/platform.d.ts +9 -0
  115. package/dist/serve/daemon/process.d.ts +5 -0
  116. package/dist/serve/daemon/types.d.ts +86 -0
  117. package/dist/serve/http.d.ts +8 -0
  118. package/dist/serve/index.d.ts +5 -1
  119. package/dist/serve/native-session.d.ts +19 -0
  120. package/dist/serve/options.d.ts +1 -0
  121. package/dist/serve/session.d.ts +15 -3
  122. package/dist/server/options.d.ts +1 -1
  123. package/dist/{options-DnOUjft1.js → service-D0MwLNyb.js} +38003 -27618
  124. package/dist/setup/hash.d.ts +3 -0
  125. package/dist/setup/local-store.d.ts +34 -0
  126. package/dist/setup/runner.d.ts +40 -0
  127. package/dist/setup/types.d.ts +52 -0
  128. package/dist/stable-json.d.ts +3 -0
  129. package/dist/stable-json.js +26 -0
  130. package/dist/tools.d.ts +38 -12
  131. package/dist/validation-CdqbI2zN.js +174 -0
  132. 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 };