@fabric-harness/cloudflare 0.16.1 → 0.18.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/dist/agent.d.ts +45 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +187 -0
- package/dist/agent.js.map +1 -0
- package/dist/extension.d.ts +12 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +74 -0
- package/dist/extension.js.map +1 -0
- package/dist/index.d.ts +49 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -1
- package/dist/index.js.map +1 -1
- package/dist/mock-provider.d.ts +25 -0
- package/dist/mock-provider.d.ts.map +1 -0
- package/dist/mock-provider.js +65 -0
- package/dist/mock-provider.js.map +1 -0
- package/dist/shell.d.ts +73 -0
- package/dist/shell.d.ts.map +1 -0
- package/dist/shell.js +258 -0
- package/dist/shell.js.map +1 -0
- package/dist/workers-ai.d.ts +38 -11
- package/dist/workers-ai.d.ts.map +1 -1
- package/dist/workers-ai.js +61 -0
- package/dist/workers-ai.js.map +1 -1
- package/package.json +12 -2
package/dist/workers-ai.js
CHANGED
|
@@ -1,10 +1,39 @@
|
|
|
1
1
|
import { openAIChatCompletionToModelResponse, toOpenAIMessage, toOpenAITool, } from '@fabric-harness/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Map Fabric's ordinal `ThinkingLevel` to Cloudflare's shared
|
|
4
|
+
* `reasoning_effort` option, mirroring Flue: `minimal`/`low` → `low`,
|
|
5
|
+
* `medium` → `medium`, `high`/`xhigh` → `high`. `'off'` is handled by the
|
|
6
|
+
* caller (the field is omitted) and never reaches this function.
|
|
7
|
+
*/
|
|
8
|
+
export function mapReasoningEffort(level) {
|
|
9
|
+
switch (level) {
|
|
10
|
+
case 'minimal':
|
|
11
|
+
case 'low':
|
|
12
|
+
return 'low';
|
|
13
|
+
case 'medium':
|
|
14
|
+
return 'medium';
|
|
15
|
+
case 'high':
|
|
16
|
+
case 'xhigh':
|
|
17
|
+
return 'high';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
2
20
|
/**
|
|
3
21
|
* Reserved model-string prefix that routes through the Workers AI binding
|
|
4
22
|
* provider. `init({ model: 'cloudflare/@cf/meta/llama-3.1-8b-instruct' })`
|
|
5
23
|
* picks this provider when one is registered with the matching name.
|
|
6
24
|
*/
|
|
7
25
|
export const CLOUDFLARE_WORKERS_AI_MODEL_PREFIX = 'cloudflare/';
|
|
26
|
+
export const BUILTIN_WORKERS_AI_MODEL_INFO = {
|
|
27
|
+
'@cf/meta/llama-3.1-8b-instruct': { contextWindowTokens: 8192, maxOutputTokens: 2048, supportsTools: true },
|
|
28
|
+
'@cf/meta/llama-3.1-70b-instruct': { contextWindowTokens: 8192, maxOutputTokens: 2048, supportsTools: true },
|
|
29
|
+
'@cf/meta/llama-3.1-8b-instruct-fast': { contextWindowTokens: 8192, maxOutputTokens: 2048, supportsTools: true },
|
|
30
|
+
'@cf/meta/llama-3.2-1b-instruct': { contextWindowTokens: 8192, maxOutputTokens: 2048, supportsTools: false },
|
|
31
|
+
'@cf/meta/llama-3.2-3b-instruct': { contextWindowTokens: 8192, maxOutputTokens: 2048, supportsTools: false },
|
|
32
|
+
'@cf/mistral/mistral-7b-instruct-v0.2-lora': { contextWindowTokens: 32768, maxOutputTokens: 2048, supportsTools: false },
|
|
33
|
+
// Reasoning-capable models accept a `reasoning_effort` control (see `thinkingLevel`).
|
|
34
|
+
'@cf/openai/gpt-oss-120b': { contextWindowTokens: 128000, supportsTools: true, supportsReasoning: true },
|
|
35
|
+
'@cf/openai/gpt-oss-20b': { contextWindowTokens: 128000, supportsTools: true, supportsReasoning: true },
|
|
36
|
+
};
|
|
8
37
|
/**
|
|
9
38
|
* Model provider that dispatches to Cloudflare Workers AI via the platform
|
|
10
39
|
* binding (`env.AI.run()`) instead of HTTP. Use on a Cloudflare Workers
|
|
@@ -39,6 +68,8 @@ export class CloudflareWorkersAIModelProvider {
|
|
|
39
68
|
binding;
|
|
40
69
|
defaultModel;
|
|
41
70
|
gateway;
|
|
71
|
+
defaultModelInfo;
|
|
72
|
+
models;
|
|
42
73
|
constructor(options) {
|
|
43
74
|
this.name = options.name ?? 'workers-ai';
|
|
44
75
|
this.binding = options.binding;
|
|
@@ -46,6 +77,29 @@ export class CloudflareWorkersAIModelProvider {
|
|
|
46
77
|
this.defaultModel = options.defaultModel;
|
|
47
78
|
if (options.gateway !== undefined)
|
|
48
79
|
this.gateway = options.gateway;
|
|
80
|
+
if (options.defaultModelInfo !== undefined)
|
|
81
|
+
this.defaultModelInfo = options.defaultModelInfo;
|
|
82
|
+
this.models = { ...BUILTIN_WORKERS_AI_MODEL_INFO, ...(options.models ?? {}) };
|
|
83
|
+
}
|
|
84
|
+
getModelMetadata(model) {
|
|
85
|
+
const requested = model ?? this.defaultModel;
|
|
86
|
+
if (!requested) {
|
|
87
|
+
return {
|
|
88
|
+
provider: this.name,
|
|
89
|
+
...(this.gateway?.id ? { gateway: this.gateway.id } : {}),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const stripped = stripCloudflarePrefix(requested);
|
|
93
|
+
const info = this.models[stripped] ?? this.defaultModelInfo;
|
|
94
|
+
return {
|
|
95
|
+
provider: this.name,
|
|
96
|
+
model: stripped,
|
|
97
|
+
...(info?.contextWindowTokens !== undefined ? { contextWindowTokens: info.contextWindowTokens } : {}),
|
|
98
|
+
...(info?.maxOutputTokens !== undefined ? { maxOutputTokens: info.maxOutputTokens } : {}),
|
|
99
|
+
...(info?.supportsTools !== undefined ? { supportsTools: info.supportsTools } : {}),
|
|
100
|
+
...(info?.supportsReasoning !== undefined ? { supportsReasoning: info.supportsReasoning } : {}),
|
|
101
|
+
...(this.gateway?.id ? { gateway: this.gateway.id } : {}),
|
|
102
|
+
};
|
|
49
103
|
}
|
|
50
104
|
async generate(request) {
|
|
51
105
|
const requested = request.model ?? this.defaultModel;
|
|
@@ -59,6 +113,13 @@ export class CloudflareWorkersAIModelProvider {
|
|
|
59
113
|
if (request.tools !== undefined) {
|
|
60
114
|
body.tools = request.tools.map((t) => toOpenAITool(t));
|
|
61
115
|
}
|
|
116
|
+
// Forward reasoning effort only for reasoning-capable models. Mirrors Flue's
|
|
117
|
+
// binding-backed Workers AI behavior; a level on a non-reasoning model (or
|
|
118
|
+
// `'off'`) is silently dropped rather than sent.
|
|
119
|
+
const modelInfo = this.models[model] ?? this.defaultModelInfo;
|
|
120
|
+
if (modelInfo?.supportsReasoning && request.thinkingLevel !== undefined && request.thinkingLevel !== 'off') {
|
|
121
|
+
body.reasoning_effort = mapReasoningEffort(request.thinkingLevel);
|
|
122
|
+
}
|
|
62
123
|
const result = await this.binding.run(model, body, this.gateway ? { gateway: this.gateway } : undefined);
|
|
63
124
|
return openAIChatCompletionToModelResponse(coerceCompletion(result));
|
|
64
125
|
}
|
package/dist/workers-ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers-ai.js","sourceRoot":"","sources":["../src/workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,eAAe,EACf,YAAY,
|
|
1
|
+
{"version":3,"file":"workers-ai.js","sourceRoot":"","sources":["../src/workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,eAAe,EACf,YAAY,GASb,MAAM,qBAAqB,CAAC;AAK7B;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoC;IACrE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,aAAa,CAAC;AAEhE,MAAM,CAAC,MAAM,6BAA6B,GAAiD;IACzF,gCAAgC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAC3G,iCAAiC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAC5G,qCAAqC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAChH,gCAAgC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IAC5G,gCAAgC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IAC5G,2CAA2C,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IACxH,sFAAsF;IACtF,yBAAyB,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IACxG,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;CACxG,CAAC;AAiEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,gCAAgC;IAClC,IAAI,CAAS;IACL,OAAO,CAAiC;IACxC,YAAY,CAAU;IACtB,OAAO,CAAqC;IAC5C,gBAAgB,CAAgC;IAChD,MAAM,CAA+C;IAEtE,YAAY,OAAgD;QAC1D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACjF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAClE,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;YAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC7F,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,KAAc;QAC7B,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC5D,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ;YACf,GAAG,CAAC,IAAI,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAE/C,MAAM,IAAI,GAKN;YACF,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,EAAE,KAAK;SACd,CAAC;QACF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,6EAA6E;QAC7E,2EAA2E;QAC3E,iDAAiD;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC9D,IAAI,SAAS,EAAE,iBAAiB,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAC3G,IAAI,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACnC,KAAK,EACL,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CACrD,CAAC;QAEF,OAAO,mCAAmC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC,kCAAkC,CAAC;QACzD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,MAAM,CAAC;QACxD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,OAAO,KAA6B,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAE,KAA+B,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACxE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fabric-harness/cloudflare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Cloudflare Workers and Sandbox adapter for Fabric Harness.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Fabric",
|
|
@@ -38,9 +38,17 @@
|
|
|
38
38
|
"types": "./dist/index.d.ts",
|
|
39
39
|
"import": "./dist/index.js"
|
|
40
40
|
},
|
|
41
|
+
"./agent": {
|
|
42
|
+
"types": "./dist/agent.d.ts",
|
|
43
|
+
"import": "./dist/agent.js"
|
|
44
|
+
},
|
|
41
45
|
"./workers-ai": {
|
|
42
46
|
"types": "./dist/workers-ai.d.ts",
|
|
43
47
|
"import": "./dist/workers-ai.js"
|
|
48
|
+
},
|
|
49
|
+
"./shell": {
|
|
50
|
+
"types": "./dist/shell.d.ts",
|
|
51
|
+
"import": "./dist/shell.js"
|
|
44
52
|
}
|
|
45
53
|
},
|
|
46
54
|
"files": [
|
|
@@ -49,7 +57,9 @@
|
|
|
49
57
|
"LICENSE"
|
|
50
58
|
],
|
|
51
59
|
"dependencies": {
|
|
52
|
-
"@
|
|
60
|
+
"@cloudflare/codemode": "^0.3.6",
|
|
61
|
+
"@cloudflare/shell": "^0.3.7",
|
|
62
|
+
"@fabric-harness/sdk": "^1.14.0"
|
|
53
63
|
},
|
|
54
64
|
"peerDependencies": {
|
|
55
65
|
"@cloudflare/sandbox": "*"
|