@pellux/goodvibes-sdk 0.25.16 → 0.25.18

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.
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "0.25.16"
6
+ "version": "0.25.18"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -1,6 +1,6 @@
1
1
  export declare const FOUNDATION_METADATA: {
2
2
  readonly productId: "goodvibes";
3
- readonly productVersion: "0.25.16";
3
+ readonly productVersion: "0.25.18";
4
4
  readonly operatorMethodCount: 224;
5
5
  readonly operatorEventCount: 30;
6
6
  readonly peerEndpointCount: 6;
@@ -1,7 +1,7 @@
1
1
  // Synced from packages/contracts/src/generated/foundation-metadata.ts
2
2
  export const FOUNDATION_METADATA = {
3
3
  "productId": "goodvibes",
4
- "productVersion": "0.25.16",
4
+ "productVersion": "0.25.18",
5
5
  "operatorMethodCount": 224,
6
6
  "operatorEventCount": 30,
7
7
  "peerEndpointCount": 6
@@ -3,7 +3,7 @@ export const OPERATOR_CONTRACT = {
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "0.25.16"
6
+ "version": "0.25.18"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -21,7 +21,6 @@ export declare class CloudflareControlPlaneManager {
21
21
  private resolveSecretRef;
22
22
  private storeSecret;
23
23
  private requireUserTokens;
24
- private resolvePermissionGroupIds;
25
24
  private createProvisioningContext;
26
25
  private fetchWorker;
27
26
  private generateToken;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/manager.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAIV,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAGvB,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EAOzB,gCAAgC,EAChC,iCAAiC,EAEjC,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAiBpB,qBAAa,6BAA6B;IAI5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAEZ,OAAO,EAAE,6BAA6B;IAK7D,cAAc,IAAI,OAAO,CAAC,4BAA4B,CAAC;IA0C7D,iBAAiB,CAAC,KAAK,GAAE,gCAAqC,GAAG,iCAAiC;IAkB5F,sBAAsB,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAyEzG,QAAQ,CAAC,KAAK,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuEhF,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuB3E,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA0S9E,MAAM,CAAC,KAAK,GAAE,qBAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAe1E,OAAO,CAAC,KAAK,GAAE,sBAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BnF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;YAYX,eAAe;YAaf,oBAAoB;YAapB,wBAAwB;YAaxB,gBAAgB;YAahB,WAAW;IAOzB,OAAO,CAAC,iBAAiB;YAOX,yBAAyB;IAQvC,OAAO,CAAC,yBAAyB;YAQnB,WAAW;IAazB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/manager.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAIV,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAGvB,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EAMzB,gCAAgC,EAChC,iCAAiC,EAEjC,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,6BAA6B;IAI5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAEZ,OAAO,EAAE,6BAA6B;IAK7D,cAAc,IAAI,OAAO,CAAC,4BAA4B,CAAC;IA0C7D,iBAAiB,CAAC,KAAK,GAAE,gCAAqC,GAAG,iCAAiC;IAkB5F,sBAAsB,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAqEzG,QAAQ,CAAC,KAAK,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuEhF,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuB3E,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA8S9E,MAAM,CAAC,KAAK,GAAE,qBAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAe1E,OAAO,CAAC,KAAK,GAAE,sBAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BnF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;YAYX,eAAe;YAaf,oBAAoB;YAapB,wBAAwB;YAaxB,gBAAgB;YAahB,WAAW;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,yBAAyB;YAQnB,WAAW;IAazB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,SAAS;CAMlB"}
@@ -6,7 +6,7 @@ import { CLOUDFLARE_API_TOKEN_KEY, CLOUDFLARE_WORKER_CLIENT_TOKEN_KEY, CLOUDFLAR
6
6
  import { discoverZones, resolveZone, selectDiscoveredZone, tryDiscover, } from './discovery.js';
7
7
  import { configureDns, configureWorkerSubdomain, ensureAccess, ensureKvNamespace, ensureQueue, ensureQueueConsumer, ensureR2Bucket, ensureSecretsStore, ensureTunnel, findDurableObjectNamespace, uploadWorker, } from './resources.js';
8
8
  import { CloudflareControlPlaneError } from './types.js';
9
- import { buildTokenRequirements, buildTokenResources, clean, collectAsync, collectSingleAccount, hostnameFromUrl, requireKvNamespaceId, requireQueueId, resolveComponents, resolvePermissionGroupIds, safeResponseText, stripTrailingSlash, } from './utils.js';
9
+ import { buildTokenPolicies, buildTokenRequirements, clean, collectAsync, collectSingleAccount, hostnameFromUrl, requireKvNamespaceId, requireQueueId, resolveComponents, resolvePermissionGroups, safeResponseText, stripTrailingSlash, verifyCreatedTokenPolicies, } from './utils.js';
10
10
  export class CloudflareControlPlaneManager {
11
11
  options;
12
12
  createClient;
@@ -105,20 +105,16 @@ export class CloudflareControlPlaneManager {
105
105
  required: components.dns,
106
106
  });
107
107
  }
108
- const permissionIds = await this.resolvePermissionGroupIds(client, requirements);
109
- const resources = buildTokenResources(accountId, zone?.id, components);
108
+ const tokenApi = this.requireUserTokens(client);
109
+ const permissionGroups = await resolvePermissionGroups(requirements, (params) => tokenApi.permissionGroups.list(params));
110
+ const policies = buildTokenPolicies(accountId, zone?.id, permissionGroups);
110
111
  const tokenName = clean(input.tokenName) || 'GoodVibes Cloudflare Operational';
111
- const token = await this.requireUserTokens(client).create({
112
+ const token = await tokenApi.create({
112
113
  name: tokenName,
113
- policies: [
114
- {
115
- effect: 'allow',
116
- permission_groups: permissionIds.map((id) => ({ id })),
117
- resources,
118
- },
119
- ],
114
+ policies,
120
115
  ...(clean(input.expiresOn) ? { expires_on: clean(input.expiresOn) } : {}),
121
116
  });
117
+ await verifyCreatedTokenPolicies(token, permissionGroups, tokenApi.get ? (tokenId) => tokenApi.get(tokenId) : undefined);
122
118
  if (!token.value) {
123
119
  throw new CloudflareControlPlaneError('Cloudflare did not return a token value for the newly-created operational token.', 'CLOUDFLARE_TOKEN_VALUE_MISSING', 502);
124
120
  }
@@ -289,9 +285,13 @@ export class CloudflareControlPlaneManager {
289
285
  deadLetterQueueId = requireQueueId(deadLetterQueue, deadLetterQueueName);
290
286
  queueId = requireQueueId(queue, queueName);
291
287
  }
292
- const kv = components.kv ? await ensureKvNamespace(resourceContext, client, accountId, clean(input.kvNamespaceName) || config.kvNamespaceName || DEFAULT_KV_NAMESPACE_NAME, persist, steps) : undefined;
288
+ const kvName = clean(input.kvNamespaceName) || config.kvNamespaceName || DEFAULT_KV_NAMESPACE_NAME;
289
+ const kvId = clean(input.kvNamespaceId) || config.kvNamespaceId;
290
+ const kv = components.kv ? await ensureKvNamespace(resourceContext, client, accountId, kvName, kvId, persist, steps) : undefined;
293
291
  const r2 = components.r2 ? await ensureR2Bucket(resourceContext, client, accountId, clean(input.r2BucketName) || config.r2BucketName || DEFAULT_R2_BUCKET_NAME, persist, steps) : undefined;
294
- const secretsStore = components.secretsStore ? await ensureSecretsStore(resourceContext, client, accountId, clean(input.secretsStoreName) || config.secretsStoreName || DEFAULT_SECRETS_STORE_NAME, persist, steps) : undefined;
292
+ const secretsStoreName = clean(input.secretsStoreName) || config.secretsStoreName || DEFAULT_SECRETS_STORE_NAME;
293
+ const secretsStoreId = clean(input.secretsStoreId) || config.secretsStoreId;
294
+ const secretsStore = components.secretsStore ? await ensureSecretsStore(resourceContext, client, accountId, secretsStoreName, secretsStoreId, persist, steps) : undefined;
295
295
  const tunnel = components.zeroTrustTunnel
296
296
  ? await ensureTunnel(resourceContext, client, {
297
297
  accountId,
@@ -634,10 +634,6 @@ export class CloudflareControlPlaneManager {
634
634
  }
635
635
  return client.user.tokens;
636
636
  }
637
- async resolvePermissionGroupIds(client, requirements) {
638
- const tokenApi = this.requireUserTokens(client);
639
- return await resolvePermissionGroupIds(requirements, (params) => tokenApi.permissionGroups.list(params));
640
- }
641
637
  createProvisioningContext() {
642
638
  return {
643
639
  readConfig: () => this.readConfig(),
@@ -6,9 +6,9 @@ export interface CloudflareProvisioningContext {
6
6
  readonly storeSecret: (key: string, value: string) => Promise<void>;
7
7
  }
8
8
  export declare function ensureQueue(client: CloudflareApiClient, accountId: string, queueName: string, steps: CloudflareProvisionStep[], stepName: string): Promise<CloudflareQueueLike>;
9
- export declare function ensureKvNamespace(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, namespaceName: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareKvNamespaceLike>;
9
+ export declare function ensureKvNamespace(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, namespaceName: string, configuredNamespaceId: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareKvNamespaceLike>;
10
10
  export declare function ensureR2Bucket(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, bucketName: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareR2BucketLike>;
11
- export declare function ensureSecretsStore(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, storeName: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareSecretsStoreLike>;
11
+ export declare function ensureSecretsStore(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, storeName: string, configuredStoreId: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareSecretsStoreLike>;
12
12
  export declare function ensureTunnel(context: CloudflareProvisioningContext, client: CloudflareApiClient, input: {
13
13
  readonly accountId: string;
14
14
  readonly tunnelName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/resources.ts"],"names":[],"mappings":"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"}
@@ -4,68 +4,114 @@ import { CloudflareControlPlaneError } from './types.js';
4
4
  import { clean, collectAsync, hostnameFromUrl } from './utils.js';
5
5
  import { GOODVIBES_CLOUDFLARE_WORKER_MODULE } from './worker-source.js';
6
6
  export async function ensureQueue(client, accountId, queueName, steps, stepName) {
7
- for await (const queue of client.queues.list({ account_id: accountId })) {
8
- if (queue.queue_name === queueName) {
9
- steps.push({ name: stepName, status: 'ok', message: `Using existing Cloudflare Queue ${queueName}.`, resourceId: queue.queue_id });
10
- return queue;
7
+ const existing = await findQueueByName(client, accountId, queueName);
8
+ if (existing) {
9
+ steps.push({ name: stepName, status: 'ok', message: `Using existing Cloudflare Queue ${queueName}.`, resourceId: existing.queue_id });
10
+ return existing;
11
+ }
12
+ try {
13
+ const created = await client.queues.create({ account_id: accountId, queue_name: queueName });
14
+ steps.push({ name: stepName, status: 'ok', message: `Created Cloudflare Queue ${queueName}.`, resourceId: created.queue_id });
15
+ return created;
16
+ }
17
+ catch (error) {
18
+ const recovered = await findQueueByName(client, accountId, queueName);
19
+ if (recovered) {
20
+ steps.push({ name: stepName, status: 'ok', message: `Using existing Cloudflare Queue ${queueName} after create retry: ${summarizeError(error)}`, resourceId: recovered.queue_id });
21
+ return recovered;
11
22
  }
23
+ throw error;
12
24
  }
13
- const created = await client.queues.create({ account_id: accountId, queue_name: queueName });
14
- steps.push({ name: stepName, status: 'ok', message: `Created Cloudflare Queue ${queueName}.`, resourceId: created.queue_id });
15
- return created;
16
25
  }
17
- export async function ensureKvNamespace(context, client, accountId, namespaceName, persist, steps) {
26
+ export async function ensureKvNamespace(context, client, accountId, namespaceName, configuredNamespaceId, persist, steps) {
18
27
  if (!client.kv) {
19
28
  throw new CloudflareControlPlaneError('The Cloudflare client does not expose KV namespace APIs.', 'CLOUDFLARE_KV_API_UNAVAILABLE', 500);
20
29
  }
21
- for await (const namespace of client.kv.namespaces.list({ account_id: accountId })) {
22
- if (namespace.title === namespaceName) {
23
- context.setConfig('cloudflare.kvNamespaceName', namespaceName, persist);
24
- if (namespace.id)
25
- context.setConfig('cloudflare.kvNamespaceId', namespace.id, persist);
26
- steps.push({ name: 'kv-namespace', status: 'ok', message: `Using existing KV namespace ${namespaceName}.`, resourceId: namespace.id });
27
- return namespace;
30
+ const existing = await findKvNamespace(client, accountId, namespaceName, configuredNamespaceId);
31
+ if (existing) {
32
+ persistKvNamespace(context, existing, namespaceName, persist);
33
+ steps.push({ name: 'kv-namespace', status: 'ok', message: `Using existing KV namespace ${namespaceName}.`, resourceId: existing.id });
34
+ return existing;
35
+ }
36
+ if (configuredNamespaceId) {
37
+ const configured = { id: configuredNamespaceId, title: namespaceName };
38
+ persistKvNamespace(context, configured, namespaceName, persist);
39
+ steps.push({ name: 'kv-namespace', status: 'ok', message: `Using configured KV namespace ${namespaceName}.`, resourceId: configuredNamespaceId });
40
+ return configured;
41
+ }
42
+ try {
43
+ const created = await client.kv.namespaces.create({ account_id: accountId, title: namespaceName });
44
+ persistKvNamespace(context, created, namespaceName, persist);
45
+ steps.push({ name: 'kv-namespace', status: 'ok', message: `Created KV namespace ${namespaceName}.`, resourceId: created.id });
46
+ return created;
47
+ }
48
+ catch (error) {
49
+ const recovered = await findKvNamespace(client, accountId, namespaceName, configuredNamespaceId);
50
+ if (recovered) {
51
+ persistKvNamespace(context, recovered, namespaceName, persist);
52
+ steps.push({ name: 'kv-namespace', status: 'ok', message: `Using existing KV namespace ${namespaceName} after create retry: ${summarizeError(error)}`, resourceId: recovered.id });
53
+ return recovered;
28
54
  }
55
+ throw error;
29
56
  }
30
- const created = await client.kv.namespaces.create({ account_id: accountId, title: namespaceName });
31
- context.setConfig('cloudflare.kvNamespaceName', namespaceName, persist);
32
- if (created.id)
33
- context.setConfig('cloudflare.kvNamespaceId', created.id, persist);
34
- steps.push({ name: 'kv-namespace', status: 'ok', message: `Created KV namespace ${namespaceName}.`, resourceId: created.id });
35
- return created;
36
57
  }
37
58
  export async function ensureR2Bucket(context, client, accountId, bucketName, persist, steps) {
38
59
  if (!client.r2) {
39
60
  throw new CloudflareControlPlaneError('The Cloudflare client does not expose R2 bucket APIs.', 'CLOUDFLARE_R2_API_UNAVAILABLE', 500);
40
61
  }
41
- const existing = (await client.r2.buckets.list({ account_id: accountId })).buckets?.find((bucket) => bucket.name === bucketName);
62
+ const existing = await findR2BucketByName(client, accountId, bucketName);
42
63
  if (existing) {
43
64
  context.setConfig('cloudflare.r2BucketName', bucketName, persist);
44
65
  steps.push({ name: 'r2-bucket', status: 'ok', message: `Using existing R2 Standard bucket ${bucketName}.`, resourceId: bucketName });
45
66
  return existing;
46
67
  }
47
- const created = await client.r2.buckets.create({ account_id: accountId, name: bucketName, storageClass: 'Standard' });
48
- context.setConfig('cloudflare.r2BucketName', bucketName, persist);
49
- steps.push({ name: 'r2-bucket', status: 'ok', message: `Created R2 Standard bucket ${bucketName}.`, resourceId: bucketName });
50
- return created.name ? created : { ...created, name: bucketName, storage_class: 'Standard' };
68
+ try {
69
+ const created = await client.r2.buckets.create({ account_id: accountId, name: bucketName, storageClass: 'Standard' });
70
+ context.setConfig('cloudflare.r2BucketName', bucketName, persist);
71
+ steps.push({ name: 'r2-bucket', status: 'ok', message: `Created R2 Standard bucket ${bucketName}.`, resourceId: bucketName });
72
+ return created.name ? created : { ...created, name: bucketName, storage_class: 'Standard' };
73
+ }
74
+ catch (error) {
75
+ const recovered = await findR2BucketByName(client, accountId, bucketName);
76
+ if (recovered) {
77
+ context.setConfig('cloudflare.r2BucketName', bucketName, persist);
78
+ steps.push({ name: 'r2-bucket', status: 'ok', message: `Using existing R2 bucket ${bucketName} after create retry: ${summarizeError(error)}`, resourceId: bucketName });
79
+ return recovered;
80
+ }
81
+ throw error;
82
+ }
51
83
  }
52
- export async function ensureSecretsStore(context, client, accountId, storeName, persist, steps) {
84
+ export async function ensureSecretsStore(context, client, accountId, storeName, configuredStoreId, persist, steps) {
53
85
  if (!client.secretsStore) {
54
86
  throw new CloudflareControlPlaneError('The Cloudflare client does not expose Secrets Store APIs.', 'CLOUDFLARE_SECRETS_STORE_API_UNAVAILABLE', 500);
55
87
  }
56
- for await (const store of client.secretsStore.stores.list({ account_id: accountId })) {
57
- if (store.name === storeName) {
58
- context.setConfig('cloudflare.secretsStoreName', storeName, persist);
59
- context.setConfig('cloudflare.secretsStoreId', store.id, persist);
60
- steps.push({ name: 'secrets-store', status: 'ok', message: `Using existing Cloudflare Secrets Store ${storeName}.`, resourceId: store.id });
61
- return store;
88
+ const existing = await findSecretsStore(client, accountId, storeName, configuredStoreId);
89
+ if (existing) {
90
+ persistSecretsStore(context, existing, persist);
91
+ steps.push({ name: 'secrets-store', status: 'ok', message: `Using existing Cloudflare Secrets Store ${existing.name}.`, resourceId: existing.id });
92
+ return existing;
93
+ }
94
+ if (configuredStoreId) {
95
+ const configured = { id: configuredStoreId, name: storeName };
96
+ persistSecretsStore(context, configured, persist);
97
+ steps.push({ name: 'secrets-store', status: 'warning', message: `Using configured Cloudflare Secrets Store id ${configuredStoreId}; it was not visible during discovery.`, resourceId: configuredStoreId });
98
+ return configured;
99
+ }
100
+ try {
101
+ for await (const created of client.secretsStore.stores.create({ account_id: accountId, body: [{ name: storeName }] })) {
102
+ persistSecretsStore(context, created, persist);
103
+ steps.push({ name: 'secrets-store', status: 'ok', message: `Created Cloudflare Secrets Store ${storeName}.`, resourceId: created.id });
104
+ return created;
62
105
  }
63
106
  }
64
- for await (const created of client.secretsStore.stores.create({ account_id: accountId, body: [{ name: storeName }] })) {
65
- context.setConfig('cloudflare.secretsStoreName', storeName, persist);
66
- context.setConfig('cloudflare.secretsStoreId', created.id, persist);
67
- steps.push({ name: 'secrets-store', status: 'ok', message: `Created Cloudflare Secrets Store ${storeName}.`, resourceId: created.id });
68
- return created;
107
+ catch (error) {
108
+ const recovered = await findRecoverableSecretsStore(client, accountId, storeName, configuredStoreId, error);
109
+ if (recovered) {
110
+ persistSecretsStore(context, recovered, persist);
111
+ steps.push({ name: 'secrets-store', status: recovered.name === storeName ? 'ok' : 'warning', message: `Using existing Cloudflare Secrets Store ${recovered.name} after create retry: ${summarizeError(error)}`, resourceId: recovered.id });
112
+ return recovered;
113
+ }
114
+ throw error;
69
115
  }
70
116
  throw new CloudflareControlPlaneError(`Cloudflare Secrets Store '${storeName}' did not return a created store.`, 'CLOUDFLARE_SECRETS_STORE_CREATE_FAILED', 502);
71
117
  }
@@ -86,8 +132,16 @@ export async function ensureTunnel(context, client, input) {
86
132
  }
87
133
  }
88
134
  if (!tunnel) {
89
- tunnel = await api.create({ account_id: input.accountId, name: input.tunnelName, config_src: 'cloudflare' });
90
- input.steps.push({ name: 'zero-trust-tunnel', status: 'ok', message: `Created Zero Trust Tunnel ${input.tunnelName}.`, resourceId: tunnel.id });
135
+ try {
136
+ tunnel = await api.create({ account_id: input.accountId, name: input.tunnelName, config_src: 'cloudflare' });
137
+ input.steps.push({ name: 'zero-trust-tunnel', status: 'ok', message: `Created Zero Trust Tunnel ${input.tunnelName}.`, resourceId: tunnel.id });
138
+ }
139
+ catch (error) {
140
+ tunnel = await findTunnelByName(client, input.accountId, input.tunnelName);
141
+ if (!tunnel)
142
+ throw error;
143
+ input.steps.push({ name: 'zero-trust-tunnel', status: 'ok', message: `Using existing Zero Trust Tunnel ${input.tunnelName} after create retry: ${summarizeError(error)}`, resourceId: tunnel.id });
144
+ }
91
145
  }
92
146
  else {
93
147
  input.steps.push({ name: 'zero-trust-tunnel', status: 'ok', message: `Using existing Zero Trust Tunnel ${input.tunnelName}.`, resourceId: tunnel.id });
@@ -135,8 +189,16 @@ export async function ensureAccess(context, client, input) {
135
189
  }
136
190
  }
137
191
  if (!serviceToken) {
138
- serviceToken = await api.serviceTokens.create({ account_id: input.accountId, name: 'GoodVibes Daemon', duration: '8760h' });
139
- input.steps.push({ name: 'zero-trust-access-service-token', status: 'ok', message: 'Created Zero Trust Access service token.', resourceId: serviceToken.id });
192
+ try {
193
+ serviceToken = await api.serviceTokens.create({ account_id: input.accountId, name: 'GoodVibes Daemon', duration: '8760h' });
194
+ input.steps.push({ name: 'zero-trust-access-service-token', status: 'ok', message: 'Created Zero Trust Access service token.', resourceId: serviceToken.id });
195
+ }
196
+ catch (error) {
197
+ serviceToken = await findAccessServiceTokenByName(api, input.accountId, 'GoodVibes Daemon');
198
+ if (!serviceToken)
199
+ throw error;
200
+ input.steps.push({ name: 'zero-trust-access-service-token', status: 'ok', message: `Using existing Zero Trust Access service token after create retry: ${summarizeError(error)}`, resourceId: serviceToken.id });
201
+ }
140
202
  }
141
203
  else {
142
204
  input.steps.push({ name: 'zero-trust-access-service-token', status: 'ok', message: 'Using existing Zero Trust Access service token.', resourceId: serviceToken.id });
@@ -190,9 +252,20 @@ export async function ensureAccess(context, client, input) {
190
252
  },
191
253
  ],
192
254
  };
193
- app = app?.id
194
- ? await api.applications.update(app.id, accessAppParams)
195
- : await api.applications.create(accessAppParams);
255
+ if (app?.id) {
256
+ app = await api.applications.update(app.id, accessAppParams);
257
+ }
258
+ else {
259
+ try {
260
+ app = await api.applications.create(accessAppParams);
261
+ }
262
+ catch (error) {
263
+ const recovered = await findAccessApplicationByDomain(api, input.accountId, input.daemonHostname);
264
+ if (!recovered?.id)
265
+ throw error;
266
+ app = await api.applications.update(recovered.id, accessAppParams);
267
+ }
268
+ }
196
269
  if (app.id)
197
270
  context.setConfig('cloudflare.accessAppId', app.id, input.persist);
198
271
  input.steps.push({ name: 'zero-trust-access-app', status: 'ok', message: `Configured Zero Trust Access application for ${input.daemonHostname}.`, resourceId: app.id });
@@ -292,12 +365,30 @@ export async function configureWorkerSubdomain(context, client, input) {
292
365
  });
293
366
  }
294
367
  }
295
- await client.workers.scripts.subdomain.create(input.workerName, {
296
- account_id: input.accountId,
297
- enabled: true,
298
- previews_enabled: false,
299
- });
300
- input.steps.push({ name: 'worker-subdomain', status: 'ok', message: `Enabled workers.dev route for ${input.workerName}.` });
368
+ try {
369
+ const existing = await client.workers.scripts.subdomain.get(input.workerName, { account_id: input.accountId });
370
+ if (existing.enabled) {
371
+ input.steps.push({ name: 'worker-subdomain', status: 'ok', message: `Using existing workers.dev route for ${input.workerName}.` });
372
+ return accountSubdomain;
373
+ }
374
+ }
375
+ catch {
376
+ // Older accounts may not return script-level subdomain state before it is enabled.
377
+ }
378
+ try {
379
+ await client.workers.scripts.subdomain.create(input.workerName, {
380
+ account_id: input.accountId,
381
+ enabled: true,
382
+ previews_enabled: false,
383
+ });
384
+ input.steps.push({ name: 'worker-subdomain', status: 'ok', message: `Enabled workers.dev route for ${input.workerName}.` });
385
+ }
386
+ catch (error) {
387
+ const recovered = await client.workers.scripts.subdomain.get(input.workerName, { account_id: input.accountId });
388
+ if (!recovered.enabled)
389
+ throw error;
390
+ input.steps.push({ name: 'worker-subdomain', status: 'ok', message: `Using existing workers.dev route for ${input.workerName} after enable retry: ${summarizeError(error)}` });
391
+ }
301
392
  return accountSubdomain;
302
393
  }
303
394
  export async function ensureQueueConsumer(client, input) {
@@ -320,15 +411,31 @@ export async function ensureQueueConsumer(client, input) {
320
411
  return updated;
321
412
  }
322
413
  }
323
- const created = await client.queues.consumers.create(input.queueId, {
324
- account_id: input.accountId,
325
- type: 'worker',
326
- script_name: input.workerName,
327
- dead_letter_queue: input.deadLetterQueueName,
328
- settings,
329
- });
330
- input.steps.push({ name: 'queue-consumer', status: 'ok', message: `Created Queue consumer for ${input.workerName}.`, resourceId: created.consumer_id });
331
- return created;
414
+ try {
415
+ const created = await client.queues.consumers.create(input.queueId, {
416
+ account_id: input.accountId,
417
+ type: 'worker',
418
+ script_name: input.workerName,
419
+ dead_letter_queue: input.deadLetterQueueName,
420
+ settings,
421
+ });
422
+ input.steps.push({ name: 'queue-consumer', status: 'ok', message: `Created Queue consumer for ${input.workerName}.`, resourceId: created.consumer_id });
423
+ return created;
424
+ }
425
+ catch (error) {
426
+ const recovered = await findQueueConsumer(client, input.accountId, input.queueId, input.workerName);
427
+ if (!recovered?.consumer_id)
428
+ throw error;
429
+ const updated = await client.queues.consumers.update(input.queueId, recovered.consumer_id, {
430
+ account_id: input.accountId,
431
+ type: 'worker',
432
+ script_name: input.workerName,
433
+ dead_letter_queue: input.deadLetterQueueName,
434
+ settings,
435
+ });
436
+ input.steps.push({ name: 'queue-consumer', status: 'ok', message: `Updated existing Queue consumer for ${input.workerName} after create retry: ${summarizeError(error)}`, resourceId: updated.consumer_id });
437
+ return updated;
438
+ }
332
439
  }
333
440
  async function ensureCnameRecord(client, zoneId, hostname, target, steps, stepName) {
334
441
  const existing = await collectAsync(client.dns.records.list({ zone_id: zoneId, type: 'CNAME', name: { exact: hostname } }));
@@ -347,7 +454,106 @@ async function ensureCnameRecord(client, zoneId, hostname, target, steps, stepNa
347
454
  steps.push({ name: stepName, status: 'ok', message: `Updated CNAME ${hostname} -> ${target}.`, resourceId: updated.id });
348
455
  return updated;
349
456
  }
350
- const created = await client.dns.records.create(params);
351
- steps.push({ name: stepName, status: 'ok', message: `Created CNAME ${hostname} -> ${target}.`, resourceId: created.id });
352
- return created;
457
+ try {
458
+ const created = await client.dns.records.create(params);
459
+ steps.push({ name: stepName, status: 'ok', message: `Created CNAME ${hostname} -> ${target}.`, resourceId: created.id });
460
+ return created;
461
+ }
462
+ catch (error) {
463
+ const recovered = await findCnameRecord(client, zoneId, hostname);
464
+ if (!recovered?.id)
465
+ throw error;
466
+ const updated = await client.dns.records.update(recovered.id, params);
467
+ steps.push({ name: stepName, status: 'ok', message: `Updated existing CNAME ${hostname} -> ${target} after create retry: ${summarizeError(error)}`, resourceId: updated.id });
468
+ return updated;
469
+ }
470
+ }
471
+ async function findQueueByName(client, accountId, queueName) {
472
+ for await (const queue of client.queues.list({ account_id: accountId })) {
473
+ if (queue.queue_name === queueName)
474
+ return queue;
475
+ }
476
+ return undefined;
477
+ }
478
+ async function findKvNamespace(client, accountId, namespaceName, namespaceId) {
479
+ for await (const namespace of client.kv.namespaces.list({ account_id: accountId })) {
480
+ if (namespace.title === namespaceName || (namespaceId && namespace.id === namespaceId))
481
+ return namespace;
482
+ }
483
+ return undefined;
484
+ }
485
+ function persistKvNamespace(context, namespace, namespaceName, persist) {
486
+ context.setConfig('cloudflare.kvNamespaceName', namespace.title ?? namespaceName, persist);
487
+ if (namespace.id)
488
+ context.setConfig('cloudflare.kvNamespaceId', namespace.id, persist);
489
+ }
490
+ async function findR2BucketByName(client, accountId, bucketName) {
491
+ const listed = (await client.r2.buckets.list({ account_id: accountId })).buckets?.find((bucket) => bucket.name === bucketName);
492
+ if (listed)
493
+ return listed;
494
+ if (!client.r2.buckets.get)
495
+ return undefined;
496
+ try {
497
+ const bucket = await client.r2.buckets.get(bucketName, { account_id: accountId });
498
+ return bucket.name ? bucket : { ...bucket, name: bucketName };
499
+ }
500
+ catch {
501
+ return undefined;
502
+ }
503
+ }
504
+ async function findSecretsStore(client, accountId, storeName, storeId) {
505
+ for await (const store of client.secretsStore.stores.list({ account_id: accountId })) {
506
+ if (store.name === storeName || (storeId && store.id === storeId))
507
+ return store;
508
+ }
509
+ return undefined;
510
+ }
511
+ async function findRecoverableSecretsStore(client, accountId, storeName, storeId, error) {
512
+ const stores = await collectAsync(client.secretsStore.stores.list({ account_id: accountId }));
513
+ const exact = stores.find((store) => store.name === storeName || (storeId && store.id === storeId));
514
+ if (exact)
515
+ return exact;
516
+ if (isMaximumStoresExceeded(error) && stores.length === 1)
517
+ return stores[0];
518
+ return undefined;
519
+ }
520
+ function persistSecretsStore(context, store, persist) {
521
+ context.setConfig('cloudflare.secretsStoreName', store.name, persist);
522
+ context.setConfig('cloudflare.secretsStoreId', store.id, persist);
523
+ }
524
+ function isMaximumStoresExceeded(error) {
525
+ return summarizeError(error).toLowerCase().includes('maximum_stores_exceeded');
526
+ }
527
+ async function findTunnelByName(client, accountId, tunnelName) {
528
+ const api = client.zeroTrust.tunnels.cloudflared;
529
+ for await (const tunnel of api.list({ account_id: accountId, name: tunnelName, is_deleted: false })) {
530
+ if (tunnel.name === tunnelName)
531
+ return tunnel;
532
+ }
533
+ return undefined;
534
+ }
535
+ async function findAccessServiceTokenByName(api, accountId, name) {
536
+ for await (const token of api.serviceTokens.list({ account_id: accountId, name })) {
537
+ if (token.name === name)
538
+ return token;
539
+ }
540
+ return undefined;
541
+ }
542
+ async function findAccessApplicationByDomain(api, accountId, domain) {
543
+ for await (const app of api.applications.list({ account_id: accountId, domain, exact: true })) {
544
+ if (app.domain === domain)
545
+ return app;
546
+ }
547
+ return undefined;
548
+ }
549
+ async function findQueueConsumer(client, accountId, queueId, workerName) {
550
+ for await (const consumer of client.queues.consumers.list(queueId, { account_id: accountId })) {
551
+ if (consumer.type === 'worker' && consumer.script === workerName)
552
+ return consumer;
553
+ }
554
+ return undefined;
555
+ }
556
+ async function findCnameRecord(client, zoneId, hostname) {
557
+ const existing = await collectAsync(client.dns.records.list({ zone_id: zoneId, type: 'CNAME', name: { exact: hostname } }));
558
+ return existing.find((record) => record.name === hostname && record.type === 'CNAME');
353
559
  }
@@ -192,10 +192,16 @@ export interface CloudflareTokenRequirementsInput {
192
192
  export interface CloudflareTokenPermissionRequirement {
193
193
  readonly component: CloudflareComponent | 'bootstrap';
194
194
  readonly scope: 'account' | 'zone' | 'user';
195
+ readonly scopeAlternatives?: readonly string[];
195
196
  readonly permission: string;
196
197
  readonly alternatives?: readonly string[];
197
198
  readonly reason: string;
198
199
  }
200
+ export interface CloudflareResolvedPermissionGroup {
201
+ readonly id: string;
202
+ readonly requirement: CloudflareTokenPermissionRequirement;
203
+ readonly cloudflareScope: string;
204
+ }
199
205
  export interface CloudflareTokenRequirementsResult {
200
206
  readonly ok: true;
201
207
  readonly components: Readonly<Record<CloudflareComponent, boolean>>;
@@ -356,16 +362,18 @@ export interface CloudflarePermissionGroupLike {
356
362
  readonly name?: string;
357
363
  readonly scopes?: readonly string[];
358
364
  }
365
+ export type CloudflareTokenResourceMap = Record<string, string | Record<string, string>>;
359
366
  export interface CloudflareTokenPolicyParam {
360
367
  readonly effect: 'allow' | 'deny';
361
368
  readonly permission_groups: readonly {
362
369
  readonly id: string;
363
370
  }[];
364
- readonly resources: Record<string, string>;
371
+ readonly resources: CloudflareTokenResourceMap;
365
372
  }
366
373
  export interface CloudflareTokenCreateResponseLike {
367
374
  readonly id?: string;
368
375
  readonly name?: string;
376
+ readonly policies?: readonly CloudflareTokenPolicyParam[];
369
377
  readonly value?: string;
370
378
  }
371
379
  export interface CloudflareTokenVerifyResponseLike {
@@ -385,6 +393,9 @@ export interface CloudflareApiClient {
385
393
  readonly policies: readonly CloudflareTokenPolicyParam[];
386
394
  readonly expires_on?: string;
387
395
  }): Promise<CloudflareTokenCreateResponseLike>;
396
+ get?(tokenId: string, params: {
397
+ readonly account_id: string;
398
+ }): Promise<CloudflareTokenCreateResponseLike>;
388
399
  verify(params: {
389
400
  readonly account_id: string;
390
401
  }): Promise<CloudflareTokenVerifyResponseLike>;
@@ -409,6 +420,7 @@ export interface CloudflareApiClient {
409
420
  readonly policies: readonly CloudflareTokenPolicyParam[];
410
421
  readonly expires_on?: string;
411
422
  }): Promise<CloudflareTokenCreateResponseLike>;
423
+ get?(tokenId: string): Promise<CloudflareTokenCreateResponseLike>;
412
424
  verify(): Promise<CloudflareTokenVerifyResponseLike>;
413
425
  readonly permissionGroups: {
414
426
  list(params?: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CloudflareAccountLike, CloudflareApiClient, CloudflareComponent, CloudflareComponentSelection, CloudflareKvNamespaceLike, CloudflarePermissionGroupLike, CloudflareQueueLike, CloudflareTokenPermissionRequirement } from './types.js';
1
+ import type { CloudflareAccountLike, CloudflareApiClient, CloudflareComponent, CloudflareComponentSelection, CloudflareKvNamespaceLike, CloudflarePermissionGroupLike, CloudflareQueueLike, CloudflareResolvedPermissionGroup, CloudflareTokenPermissionRequirement, CloudflareTokenPolicyParam, CloudflareTokenCreateResponseLike } from './types.js';
2
2
  export declare function resolveComponents(selection: CloudflareComponentSelection | undefined): Readonly<Record<CloudflareComponent, boolean>>;
3
3
  export declare function buildTokenRequirements(components: Readonly<Record<CloudflareComponent, boolean>>, includeBootstrap: boolean): readonly CloudflareTokenPermissionRequirement[];
4
4
  export declare function selectPermissionGroups(requirements: readonly CloudflareTokenPermissionRequirement[], groups: readonly CloudflarePermissionGroupLike[]): readonly string[];
@@ -6,7 +6,12 @@ export declare function resolvePermissionGroupIds(requirements: readonly Cloudfl
6
6
  readonly name?: string;
7
7
  readonly scope?: string;
8
8
  }) => AsyncIterable<CloudflarePermissionGroupLike>): Promise<readonly string[]>;
9
- export declare function buildTokenResources(accountId: string, zoneId: string | undefined, components: Readonly<Record<CloudflareComponent, boolean>>): Record<string, string>;
9
+ export declare function resolvePermissionGroups(requirements: readonly CloudflareTokenPermissionRequirement[], listPermissionGroups: (params?: {
10
+ readonly name?: string;
11
+ readonly scope?: string;
12
+ }) => AsyncIterable<CloudflarePermissionGroupLike>): Promise<readonly CloudflareResolvedPermissionGroup[]>;
13
+ export declare function buildTokenPolicies(accountId: string, zoneId: string | undefined, groups: readonly CloudflareResolvedPermissionGroup[]): readonly CloudflareTokenPolicyParam[];
14
+ export declare function verifyCreatedTokenPolicies(token: CloudflareTokenCreateResponseLike, expectedGroups: readonly CloudflareResolvedPermissionGroup[], loadToken?: (tokenId: string) => Promise<CloudflareTokenCreateResponseLike>): Promise<void>;
10
15
  export declare function collectSingleAccount(client: CloudflareApiClient, accountId: string, warnings: string[]): Promise<readonly CloudflareAccountLike[]>;
11
16
  export declare function collectAsync<T>(iterable: AsyncIterable<T>, limit?: number): Promise<readonly T[]>;
12
17
  export declare function clean(value: string | undefined): string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAGpB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAKrI;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAC1D,gBAAgB,EAAE,OAAO,GACxB,SAAS,oCAAoC,EAAE,CAiHjD;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,MAAM,EAAE,SAAS,6BAA6B,EAAE,GAC/C,SAAS,MAAM,EAAE,CAmBnB;AAED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,CAAC,6BAA6B,CAAC,GACnI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAqD5B;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,GACzD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAW3C;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAOpG;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,yBAAyB,GAAG,MAAM,CAGjF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,iCAAiC,EACjC,oCAAoC,EACpC,0BAA0B,EAE1B,iCAAiC,EAClC,MAAM,YAAY,CAAC;AAGpB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAKrI;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAC1D,gBAAgB,EAAE,OAAO,GACxB,SAAS,oCAAoC,EAAE,CAkHjD;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,MAAM,EAAE,SAAS,6BAA6B,EAAE,GAC/C,SAAS,MAAM,EAAE,CAmBnB;AAED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,CAAC,6BAA6B,CAAC,GACnI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAE5B;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,CAAC,6BAA6B,CAAC,GACnI,OAAO,CAAC,SAAS,iCAAiC,EAAE,CAAC,CA4DvD;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,SAAS,iCAAiC,EAAE,GACnD,SAAS,0BAA0B,EAAE,CAmBvC;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,iCAAiC,EACxC,cAAc,EAAE,SAAS,iCAAiC,EAAE,EAC5D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iCAAiC,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAW3C;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAOpG;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,yBAAyB,GAAG,MAAM,CAGjF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
@@ -106,6 +106,7 @@ export function buildTokenRequirements(components, includeBootstrap) {
106
106
  requirements.push({
107
107
  component: 'r2',
108
108
  scope: 'account',
109
+ scopeAlternatives: ['com.cloudflare.edge.r2.bucket'],
109
110
  permission: 'Workers R2 Storage Write',
110
111
  alternatives: ['R2 Storage Write', 'Workers R2 Storage Edit'],
111
112
  reason: 'Create and bind a Standard R2 bucket for optional GoodVibes artifacts.',
@@ -131,7 +132,10 @@ export function selectPermissionGroups(requirements, groups) {
131
132
  return Array.from(new Set(ids));
132
133
  }
133
134
  export async function resolvePermissionGroupIds(requirements, listPermissionGroups) {
134
- const ids = [];
135
+ return (await resolvePermissionGroups(requirements, listPermissionGroups)).map((entry) => entry.id);
136
+ }
137
+ export async function resolvePermissionGroups(requirements, listPermissionGroups) {
138
+ const resolved = [];
135
139
  const missing = [];
136
140
  let scannedGroups = null;
137
141
  let lastError;
@@ -142,15 +146,19 @@ export async function resolvePermissionGroupIds(requirements, listPermissionGrou
142
146
  return scannedGroups;
143
147
  };
144
148
  for (const requirement of requirements) {
145
- const scope = cloudflareScopeForRequirement(requirement);
149
+ const scopes = cloudflareScopesForRequirement(requirement);
146
150
  const names = permissionNameCandidates(requirement);
147
151
  let group;
148
152
  for (const name of names) {
153
+ if (group)
154
+ break;
149
155
  try {
150
- const exactMatches = await collectAsync(listPermissionGroups({ name, scope }), 50);
151
- group = findPermissionGroup(requirement, exactMatches);
152
- if (group)
153
- break;
156
+ for (const scope of scopes) {
157
+ const exactMatches = await collectAsync(listPermissionGroups({ name, scope }), 50);
158
+ group = findPermissionGroup(requirement, exactMatches);
159
+ if (group)
160
+ break;
161
+ }
154
162
  }
155
163
  catch (error) {
156
164
  lastError = error;
@@ -166,7 +174,11 @@ export async function resolvePermissionGroupIds(requirements, listPermissionGrou
166
174
  }
167
175
  }
168
176
  if (group?.id) {
169
- ids.push(group.id);
177
+ resolved.push({
178
+ id: group.id,
179
+ requirement,
180
+ cloudflareScope: cloudflareScopeForResolvedGroup(requirement, group),
181
+ });
170
182
  }
171
183
  else {
172
184
  missing.push(`${requirement.permission} (${requirement.component})`);
@@ -176,16 +188,44 @@ export async function resolvePermissionGroupIds(requirements, listPermissionGrou
176
188
  const suffix = lastError ? ` Last Cloudflare permission-group error: ${summarizeError(lastError)}` : '';
177
189
  throw new CloudflareControlPlaneError(`Could not resolve Cloudflare permission groups for: ${missing.join(', ')}.${suffix} Use /api/cloudflare/token/requirements to show the exact required token shape and create the operational token manually if this Cloudflare account uses different permission names.`, 'CLOUDFLARE_PERMISSION_GROUPS_MISSING', 400);
178
190
  }
179
- return Array.from(new Set(ids));
191
+ return uniqueResolvedPermissionGroups(resolved);
180
192
  }
181
- export function buildTokenResources(accountId, zoneId, components) {
182
- const resources = {
183
- [`com.cloudflare.api.account.${accountId}`]: '*',
184
- };
185
- if (components.dns) {
186
- resources[zoneId ? `com.cloudflare.api.account.zone.${zoneId}` : 'com.cloudflare.api.account.zone.*'] = '*';
193
+ export function buildTokenPolicies(accountId, zoneId, groups) {
194
+ const byScope = new Map();
195
+ for (const group of groups) {
196
+ const ids = byScope.get(group.cloudflareScope) ?? [];
197
+ ids.push(group.id);
198
+ byScope.set(group.cloudflareScope, ids);
199
+ }
200
+ const policies = [];
201
+ addTokenPolicy(policies, byScope.get('com.cloudflare.api.account'), accountTokenResources(accountId));
202
+ addTokenPolicy(policies, byScope.get('com.cloudflare.api.account.zone'), zoneTokenResources(accountId, zoneId));
203
+ addTokenPolicy(policies, byScope.get('com.cloudflare.edge.r2.bucket'), { 'com.cloudflare.edge.r2.bucket.*': '*' });
204
+ if ((byScope.get('com.cloudflare.api.user')?.length ?? 0) > 0) {
205
+ throw new CloudflareControlPlaneError('Operational Cloudflare tokens cannot include user-scoped permissions. Create the bootstrap token separately from the Cloudflare dashboard.', 'CLOUDFLARE_USER_POLICY_UNSUPPORTED', 400);
206
+ }
207
+ return policies;
208
+ }
209
+ export async function verifyCreatedTokenPolicies(token, expectedGroups, loadToken) {
210
+ const expectedIds = new Set(expectedGroups.map((group) => group.id));
211
+ let policies = token.policies;
212
+ if ((!policies || policies.length === 0) && token.id && loadToken) {
213
+ policies = (await loadToken(token.id)).policies;
214
+ }
215
+ if (!policies)
216
+ return;
217
+ const actualIds = new Set();
218
+ for (const policy of policies) {
219
+ for (const group of policy.permission_groups ?? []) {
220
+ if (group.id)
221
+ actualIds.add(group.id);
222
+ }
223
+ }
224
+ const missing = [...expectedIds].filter((id) => !actualIds.has(id));
225
+ if (actualIds.size === 0 || missing.length > 0) {
226
+ throw new CloudflareControlPlaneError(`Cloudflare created the operational token but did not persist the expected permission policy. Missing permission group ids: ${missing.join(', ') || 'all'}. ` +
227
+ 'Delete the unusable token in Cloudflare and retry with this SDK version.', 'CLOUDFLARE_TOKEN_POLICY_MISMATCH', 502);
187
228
  }
188
- return resources;
189
229
  }
190
230
  export async function collectSingleAccount(client, accountId, warnings) {
191
231
  if (!accountId) {
@@ -255,16 +295,34 @@ function uniqueRequirements(requirements) {
255
295
  }
256
296
  return unique;
257
297
  }
298
+ function uniqueResolvedPermissionGroups(groups) {
299
+ const seen = new Set();
300
+ const unique = [];
301
+ for (const group of groups) {
302
+ if (seen.has(group.id))
303
+ continue;
304
+ seen.add(group.id);
305
+ unique.push(group);
306
+ }
307
+ return unique;
308
+ }
258
309
  function findPermissionGroup(requirement, groups) {
259
310
  const names = permissionNameCandidates(requirement).map(normalizePermissionName);
260
- const scope = cloudflareScopeForRequirement(requirement);
311
+ const scopes = cloudflareScopesForRequirement(requirement);
261
312
  return groups.find((entry) => entry.id &&
262
313
  entry.name &&
263
314
  names.includes(normalizePermissionName(entry.name)) &&
264
- matchesPermissionScope(entry, scope));
315
+ matchesPermissionScope(entry, scopes));
316
+ }
317
+ function matchesPermissionScope(group, scopes) {
318
+ return !group.scopes || group.scopes.length === 0 || group.scopes.some((scope) => scopes.includes(scope));
319
+ }
320
+ function cloudflareScopeForResolvedGroup(requirement, group) {
321
+ const scopes = cloudflareScopesForRequirement(requirement);
322
+ return group.scopes?.find((scope) => scopes.includes(scope)) ?? scopes[0];
265
323
  }
266
- function matchesPermissionScope(group, scope) {
267
- return !group.scopes || group.scopes.length === 0 || group.scopes.includes(scope);
324
+ function cloudflareScopesForRequirement(requirement) {
325
+ return [cloudflareScopeForRequirement(requirement), ...(requirement.scopeAlternatives ?? [])];
268
326
  }
269
327
  function cloudflareScopeForRequirement(requirement) {
270
328
  switch (requirement.scope) {
@@ -290,3 +348,21 @@ function permissionNameCandidates(requirement) {
290
348
  }
291
349
  return Array.from(names);
292
350
  }
351
+ function accountTokenResources(accountId) {
352
+ return { [`com.cloudflare.api.account.${accountId}`]: '*' };
353
+ }
354
+ function zoneTokenResources(accountId, zoneId) {
355
+ return zoneId
356
+ ? { [`com.cloudflare.api.account.zone.${zoneId}`]: '*' }
357
+ : { [`com.cloudflare.api.account.${accountId}`]: { 'com.cloudflare.api.account.zone.*': '*' } };
358
+ }
359
+ function addTokenPolicy(policies, ids, resources) {
360
+ const uniqueIds = Array.from(new Set(ids ?? []));
361
+ if (uniqueIds.length === 0)
362
+ return;
363
+ policies.push({
364
+ effect: 'allow',
365
+ permission_groups: uniqueIds.map((id) => ({ id })),
366
+ resources,
367
+ });
368
+ }
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- let version = '0.25.16';
3
+ let version = '0.25.18';
4
4
  try {
5
5
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
6
6
  version = pkg.version ?? version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-sdk",
3
- "version": "0.25.16",
3
+ "version": "0.25.18",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mgd34msu/goodvibes-sdk.git"