@framers/agentos-ext-cloud-cloudflare-pages 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 +98 -0
- package/dist/CloudflareService.d.ts +191 -0
- package/dist/CloudflareService.d.ts.map +1 -0
- package/dist/CloudflareService.js +383 -0
- package/dist/CloudflareService.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/configureDns.d.ts +83 -0
- package/dist/tools/configureDns.d.ts.map +1 -0
- package/dist/tools/configureDns.js +108 -0
- package/dist/tools/configureDns.js.map +1 -0
- package/dist/tools/createWorker.d.ts +57 -0
- package/dist/tools/createWorker.d.ts.map +1 -0
- package/dist/tools/createWorker.js +48 -0
- package/dist/tools/createWorker.js.map +1 -0
- package/dist/tools/deploy.d.ts +59 -0
- package/dist/tools/deploy.d.ts.map +1 -0
- package/dist/tools/deploy.js +45 -0
- package/dist/tools/deploy.js.map +1 -0
- package/dist/tools/listProjects.d.ts +33 -0
- package/dist/tools/listProjects.d.ts.map +1 -0
- package/dist/tools/listProjects.js +34 -0
- package/dist/tools/listProjects.js.map +1 -0
- package/manifest.json +31 -0
- package/package.json +67 -0
- package/src/CloudflareService.ts +606 -0
- package/src/index.ts +129 -0
- package/src/tools/configureDns.ts +130 -0
- package/src/tools/createWorker.ts +58 -0
- package/src/tools/deploy.ts +56 -0
- package/src/tools/listProjects.ts +35 -0
- package/test/CloudflareService.test.ts +409 -0
- package/test/index.test.ts +56 -0
- package/test/tools.test.ts +336 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview CfConfigureDnsTool — manage DNS records on a Cloudflare zone.
|
|
4
|
+
*/
|
|
5
|
+
export class CfConfigureDnsTool {
|
|
6
|
+
service;
|
|
7
|
+
id = 'cfConfigureDns';
|
|
8
|
+
name = 'cfConfigureDns';
|
|
9
|
+
displayName = 'Configure DNS Records';
|
|
10
|
+
description = 'Manage DNS records (A, AAAA, CNAME, TXT, MX) on a Cloudflare zone. Supports adding, removing, listing, and updating records. Automatically looks up the zone ID from the domain name.';
|
|
11
|
+
category = 'cloud';
|
|
12
|
+
version = '0.1.0';
|
|
13
|
+
hasSideEffects = true;
|
|
14
|
+
inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
domain: { type: 'string', description: 'Root domain for the Cloudflare zone (e.g. "example.com")' },
|
|
18
|
+
action: { type: 'string', enum: ['add', 'remove', 'list', 'update'], description: 'Action to perform (default: list)' },
|
|
19
|
+
recordType: { type: 'string', enum: ['A', 'AAAA', 'CNAME', 'TXT', 'MX'], description: 'DNS record type (required for add/update)' },
|
|
20
|
+
name: { type: 'string', description: 'Record name / hostname (e.g. "www", "@", "api.example.com")' },
|
|
21
|
+
content: { type: 'string', description: 'Record value (IP address, hostname, or text content)' },
|
|
22
|
+
ttl: { type: 'number', description: 'TTL in seconds (1 = auto, default: 1)' },
|
|
23
|
+
proxied: { type: 'boolean', description: 'Whether to proxy through Cloudflare (default: false)' },
|
|
24
|
+
priority: { type: 'number', description: 'Priority for MX records' },
|
|
25
|
+
comment: { type: 'string', description: 'Optional comment for the record' },
|
|
26
|
+
recordId: { type: 'string', description: 'Record ID (required for update/remove actions)' },
|
|
27
|
+
},
|
|
28
|
+
required: ['domain'],
|
|
29
|
+
};
|
|
30
|
+
constructor(service) {
|
|
31
|
+
this.service = service;
|
|
32
|
+
}
|
|
33
|
+
async execute(args) {
|
|
34
|
+
try {
|
|
35
|
+
const action = args.action ?? 'list';
|
|
36
|
+
// Look up zone ID from domain
|
|
37
|
+
const zone = await this.service.getZoneByDomain(args.domain);
|
|
38
|
+
switch (action) {
|
|
39
|
+
case 'add': {
|
|
40
|
+
if (!args.recordType || !args.name || !args.content) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: 'recordType, name, and content are required for the "add" action.',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const record = await this.service.createDnsRecord(zone.id, {
|
|
47
|
+
type: args.recordType,
|
|
48
|
+
name: args.name,
|
|
49
|
+
content: args.content,
|
|
50
|
+
ttl: args.ttl,
|
|
51
|
+
proxied: args.proxied,
|
|
52
|
+
priority: args.priority,
|
|
53
|
+
comment: args.comment,
|
|
54
|
+
});
|
|
55
|
+
return { success: true, data: record };
|
|
56
|
+
}
|
|
57
|
+
case 'remove': {
|
|
58
|
+
if (!args.recordId) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: 'recordId is required for the "remove" action. Use action "list" first to find the record ID.',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
await this.service.deleteDnsRecord(zone.id, args.recordId);
|
|
65
|
+
return { success: true, data: { message: `DNS record ${args.recordId} deleted.` } };
|
|
66
|
+
}
|
|
67
|
+
case 'update': {
|
|
68
|
+
if (!args.recordId) {
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
error: 'recordId is required for the "update" action. Use action "list" first to find the record ID.',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const updatePayload = {};
|
|
75
|
+
if (args.recordType)
|
|
76
|
+
updatePayload.type = args.recordType;
|
|
77
|
+
if (args.name)
|
|
78
|
+
updatePayload.name = args.name;
|
|
79
|
+
if (args.content)
|
|
80
|
+
updatePayload.content = args.content;
|
|
81
|
+
if (args.ttl !== undefined)
|
|
82
|
+
updatePayload.ttl = args.ttl;
|
|
83
|
+
if (args.proxied !== undefined)
|
|
84
|
+
updatePayload.proxied = args.proxied;
|
|
85
|
+
if (args.priority !== undefined)
|
|
86
|
+
updatePayload.priority = args.priority;
|
|
87
|
+
if (args.comment !== undefined)
|
|
88
|
+
updatePayload.comment = args.comment;
|
|
89
|
+
const updated = await this.service.updateDnsRecord(zone.id, args.recordId, updatePayload);
|
|
90
|
+
return { success: true, data: updated };
|
|
91
|
+
}
|
|
92
|
+
case 'list': {
|
|
93
|
+
const records = await this.service.listDnsRecords(zone.id, {
|
|
94
|
+
type: args.recordType,
|
|
95
|
+
name: args.name,
|
|
96
|
+
});
|
|
97
|
+
return { success: true, data: records };
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return { success: false, error: `Unknown action: ${action}` };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return { success: false, error: err.message };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=configureDns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureDns.js","sourceRoot":"","sources":["../../src/tools/configureDns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CfCreateWorkerTool — deploy a Cloudflare Worker script.
|
|
3
|
+
*/
|
|
4
|
+
import type { CloudflareService, CloudflareWorker } from '../CloudflareService.js';
|
|
5
|
+
export interface CreateWorkerInput {
|
|
6
|
+
name: string;
|
|
7
|
+
script: string;
|
|
8
|
+
routes?: string[];
|
|
9
|
+
compatibilityDate?: string;
|
|
10
|
+
bindings?: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export declare class CfCreateWorkerTool {
|
|
13
|
+
private service;
|
|
14
|
+
readonly id = "cfCreateWorker";
|
|
15
|
+
readonly name = "cfCreateWorker";
|
|
16
|
+
readonly displayName = "Deploy Cloudflare Worker";
|
|
17
|
+
readonly description = "Deploy a Cloudflare Worker script to the edge. Supports ES modules format, route patterns, compatibility dates, and environment variable bindings. Workers run on Cloudflare's global network with sub-millisecond cold starts.";
|
|
18
|
+
readonly category = "cloud";
|
|
19
|
+
readonly version = "0.1.0";
|
|
20
|
+
readonly hasSideEffects = true;
|
|
21
|
+
readonly inputSchema: {
|
|
22
|
+
type: "object";
|
|
23
|
+
properties: {
|
|
24
|
+
name: {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
script: {
|
|
29
|
+
type: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
routes: {
|
|
33
|
+
type: string;
|
|
34
|
+
items: {
|
|
35
|
+
type: string;
|
|
36
|
+
};
|
|
37
|
+
description: string;
|
|
38
|
+
};
|
|
39
|
+
compatibilityDate: {
|
|
40
|
+
type: string;
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
bindings: {
|
|
44
|
+
type: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
required: string[];
|
|
49
|
+
};
|
|
50
|
+
constructor(service: CloudflareService);
|
|
51
|
+
execute(args: CreateWorkerInput): Promise<{
|
|
52
|
+
success: boolean;
|
|
53
|
+
data?: CloudflareWorker;
|
|
54
|
+
error?: string;
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=createWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWorker.d.ts","sourceRoot":"","sources":["../../src/tools/createWorker.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,qBAAa,kBAAkB;IAyBjB,OAAO,CAAC,OAAO;IAxB3B,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,8BAA8B;IAClD,QAAQ,CAAC,WAAW,qOAAsO;IAC1P,QAAQ,CAAC,QAAQ,WAAW;IAC5B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAclB;gBAEkB,OAAO,EAAE,iBAAiB;IAExC,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAe/G"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview CfCreateWorkerTool — deploy a Cloudflare Worker script.
|
|
4
|
+
*/
|
|
5
|
+
export class CfCreateWorkerTool {
|
|
6
|
+
service;
|
|
7
|
+
id = 'cfCreateWorker';
|
|
8
|
+
name = 'cfCreateWorker';
|
|
9
|
+
displayName = 'Deploy Cloudflare Worker';
|
|
10
|
+
description = 'Deploy a Cloudflare Worker script to the edge. Supports ES modules format, route patterns, compatibility dates, and environment variable bindings. Workers run on Cloudflare\'s global network with sub-millisecond cold starts.';
|
|
11
|
+
category = 'cloud';
|
|
12
|
+
version = '0.1.0';
|
|
13
|
+
hasSideEffects = true;
|
|
14
|
+
inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
name: { type: 'string', description: 'Worker script name (used as the identifier, e.g. "my-api-worker")' },
|
|
18
|
+
script: { type: 'string', description: 'JavaScript or TypeScript source code for the Worker (ES modules format with default export)' },
|
|
19
|
+
routes: {
|
|
20
|
+
type: 'array',
|
|
21
|
+
items: { type: 'string' },
|
|
22
|
+
description: 'Route patterns to bind the Worker to (e.g. ["example.com/api/*", "*.example.com/webhook"])',
|
|
23
|
+
},
|
|
24
|
+
compatibilityDate: { type: 'string', description: 'Workers runtime compatibility date (e.g. "2024-01-01", default: "2024-01-01")' },
|
|
25
|
+
bindings: { type: 'object', description: 'Environment variable bindings as key-value pairs' },
|
|
26
|
+
},
|
|
27
|
+
required: ['name', 'script'],
|
|
28
|
+
};
|
|
29
|
+
constructor(service) {
|
|
30
|
+
this.service = service;
|
|
31
|
+
}
|
|
32
|
+
async execute(args) {
|
|
33
|
+
try {
|
|
34
|
+
const worker = await this.service.deployWorker({
|
|
35
|
+
name: args.name,
|
|
36
|
+
script: args.script,
|
|
37
|
+
routes: args.routes,
|
|
38
|
+
compatibilityDate: args.compatibilityDate,
|
|
39
|
+
bindings: args.bindings,
|
|
40
|
+
});
|
|
41
|
+
return { success: true, data: worker };
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { success: false, error: err.message };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=createWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../src/tools/createWorker.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAYH,MAAM,OAAO,kBAAkB;IAyBT;IAxBX,EAAE,GAAG,gBAAgB,CAAC;IACtB,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,0BAA0B,CAAC;IACzC,WAAW,GAAG,kOAAkO,CAAC;IACjP,QAAQ,GAAG,OAAO,CAAC;IACnB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;YAC1G,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6FAA6F,EAAE;YACtI,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,4FAA4F;aAC1G;YACD,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+EAA+E,EAAE;YACnI,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;SAC9F;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC7B,CAAC;IAEF,YAAoB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAElD,KAAK,CAAC,OAAO,CAAC,IAAuB;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CfDeployPagesTool — deploy a Cloudflare Pages project from a Git repository.
|
|
3
|
+
*/
|
|
4
|
+
import type { CloudflareService, DeployPagesResult } from '../CloudflareService.js';
|
|
5
|
+
export interface CfDeployPagesInput {
|
|
6
|
+
gitUrl: string;
|
|
7
|
+
projectName?: string;
|
|
8
|
+
productionBranch?: string;
|
|
9
|
+
buildCommand?: string;
|
|
10
|
+
buildOutputDirectory?: string;
|
|
11
|
+
envVars?: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export declare class CfDeployPagesTool {
|
|
14
|
+
private service;
|
|
15
|
+
readonly id = "cfDeployPages";
|
|
16
|
+
readonly name = "cfDeployPages";
|
|
17
|
+
readonly displayName = "Deploy Cloudflare Pages";
|
|
18
|
+
readonly description = "Deploy a project to Cloudflare Pages from a Git repository URL. Creates the project if it does not exist. Supports static sites, Next.js, Astro, SvelteKit, Remix, and other full-stack frameworks with automatic build configuration.";
|
|
19
|
+
readonly category = "cloud";
|
|
20
|
+
readonly version = "0.1.0";
|
|
21
|
+
readonly hasSideEffects = true;
|
|
22
|
+
readonly inputSchema: {
|
|
23
|
+
type: "object";
|
|
24
|
+
properties: {
|
|
25
|
+
gitUrl: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
projectName: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
productionBranch: {
|
|
34
|
+
type: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
buildCommand: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
buildOutputDirectory: {
|
|
42
|
+
type: string;
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
envVars: {
|
|
46
|
+
type: string;
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
required: string[];
|
|
51
|
+
};
|
|
52
|
+
constructor(service: CloudflareService);
|
|
53
|
+
execute(args: CfDeployPagesInput): Promise<{
|
|
54
|
+
success: boolean;
|
|
55
|
+
data?: DeployPagesResult;
|
|
56
|
+
error?: string;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/tools/deploy.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,iBAAiB;IAsBhB,OAAO,CAAC,OAAO;IArB3B,QAAQ,CAAC,EAAE,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,WAAW,4OAA4O;IAChQ,QAAQ,CAAC,QAAQ,WAAW;IAC5B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWlB;gBAEkB,OAAO,EAAE,iBAAiB;IAExC,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAejH"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview CfDeployPagesTool — deploy a Cloudflare Pages project from a Git repository.
|
|
4
|
+
*/
|
|
5
|
+
export class CfDeployPagesTool {
|
|
6
|
+
service;
|
|
7
|
+
id = 'cfDeployPages';
|
|
8
|
+
name = 'cfDeployPages';
|
|
9
|
+
displayName = 'Deploy Cloudflare Pages';
|
|
10
|
+
description = 'Deploy a project to Cloudflare Pages from a Git repository URL. Creates the project if it does not exist. Supports static sites, Next.js, Astro, SvelteKit, Remix, and other full-stack frameworks with automatic build configuration.';
|
|
11
|
+
category = 'cloud';
|
|
12
|
+
version = '0.1.0';
|
|
13
|
+
hasSideEffects = true;
|
|
14
|
+
inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
gitUrl: { type: 'string', description: 'Git repository URL (e.g. "https://github.com/user/repo")' },
|
|
18
|
+
projectName: { type: 'string', description: 'Pages project name (auto-generated from repo name if omitted)' },
|
|
19
|
+
productionBranch: { type: 'string', description: 'Production branch name (default: "main")' },
|
|
20
|
+
buildCommand: { type: 'string', description: 'Build command override (e.g. "npm run build")' },
|
|
21
|
+
buildOutputDirectory: { type: 'string', description: 'Build output directory (e.g. "dist", "build", ".next")' },
|
|
22
|
+
envVars: { type: 'object', description: 'Environment variables to set on the project (key-value pairs)' },
|
|
23
|
+
},
|
|
24
|
+
required: ['gitUrl'],
|
|
25
|
+
};
|
|
26
|
+
constructor(service) {
|
|
27
|
+
this.service = service;
|
|
28
|
+
}
|
|
29
|
+
async execute(args) {
|
|
30
|
+
try {
|
|
31
|
+
const result = await this.service.deployFromGit({
|
|
32
|
+
gitUrl: args.gitUrl,
|
|
33
|
+
productionBranch: args.productionBranch,
|
|
34
|
+
buildCommand: args.buildCommand,
|
|
35
|
+
buildOutputDirectory: args.buildOutputDirectory,
|
|
36
|
+
envVars: args.envVars,
|
|
37
|
+
});
|
|
38
|
+
return { success: true, data: result };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return { success: false, error: err.message };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/tools/deploy.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAaH,MAAM,OAAO,iBAAiB;IAsBR;IArBX,EAAE,GAAG,eAAe,CAAC;IACrB,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAAG,yBAAyB,CAAC;IACxC,WAAW,GAAG,wOAAwO,CAAC;IACvP,QAAQ,GAAG,OAAO,CAAC;IACnB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;YACnG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC7G,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;YAC7F,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;YAC9F,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;YAC/G,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;SAC1G;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC;IAEF,YAAoB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAElD,KAAK,CAAC,OAAO,CAAC,IAAwB;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC/C,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CfListProjectsTool — list all Cloudflare Pages projects.
|
|
3
|
+
*/
|
|
4
|
+
import type { CloudflareService, CloudflarePagesProject } from '../CloudflareService.js';
|
|
5
|
+
export declare class CfListProjectsTool {
|
|
6
|
+
private service;
|
|
7
|
+
readonly id = "cfListProjects";
|
|
8
|
+
readonly name = "cfListProjects";
|
|
9
|
+
readonly displayName = "List Pages Projects";
|
|
10
|
+
readonly description = "List all Cloudflare Pages projects in the connected account. Shows project name, subdomain, production branch, linked Git repo, and latest deployment status.";
|
|
11
|
+
readonly category = "cloud";
|
|
12
|
+
readonly version = "0.1.0";
|
|
13
|
+
readonly hasSideEffects = false;
|
|
14
|
+
readonly inputSchema: {
|
|
15
|
+
type: "object";
|
|
16
|
+
properties: {
|
|
17
|
+
limit: {
|
|
18
|
+
type: string;
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
required: string[];
|
|
23
|
+
};
|
|
24
|
+
constructor(service: CloudflareService);
|
|
25
|
+
execute(args: {
|
|
26
|
+
limit?: number;
|
|
27
|
+
}): Promise<{
|
|
28
|
+
success: boolean;
|
|
29
|
+
data?: CloudflarePagesProject[];
|
|
30
|
+
error?: string;
|
|
31
|
+
}>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=listProjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,qBAAa,kBAAkB;IAiBjB,OAAO,CAAC,OAAO;IAhB3B,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,WAAW,mKAAmK;IACvL,QAAQ,CAAC,QAAQ,WAAW;IAC5B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;kBAKF,MAAM,EAAE;MACxB;gBAEkB,OAAO,EAAE,iBAAiB;IAExC,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,sBAAsB,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQxH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview CfListProjectsTool — list all Cloudflare Pages projects.
|
|
4
|
+
*/
|
|
5
|
+
export class CfListProjectsTool {
|
|
6
|
+
service;
|
|
7
|
+
id = 'cfListProjects';
|
|
8
|
+
name = 'cfListProjects';
|
|
9
|
+
displayName = 'List Pages Projects';
|
|
10
|
+
description = 'List all Cloudflare Pages projects in the connected account. Shows project name, subdomain, production branch, linked Git repo, and latest deployment status.';
|
|
11
|
+
category = 'cloud';
|
|
12
|
+
version = '0.1.0';
|
|
13
|
+
hasSideEffects = false;
|
|
14
|
+
inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
limit: { type: 'number', description: 'Maximum number of projects to return (default: 25, max: 100)' },
|
|
18
|
+
},
|
|
19
|
+
required: [],
|
|
20
|
+
};
|
|
21
|
+
constructor(service) {
|
|
22
|
+
this.service = service;
|
|
23
|
+
}
|
|
24
|
+
async execute(args) {
|
|
25
|
+
try {
|
|
26
|
+
const projects = await this.service.listProjects(args.limit ?? 25);
|
|
27
|
+
return { success: true, data: projects };
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
return { success: false, error: err.message };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=listProjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAIH,MAAM,OAAO,kBAAkB;IAiBT;IAhBX,EAAE,GAAG,gBAAgB,CAAC;IACtB,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,qBAAqB,CAAC;IACpC,WAAW,GAAG,+JAA+J,CAAC;IAC9K,QAAQ,GAAG,OAAO,CAAC;IACnB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,KAAK,CAAC;IAEvB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;SACvG;QACD,QAAQ,EAAE,EAAc;KACzB,CAAC;IAEF,YAAoB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAElD,KAAK,CAAC,OAAO,CAAC,IAAwB;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
|
package/manifest.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
|
|
3
|
+
"id": "com.framers.cloud.cloudflare-pages",
|
|
4
|
+
"name": "Cloudflare Pages & Workers",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"description": "Deploy Cloudflare Pages projects, manage DNS records, and deploy Workers. Supports static sites, full-stack frameworks, and edge functions via the Cloudflare API v4.",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Frame.dev",
|
|
9
|
+
"email": "support@frame.dev",
|
|
10
|
+
"url": "https://github.com/framersai"
|
|
11
|
+
},
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": ["cloud", "cloudflare", "pages", "workers", "dns", "deploy", "edge"],
|
|
14
|
+
"agentosVersion": "^2.0.0",
|
|
15
|
+
"categories": ["tool", "cloud"],
|
|
16
|
+
"platforms": [],
|
|
17
|
+
"sdk": "none",
|
|
18
|
+
"extensions": [
|
|
19
|
+
{ "kind": "tool", "id": "cfDeployPages", "displayName": "Deploy Cloudflare Pages", "entry": "./dist/tools/deploy.js" },
|
|
20
|
+
{ "kind": "tool", "id": "cfListProjects", "displayName": "List Pages Projects", "entry": "./dist/tools/listProjects.js" },
|
|
21
|
+
{ "kind": "tool", "id": "cfConfigureDns", "displayName": "Configure DNS Records", "entry": "./dist/tools/configureDns.js" },
|
|
22
|
+
{ "kind": "tool", "id": "cfCreateWorker", "displayName": "Deploy Cloudflare Worker", "entry": "./dist/tools/createWorker.js" }
|
|
23
|
+
],
|
|
24
|
+
"requiredSecrets": ["cloudflare.apiToken", "cloudflare.accountId"],
|
|
25
|
+
"features": [
|
|
26
|
+
"Deploy Pages projects from Git repositories",
|
|
27
|
+
"List and inspect Pages project deployments",
|
|
28
|
+
"Full DNS record management (A, AAAA, CNAME, TXT, MX)",
|
|
29
|
+
"Deploy Cloudflare Worker scripts to the edge"
|
|
30
|
+
]
|
|
31
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@framers/agentos-ext-cloud-cloudflare-pages",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Cloudflare Pages cloud extension — deploy Pages projects, manage DNS records, and deploy Workers via the Cloudflare API v4.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": true,
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./manifest.json": "./manifest.json",
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"agentos",
|
|
19
|
+
"extension",
|
|
20
|
+
"cloud",
|
|
21
|
+
"cloudflare",
|
|
22
|
+
"pages",
|
|
23
|
+
"workers",
|
|
24
|
+
"dns",
|
|
25
|
+
"deploy",
|
|
26
|
+
"hosting"
|
|
27
|
+
],
|
|
28
|
+
"author": {
|
|
29
|
+
"name": "Framers AI",
|
|
30
|
+
"email": "team@frame.dev",
|
|
31
|
+
"url": "https://frame.dev"
|
|
32
|
+
},
|
|
33
|
+
"contributors": [
|
|
34
|
+
{
|
|
35
|
+
"name": "Johnny Dunn",
|
|
36
|
+
"email": "johnnyfived@protonmail.com",
|
|
37
|
+
"url": "https://github.com/jddunn"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/framersai/agentos-extensions.git",
|
|
44
|
+
"directory": "registry/curated/cloud/cloudflare-pages"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@framers/agentos": "^0.5.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@framers/agentos": "^0.6.6",
|
|
54
|
+
"@types/node": "^20.12.12",
|
|
55
|
+
"rimraf": "^5.0.7",
|
|
56
|
+
"typescript": "^5.4.5",
|
|
57
|
+
"vitest": "^1.6.0"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsc",
|
|
61
|
+
"dev": "tsc --watch",
|
|
62
|
+
"test": "vitest run",
|
|
63
|
+
"test:watch": "vitest",
|
|
64
|
+
"typecheck": "tsc --noEmit",
|
|
65
|
+
"clean": "rimraf dist"
|
|
66
|
+
}
|
|
67
|
+
}
|