openrod 0.0.0 → 0.1.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/LICENSE +201 -0
- package/NOTICE +8 -0
- package/README.md +58 -2
- package/SETUPS.md +75 -0
- package/THIRD_PARTY_NOTICES.md +15823 -0
- package/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/assets/index-CEZ0R3YS.js +522 -0
- package/dist/assets/index-DYjVZRjW.css +1 -0
- package/dist/assets/index.esm-BVqeoYDn.js +376 -0
- package/dist/assets/index.esm-CXAOoF3i.js +16 -0
- package/dist/assets/index.esm-D0s8MSqt.js +1666 -0
- package/dist/assets/pixelify-sans-cyrillic-wght-normal-BfQLqnEI.woff2 +0 -0
- package/dist/assets/pixelify-sans-latin-ext-wght-normal-CsF3XSp0.woff2 +0 -0
- package/dist/assets/pixelify-sans-latin-wght-normal-Cbhn5ptY.woff2 +0 -0
- package/dist/assets/terminal-view-6GBZ9nXN.css +32 -0
- package/dist/assets/terminal-view-CkPFNoXi.js +40 -0
- package/dist/favicon.png +0 -0
- package/dist/index.html +16 -0
- package/dist/logos/SOURCES.md +133 -0
- package/dist/logos/agents/aider.svg +1 -0
- package/dist/logos/agents/antigravity.svg +1 -0
- package/dist/logos/agents/claudecode.svg +1 -0
- package/dist/logos/agents/codex.svg +1 -0
- package/dist/logos/agents/copilot.svg +1 -0
- package/dist/logos/agents/cursor.svg +1 -0
- package/dist/logos/agents/factory.svg +1 -0
- package/dist/logos/agents/gemini.svg +1 -0
- package/dist/logos/agents/kiro.svg +1 -0
- package/dist/logos/agents/openclaw-color.svg +1 -0
- package/dist/logos/agents/opencode.svg +1 -0
- package/dist/logos/agents/pi.svg +1 -0
- package/dist/logos/anthropic.svg +1 -0
- package/dist/logos/aws-bedrock.svg +1 -0
- package/dist/logos/aws-s3.svg +1 -0
- package/dist/logos/aws.svg +1 -0
- package/dist/logos/claude-code.svg +1 -0
- package/dist/logos/codex.svg +1 -0
- package/dist/logos/copilot.svg +1 -0
- package/dist/logos/cursor.svg +1 -0
- package/dist/logos/deepinfra.svg +1 -0
- package/dist/logos/github.svg +1 -0
- package/dist/logos/google-cloud.svg +1 -0
- package/dist/logos/google-vertex-ai.svg +1 -0
- package/dist/logos/nvidia.svg +1 -0
- package/dist/logos/openai.svg +1 -0
- package/dist/logos/openrouter.svg +1 -0
- package/dist/logos/pypi.svg +1 -0
- package/dist/logos/templates/debian.svg +1 -0
- package/dist/logos/templates/nodejs.svg +1 -0
- package/dist/logos/templates/python.svg +1 -0
- package/dist/logos/templates/ubuntu.svg +1 -0
- package/dist/logos/vscode.svg +1 -0
- package/dist/openrod.png +0 -0
- package/node_modules/@bufbuild/protobuf/README.md +41 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/clone.d.ts +6 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/clone.js +66 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/boot.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/boot.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/enum.js +31 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/extension.js +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/file.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/file.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/index.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/message.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/message.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/service.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/symbols.d.ts +140 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/symbols.js +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/types.d.ts +79 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/boot.d.ts +63 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/boot.js +105 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/embed.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/embed.js +244 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/enum.d.ts +29 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/enum.js +58 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/extension.js +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/file.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/file.js +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/index.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/message.d.ts +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/message.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/restore-json-names.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/restore-json-names.js +29 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/scalar.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/scalar.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/service.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/symbols.d.ts +145 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/symbols.js +74 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/types.d.ts +85 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/create.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/create.js +296 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/descriptors.d.ts +634 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/descriptors.js +53 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/equals.d.ts +46 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/equals.js +209 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/extensions.d.ts +60 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/extensions.js +168 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/fields.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/fields.js +45 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-binary.d.ts +48 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-binary.js +415 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-json.d.ts +73 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-json.js +1037 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/index.js +55 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/is-message.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/is-message.js +33 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/json-value.d.ts +16 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/json-value.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/merge.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/merge.js +70 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/package.json +4 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/proto-int64.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/proto-int64.js +131 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/error.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/error.js +36 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/guard.d.ts +20 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/guard.js +78 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/index.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/index.js +41 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/message.d.ts +49 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/message.js +157 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/names.d.ts +30 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/names.js +115 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/nested-types.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/nested-types.js +110 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/path.d.ts +107 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/path.js +376 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-check.d.ts +45 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-check.js +292 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-types.d.ts +217 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-types.js +16 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect.js +469 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/scalar.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/scalar.js +129 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/unsafe.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/unsafe.js +149 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/registry.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/registry.js +954 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-binary.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-binary.js +437 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-json.d.ts +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-json.js +625 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/from-text.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/from-text.js +684 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/index.d.ts +4 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/index.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/is-group-like.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/is-group-like.js +47 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/reader.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/reader.js +481 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/to-text.d.ts +34 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/to-text.js +358 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/writer.d.ts +76 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/writer.js +220 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/types.d.ts +135 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/unknown-enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/unknown-enum.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/base64-encoding.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/base64-encoding.js +188 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/binary-encoding.d.ts +286 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/binary-encoding.js +726 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/index.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/index.js +37 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/size-delimited.d.ts +69 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/size-delimited.js +191 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-encoding.d.ts +53 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-encoding.js +106 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-format.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-format.js +199 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/varint.d.ts +70 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/varint.js +334 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/any.d.ts +38 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/any.js +75 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/duration.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/duration.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/any_pb.d.ts +238 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/any_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/api_pb.d.ts +537 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/api_pb.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +490 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +68 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/cpp_features_pb.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/cpp_features_pb.js +60 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +4143 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/descriptor_pb.js +892 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/duration_pb.d.ts +161 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/duration_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/empty_pb.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/empty_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +424 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/field_mask_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/go_features_pb.d.ts +189 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/go_features_pb.js +126 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/java_features_pb.d.ts +194 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/java_features_pb.js +106 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/source_context_pb.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/source_context_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/struct_pb.d.ts +195 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/struct_pb.js +59 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +222 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/timestamp_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/type_pb.d.ts +722 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/type_pb.js +242 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +330 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/wrappers_pb.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/index.js +48 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/json.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/json.js +44 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/timestamp.d.ts +21 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/timestamp.js +57 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/wrappers.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/wrappers.js +66 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/clone.d.ts +6 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/clone.js +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/boot.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/boot.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/enum.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/extension.js +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/file.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/file.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/index.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/message.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/message.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/service.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/symbols.d.ts +140 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/symbols.js +40 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/types.d.ts +79 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/boot.d.ts +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/boot.js +101 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/embed.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/embed.js +239 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/enum.d.ts +29 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/enum.js +53 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/extension.js +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/file.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/file.js +32 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/index.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/message.d.ts +15 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/message.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/restore-json-names.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/restore-json-names.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/scalar.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/scalar.js +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/service.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/symbols.d.ts +145 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/symbols.js +71 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/types.d.ts +85 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/create.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/create.js +293 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +634 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.js +50 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/equals.d.ts +46 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/equals.js +206 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/extensions.d.ts +60 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/extensions.js +159 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/fields.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/fields.js +41 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.d.ts +48 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +409 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +73 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +1029 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/index.js +29 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/is-message.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/is-message.js +30 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/json-value.d.ts +16 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/json-value.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/merge.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/merge.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/package.json +4 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/proto-int64.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js +128 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/error.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/error.js +31 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.d.ts +20 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.js +71 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/index.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/index.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/message.d.ts +49 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/message.js +152 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/names.d.ts +30 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/names.js +109 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.js +105 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +107 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.js +369 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.d.ts +45 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.js +284 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-types.d.ts +217 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.js +464 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.js +124 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.js +140 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +948 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-binary.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js +433 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +67 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +620 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/from-text.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/from-text.js +680 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/index.d.ts +4 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/index.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/is-group-like.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/is-group-like.js +44 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/reader.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/reader.js +477 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/to-text.d.ts +34 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/to-text.js +355 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/writer.d.ts +76 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/writer.js +214 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +135 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/unknown-enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/unknown-enum.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.js +184 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +286 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +721 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/index.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/index.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/size-delimited.d.ts +69 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/size-delimited.js +186 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +53 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +101 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.js +195 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/varint.d.ts +70 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js +325 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/any.d.ts +38 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/any.js +69 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/duration.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/duration.js +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +238 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +537 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.js +36 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +490 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +65 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/cpp_features_pb.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/cpp_features_pb.js +57 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +4143 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +888 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +161 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/duration_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/empty_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +424 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +189 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +123 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/java_features_pb.d.ts +194 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/java_features_pb.js +103 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +195 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.js +56 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +222 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +722 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.js +239 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +330 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +64 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/index.js +32 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/json.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/json.js +41 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/timestamp.d.ts +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/timestamp.js +50 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +61 -0
- package/node_modules/@bufbuild/protobuf/package.json +147 -0
- package/node_modules/@connectrpc/connect/README.md +62 -0
- package/node_modules/@connectrpc/connect/dist/cjs/any-client.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/cjs/any-client.js +33 -0
- package/node_modules/@connectrpc/connect/dist/cjs/call-options.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/cjs/call-options.js +15 -0
- package/node_modules/@connectrpc/connect/dist/cjs/callback-client.d.ts +31 -0
- package/node_modules/@connectrpc/connect/dist/cjs/callback-client.js +116 -0
- package/node_modules/@connectrpc/connect/dist/cjs/code.d.ts +75 -0
- package/node_modules/@connectrpc/connect/dist/cjs/code.js +92 -0
- package/node_modules/@connectrpc/connect/dist/cjs/connect-error.d.ts +104 -0
- package/node_modules/@connectrpc/connect/dist/cjs/connect-error.js +141 -0
- package/node_modules/@connectrpc/connect/dist/cjs/context-values.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/cjs/context-values.js +41 -0
- package/node_modules/@connectrpc/connect/dist/cjs/cors.d.ts +45 -0
- package/node_modules/@connectrpc/connect/dist/cjs/cors.js +82 -0
- package/node_modules/@connectrpc/connect/dist/cjs/http-headers.d.ts +37 -0
- package/node_modules/@connectrpc/connect/dist/cjs/http-headers.js +63 -0
- package/node_modules/@connectrpc/connect/dist/cjs/implementation.d.ts +159 -0
- package/node_modules/@connectrpc/connect/dist/cjs/implementation.js +78 -0
- package/node_modules/@connectrpc/connect/dist/cjs/index.d.ts +22 -0
- package/node_modules/@connectrpc/connect/dist/cjs/index.js +46 -0
- package/node_modules/@connectrpc/connect/dist/cjs/interceptor.d.ts +170 -0
- package/node_modules/@connectrpc/connect/dist/cjs/interceptor.js +30 -0
- package/node_modules/@connectrpc/connect/dist/cjs/package.json +1 -0
- package/node_modules/@connectrpc/connect/dist/cjs/promise-client.d.ts +40 -0
- package/node_modules/@connectrpc/connect/dist/cjs/promise-client.js +135 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/async-iterable.d.ts +527 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/async-iterable.js +913 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/compression.d.ts +48 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/compression.js +75 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/content-type-matcher.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/content-type-matcher.js +43 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/create-method-url.d.ts +17 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/create-method-url.js +36 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/envelope.d.ts +90 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/envelope.js +214 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/index.d.ts +25 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/index.js +95 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/invoke-implementation.d.ts +33 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/invoke-implementation.js +178 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/limit-io.d.ts +24 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/limit-io.js +80 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/normalize.d.ts +11 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/normalize.js +55 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/protocol-handler-factory.d.ts +18 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/protocol-handler-factory.js +15 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/protocol-headers.d.ts +9 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/protocol-headers.js +67 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/run-call.d.ts +45 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/run-call.js +125 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/serialization.d.ts +104 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/serialization.js +149 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/signals.d.ts +36 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/signals.js +100 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/transport-options.d.ts +98 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/transport-options.js +15 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-fetch.d.ts +35 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-fetch.js +150 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-handler-client.d.ts +7 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-handler-client.js +88 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-handler.d.ts +167 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal-handler.js +130 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal.d.ts +102 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol/universal.js +78 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/code-string.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/code-string.js +52 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/content-type.d.ts +40 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/content-type.js +71 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/end-stream.d.ts +44 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/end-stream.js +137 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/error-json.d.ts +36 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/error-json.js +166 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/get-request.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/get-request.js +66 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/handler-factory.js +296 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/headers.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/headers.js +32 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/http-status.d.ts +15 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/http-status.js +90 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/index.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/index.js +81 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/parse-timeout.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/parse-timeout.js +44 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/query-params.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/query-params.js +24 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/request-header.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/request-header.js +70 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/trailer-mux.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/trailer-mux.js +53 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/transport.js +210 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/validate-response.d.ts +30 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/validate-response.js +71 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/version.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-connect/version.js +58 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/content-type.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/content-type.js +38 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/gen/status_pb.d.ts +91 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/gen/status_pb.js +27 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/handler-factory.js +124 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/headers.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/headers.js +29 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/http-status.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/http-status.js +46 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/index.d.ts +10 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/index.js +61 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/parse-timeout.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/parse-timeout.js +53 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/request-header.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/request-header.js +56 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/trailer-status.d.ts +28 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/trailer-status.js +118 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/transport.js +185 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/validate-response.d.ts +33 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/validate-response.js +75 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/validate-trailer.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc/validate-trailer.js +44 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/content-type.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/content-type.js +41 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/handler-factory.js +130 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/headers.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/headers.js +44 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/index.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/index.js +61 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/request-header.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/request-header.js +59 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/trailer.d.ts +27 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/trailer.js +71 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/transport.js +234 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/validate-response.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/cjs/protocol-grpc-web/validate-response.js +73 -0
- package/node_modules/@connectrpc/connect/dist/cjs/router-transport.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/cjs/router-transport.js +32 -0
- package/node_modules/@connectrpc/connect/dist/cjs/router.d.ts +81 -0
- package/node_modules/@connectrpc/connect/dist/cjs/router.js +68 -0
- package/node_modules/@connectrpc/connect/dist/cjs/transport.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/cjs/transport.js +15 -0
- package/node_modules/@connectrpc/connect/dist/esm/any-client.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/esm/any-client.js +30 -0
- package/node_modules/@connectrpc/connect/dist/esm/call-options.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/esm/call-options.js +14 -0
- package/node_modules/@connectrpc/connect/dist/esm/callback-client.d.ts +31 -0
- package/node_modules/@connectrpc/connect/dist/esm/callback-client.js +113 -0
- package/node_modules/@connectrpc/connect/dist/esm/code.d.ts +75 -0
- package/node_modules/@connectrpc/connect/dist/esm/code.js +89 -0
- package/node_modules/@connectrpc/connect/dist/esm/connect-error.d.ts +104 -0
- package/node_modules/@connectrpc/connect/dist/esm/connect-error.js +137 -0
- package/node_modules/@connectrpc/connect/dist/esm/context-values.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/esm/context-values.js +37 -0
- package/node_modules/@connectrpc/connect/dist/esm/cors.d.ts +45 -0
- package/node_modules/@connectrpc/connect/dist/esm/cors.js +79 -0
- package/node_modules/@connectrpc/connect/dist/esm/http-headers.d.ts +37 -0
- package/node_modules/@connectrpc/connect/dist/esm/http-headers.js +58 -0
- package/node_modules/@connectrpc/connect/dist/esm/implementation.d.ts +159 -0
- package/node_modules/@connectrpc/connect/dist/esm/implementation.js +73 -0
- package/node_modules/@connectrpc/connect/dist/esm/index.d.ts +22 -0
- package/node_modules/@connectrpc/connect/dist/esm/index.js +27 -0
- package/node_modules/@connectrpc/connect/dist/esm/interceptor.d.ts +170 -0
- package/node_modules/@connectrpc/connect/dist/esm/interceptor.js +27 -0
- package/node_modules/@connectrpc/connect/dist/esm/promise-client.d.ts +40 -0
- package/node_modules/@connectrpc/connect/dist/esm/promise-client.js +128 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/async-iterable.d.ts +527 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/async-iterable.js +891 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/compression.d.ts +48 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/compression.js +71 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/content-type-matcher.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/content-type-matcher.js +40 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/create-method-url.d.ts +17 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/create-method-url.js +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/envelope.d.ts +90 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/envelope.js +206 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/index.d.ts +25 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/index.js +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/invoke-implementation.d.ts +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/invoke-implementation.js +173 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/limit-io.d.ts +24 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/limit-io.js +75 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/normalize.d.ts +11 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/normalize.js +51 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/protocol-handler-factory.d.ts +18 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/protocol-handler-factory.js +14 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/protocol-headers.d.ts +9 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/protocol-headers.js +64 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/run-call.d.ts +45 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/run-call.js +121 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/serialization.d.ts +104 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/serialization.js +141 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/signals.d.ts +36 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/signals.js +95 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/transport-options.d.ts +98 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/transport-options.js +14 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-fetch.d.ts +35 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-fetch.js +142 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-handler-client.d.ts +7 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-handler-client.js +85 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-handler.d.ts +167 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal-handler.js +124 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal.d.ts +102 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol/universal.js +74 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/code-string.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/code-string.js +48 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/content-type.d.ts +40 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/content-type.js +66 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/end-stream.d.ts +44 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/end-stream.js +131 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/error-json.d.ts +36 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/error-json.js +160 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/get-request.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/get-request.js +63 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/handler-factory.js +293 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/headers.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/headers.js +29 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/http-status.d.ts +15 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/http-status.js +86 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/index.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/index.js +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/parse-timeout.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/parse-timeout.js +41 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/query-params.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/query-params.js +21 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/request-header.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/request-header.js +66 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/trailer-mux.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/trailer-mux.js +49 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/transport.js +207 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/validate-response.d.ts +30 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/validate-response.js +67 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/version.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-connect/version.js +53 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/content-type.d.ts +16 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/content-type.js +34 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/gen/status_pb.d.ts +91 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/gen/status_pb.js +24 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/handler-factory.js +121 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/headers.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/headers.js +26 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/http-status.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/http-status.js +43 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/index.d.ts +10 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/index.js +28 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/parse-timeout.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/parse-timeout.js +50 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/request-header.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/request-header.js +52 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/trailer-status.d.ts +28 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/trailer-status.js +113 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/transport.js +182 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/validate-response.d.ts +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/validate-response.js +71 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/validate-trailer.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc/validate-trailer.js +41 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/content-type.d.ts +19 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/content-type.js +37 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/handler-factory.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/handler-factory.js +127 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/headers.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/headers.js +33 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/index.d.ts +8 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/index.js +26 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/request-header.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/request-header.js +55 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/trailer.d.ts +27 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/trailer.js +65 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/transport.d.ts +6 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/transport.js +231 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/validate-response.d.ts +34 -0
- package/node_modules/@connectrpc/connect/dist/esm/protocol-grpc-web/validate-response.js +69 -0
- package/node_modules/@connectrpc/connect/dist/esm/router-transport.d.ts +13 -0
- package/node_modules/@connectrpc/connect/dist/esm/router-transport.js +29 -0
- package/node_modules/@connectrpc/connect/dist/esm/router.d.ts +81 -0
- package/node_modules/@connectrpc/connect/dist/esm/router.js +65 -0
- package/node_modules/@connectrpc/connect/dist/esm/transport.d.ts +20 -0
- package/node_modules/@connectrpc/connect/dist/esm/transport.js +14 -0
- package/node_modules/@connectrpc/connect/package.json +67 -0
- package/node_modules/@connectrpc/connect-node/README.md +144 -0
- package/node_modules/@connectrpc/connect-node/buf.gen.yaml +10 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/compression.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/compression.js +96 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.js +60 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.js +25 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.d.ts +95 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.js +24 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.js +25 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.d.ts +146 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.js +543 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/index.d.ts +14 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/index.js +34 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.d.ts +45 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.js +153 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.js +58 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.d.ts +54 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.js +347 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.js +225 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.d.ts +20 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.js +117 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/package.json +1 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/compression.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/compression.js +93 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.js +57 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.js +22 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.d.ts +95 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.js +21 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.js +22 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.d.ts +146 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.js +539 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/index.d.ts +14 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/index.js +21 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-error.d.ts +45 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-error.js +146 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.js +55 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.d.ts +54 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.js +344 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.js +221 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.d.ts +20 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.js +113 -0
- package/node_modules/@connectrpc/connect-node/package.json +44 -0
- package/node_modules/@nvidia/openshell-sdk/README.md +303 -0
- package/node_modules/@nvidia/openshell-sdk/dist/client.d.ts +1243 -0
- package/node_modules/@nvidia/openshell-sdk/dist/client.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/client.js +1321 -0
- package/node_modules/@nvidia/openshell-sdk/dist/client.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/errors.d.ts +35 -0
- package/node_modules/@nvidia/openshell-sdk/dist/errors.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/errors.js +79 -0
- package/node_modules/@nvidia/openshell-sdk/dist/errors.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/datamodel_pb.d.ts +301 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/datamodel_pb.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/datamodel_pb.js +69 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/datamodel_pb.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/google/rpc/error_details_pb.d.ts +581 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/google/rpc/error_details_pb.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/google/rpc/error_details_pb.js +90 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/google/rpc/error_details_pb.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/openshell_pb.d.ts +9131 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/openshell_pb.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/openshell_pb.js +1898 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/openshell_pb.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/options_pb.d.ts +58 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/options_pb.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/options_pb.js +24 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/options_pb.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/sandbox_pb.d.ts +1203 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/sandbox_pb.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/sandbox_pb.js +277 -0
- package/node_modules/@nvidia/openshell-sdk/dist/gen/sandbox_pb.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/index.d.ts +7 -0
- package/node_modules/@nvidia/openshell-sdk/dist/index.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/index.js +6 -0
- package/node_modules/@nvidia/openshell-sdk/dist/index.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/oidc.d.ts +14 -0
- package/node_modules/@nvidia/openshell-sdk/dist/oidc.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/oidc.js +177 -0
- package/node_modules/@nvidia/openshell-sdk/dist/oidc.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/raw.d.ts +6 -0
- package/node_modules/@nvidia/openshell-sdk/dist/raw.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/raw.js +15 -0
- package/node_modules/@nvidia/openshell-sdk/dist/raw.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/ssh-validate.d.ts +11 -0
- package/node_modules/@nvidia/openshell-sdk/dist/ssh-validate.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/ssh-validate.js +58 -0
- package/node_modules/@nvidia/openshell-sdk/dist/ssh-validate.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/transport.d.ts +35 -0
- package/node_modules/@nvidia/openshell-sdk/dist/transport.d.ts.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/dist/transport.js +97 -0
- package/node_modules/@nvidia/openshell-sdk/dist/transport.js.map +1 -0
- package/node_modules/@nvidia/openshell-sdk/package.json +58 -0
- package/package.json +93 -4
- package/server/activity-delivery.js +143 -0
- package/server/activity-store.js +168 -0
- package/server/agent-inventory.js +76 -0
- package/server/agent-resources.py +60 -0
- package/server/api.js +648 -0
- package/server/cli.js +168 -0
- package/server/cloud-connections.js +56 -0
- package/server/cloud-origin.js +11 -0
- package/server/cloud-proxy.js +122 -0
- package/server/cloud-ssh-proxy.cjs +73 -0
- package/server/cloud-ssh.js +135 -0
- package/server/cloud-transfer.js +221 -0
- package/server/compute.js +50 -0
- package/server/editor.js +114 -0
- package/server/egress.js +204 -0
- package/server/files.js +489 -0
- package/server/gateway-install.js +64 -0
- package/server/gateway.js +415 -0
- package/server/image-templates.js +393 -0
- package/server/ingress.js +185 -0
- package/server/launch-token.js +55 -0
- package/server/local-catalog.js +111 -0
- package/server/local-cloud-native.js +152 -0
- package/server/local-cloud.js +123 -0
- package/server/location-inventory.js +94 -0
- package/server/machines.js +84 -0
- package/server/openshell-cli.js +144 -0
- package/server/org.js +536 -0
- package/server/orphan-processes.js +42 -0
- package/server/paths.js +28 -0
- package/server/policy-template-store.js +92 -0
- package/server/policy.js +583 -0
- package/server/remote-gateway-state.js +123 -0
- package/server/remote-gateway.js +420 -0
- package/server/remote-hosts.js +354 -0
- package/server/remote-http.js +14 -0
- package/server/remote-image-engine.js +47 -0
- package/server/remote-runtime.js +65 -0
- package/server/remote-runtime.py +162 -0
- package/server/sandbox-identity.js +14 -0
- package/server/security.js +139 -0
- package/server/session-revocations.js +20 -0
- package/server/setup-artifact-installer.py +54 -0
- package/server/setup-artifacts.js +23 -0
- package/server/setup-auth-discovery.js +24 -0
- package/server/setup-credentials.js +54 -0
- package/server/setup-deployment.js +299 -0
- package/server/setup-discovery.js +289 -0
- package/server/setup-egress.js +133 -0
- package/server/setup-http.js +47 -0
- package/server/setup-installer.py +289 -0
- package/server/setup-json.py +8 -0
- package/server/setup-members.js +77 -0
- package/server/setup-packages.js +214 -0
- package/server/setup-preparation.js +144 -0
- package/server/setup-python.js +8 -0
- package/server/setup-remote-check.js +35 -0
- package/server/setup-transfer.js +17 -0
- package/server/setup-verifier.cjs +43 -0
- package/server/setups.js +172 -0
- package/server/ssh-hosts.js +184 -0
- package/server/ssh.js +153 -0
- package/server/start.js +71 -0
- package/server/terminal.js +173 -0
- package/server/worker-auth.js +18 -0
- package/shared/agent-access.js +103 -0
- package/shared/antigravity-network-guidance.js +9 -0
- package/shared/group-membership.js +33 -0
- package/shared/group-network.js +29 -0
- package/shared/policy-templates.js +79 -0
- package/shared/secret-fields.js +35 -0
- package/shared/setup-launch.js +25 -0
- package/shared/setup-targets.js +11 -0
- package/shared/setup-targets.json +12 -0
- package/src/lib/activity-export.js +52 -0
- package/src/lib/activity-inventory.js +45 -0
- package/src/lib/agents.js +41 -0
- package/src/lib/api.js +173 -0
- package/src/lib/cloud-machine.js +9 -0
- package/src/lib/cloud-origin.js +6 -0
- package/src/lib/cloud-transfer.js +22 -0
- package/src/lib/compute-target.js +46 -0
- package/src/lib/delete-network-policies.js +15 -0
- package/src/lib/egress-groups.js +24 -0
- package/src/lib/egress.js +28 -0
- package/src/lib/files.js +24 -0
- package/src/lib/fleet.js +100 -0
- package/src/lib/format.js +24 -0
- package/src/lib/groups.js +16 -0
- package/src/lib/image-templates.js +139 -0
- package/src/lib/import-setup.js +36 -0
- package/src/lib/local-cloud.js +118 -0
- package/src/lib/location-inventory.js +20 -0
- package/src/lib/locations.js +5 -0
- package/src/lib/placement.js +9 -0
- package/src/lib/policy-editor.js +58 -0
- package/src/lib/policy-sources.js +33 -0
- package/src/lib/quick-setup.js +110 -0
- package/src/lib/sandbox-creations.js +59 -0
- package/src/lib/sandbox-images.js +38 -0
- package/src/lib/sandbox-session.js +140 -0
- package/src/lib/sandboxes.js +78 -0
- package/src/lib/secret-inventory.js +26 -0
- package/src/lib/services.js +41 -0
- package/src/lib/setup-import-jobs.js +62 -0
- package/src/lib/setup-imports.js +4 -0
- package/src/lib/setup-network.js +39 -0
- package/src/lib/setup-template-build.js +17 -0
- package/src/lib/utils.js +6 -0
- package/vendor/OPENSHELL-LICENSE +203 -0
- package/vendor/nvidia-openshell-sdk-0.0.0.tgz +0 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { DEFAULT_ADVANCED, listPolicies, removePolicy, validatePolicy, writePolicy } from './egress.js'
|
|
2
|
+
import { blockOverlap, covers, protectCoverage, readOrg, serializeOrgWrite, syncAllWhileLocked } from './org.js'
|
|
3
|
+
import { readSetupMembers } from './setup-members.js'
|
|
4
|
+
import { usableSetup, SETUP_ID } from './setups.js'
|
|
5
|
+
import { hostMatches } from '../src/lib/egress.js'
|
|
6
|
+
import { inSetupPolicy } from '../src/lib/setup-network.js'
|
|
7
|
+
|
|
8
|
+
// ---- one egress policy per MCPs & Skills setup -------------------------------
|
|
9
|
+
//
|
|
10
|
+
// A saved setup whose MCPs reach the network gets one allow policy,
|
|
11
|
+
// policies/egress/setup-<id>.json, that applies to the sandboxes using the
|
|
12
|
+
// setup (server/setup-members.js). It lists the hosts the setup's MCPs reach
|
|
13
|
+
// at runtime and their own sign-in hosts, never build hosts such as the npm
|
|
14
|
+
// registry: the isolated builder reaches those, not sandboxes. Hosts an MCP
|
|
15
|
+
// sends credentials to, and sign-in services an MCP's metadata names, stay out
|
|
16
|
+
// too: each sandbox approves those when it enables the setup. Hosts the
|
|
17
|
+
// organization blocks stay out. People may add hosts and ports in Egress; a
|
|
18
|
+
// recompute keeps them.
|
|
19
|
+
|
|
20
|
+
const fail = (message, status = 400) => Object.assign(new Error(message), { status })
|
|
21
|
+
const HOST = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/
|
|
22
|
+
const PHASES = ['runtime', 'auth']
|
|
23
|
+
const NONE = { applied: [], failed: [] }
|
|
24
|
+
const uniq = (items) => [...new Set(items)]
|
|
25
|
+
|
|
26
|
+
export const setupPolicyId = (setupId) => {
|
|
27
|
+
if (!SETUP_ID.test(String(setupId ?? ''))) throw fail('Unknown MCPs & Skills setup.')
|
|
28
|
+
return `setup-${setupId}`
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Host and port → the MCPs that need them, in the order the setup lists them.
|
|
32
|
+
function hostsOf(setup, keep) {
|
|
33
|
+
const out = new Map()
|
|
34
|
+
for (const item of usableSetup(setup).items) for (const r of item.requirements ?? []) {
|
|
35
|
+
const host = String(r.host ?? '').trim().toLowerCase().replace(/\.$/, ''), port = Number(r.port ?? 443)
|
|
36
|
+
if (!PHASES.includes(r.phase) || !keep(item, r) || !HOST.test(host) || !Number.isInteger(port) || port < 1 || port > 65535) continue
|
|
37
|
+
const entry = out.get(`${host}:${port}`) ?? { host, port, items: [] }
|
|
38
|
+
if (!entry.items.includes(item.name)) entry.items.push(item.name)
|
|
39
|
+
out.set(`${host}:${port}`, entry)
|
|
40
|
+
}
|
|
41
|
+
return [...out.values()]
|
|
42
|
+
}
|
|
43
|
+
export const setupHosts = (setup) => hostsOf(setup, inSetupPolicy)
|
|
44
|
+
// The hosts each sandbox approves when it enables the setup instead.
|
|
45
|
+
export const approvalHosts = (setup) => hostsOf(setup, (item, r) => !inSetupPolicy(item, r))
|
|
46
|
+
const byHost = (needs) => [...needs.reduce((all, { host, items }) => all.set(host, { host, items: uniq([...(all.get(host)?.items ?? []), ...items]) }), new Map()).values()]
|
|
47
|
+
// Only an allow policy carrying this setup's marker is the setup's to rewrite or delete.
|
|
48
|
+
const owned = (policy, setupId) => policy?.action === 'allow' && policy.setup?.id === setupId
|
|
49
|
+
|
|
50
|
+
// The setup's own allow policy when it lets a sandbox using the setup (or the
|
|
51
|
+
// setup a Quick-setup snapshot was prepared from) reach the requirement.
|
|
52
|
+
export const setupPolicyFor = (policies, setup, requirement) => {
|
|
53
|
+
const ids = [setup.id, setup.preparedFrom?.id].filter(Boolean)
|
|
54
|
+
return policies.find((p) => p.action === 'allow' && (p.appliesTo.setups ?? []).some((id) => ids.includes(id))
|
|
55
|
+
&& p.destinations.some((d) => hostMatches(d, requirement.host)) && p.advanced.ports.includes(Number(requirement.port ?? 443))) ?? null
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// `dir`, `org`, `sync` and `members` are for tests.
|
|
59
|
+
export function createSetupEgress({ dir, org = readOrg, sync = syncAllWhileLocked, members = readSetupMembers } = {}) {
|
|
60
|
+
// Automatic and manual changes share coverage checks and the same queue.
|
|
61
|
+
const serial = serializeOrgWrite
|
|
62
|
+
// Only the sandboxes either version reaches. Without any, the gateway is
|
|
63
|
+
// not contacted; when it is unreachable, the sweeper applies it later.
|
|
64
|
+
async function apply(versions) {
|
|
65
|
+
try {
|
|
66
|
+
const stored = Object.values(await members())
|
|
67
|
+
const reach = versions.some((p) => p && (p.appliesTo.everyone || p.appliesTo.groups.length || p.appliesTo.sandboxes.length || stored.some((ids) => p.appliesTo.setups.some((id) => ids.includes(id)))))
|
|
68
|
+
return reach ? await sync({ only: covers(versions) }) : NONE
|
|
69
|
+
} catch (error) { return { error: error.rawMessage ?? error.message } }
|
|
70
|
+
}
|
|
71
|
+
const syncSetupPolicy = (setup) => serial(async () => {
|
|
72
|
+
if (!SETUP_ID.test(String(setup?.id ?? '')) || !Array.isArray(setup.items) || typeof setup.name !== 'string') throw fail('Unknown MCPs & Skills setup.')
|
|
73
|
+
// A Quick-setup snapshot uses the policy of the setup it was prepared from.
|
|
74
|
+
if (setup.preparedFrom) return null
|
|
75
|
+
const id = setupPolicyId(setup.id)
|
|
76
|
+
const [organization, policies] = await Promise.all([org(), listPolicies(dir)])
|
|
77
|
+
const existing = policies.find((p) => p.id === id) ?? null
|
|
78
|
+
// A rule switched to Block in Egress, or someone else's rule with this id, is left alone.
|
|
79
|
+
if (existing && !owned(existing, setup.id)) throw fail(`The rule “${existing.name}” isn’t an allow rule kept by this setup, so it was left unchanged. Edit it in Network › Egress.`, 409)
|
|
80
|
+
const advanced = existing?.advanced ?? { ...DEFAULT_ADVANCED, ports: [] }
|
|
81
|
+
// OpenShell can't combine an audit or private-address allow with any block
|
|
82
|
+
// on the same host, so such a policy keeps clear of every block.
|
|
83
|
+
const strict = advanced.enforcement === 'audit' || advanced.privateIps.length > 0
|
|
84
|
+
const blocks = [...organization.blocked, ...policies.filter((p) => p.action === 'block' && (strict || p.appliesTo.everyone)).flatMap((p) => p.destinations)]
|
|
85
|
+
const hosts = new Map(), blocked = [], ports = []
|
|
86
|
+
for (const need of setupHosts(setup)) {
|
|
87
|
+
if (blockOverlap(blocks, need.host)) { if (!blocked.includes(need.host)) blocked.push(need.host); continue }
|
|
88
|
+
ports.push(need.port)
|
|
89
|
+
const entry = hosts.get(need.host) ?? { host: need.host, items: [] }
|
|
90
|
+
entry.items = uniq([...entry.items, ...need.items])
|
|
91
|
+
hosts.set(need.host, entry)
|
|
92
|
+
}
|
|
93
|
+
const required = [...hosts.keys()]
|
|
94
|
+
const extras = (existing?.destinations ?? []).filter((d) => !(existing.setup?.required ?? []).includes(d) && !required.includes(d))
|
|
95
|
+
const destinations = [...required, ...extras]
|
|
96
|
+
if (!destinations.length) {
|
|
97
|
+
if (existing) {
|
|
98
|
+
await protectCoverage(policies, policies.filter((p) => p.id !== id))
|
|
99
|
+
await removePolicy(id, dir); await apply([existing])
|
|
100
|
+
}
|
|
101
|
+
return null
|
|
102
|
+
}
|
|
103
|
+
// Ports people added stay; ports only a removed MCP needed close.
|
|
104
|
+
const opened = uniq([...advanced.ports.filter((p) => !(existing?.setup?.ports ?? []).includes(p)), ...ports])
|
|
105
|
+
const policy = validatePolicy({
|
|
106
|
+
id,
|
|
107
|
+
name: existing?.name ?? `MCPs & Skills: ${setup.name}`.slice(0, 80),
|
|
108
|
+
action: 'allow',
|
|
109
|
+
destinations,
|
|
110
|
+
appliesTo: existing ? { ...existing.appliesTo, setups: uniq([...existing.appliesTo.setups, setup.id]) } : { everyone: false, groups: [], sandboxes: [], setups: [setup.id] },
|
|
111
|
+
advanced: { ...advanced, ports: opened.length ? opened : DEFAULT_ADVANCED.ports },
|
|
112
|
+
setup: { id: setup.id, name: setup.name.replace(/[\x00-\x1f\x7f]/g, ''), required, ports: uniq(ports) },
|
|
113
|
+
})
|
|
114
|
+
const changed = JSON.stringify(policy) !== JSON.stringify(existing)
|
|
115
|
+
if (changed) {
|
|
116
|
+
await protectCoverage(policies, [...policies.filter((p) => p.id !== id), policy])
|
|
117
|
+
await writePolicy(policy, dir)
|
|
118
|
+
}
|
|
119
|
+
return { id, name: policy.name, created: !existing, destinations: policy.destinations, hosts: [...hosts.values()], blocked, approval: byHost(approvalHosts(setup)), sync: changed ? await apply([existing, policy]) : NONE }
|
|
120
|
+
})
|
|
121
|
+
const removeSetupPolicy = (setupId) => serial(async () => {
|
|
122
|
+
const id = setupPolicyId(setupId)
|
|
123
|
+
const policies = await listPolicies(dir)
|
|
124
|
+
const existing = policies.find((p) => p.id === id)
|
|
125
|
+
if (!owned(existing, setupId)) return { removed: false, sync: NONE }
|
|
126
|
+
await protectCoverage(policies, policies.filter((p) => p.id !== id))
|
|
127
|
+
await removePolicy(id, dir)
|
|
128
|
+
return { removed: true, sync: await apply([existing]) }
|
|
129
|
+
})
|
|
130
|
+
return { syncSetupPolicy, removeSetupPolicy }
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export const { syncSetupPolicy, removeSetupPolicy } = createSetupEgress()
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import https from 'node:https'
|
|
2
|
+
import { lookup } from 'node:dns/promises'
|
|
3
|
+
import { isIP } from 'node:net'
|
|
4
|
+
import { publicAddress } from './activity-delivery.js'
|
|
5
|
+
import { fail } from './setup-discovery.js'
|
|
6
|
+
import { readOrg, blockedBy } from './org.js'
|
|
7
|
+
import { listPolicies, blockedByPolicy } from './egress.js'
|
|
8
|
+
import { hostMatches } from '../src/lib/egress.js'
|
|
9
|
+
|
|
10
|
+
// Read-only OAuth metadata discovery runs in the trusted control plane. Pin every
|
|
11
|
+
// socket to checked public DNS answers; never follow redirects or proxy env vars.
|
|
12
|
+
export function publicHTTPS(value) {
|
|
13
|
+
const url = new URL(value)
|
|
14
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.hash || url.port && url.port !== '443' || url.hostname.endsWith('.local') || url.hostname.endsWith('.localhost')) throw fail('Sign-in requires a public HTTPS service on port 443.')
|
|
15
|
+
return url
|
|
16
|
+
}
|
|
17
|
+
export async function oauthFetch(input, init = {}, approvedHosts = new Set(), pendingHosts = new Set()) {
|
|
18
|
+
const url = publicHTTPS(typeof input === 'string' || input instanceof URL ? input : input.url)
|
|
19
|
+
if (!approvedHosts.has(url.hostname)) { pendingHosts.add(url.hostname); throw fail('Review the additional sign-in destination.', 409) }
|
|
20
|
+
const [org, policies] = await Promise.all([readOrg(), listPolicies()])
|
|
21
|
+
if (blockedBy(org, [url.hostname]) || blockedByPolicy(policies, { name: '', group: null }, [url.hostname], hostMatches)) throw fail('Sign-in destination is blocked by organization policy.', 403)
|
|
22
|
+
const host = url.hostname.replace(/^\[|\]$/g, '')
|
|
23
|
+
const addresses = isIP(host) ? [{ address: host, family: isIP(host) }] : await lookup(host, { all: true })
|
|
24
|
+
if (!addresses.length || addresses.some(a => !publicAddress(a.address))) throw fail('Sign-in destination resolves to a private or reserved address.')
|
|
25
|
+
const chosen = addresses[0]
|
|
26
|
+
const method = init.method || input.method || 'GET'
|
|
27
|
+
if (method !== 'GET') throw fail('Sign-in discovery only permits metadata reads.')
|
|
28
|
+
const headers = Object.fromEntries(new Headers(init.headers || input.headers))
|
|
29
|
+
delete headers.host
|
|
30
|
+
const body = init.body === undefined ? (input instanceof Request && !['GET', 'HEAD'].includes(method) ? await input.text() : undefined) : String(init.body)
|
|
31
|
+
if (body && Buffer.byteLength(body) > 128 * 1024) throw fail('Sign-in request is too large.')
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
const request = https.request(url, { method, headers, agent: false, signal: AbortSignal.timeout(15000), lookup: (_, options, cb) => options.all ? cb(null, [chosen]) : cb(null, chosen.address, chosen.family) }, response => {
|
|
34
|
+
const chunks = []; let size = 0
|
|
35
|
+
response.on('data', chunk => { size += chunk.length; if (size > 1024 * 1024) request.destroy(); else chunks.push(chunk) })
|
|
36
|
+
response.on('end', () => {
|
|
37
|
+
const status = response.statusCode
|
|
38
|
+
const value = new Response([204, 205, 304].includes(status) ? null : Buffer.concat(chunks), { status, headers: response.headers })
|
|
39
|
+
Object.defineProperty(value, 'url', { value: url.href })
|
|
40
|
+
resolve(value)
|
|
41
|
+
})
|
|
42
|
+
response.on('error', () => reject(fail('Sign-in HTTPS response failed.')))
|
|
43
|
+
})
|
|
44
|
+
request.on('error', () => reject(fail('Sign-in HTTPS request failed. Check access and retry.')))
|
|
45
|
+
request.end(body)
|
|
46
|
+
})
|
|
47
|
+
}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"""Trusted offline installer. Imported commands and skill scripts are never run."""
|
|
2
|
+
import base64, hashlib, json, os, pathlib, re, shutil, sys, tempfile
|
|
3
|
+
import fcntl
|
|
4
|
+
import tomllib
|
|
5
|
+
|
|
6
|
+
HOME = pathlib.Path(os.environ.get('OPENSHELL_SETUP_HOME', '/sandbox'))
|
|
7
|
+
if 'parse_agent_json' not in globals(): exec((pathlib.Path(__file__).parent / 'setup-json.py').read_text())
|
|
8
|
+
CATALOG = json.loads(globals().get('SETUP_TARGET_CATALOG') or (pathlib.Path(__file__).parent.parent / 'shared/setup-targets.json').read_text())
|
|
9
|
+
TARGETS = {t['id']: t for t in CATALOG if t.get('config') and t.get('skills')}
|
|
10
|
+
|
|
11
|
+
def find_executable(command):
|
|
12
|
+
found = shutil.which(command)
|
|
13
|
+
if found or '/' in command: return found
|
|
14
|
+
# Non-login checks must find image-installed tools without sourcing profiles.
|
|
15
|
+
roots = [pathlib.Path(p) for p in ('/usr/local/bin', '/usr/bin', '/opt/bin')]
|
|
16
|
+
roots += [HOME / p for p in ('.local/bin', '.npm-global/bin', '.bun/bin', '.opencode/bin', 'bin', '.cargo/bin')]
|
|
17
|
+
roots += sorted((HOME / '.nvm/versions/node').glob('*/bin')) + [pathlib.Path('/opt/node/bin')]
|
|
18
|
+
for root in roots:
|
|
19
|
+
candidate = root / command
|
|
20
|
+
if candidate.is_file() and os.access(candidate, os.X_OK): return str(candidate)
|
|
21
|
+
return None
|
|
22
|
+
|
|
23
|
+
def network_executable(filename):
|
|
24
|
+
if not filename: return None
|
|
25
|
+
resolved = os.path.realpath(filename)
|
|
26
|
+
if pathlib.Path(resolved).name == 'kiro-cli':
|
|
27
|
+
chat = pathlib.Path(resolved).with_name('kiro-cli-chat')
|
|
28
|
+
if chat.is_file(): return network_executable(str(chat))
|
|
29
|
+
# Copilot's npm loader spawns the platform package, not the Node interpreter.
|
|
30
|
+
if pathlib.Path(resolved).name == 'npm-loader.js' and pathlib.Path(resolved).parent.name == 'copilot':
|
|
31
|
+
package = pathlib.Path(resolved).parent
|
|
32
|
+
arch = 'arm64' if os.uname().machine in ('aarch64', 'arm64') else 'x64'
|
|
33
|
+
try: glibc = bool(os.confstr('CS_GNU_LIBC_VERSION'))
|
|
34
|
+
except (ValueError, OSError): glibc = False
|
|
35
|
+
for platform in (['linux'] if glibc else ['linuxmusl', 'linux']):
|
|
36
|
+
name = 'copilot-' + platform + '-' + arch
|
|
37
|
+
for candidate in (package / 'node_modules/@github' / name / 'copilot', package.parent / name / 'copilot'):
|
|
38
|
+
if candidate.is_file(): return network_executable(str(candidate))
|
|
39
|
+
return None
|
|
40
|
+
try:
|
|
41
|
+
with open(resolved, 'rb') as handle:
|
|
42
|
+
if handle.read(4) == b'\x7fELF': return resolved
|
|
43
|
+
except OSError: pass
|
|
44
|
+
# Codex's npm shim launches a native binary, which owns its network calls.
|
|
45
|
+
if pathlib.Path(resolved).name == 'codex.js':
|
|
46
|
+
package = pathlib.Path(resolved).parent.parent
|
|
47
|
+
arch = 'arm64' if os.uname().machine in ('aarch64', 'arm64') else 'x64'
|
|
48
|
+
triple = 'aarch64-unknown-linux-musl' if arch == 'arm64' else 'x86_64-unknown-linux-musl'
|
|
49
|
+
roots = [package / 'vendor', package / 'node_modules/@openai' / ('codex-linux-' + arch) / 'vendor', package.parent / ('codex-linux-' + arch) / 'vendor']
|
|
50
|
+
for base in roots:
|
|
51
|
+
for suffix in ('bin/codex', 'codex/codex'):
|
|
52
|
+
candidate = base / triple / suffix
|
|
53
|
+
if candidate.is_file():
|
|
54
|
+
found = network_executable(str(candidate))
|
|
55
|
+
if found: return found
|
|
56
|
+
return None
|
|
57
|
+
# Known Node shebangs run the Node interpreter; other spawned programs still need separate grants.
|
|
58
|
+
try:
|
|
59
|
+
with open(resolved, 'rb') as handle: first = handle.readline(160).strip()
|
|
60
|
+
if first in (b'#!/usr/bin/env node', b'#!/usr/bin/node', b'#!/usr/local/bin/node'):
|
|
61
|
+
return network_executable(shutil.which('node'))
|
|
62
|
+
except OSError: pass
|
|
63
|
+
# Other script interpreters require a supported adapter.
|
|
64
|
+
return None
|
|
65
|
+
|
|
66
|
+
def toml_value(value):
|
|
67
|
+
if isinstance(value, dict): return '{ ' + ', '.join(json.dumps(k) + ' = ' + toml_value(v) for k, v in value.items()) + ' }'
|
|
68
|
+
if isinstance(value, list): return '[' + ', '.join(toml_value(v) for v in value) + ']'
|
|
69
|
+
return json.dumps(value)
|
|
70
|
+
|
|
71
|
+
def digest(raw): return hashlib.sha256(raw).hexdigest()
|
|
72
|
+
def safe_path(relative):
|
|
73
|
+
parts = pathlib.PurePosixPath(relative).parts
|
|
74
|
+
if not parts or relative.startswith('/') or any(p in ('..', '.') for p in parts): raise ValueError('Unsafe destination')
|
|
75
|
+
current = HOME
|
|
76
|
+
if current.is_symlink(): raise ValueError('Sandbox home is a symlink')
|
|
77
|
+
for p in parts:
|
|
78
|
+
current = current / p
|
|
79
|
+
if current.is_symlink(): raise ValueError('Destination contains a symlink')
|
|
80
|
+
return current
|
|
81
|
+
|
|
82
|
+
def read(relative):
|
|
83
|
+
p = safe_path(relative)
|
|
84
|
+
if not p.exists(): return None
|
|
85
|
+
if not p.is_file() or p.stat().st_size > 8 * 1024 * 1024: raise ValueError('Destination is not a supported regular file')
|
|
86
|
+
with open(p, 'rb') as f: return f.read()
|
|
87
|
+
|
|
88
|
+
def write(relative, data, mode=0o600):
|
|
89
|
+
p = safe_path(relative); p.parent.mkdir(parents=True, exist_ok=True)
|
|
90
|
+
safe_path(relative)
|
|
91
|
+
if data is None:
|
|
92
|
+
if p.exists(): p.unlink()
|
|
93
|
+
return
|
|
94
|
+
fd, temp = tempfile.mkstemp(prefix='.openshell-', dir=p.parent)
|
|
95
|
+
try:
|
|
96
|
+
with os.fdopen(fd, 'wb') as f:
|
|
97
|
+
f.write(data); os.fchmod(f.fileno(), mode)
|
|
98
|
+
os.replace(temp, p)
|
|
99
|
+
finally:
|
|
100
|
+
if os.path.exists(temp): os.unlink(temp)
|
|
101
|
+
|
|
102
|
+
def connected_config(item):
|
|
103
|
+
config = item.get('config')
|
|
104
|
+
if not config or not item.get('credentialRef'): return config
|
|
105
|
+
aliases = set(item['credentialRef']['aliases'].values())
|
|
106
|
+
def resolve(value):
|
|
107
|
+
if not isinstance(value, str): return value
|
|
108
|
+
def replace(match):
|
|
109
|
+
key = match.group(1)
|
|
110
|
+
bound = os.environ.get(key, '')
|
|
111
|
+
if key not in aliases or not bound.startswith('openshell:resolve:env:'): raise ValueError('Gateway credential handles are not available yet. Check requirements and retry.')
|
|
112
|
+
return bound
|
|
113
|
+
return re.sub(r'openshell:resolve:env:([A-Za-z0-9_]+)', replace, value)
|
|
114
|
+
return {key: {k: resolve(v) for k, v in value.items()} if key in ('env', 'headers') else value for key, value in config.items()}
|
|
115
|
+
|
|
116
|
+
def remove_managed_toml(text, block):
|
|
117
|
+
if text.count(block) == 1: return text.replace(block, '', 1)
|
|
118
|
+
# Codex may reformat the file or append its own tables inside our markers.
|
|
119
|
+
# Check values first, remove only owned tables, then verify everything else.
|
|
120
|
+
original = tomllib.loads(text)
|
|
121
|
+
owned = tomllib.loads(block).get('mcp_servers', {})
|
|
122
|
+
if not owned or any(original.get('mcp_servers', {}).get(k) != v for k, v in owned.items()):
|
|
123
|
+
raise ValueError('Managed MCP configuration changed; resolve it before updating or removing')
|
|
124
|
+
kept = []; skipping = False
|
|
125
|
+
for line in text.splitlines(keepends=True):
|
|
126
|
+
if re.match(r'^\s*\[.*\]\s*(?:#.*)?$', line):
|
|
127
|
+
try: section = tomllib.loads(line)
|
|
128
|
+
except tomllib.TOMLDecodeError: raise ValueError('Managed MCP configuration could not be safely updated')
|
|
129
|
+
servers = section.get('mcp_servers', {})
|
|
130
|
+
skipping = bool(servers) and set(servers).issubset(owned)
|
|
131
|
+
if not skipping or line.lstrip().startswith('#'): kept.append(line)
|
|
132
|
+
result = ''.join(kept)
|
|
133
|
+
for line in block.splitlines(keepends=True):
|
|
134
|
+
if line.startswith('# openshell-setup:'): result = result.replace(line, '')
|
|
135
|
+
expected = json.loads(json.dumps(original))
|
|
136
|
+
for key in owned: del expected['mcp_servers'][key]
|
|
137
|
+
actual = tomllib.loads(result)
|
|
138
|
+
if not expected.get('mcp_servers'): expected.pop('mcp_servers', None)
|
|
139
|
+
if not actual.get('mcp_servers'): actual.pop('mcp_servers', None)
|
|
140
|
+
if actual != expected: raise ValueError('Managed MCP configuration could not be safely updated')
|
|
141
|
+
return result
|
|
142
|
+
|
|
143
|
+
def mcp_names(items, occupied, sid, prior=None):
|
|
144
|
+
names = {}; occupied = set(occupied)
|
|
145
|
+
for item in items:
|
|
146
|
+
name = (prior or {}).get(item['id'])
|
|
147
|
+
if name:
|
|
148
|
+
if name in occupied: raise ValueError('Managed MCP name collision')
|
|
149
|
+
else:
|
|
150
|
+
name = re.sub(r'[^a-zA-Z0-9_-]+', '-', item.get('name') or 'mcp').strip('-')[:60] or 'mcp'
|
|
151
|
+
if name in occupied: name += '-' + sid[:8] + '-' + item['id'][:8]
|
|
152
|
+
if name in occupied: raise ValueError('MCP name collision')
|
|
153
|
+
names[item['id']] = name; occupied.add(name)
|
|
154
|
+
return names
|
|
155
|
+
|
|
156
|
+
def target_mcp_config(kind, config):
|
|
157
|
+
value = dict(config)
|
|
158
|
+
if kind in ('claude', 'droid'): value['type'] = 'http' if 'url' in value else 'stdio'
|
|
159
|
+
elif kind == 'copilot':
|
|
160
|
+
value['type'] = 'http' if 'url' in value else 'local'
|
|
161
|
+
value['tools'] = ['*']
|
|
162
|
+
elif kind == 'antigravity' and 'url' in value: value['serverUrl'] = value.pop('url')
|
|
163
|
+
elif kind == 'opencode':
|
|
164
|
+
if 'url' in value:
|
|
165
|
+
if value.get('env'): raise ValueError('OpenCode remote MCPs do not support environment settings; use headers instead')
|
|
166
|
+
value['type'] = 'remote'
|
|
167
|
+
else:
|
|
168
|
+
value['type'] = 'local'
|
|
169
|
+
value['command'] = [value['command']] + value.pop('args', [])
|
|
170
|
+
if 'env' in value: value['environment'] = value.pop('env')
|
|
171
|
+
value['enabled'] = True
|
|
172
|
+
return value
|
|
173
|
+
|
|
174
|
+
def run(request):
|
|
175
|
+
operation = request['operation']; setup = request['setup']; targets = request['targets']
|
|
176
|
+
sid = setup['id']
|
|
177
|
+
if not re.fullmatch(r'[a-f0-9]{24}', sid) or not targets or any(t not in TARGETS for t in targets): raise ValueError('Invalid setup or target')
|
|
178
|
+
manifest_path = '.openshell/installed-setups/' + sid + '.json'
|
|
179
|
+
original_manifest = read(manifest_path)
|
|
180
|
+
previous = json.loads(original_manifest) if original_manifest else None
|
|
181
|
+
required = {TARGETS[t]['command']: find_executable(TARGETS[t]['command']) for t in targets}
|
|
182
|
+
if any(i['kind'] == 'mcp' for i in setup['items']): required['node'] = shutil.which('node')
|
|
183
|
+
for item in setup['items']:
|
|
184
|
+
if item['kind'] == 'mcp' and (item.get('config') or {}).get('command'):
|
|
185
|
+
required[item['config']['command']] = shutil.which(item['config']['command'])
|
|
186
|
+
if operation == 'probe': return {'executables': required, 'networkExecutables': {k: network_executable(v) for k, v in required.items()}, 'installed': previous is not None, 'revision': previous and previous['revision'], 'items': (previous or {}).get('items', []), 'targets': previous and previous['targets'], 'mcpNames': {c['target']: c.get('names', {}) for c in (previous or {}).get('configs', [])}}
|
|
187
|
+
if previous and sorted(previous['targets']) != sorted(targets): raise ValueError('Select the originally assigned agents before reapplying or removing this Setup')
|
|
188
|
+
if operation not in ('apply', 'remove'): raise ValueError('Unknown operation')
|
|
189
|
+
if operation == 'apply' and any(not p for p in required.values()): raise ValueError('Required agent or MCP executable is missing from the image')
|
|
190
|
+
if operation == 'apply':
|
|
191
|
+
setup = dict(setup, items=[dict(item, config=connected_config(item)) if item['kind'] == 'mcp' else item for item in setup['items']])
|
|
192
|
+
plans = {}; modes = {}; owned_files = {}; owned_configs = []; skill_names = {}
|
|
193
|
+
if operation == 'remove' and not previous: return {'status': 'not-installed'}
|
|
194
|
+
for target in targets:
|
|
195
|
+
adapter = TARGETS[target]
|
|
196
|
+
config_path, skill_path = adapter['config'], adapter['skills']
|
|
197
|
+
if adapter.get('alternateConfig') and safe_path(adapter['alternateConfig']).exists(): config_path = adapter['alternateConfig']
|
|
198
|
+
mcps = [i for i in setup['items'] if i['kind'] == 'mcp']
|
|
199
|
+
if mcps or any(c['target'] == target for c in (previous or {}).get('configs', [])):
|
|
200
|
+
raw = read(config_path); text = (raw or b'').decode('utf-8')
|
|
201
|
+
if target == 'codex':
|
|
202
|
+
# Parse first; never append to a broken config. Managed TOML is
|
|
203
|
+
# a separately delimited tail so unrelated formatting survives.
|
|
204
|
+
tomllib.loads(text)
|
|
205
|
+
begin = '# openshell-setup:' + sid + ':begin\n'; end = '# openshell-setup:' + sid + ':end\n'
|
|
206
|
+
prior = next((c for c in (previous or {}).get('configs', []) if c['target'] == target), None)
|
|
207
|
+
if prior:
|
|
208
|
+
text = remove_managed_toml(text, prior['block'])
|
|
209
|
+
names = mcp_names(mcps, tomllib.loads(text).get('mcp_servers', {}), sid, (prior or {}).get('names'))
|
|
210
|
+
block = begin
|
|
211
|
+
for item in mcps:
|
|
212
|
+
block += '[mcp_servers.' + json.dumps(names[item['id']]) + ']\n'
|
|
213
|
+
for field, value in item['config'].items(): block += ('http_headers' if field == 'headers' else field) + ' = ' + toml_value(value) + '\n'
|
|
214
|
+
block += end
|
|
215
|
+
if operation == 'apply': text = text + ('\n' if text and not text.endswith('\n') else '') + block
|
|
216
|
+
tomllib.loads(text)
|
|
217
|
+
plans[config_path] = text.encode(); owned_configs.append({'target': target, 'block': block, 'names': names})
|
|
218
|
+
else:
|
|
219
|
+
doc = parse_agent_json(text or '{}') if adapter['format'] == 'opencode' else json.loads(text or '{}')
|
|
220
|
+
key_name = adapter['key']
|
|
221
|
+
if not isinstance(doc, dict) or not isinstance(doc.get(key_name, {}), dict): raise ValueError('Invalid MCP configuration')
|
|
222
|
+
servers = doc.setdefault(key_name, {})
|
|
223
|
+
prior = next((c for c in (previous or {}).get('configs', []) if c['target'] == target), None)
|
|
224
|
+
if prior:
|
|
225
|
+
for key, value in prior['values'].items():
|
|
226
|
+
if servers.get(key) != value: raise ValueError('Managed MCP configuration changed or name is already used')
|
|
227
|
+
del servers[key]
|
|
228
|
+
names = mcp_names(mcps, servers, sid, (prior or {}).get('names'))
|
|
229
|
+
values = {}
|
|
230
|
+
if operation == 'apply':
|
|
231
|
+
for item in mcps:
|
|
232
|
+
key = names[item['id']]
|
|
233
|
+
value = target_mcp_config(adapter['format'], item['config'])
|
|
234
|
+
servers[key] = value; values[key] = value
|
|
235
|
+
plans[config_path] = (json.dumps(doc, indent=2) + '\n').encode(); owned_configs.append({'target': target, 'values': values, 'names': names})
|
|
236
|
+
if operation == 'apply':
|
|
237
|
+
skills = [i for i in setup['items'] if i['kind'] == 'skill']
|
|
238
|
+
root = safe_path(skill_path)
|
|
239
|
+
prior_names = (previous or {}).get('skillNames', {}).get(target, {})
|
|
240
|
+
occupied = {p.name for p in root.iterdir()} if root.exists() else set()
|
|
241
|
+
names = mcp_names(skills, occupied - set(prior_names.values()), sid, prior_names)
|
|
242
|
+
skill_names[target] = names
|
|
243
|
+
for item in skills:
|
|
244
|
+
for f in item['files']:
|
|
245
|
+
relative = skill_path + '/' + names[item['id']] + '/' + f['path']
|
|
246
|
+
if f.get('encoding') not in (None, 'utf8', 'base64'): raise ValueError('Unsupported skill file encoding')
|
|
247
|
+
content = base64.b64decode(f['content'], validate=True) if f.get('encoding') == 'base64' else f['content'].encode()
|
|
248
|
+
existing = read(relative)
|
|
249
|
+
if existing is not None and ((previous or {}).get('files', {}).get(relative) != digest(existing)): raise ValueError('Skill file already exists or was modified')
|
|
250
|
+
plans[relative] = content; modes[relative] = 0o700 if f.get('executable') else 0o600; owned_files[relative] = digest(content)
|
|
251
|
+
# Retire legacy generated paths only after checking every owned file for edits.
|
|
252
|
+
# These deletions join the same rollback plan as the new readable paths.
|
|
253
|
+
if operation == 'apply' and previous:
|
|
254
|
+
for relative, expected in previous['files'].items():
|
|
255
|
+
if relative in owned_files: continue
|
|
256
|
+
raw = read(relative)
|
|
257
|
+
if raw is not None and digest(raw) != expected: raise ValueError('Managed skill was modified; resolve it before migrating')
|
|
258
|
+
plans[relative] = None
|
|
259
|
+
if operation == 'remove':
|
|
260
|
+
for relative, expected in previous['files'].items():
|
|
261
|
+
raw = read(relative)
|
|
262
|
+
if raw is not None and digest(raw) != expected: raise ValueError('Managed skill was modified; remove the assignment manually to preserve changes')
|
|
263
|
+
plans[relative] = None
|
|
264
|
+
plans[manifest_path] = None
|
|
265
|
+
else:
|
|
266
|
+
plans[manifest_path] = json.dumps({'items': [i['id'] for i in setup['items']], 'revision': setup['revision'], 'targets': targets, 'files': owned_files, 'configs': owned_configs, 'skillNames': skill_names}).encode()
|
|
267
|
+
originals = {p: read(p) for p in plans}; original_modes = {p: safe_path(p).stat().st_mode & 0o777 for p in plans if safe_path(p).exists()}; completed = []
|
|
268
|
+
try:
|
|
269
|
+
for p, data in plans.items(): write(p, data, modes.get(p, original_modes.get(p, 0o600))); completed.append(p)
|
|
270
|
+
for p, data in plans.items():
|
|
271
|
+
if read(p) != data: raise ValueError('Written files could not be verified')
|
|
272
|
+
except Exception:
|
|
273
|
+
for p in reversed(completed): write(p, originals[p], original_modes.get(p, 0o600))
|
|
274
|
+
raise
|
|
275
|
+
return {'status': 'installed' if operation == 'apply' else 'removed', 'filesVerified': len(plans), 'restartRequired': True, 'connectivityVerified': False}
|
|
276
|
+
|
|
277
|
+
try:
|
|
278
|
+
request = json.load(sys.stdin)
|
|
279
|
+
if request['operation'] == 'probe':
|
|
280
|
+
print(json.dumps(run(request))); sys.exit(0)
|
|
281
|
+
lock = safe_path('.openshell/setup.lock'); lock.parent.mkdir(parents=True, exist_ok=True)
|
|
282
|
+
with os.fdopen(os.open(lock, os.O_WRONLY | os.O_CREAT | os.O_NOFOLLOW, 0o600), 'a') as handle:
|
|
283
|
+
fcntl.flock(handle, fcntl.LOCK_EX)
|
|
284
|
+
print(json.dumps(run(request)))
|
|
285
|
+
except Exception as error:
|
|
286
|
+
# Never echo malformed config content, paths, credentials or child output.
|
|
287
|
+
known = isinstance(error, ValueError) and not isinstance(error, (json.JSONDecodeError, tomllib.TOMLDecodeError))
|
|
288
|
+
print(json.dumps({'error': str(error) if known else 'Setup operation failed; check filesystem access and existing configuration.'}))
|
|
289
|
+
sys.exit(1)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""Parse agent JSONC without interpreting expressions or changing string values."""
|
|
2
|
+
import json, re
|
|
3
|
+
|
|
4
|
+
def parse_agent_json(text):
|
|
5
|
+
string = r'"(?:\\.|[^"\\])*"'
|
|
6
|
+
clean = re.sub(string + r'|//[^\n]*|/\*[\s\S]*?\*/', lambda m: m[0] if m[0].startswith('"') else ' ', text)
|
|
7
|
+
clean = re.sub(string + r'|,\s*[}\]]', lambda m: m[0] if m[0].startswith('"') else m[0][1:], clean)
|
|
8
|
+
return json.loads(clean)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import fs from 'node:fs/promises'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { randomUUID } from 'node:crypto'
|
|
4
|
+
import { scopedStateDirectory } from './paths.js'
|
|
5
|
+
|
|
6
|
+
// Gateway endpoint + immutable sandbox id → the MCPs & Skills setups it uses.
|
|
7
|
+
// Names can be reused, including on another gateway, and cannot identify grants.
|
|
8
|
+
// A Quick-setup snapshot also records the setup it was prepared from.
|
|
9
|
+
const membersFile = () => path.join(scopedStateDirectory(), 'setup-members.json')
|
|
10
|
+
const NAME = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/
|
|
11
|
+
const ID = /^[a-f0-9]{24}$/
|
|
12
|
+
const fail = (message, status = 400) => Object.assign(new Error(message), { status })
|
|
13
|
+
const ids = (input) => [...new Set((Array.isArray(input) ? input : []).map(String).filter((id) => ID.test(id)))]
|
|
14
|
+
const identityPart = (value, limit) => typeof value === 'string' && value.length > 0 && value.length <= limit && value.trim() === value && !/[\x00-\x1f\x7f]/.test(value)
|
|
15
|
+
const keyFor = (gateway, id) => identityPart(gateway, 2048) && identityPart(id, 256) ? JSON.stringify([gateway, id]) : null
|
|
16
|
+
const storedKey = (key) => {
|
|
17
|
+
try { const parts = JSON.parse(key); return Array.isArray(parts) && parts.length === 2 && keyFor(...parts) === key } catch { return false }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Missing ids and pre-identity name-only records are deliberately ignored.
|
|
21
|
+
// Re-enabling a setup records its current identity; guessing a migration could
|
|
22
|
+
// grant access to a replacement sandbox that never selected that setup.
|
|
23
|
+
export function sandboxSetups(members, sandbox, endpoint) {
|
|
24
|
+
const key = keyFor(endpoint, sandbox?.id)
|
|
25
|
+
return key ? ids(members[key]) : []
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function createSetupMembers(file = membersFile()) {
|
|
29
|
+
let edits = Promise.resolve()
|
|
30
|
+
async function read() {
|
|
31
|
+
let raw
|
|
32
|
+
try { raw = JSON.parse(await fs.readFile(file, 'utf8')) } catch (e) { if (e.code === 'ENOENT' || e instanceof SyntaxError) return {}; throw e }
|
|
33
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return {}
|
|
34
|
+
return Object.fromEntries(Object.entries(raw).filter(([key]) => storedKey(key)).map(([key, list]) => [key, ids(list)]).filter(([, list]) => list.length))
|
|
35
|
+
}
|
|
36
|
+
// Read-modify-write, one at a time; the file is replaced atomically.
|
|
37
|
+
const edit = (identity, change, { strict = true } = {}) => {
|
|
38
|
+
const run = edits.then(async () => {
|
|
39
|
+
const key = keyFor(identity?.gateway, identity?.id)
|
|
40
|
+
if (!NAME.test(String(identity?.name ?? '')) || !key) { if (strict) throw fail('Choose a sandbox identity with its gateway, id and name.'); return [] }
|
|
41
|
+
const all = await read()
|
|
42
|
+
const next = ids(change(all[key] ?? []))
|
|
43
|
+
if (JSON.stringify(next) === JSON.stringify(all[key] ?? [])) return next
|
|
44
|
+
if (next.length) all[key] = next
|
|
45
|
+
else delete all[key]
|
|
46
|
+
await fs.mkdir(path.dirname(file), { recursive: true, mode: 0o700 })
|
|
47
|
+
const temporary = `${file}.${randomUUID()}.tmp`
|
|
48
|
+
try {
|
|
49
|
+
await fs.writeFile(temporary, `${JSON.stringify(Object.fromEntries(Object.entries(all).sort(([a], [b]) => a.localeCompare(b))), null, 2)}\n`, { flag: 'wx', mode: 0o600 })
|
|
50
|
+
await fs.rename(temporary, file)
|
|
51
|
+
} finally { await fs.rm(temporary, { force: true }) }
|
|
52
|
+
return next
|
|
53
|
+
})
|
|
54
|
+
edits = run.catch(() => {})
|
|
55
|
+
return run
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
readSetupMembers: read,
|
|
59
|
+
setSandboxSetups: (identity, list) => edit(identity, () => ids(list)),
|
|
60
|
+
addSandboxSetups: (identity, list) => edit(identity, (current) => [...current, ...ids(list)]),
|
|
61
|
+
removeSandboxSetups: (identity, list) => edit(identity, (current) => current.filter((id) => !ids(list).includes(id))),
|
|
62
|
+
forgetSandbox: (identity) => edit(identity, () => [], { strict: false }),
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const stores = new Map()
|
|
67
|
+
function setupMembers() {
|
|
68
|
+
const file = membersFile()
|
|
69
|
+
if (!stores.has(file)) stores.set(file, createSetupMembers(file))
|
|
70
|
+
return stores.get(file)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export const readSetupMembers = () => setupMembers().readSetupMembers()
|
|
74
|
+
export const setSandboxSetups = (identity, list) => setupMembers().setSandboxSetups(identity, list)
|
|
75
|
+
export const addSandboxSetups = (identity, list) => setupMembers().addSandboxSetups(identity, list)
|
|
76
|
+
export const removeSandboxSetups = (identity, list) => setupMembers().removeSandboxSetups(identity, list)
|
|
77
|
+
export const forgetSandbox = (identity) => setupMembers().forgetSandbox(identity)
|