headroom-opencode 0.40.0 → 0.41.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/README.md +19 -15
- package/dist/{chunk-RFZCFX4B.js → chunk-XS6Z2EJR.js} +137 -21
- package/dist/chunk-XS6Z2EJR.js.map +1 -0
- package/dist/entry.opencode-C0sNp2fs.d.ts +21 -0
- package/dist/entry.opencode.d.ts +2 -1
- package/dist/entry.opencode.js +3 -3
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-RFZCFX4B.js.map +0 -1
- package/dist/entry.opencode-CbfMY5Ox.d.ts +0 -12
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Plugin } from '@opencode-ai/plugin';
|
|
2
|
+
import { Plugin as Plugin$1 } from '@opencode/plugin';
|
|
3
|
+
|
|
4
|
+
interface HeadroomOpenCodePluginOptions {
|
|
5
|
+
proxyUrl?: string;
|
|
6
|
+
project?: string;
|
|
7
|
+
excludeHosts?: string[];
|
|
8
|
+
backend?: string;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
sessionToken?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const HEADROOM_PLUGIN_ID = "headroom";
|
|
13
|
+
declare const HeadroomPlugin: Plugin;
|
|
14
|
+
declare const headroomSetup: Plugin$1.Plugin["setup"];
|
|
15
|
+
declare const HeadroomOpenCodePlugin: {
|
|
16
|
+
id: string;
|
|
17
|
+
server: Plugin;
|
|
18
|
+
setup: (context: Plugin$1.Context) => Promise<Plugin$1.Cleanup | void> | Plugin$1.Cleanup | void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { HEADROOM_PLUGIN_ID as H, HeadroomOpenCodePlugin as a, type HeadroomOpenCodePluginOptions as b, HeadroomPlugin as c, headroomSetup as h };
|
package/dist/entry.opencode.d.ts
CHANGED
package/dist/entry.opencode.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompressResult } from 'headroom-ai';
|
|
2
|
-
export { H as
|
|
2
|
+
export { H as HEADROOM_PLUGIN_ID, a as HeadroomOpenCodePlugin, b as HeadroomOpenCodePluginOptions, c as HeadroomPlugin, a as default, h as headroomSetup } from './entry.opencode-C0sNp2fs.js';
|
|
3
3
|
import '@opencode-ai/plugin';
|
|
4
|
+
import '@opencode/plugin';
|
|
4
5
|
|
|
5
6
|
interface HeadroomModelMapping {
|
|
6
7
|
name: string;
|
|
@@ -63,6 +64,7 @@ interface InstallOptions {
|
|
|
63
64
|
project?: string;
|
|
64
65
|
excludeHosts?: string[];
|
|
65
66
|
debug?: boolean;
|
|
67
|
+
sessionToken?: string;
|
|
66
68
|
}
|
|
67
69
|
declare function installHeadroomTransport(options: InstallOptions): () => void;
|
|
68
70
|
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
+
HEADROOM_PLUGIN_ID,
|
|
3
|
+
HeadroomOpenCodePlugin,
|
|
2
4
|
HeadroomPlugin,
|
|
3
5
|
compressWithHeadroom,
|
|
4
6
|
createHeadroomRetrieveTool,
|
|
5
7
|
getDefaultProxyUrl,
|
|
8
|
+
headroomSetup,
|
|
6
9
|
installHeadroomTransport,
|
|
7
10
|
plugin_default,
|
|
8
|
-
setDefaultProxyUrl
|
|
9
|
-
|
|
11
|
+
setDefaultProxyUrl,
|
|
12
|
+
trimTrailingSlashes
|
|
13
|
+
} from "./chunk-XS6Z2EJR.js";
|
|
10
14
|
|
|
11
15
|
// src/provider.ts
|
|
12
16
|
var DEFAULT_MODELS = {
|
|
@@ -33,7 +37,7 @@ var DEFAULT_MODELS = {
|
|
|
33
37
|
};
|
|
34
38
|
var DEFAULT_MODEL = "claude-sonnet-4-6";
|
|
35
39
|
function resolveBaseUrl(options) {
|
|
36
|
-
if (options.proxyBaseUrl) return options.proxyBaseUrl
|
|
40
|
+
if (options.proxyBaseUrl) return trimTrailingSlashes(options.proxyBaseUrl);
|
|
37
41
|
const port = options.proxyPort ?? 8787;
|
|
38
42
|
return `http://127.0.0.1:${port}`;
|
|
39
43
|
}
|
|
@@ -63,6 +67,8 @@ function buildOpencodeConfigContentJson(options = {}) {
|
|
|
63
67
|
export {
|
|
64
68
|
DEFAULT_MODEL,
|
|
65
69
|
DEFAULT_MODELS,
|
|
70
|
+
HEADROOM_PLUGIN_ID,
|
|
71
|
+
HeadroomOpenCodePlugin,
|
|
66
72
|
HeadroomPlugin,
|
|
67
73
|
buildOpencodeConfigContent,
|
|
68
74
|
buildOpencodeConfigContentJson,
|
|
@@ -71,6 +77,7 @@ export {
|
|
|
71
77
|
createHeadroomRetrieveTool,
|
|
72
78
|
plugin_default as default,
|
|
73
79
|
getDefaultProxyUrl,
|
|
80
|
+
headroomSetup,
|
|
74
81
|
installHeadroomTransport,
|
|
75
82
|
setDefaultProxyUrl
|
|
76
83
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/provider.ts"],"sourcesContent":["import { trimTrailingSlashes } from \"./retrieve.js\";\n\nexport interface HeadroomModelMapping {\n name: string;\n limit: {\n context: number;\n output: number;\n };\n}\n\nexport interface HeadroomProviderOptions {\n proxyBaseUrl?: string;\n proxyPort?: number;\n defaultModel?: string;\n models?: Record<string, HeadroomModelMapping>;\n}\n\nexport const DEFAULT_MODELS: Record<string, HeadroomModelMapping> = {\n \"claude-sonnet-4-6\": {\n name: \"Claude Sonnet 4.6\",\n limit: { context: 200000, output: 16384 },\n },\n \"claude-opus-4-6\": {\n name: \"Claude Opus 4.6\",\n limit: { context: 200000, output: 16384 },\n },\n \"claude-haiku-4-5-20251001\": {\n name: \"Claude Haiku 4.5\",\n limit: { context: 200000, output: 8192 },\n },\n \"gpt-4o\": {\n name: \"GPT-4o\",\n limit: { context: 128000, output: 16384 },\n },\n \"gpt-4.1\": {\n name: \"GPT-4.1\",\n limit: { context: 1048576, output: 32768 },\n },\n};\n\nexport const DEFAULT_MODEL = \"claude-sonnet-4-6\";\n\nfunction resolveBaseUrl(options: HeadroomProviderOptions): string {\n if (options.proxyBaseUrl) return trimTrailingSlashes(options.proxyBaseUrl);\n const port = options.proxyPort ?? 8787;\n return `http://127.0.0.1:${port}`;\n}\n\nexport interface HeadroomProvider {\n npm: string;\n name: string;\n options: {\n baseURL: string;\n apiKey?: string;\n };\n models: Record<string, HeadroomModelMapping>;\n}\n\nexport function createHeadroomProvider(\n options: HeadroomProviderOptions = {},\n): HeadroomProvider {\n const baseUrl = resolveBaseUrl(options);\n const models = options.models ?? DEFAULT_MODELS;\n\n return {\n npm: \"@ai-sdk/openai-compatible\",\n name: \"Headroom Proxy\",\n options: { baseURL: `${baseUrl}/v1` },\n // OpenCode namespaces model ids by provider key, so entries must be bare\n // ids (\"claude-sonnet-4-6\"), referenced as \"headroom/<id>\".\n models: { ...models },\n };\n}\n\nexport function buildOpencodeConfigContent(\n options: HeadroomProviderOptions = {},\n): Record<string, unknown> {\n const defaultModel = options.defaultModel ?? DEFAULT_MODEL;\n const provider = createHeadroomProvider(options);\n\n return {\n provider: { headroom: provider },\n model: `headroom/${defaultModel}`,\n };\n}\n\nexport function buildOpencodeConfigContentJson(\n options: HeadroomProviderOptions = {},\n): string {\n return JSON.stringify(buildOpencodeConfigContent(options));\n}\n"],"mappings":";;;;;;;;;;;;;;;AAiBO,IAAM,iBAAuD;AAAA,EAClE,qBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,KAAQ,QAAQ,MAAM;AAAA,EAC1C;AAAA,EACA,mBAAmB;AAAA,IACjB,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,KAAQ,QAAQ,MAAM;AAAA,EAC1C;AAAA,EACA,6BAA6B;AAAA,IAC3B,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,KAAQ,QAAQ,KAAK;AAAA,EACzC;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,OAAQ,QAAQ,MAAM;AAAA,EAC1C;AAAA,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,SAAS,QAAQ,MAAM;AAAA,EAC3C;AACF;AAEO,IAAM,gBAAgB;AAE7B,SAAS,eAAe,SAA0C;AAChE,MAAI,QAAQ,aAAc,QAAO,oBAAoB,QAAQ,YAAY;AACzE,QAAM,OAAO,QAAQ,aAAa;AAClC,SAAO,oBAAoB,IAAI;AACjC;AAYO,SAAS,uBACd,UAAmC,CAAC,GAClB;AAClB,QAAM,UAAU,eAAe,OAAO;AACtC,QAAM,SAAS,QAAQ,UAAU;AAEjC,SAAO;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,EAAE,SAAS,GAAG,OAAO,MAAM;AAAA;AAAA;AAAA,IAGpC,QAAQ,EAAE,GAAG,OAAO;AAAA,EACtB;AACF;AAEO,SAAS,2BACd,UAAmC,CAAC,GACX;AACzB,QAAM,eAAe,QAAQ,gBAAgB;AAC7C,QAAM,WAAW,uBAAuB,OAAO;AAE/C,SAAO;AAAA,IACL,UAAU,EAAE,UAAU,SAAS;AAAA,IAC/B,OAAO,YAAY,YAAY;AAAA,EACjC;AACF;AAEO,SAAS,+BACd,UAAmC,CAAC,GAC5B;AACR,SAAO,KAAK,UAAU,2BAA2B,OAAO,CAAC;AAC3D;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "headroom-opencode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "Headroom proxy integration plugin for OpenCode - routes LLM traffic through the Headroom proxy for token compression",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@opencode-ai/plugin": "^1.18.2",
|
|
22
|
-
"headroom-ai": "^0.
|
|
22
|
+
"headroom-ai": "^0.41.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@ai-sdk/openai-compatible": "*",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
+
"@opencode/plugin": "^2.0.14",
|
|
41
42
|
"@types/node": "^26.1.1",
|
|
42
43
|
"@typescript/native": "npm:typescript@^7.0.2",
|
|
43
44
|
"tsup": "^8.0.0",
|