@tinycloud/operations 0.7.7-beta.9 → 0.7.8-beta.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.
@@ -714,6 +714,7 @@ import { join as join2 } from "path";
714
714
  // ../sdk-core/src/manifest.ts
715
715
  var import_ms = __toESM(require_ms(), 1);
716
716
  import { resolveSecretPath, SECRET_NAME_RE, parseNetworkId } from "@tinycloud/sdk-services";
717
+ import { parseEncryptionResource } from "@tinycloud/sdk-services/encryption/resource";
717
718
  var DEFAULT_MANIFEST_SPACE = "applications";
718
719
  var SERVICE_SHORT_TO_LONG = Object.freeze({
719
720
  kv: "tinycloud.kv",
@@ -743,6 +744,7 @@ var KEY_APP_ID = new RegExp(`^${KEY_SEGMENT}$`);
743
744
  var KEY_PATH = new RegExp(`^${KEY_SEGMENT}(?:/${KEY_SEGMENT}){2,7}$`);
744
745
 
745
746
  // ../sdk-core/src/capabilities.ts
747
+ import { encryptionResourceContains } from "@tinycloud/sdk-services/encryption/resource";
746
748
  function normalizeSpace(space) {
747
749
  if (!space.startsWith("tinycloud:")) {
748
750
  return space;
@@ -766,10 +768,9 @@ function isCapabilitySubset(requested, granted) {
766
768
  const grantedActions = matchingScope.flatMap(
767
769
  (entry) => expandActionShortNames(entry.service, entry.actions)
768
770
  );
771
+ const namedKeyRequest = req.service === "tinycloud.encryption" && req.path.startsWith("urn:tinycloud:encryption:") && req.path.includes("/");
769
772
  const covered = requestedActions.every(
770
- (requestedAction) => grantedActions.some(
771
- (grantedAction) => actionContains(grantedAction, requestedAction)
772
- )
773
+ (requestedAction) => grantedActions.some((grantedAction) => namedKeyRequest ? grantedAction === requestedAction : actionContains(grantedAction, requestedAction))
773
774
  );
774
775
  if (!covered) {
775
776
  missing.push(cloneEntry(req));
@@ -784,7 +785,9 @@ function canonicalizeEntryScopeMatches(requested, granted) {
784
785
  if (normalizeSpace(requested.space ?? DEFAULT_MANIFEST_SPACE) !== normalizeSpace(granted.space ?? DEFAULT_MANIFEST_SPACE)) {
785
786
  return false;
786
787
  }
787
- if (!pathContains(granted.path, requested.path)) {
788
+ const namedKeyRequest = requested.service === "tinycloud.encryption" && requested.path.startsWith("urn:tinycloud:encryption:") && requested.path.includes("/");
789
+ const coveredPath = namedKeyRequest ? encryptionResourceContains(granted.path, requested.path) : pathContains(granted.path, requested.path);
790
+ if (!coveredPath) {
788
791
  return false;
789
792
  }
790
793
  if (!recapCaveatsEqual(requested.caveats, granted.caveats)) {
@@ -3553,6 +3556,7 @@ var cidSymbol = /* @__PURE__ */ Symbol.for("@ipld/js-cid/CID");
3553
3556
 
3554
3557
  // ../sdk-core/src/policy/unified.ts
3555
3558
  import { z } from "zod";
3559
+ import { parseEncryptionResource as parseNamedEncryptionResource } from "@tinycloud/sdk-services";
3556
3560
  var CompactHeaderSchema = z.object({
3557
3561
  alg: z.literal("EdDSA"),
3558
3562
  jwk: z.object({ alg: z.literal("EdDSA"), crv: z.literal("Ed25519"), kty: z.literal("OKP"), x: z.string().min(1) }).strict(),