@orcareplay/adapters 0.2.3 → 0.2.4
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/opencode-api-bases.d.ts +2 -0
- package/dist/opencode-api-bases.d.ts.map +1 -0
- package/dist/opencode-api-bases.js +201 -0
- package/dist/opencode-api-bases.js.map +1 -0
- package/dist/opencode-capture.d.ts +15 -1
- package/dist/opencode-capture.d.ts.map +1 -1
- package/dist/opencode-capture.js +54 -8
- package/dist/opencode-capture.js.map +1 -1
- package/dist/opencode-catalog.d.ts +5 -0
- package/dist/opencode-catalog.d.ts.map +1 -0
- package/dist/opencode-catalog.js +43 -0
- package/dist/opencode-catalog.js.map +1 -0
- package/dist/opencode.d.ts +2 -2
- package/dist/opencode.d.ts.map +1 -1
- package/dist/opencode.js +5 -6
- package/dist/opencode.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-api-bases.d.ts","sourceRoot":"","sources":["../src/opencode-api-bases.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAqMtC,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// Generated by scripts/update-opencode-api-bases.mjs from https://models.opencode.ai/api.json
|
|
2
|
+
// API templates only; no model metadata or credentials.
|
|
3
|
+
export const OPENCODE_API_BASES = [
|
|
4
|
+
'${NEON_AI_GATEWAY_BASE_URL}/openai/v1',
|
|
5
|
+
'${NEON_AI_GATEWAY_BASE_URL}/v1',
|
|
6
|
+
'http://127.0.0.1:1234/v1',
|
|
7
|
+
'http://127.0.0.1:1337/v1',
|
|
8
|
+
'http://127.0.0.1:8081/v1',
|
|
9
|
+
'http://localhost:8080/v1',
|
|
10
|
+
'https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1',
|
|
11
|
+
'https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/models',
|
|
12
|
+
'https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1',
|
|
13
|
+
'https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models',
|
|
14
|
+
'https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1',
|
|
15
|
+
'https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi',
|
|
16
|
+
'https://${SNOWFLAKE_ACCOUNT}.snowflakecomputing.com/api/v2/cortex/v1',
|
|
17
|
+
'https://agentrouter.org/v1',
|
|
18
|
+
'https://ai-gateway.helicone.ai/v1',
|
|
19
|
+
'https://ai.zenifra.com/v1',
|
|
20
|
+
'https://aki.io/v1',
|
|
21
|
+
'https://api-gateway.merge.dev/v1/ai-sdk',
|
|
22
|
+
'https://api-gw.klok.ipaas.se/proxy/kloker-key/v1',
|
|
23
|
+
'https://api-inference.modelscope.cn/v1',
|
|
24
|
+
'https://api-sherlock.cloudferro.com/openai/v1/',
|
|
25
|
+
'https://api.302.ai/v1',
|
|
26
|
+
'https://api.abliteration.ai/v1',
|
|
27
|
+
'https://api.above.dev/v1',
|
|
28
|
+
'https://api.ai-router.dev/v1',
|
|
29
|
+
'https://api.aiand.com/v1',
|
|
30
|
+
'https://api.aixy-gateway.com/v1',
|
|
31
|
+
'https://api.ambient.xyz/v1',
|
|
32
|
+
'https://api.anyapi.ai/v1',
|
|
33
|
+
'https://api.arcee.ai/api/v1',
|
|
34
|
+
'https://api.auriko.ai/v1',
|
|
35
|
+
'https://api.berget.ai/v1',
|
|
36
|
+
'https://api.clarifai.com/v2/ext/openai/v1',
|
|
37
|
+
'https://api.claudin.io/v1',
|
|
38
|
+
'https://api.cline.bot/api/v1',
|
|
39
|
+
'https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1',
|
|
40
|
+
'https://api.code.umans.ai/v1',
|
|
41
|
+
'https://api.cohere.ai/compatibility/v1',
|
|
42
|
+
'https://api.cortecs.ai/v1',
|
|
43
|
+
'https://api.crossmodel.ai/v1',
|
|
44
|
+
'https://api.deepseek.com',
|
|
45
|
+
'https://api.dinference.com/v1',
|
|
46
|
+
'https://api.edenai.run/v3',
|
|
47
|
+
'https://api.empiriolabs.ai/v1',
|
|
48
|
+
'https://api.fireworks.ai/inference/v1/',
|
|
49
|
+
'https://api.freemodel.dev/v1',
|
|
50
|
+
'https://api.friendli.ai/serverless/v1',
|
|
51
|
+
'https://api.getlilac.com/v1',
|
|
52
|
+
'https://api.githubcopilot.com',
|
|
53
|
+
'https://api.gmi-serving.com/v1',
|
|
54
|
+
'https://api.greenpt.ai/v1',
|
|
55
|
+
'https://api.hpc-ai.com/inference/v1',
|
|
56
|
+
'https://api.impossibl.com/v1',
|
|
57
|
+
'https://api.inceptionlabs.ai/v1/',
|
|
58
|
+
'https://api.inceptron.io/v1',
|
|
59
|
+
'https://api.inference.crusoecloud.com/v1',
|
|
60
|
+
'https://api.inference.wandb.ai/v1',
|
|
61
|
+
'https://api.infomaniak.com/2/ai/${INFOMANIAK_PRODUCT_ID}/openai/v1',
|
|
62
|
+
'https://api.intelligence.io.solutions/api/v1',
|
|
63
|
+
'https://api.iteracompute.com/v1',
|
|
64
|
+
'https://api.jalapeno-cloud.ai/v1',
|
|
65
|
+
'https://api.jiekou.ai/openai',
|
|
66
|
+
'https://api.kilo.ai/api/gateway',
|
|
67
|
+
'https://api.kimi.com/coding/v1',
|
|
68
|
+
'https://api.koscompute.com/v1',
|
|
69
|
+
'https://api.lkeap.cloud.tencent.com/coding/v3',
|
|
70
|
+
'https://api.lkeap.cloud.tencent.com/plan/v3',
|
|
71
|
+
'https://api.llama.com/compat/v1/',
|
|
72
|
+
'https://api.llmgateway.io/v1',
|
|
73
|
+
'https://api.llmtech.eu/v1',
|
|
74
|
+
'https://api.longcat.chat/openai',
|
|
75
|
+
'https://api.lucidquery.com/v1',
|
|
76
|
+
'https://api.meganova.ai/v1',
|
|
77
|
+
'https://api.meta.ai/v1',
|
|
78
|
+
'https://api.minimax.io/anthropic/v1',
|
|
79
|
+
'https://api.minimaxi.com/anthropic/v1',
|
|
80
|
+
'https://api.modeloracle.com/api/v1',
|
|
81
|
+
'https://api.moonshot.ai/v1',
|
|
82
|
+
'https://api.moonshot.cn/v1',
|
|
83
|
+
'https://api.morphllm.com/v1',
|
|
84
|
+
'https://api.nan.builders/v1',
|
|
85
|
+
'https://api.neuralwatt.com/v1',
|
|
86
|
+
'https://api.nova.amazon.com/v1',
|
|
87
|
+
'https://api.novita.ai/openai',
|
|
88
|
+
'https://api.ofox.ai/anthropic/v1',
|
|
89
|
+
'https://api.ofox.ai/gemini/v1beta',
|
|
90
|
+
'https://api.ofox.ai/v1',
|
|
91
|
+
'https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1',
|
|
92
|
+
'https://api.openreason.app/v1',
|
|
93
|
+
'https://api.opper.ai/v3/compat',
|
|
94
|
+
'https://api.orcarouter.ai/v1',
|
|
95
|
+
'https://api.pendra.ai/api/v1',
|
|
96
|
+
'https://api.perplexity.ai/v1',
|
|
97
|
+
'https://api.pioneer.ai/v1',
|
|
98
|
+
'https://api.poe.com/v1',
|
|
99
|
+
'https://api.qhaigc.net/v1',
|
|
100
|
+
'https://api.qnaigc.com/v1',
|
|
101
|
+
'https://api.regolo.ai/v1',
|
|
102
|
+
'https://api.routing.run/v1',
|
|
103
|
+
'https://api.runinfra.ai/v1',
|
|
104
|
+
'https://api.sakana.ai/v1',
|
|
105
|
+
'https://api.sarvam.ai/v1',
|
|
106
|
+
'https://api.scaleway.ai/v1',
|
|
107
|
+
'https://api.scnet.cn/api/llm/v1',
|
|
108
|
+
'https://api.scx.ai/v1',
|
|
109
|
+
'https://api.siliconflow.cn/v1',
|
|
110
|
+
'https://api.siliconflow.com/v1',
|
|
111
|
+
'https://api.stdcmpt.com/v1',
|
|
112
|
+
'https://api.stepfun.ai/step_plan/v1',
|
|
113
|
+
'https://api.stepfun.ai/v1',
|
|
114
|
+
'https://api.stepfun.com/step_plan/v1',
|
|
115
|
+
'https://api.stepfun.com/v1',
|
|
116
|
+
'https://api.subconscious.dev/v1',
|
|
117
|
+
'https://api.synthetic.new/openai/v1',
|
|
118
|
+
'https://api.tbox.cn/api/llm/v1/chat/completions',
|
|
119
|
+
'https://api.tensorx.ai/v1',
|
|
120
|
+
'https://api.thegrid.ai/v1',
|
|
121
|
+
'https://api.tokenfactory.nebius.com/v1',
|
|
122
|
+
'https://api.tokengo.com/v1',
|
|
123
|
+
'https://api.tokenrouter.com/v1',
|
|
124
|
+
'https://api.trustedrouter.com/v1',
|
|
125
|
+
'https://api.unorouter.com/v1',
|
|
126
|
+
'https://api.upstage.ai/v1/solar',
|
|
127
|
+
'https://api.vivgrid.com/v1',
|
|
128
|
+
'https://api.vultrinference.com/v1',
|
|
129
|
+
'https://api.xiaomimimo.com/v1',
|
|
130
|
+
'https://api.z.ai/api/coding/paas/v4',
|
|
131
|
+
'https://api.z.ai/api/paas/v4',
|
|
132
|
+
'https://api.zeldoc.ai/v1',
|
|
133
|
+
'https://apihub.agnes-ai.com/v1',
|
|
134
|
+
'https://apis.iflow.cn/v1',
|
|
135
|
+
'https://app.frogbot.ai/api/v1',
|
|
136
|
+
'https://ark.cn-beijing.volces.com/api/coding/v3',
|
|
137
|
+
'https://ark.cn-beijing.volces.com/api/v3',
|
|
138
|
+
'https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1',
|
|
139
|
+
'https://bedrock-mantle.${AWS_REGION}.api.aws/v1',
|
|
140
|
+
'https://cc.freemodel.dev/v1',
|
|
141
|
+
'https://chat.d.run/v1',
|
|
142
|
+
'https://cloud-api.near.ai/v1',
|
|
143
|
+
'https://coding-intl.dashscope.aliyuncs.com/v1',
|
|
144
|
+
'https://coding-plan-endpoint.kuaecloud.net/v1',
|
|
145
|
+
'https://coding.dashscope.aliyuncs.com/v1',
|
|
146
|
+
'https://crof.ai/v1',
|
|
147
|
+
'https://daoxe.com/v1',
|
|
148
|
+
'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
|
|
149
|
+
'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
150
|
+
'https://developer.amd.com.cn/radeon/api/v1',
|
|
151
|
+
'https://echo.tracerml.ai/v1',
|
|
152
|
+
'https://go.fastrouter.ai/api/v1',
|
|
153
|
+
'https://hyper.charm.land/v1',
|
|
154
|
+
'https://inference.baseten.co/v1',
|
|
155
|
+
'https://inference.coralbricks.ai/v1',
|
|
156
|
+
'https://inference.do-ai.run/v1',
|
|
157
|
+
'https://inference.hetzner.com/api/v1',
|
|
158
|
+
'https://inference.net/v1',
|
|
159
|
+
'https://inference.poolside.ai/v1',
|
|
160
|
+
'https://inference.tinfoil.sh/v1',
|
|
161
|
+
'https://inference.us-west.modal.direct/v1',
|
|
162
|
+
'https://integrate.api.nvidia.com/v1',
|
|
163
|
+
'https://kenari.id/v1',
|
|
164
|
+
'https://llm.chutes.ai/v1',
|
|
165
|
+
'https://llm.submodel.ai/v1',
|
|
166
|
+
'https://llmtr.com/v1',
|
|
167
|
+
'https://maas-api.ebcloud.com/v1',
|
|
168
|
+
'https://moark.com/v1',
|
|
169
|
+
'https://model.inferx.net/endpoints/v1',
|
|
170
|
+
'https://modelishub.com/v1',
|
|
171
|
+
'https://models.mixlayer.ai/v1',
|
|
172
|
+
'https://models.think.evroc.com/v1',
|
|
173
|
+
'https://nano-gpt.com/api/v1',
|
|
174
|
+
'https://oai.endpoints.kepler.ai.cloud.ovh.net/v1',
|
|
175
|
+
'https://ollama.com/v1',
|
|
176
|
+
'https://open.bigmodel.cn/api/coding/paas/v4',
|
|
177
|
+
'https://open.bigmodel.cn/api/paas/v4',
|
|
178
|
+
'https://openai.blueclaw.network/v1',
|
|
179
|
+
'https://openai.bothub.ru/v1',
|
|
180
|
+
'https://opencode.ai/zen/go/v1',
|
|
181
|
+
'https://opencode.ai/zen/v1',
|
|
182
|
+
'https://openrouter.ai/api/v1',
|
|
183
|
+
'https://pass.wafer.ai/v1',
|
|
184
|
+
'https://routellm.abacus.ai/v1',
|
|
185
|
+
'https://router.huggingface.co/v1',
|
|
186
|
+
'https://router.neosmith.ai/v1',
|
|
187
|
+
'https://router.requesty.ai/v1',
|
|
188
|
+
'https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api/v1',
|
|
189
|
+
'https://token-plan-ams.xiaomimimo.com/v1',
|
|
190
|
+
'https://token-plan-cn.xiaomimimo.com/v1',
|
|
191
|
+
'https://token-plan-sgp.xiaomimimo.com/v1',
|
|
192
|
+
'https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1',
|
|
193
|
+
'https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1',
|
|
194
|
+
'https://token.sensenova.cn/v1',
|
|
195
|
+
'https://tokenhub.tencentmaas.com/v1',
|
|
196
|
+
'https://vancine.com/v1',
|
|
197
|
+
'https://www.xpersona.co/v1',
|
|
198
|
+
'https://zenmux.ai/api/anthropic/v1',
|
|
199
|
+
'https://zenmux.ai/api/v1',
|
|
200
|
+
];
|
|
201
|
+
//# sourceMappingURL=opencode-api-bases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-api-bases.js","sourceRoot":"","sources":["../src/opencode-api-bases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
interface OpenCodeModelInput {
|
|
2
|
+
model?: {
|
|
3
|
+
api?: {
|
|
4
|
+
url?: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
provider?: {
|
|
8
|
+
options?: {
|
|
9
|
+
baseURL?: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
1
13
|
/** Self-contained: serialized into a plugin loaded by OpenCode's compiled Bun executable. */
|
|
2
|
-
export declare function installOpenCodeCapture(proxyUrl: string): {
|
|
14
|
+
export declare function installOpenCodeCapture(proxyUrl: string, apiBases?: string[]): {
|
|
3
15
|
dispose(): Promise<void>;
|
|
16
|
+
'chat.params'(input: OpenCodeModelInput): Promise<void>;
|
|
4
17
|
};
|
|
5
18
|
/** Local file URL works in both legacy and current OpenCode plugin loaders; no npm install. */
|
|
6
19
|
export declare function writeOpenCodeCapturePlugin(runDir: string, proxyUrl: string): Promise<string>;
|
|
20
|
+
export {};
|
|
7
21
|
//# sourceMappingURL=opencode-capture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-capture.d.ts","sourceRoot":"","sources":["../src/opencode-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode-capture.d.ts","sourceRoot":"","sources":["../src/opencode-capture.ts"],"names":[],"mappings":"AAMA,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACnC,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/C;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,EAAO,GACtB;IACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CA0FA;AAED,+FAA+F;AAC/F,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
|
package/dist/opencode-capture.js
CHANGED
|
@@ -1,10 +1,38 @@
|
|
|
1
1
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { OPENCODE_API_BASES } from './opencode-api-bases.js';
|
|
5
|
+
import { collectOpenCodeApiBases, refreshOpenCodeApiBases } from './opencode-catalog.js';
|
|
4
6
|
/** Self-contained: serialized into a plugin loaded by OpenCode's compiled Bun executable. */
|
|
5
|
-
export function installOpenCodeCapture(proxyUrl) {
|
|
7
|
+
export function installOpenCodeCapture(proxyUrl, apiBases = []) {
|
|
6
8
|
const original = globalThis.fetch;
|
|
7
9
|
const proxy = new URL(proxyUrl);
|
|
10
|
+
const bases = new Map();
|
|
11
|
+
const addBase = (template) => {
|
|
12
|
+
if (!template)
|
|
13
|
+
return;
|
|
14
|
+
const expanded = template.replace(/\$\{([^}]+)\}/g, (match, key) => process.env[key] ?? match);
|
|
15
|
+
// Unresolved templates must never become wildcard hosts or accidentally capture a login.
|
|
16
|
+
if (expanded.includes('${'))
|
|
17
|
+
return;
|
|
18
|
+
try {
|
|
19
|
+
const base = new URL(expanded);
|
|
20
|
+
if (!['http:', 'https:'].includes(base.protocol) ||
|
|
21
|
+
base.username ||
|
|
22
|
+
base.password ||
|
|
23
|
+
base.search ||
|
|
24
|
+
base.hash ||
|
|
25
|
+
base.origin === proxy.origin)
|
|
26
|
+
return;
|
|
27
|
+
base.pathname = base.pathname.replace(/\/+$/, '') || '/';
|
|
28
|
+
bases.set(base.href, base);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// A malformed catalog/config entry cannot redirect unrelated traffic.
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
for (const base of apiBases)
|
|
35
|
+
addBase(base);
|
|
8
36
|
let active = true;
|
|
9
37
|
const wrapped = function (input, init) {
|
|
10
38
|
if (!active)
|
|
@@ -16,17 +44,23 @@ export function installOpenCodeCapture(proxyUrl) {
|
|
|
16
44
|
catch {
|
|
17
45
|
return original(input, init);
|
|
18
46
|
}
|
|
19
|
-
//
|
|
47
|
+
// Catalog paths are bases, not just hosts: /v1 must not match /v10 or another origin.
|
|
48
|
+
// POST is the model transport supported by the proxy; leave SDK discovery GETs alone.
|
|
49
|
+
const method = init?.method ?? (input instanceof Request ? input.method : 'GET');
|
|
50
|
+
const catalogEndpoint = method.toUpperCase() === 'POST' &&
|
|
51
|
+
[...bases.values()].some((base) => target.origin === base.origin &&
|
|
52
|
+
(base.pathname === '/' ||
|
|
53
|
+
target.pathname === base.pathname ||
|
|
54
|
+
target.pathname.startsWith(base.pathname + '/')));
|
|
55
|
+
// OAuth login/refresh and other ChatGPT traffic stay untouched.
|
|
20
56
|
// Preserve the actual origin so a configured Orca gateway cannot receive a ChatGPT token.
|
|
21
|
-
const
|
|
57
|
+
const oauthEndpoint = (target.hostname === 'chatgpt.com' && target.pathname === '/backend-api/codex/responses') ||
|
|
22
58
|
(target.hostname === 'api.openai.com' &&
|
|
23
59
|
['/v1/responses', '/v1/chat/completions'].includes(target.pathname));
|
|
24
|
-
if (!
|
|
25
|
-
target.protocol !== 'https:' ||
|
|
26
|
-
target.port !== '' ||
|
|
60
|
+
if (!(catalogEndpoint || (oauthEndpoint && target.protocol === 'https:' && target.port === '')) ||
|
|
27
61
|
target.username !== '' ||
|
|
28
62
|
target.password !== '' ||
|
|
29
|
-
target.
|
|
63
|
+
target.origin === proxy.origin) {
|
|
30
64
|
return original(input, init);
|
|
31
65
|
}
|
|
32
66
|
const moved = proxy.href.replace(/\/+$/, '') +
|
|
@@ -42,6 +76,13 @@ export function installOpenCodeCapture(proxyUrl) {
|
|
|
42
76
|
Object.assign(wrapped, original);
|
|
43
77
|
globalThis.fetch = wrapped;
|
|
44
78
|
return {
|
|
79
|
+
// Learn custom/current model bases without rewriting OpenCode's provider selection or URLs.
|
|
80
|
+
async 'chat.params'(input) {
|
|
81
|
+
if (!active)
|
|
82
|
+
return;
|
|
83
|
+
addBase(input.model?.api?.url);
|
|
84
|
+
addBase(input.provider?.options?.baseURL);
|
|
85
|
+
},
|
|
45
86
|
async dispose() {
|
|
46
87
|
active = false;
|
|
47
88
|
if (globalThis.fetch === wrapped)
|
|
@@ -55,7 +96,12 @@ export async function writeOpenCodeCapturePlugin(runDir, proxyUrl) {
|
|
|
55
96
|
await mkdir(runDir, { recursive: true });
|
|
56
97
|
await writeFile(path, `// Generated by OrcaReplay for this run. Contains no credentials.\n` +
|
|
57
98
|
`${installOpenCodeCapture.toString()}\n` +
|
|
58
|
-
|
|
99
|
+
`${collectOpenCodeApiBases.toString()}\n` +
|
|
100
|
+
`${refreshOpenCodeApiBases.toString()}\n` +
|
|
101
|
+
`export default async function () {\n` +
|
|
102
|
+
` const bases = await refreshOpenCodeApiBases(${JSON.stringify(OPENCODE_API_BASES)}, !['1', 'true'].includes(process.env.OPENCODE_DISABLE_MODELS_FETCH));\n` +
|
|
103
|
+
` return installOpenCodeCapture(${JSON.stringify(proxyUrl)}, bases);\n` +
|
|
104
|
+
`}\n`, { mode: 0o600 });
|
|
59
105
|
return pathToFileURL(path).href;
|
|
60
106
|
}
|
|
61
107
|
//# sourceMappingURL=opencode-capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-capture.js","sourceRoot":"","sources":["../src/opencode-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode-capture.js","sourceRoot":"","sources":["../src/opencode-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Self-contained because the emitted OpenCode plugin embeds this function. */
|
|
2
|
+
export declare function collectOpenCodeApiBases(catalog: unknown): string[];
|
|
3
|
+
/** Fetch only public metadata, before installing capture; offline runs use the bundled list. */
|
|
4
|
+
export declare function refreshOpenCodeApiBases(fallback: string[], refresh?: boolean): Promise<string[]>;
|
|
5
|
+
//# sourceMappingURL=opencode-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-catalog.d.ts","sourceRoot":"","sources":["../src/opencode-catalog.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAiBlE;AAED,gGAAgG;AAChG,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,UAAO,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Self-contained because the emitted OpenCode plugin embeds this function. */
|
|
2
|
+
export function collectOpenCodeApiBases(catalog) {
|
|
3
|
+
const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
4
|
+
? value
|
|
5
|
+
: {};
|
|
6
|
+
const bases = new Set();
|
|
7
|
+
const add = (value) => {
|
|
8
|
+
if (typeof value === 'string' && value.trim())
|
|
9
|
+
bases.add(value.trim());
|
|
10
|
+
};
|
|
11
|
+
for (const value of Object.values(object(catalog))) {
|
|
12
|
+
const provider = object(value);
|
|
13
|
+
add(provider.api);
|
|
14
|
+
for (const model of Object.values(object(provider.models))) {
|
|
15
|
+
add(object(object(model).provider).api);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return [...bases];
|
|
19
|
+
}
|
|
20
|
+
/** Fetch only public metadata, before installing capture; offline runs use the bundled list. */
|
|
21
|
+
export async function refreshOpenCodeApiBases(fallback, refresh = true) {
|
|
22
|
+
if (!refresh)
|
|
23
|
+
return fallback;
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch('https://models.opencode.ai/api.json', {
|
|
26
|
+
signal: AbortSignal.timeout(3000),
|
|
27
|
+
redirect: 'error',
|
|
28
|
+
credentials: 'omit',
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok)
|
|
31
|
+
throw new Error('catalog unavailable');
|
|
32
|
+
const bases = collectOpenCodeApiBases(await response.json());
|
|
33
|
+
if (!bases.length)
|
|
34
|
+
throw new Error('empty catalog');
|
|
35
|
+
return [...new Set([...fallback, ...bases])];
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Do not print URLs/error bodies: a custom fetch implementation may include credentials.
|
|
39
|
+
console.warn('[orca] OpenCode API catalog unavailable; using bundled capture endpoints.');
|
|
40
|
+
return fallback;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=opencode-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-catalog.js","sourceRoot":"","sources":["../src/opencode-catalog.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,MAAM,GAAG,CAAC,KAAc,EAA2B,EAAE,CACzD,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAClE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAkB,EAClB,OAAO,GAAG,IAAI;IAEd,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;YAClE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,yFAAyF;QACzF,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC1F,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/opencode.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type { Adapter } from '@orcareplay/plugin-api';
|
|
|
2
2
|
/** Whether OpenCode has credentials of its own, independent of the environment. */
|
|
3
3
|
export declare function opencodeHasOwnAuth(): boolean;
|
|
4
4
|
/**
|
|
5
|
-
* Base URL overrides
|
|
6
|
-
*
|
|
5
|
+
* Base URL overrides retain the existing SDK routing. The run-local plugin captures final fetches
|
|
6
|
+
* to catalog APIs and ChatGPT OAuth's rewritten URL, retaining each actual destination.
|
|
7
7
|
* NODE_OPTIONS/BUN_OPTIONS preloads do not run in OpenCode's compiled executable.
|
|
8
8
|
*/
|
|
9
9
|
export declare const openCodeAdapter: Adapter;
|
package/dist/opencode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAgB7E,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAgB7E,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAmHD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OA6C7B,CAAC"}
|
package/dist/opencode.js
CHANGED
|
@@ -22,10 +22,9 @@ export function opencodeHasOwnAuth() {
|
|
|
22
22
|
* OpenCode resolves its API origin per model, and only the OpenAI and Anthropic origins can be
|
|
23
23
|
* named with an environment variable — so a run on one of these talked straight to its provider
|
|
24
24
|
* while the proxy saw nothing, and the trace came out empty while the agent answered happily.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* before, which the end-of-run `capture.empty` warning is what says out loud.
|
|
25
|
+
* The existing config overlay points these two at the proxy carrying their own destination.
|
|
26
|
+
* The final-fetch plugin independently covers the full catalog, including newly added providers
|
|
27
|
+
* and model-specific API origins; this table is no longer the capture allowlist.
|
|
29
28
|
*/
|
|
30
29
|
const OPENCODE_FIRST_PARTY_BASE = {
|
|
31
30
|
opencode: 'https://opencode.ai/zen/v1',
|
|
@@ -122,8 +121,8 @@ async function withCapturePlugin(ctx, content) {
|
|
|
122
121
|
return { [CONFIG_CONTENT_VAR]: JSON.stringify(config) };
|
|
123
122
|
}
|
|
124
123
|
/**
|
|
125
|
-
* Base URL overrides
|
|
126
|
-
*
|
|
124
|
+
* Base URL overrides retain the existing SDK routing. The run-local plugin captures final fetches
|
|
125
|
+
* to catalog APIs and ChatGPT OAuth's rewritten URL, retaining each actual destination.
|
|
127
126
|
* NODE_OPTIONS/BUN_OPTIONS preloads do not run in OpenCode's compiled executable.
|
|
128
127
|
*/
|
|
129
128
|
export const openCodeAdapter = {
|
package/dist/opencode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CAAC,iCAAiC,EAAE,4BAA4B,CAAC,CAAC;AAE9F,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CAAC,iCAAiC,EAAE,4BAA4B,CAAC,CAAC;AAE9F,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,yBAAyB,GAA2B;IACxD,QAAQ,EAAE,4BAA4B;IACtC,aAAa,EAAE,+BAA+B;CAC/C,CAAC;AAEF,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAErD;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAEvE;;;GAGG;AACH,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,gBAAgB,CAC7B,GAAuC,EACvC,MAAc;IAEd,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAA4C,CAAC;QACxF,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAChC,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,oBAAoB,CAAC,GAAkB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC;QACnD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAChG,CAAC;IACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAkB,EAClB,OAAe;IAEf,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,wFAAwF;QACxF,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAE,MAAM,CAAC,MAAgC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,EAAE,EAAE,UAAU;IAEd,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,MAAM,GAAG,GAA2B;YAClC,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC9C,0EAA0E;YAC1E,kBAAkB,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;SAClD,CAAC;QACF,2FAA2F;QAC3F,4FAA4F;QAC5F,8FAA8F;QAC9F,yFAAyF;QACzF,qFAAqF;QACrF,EAAE;QACF,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,8FAA8F;QAC9F,sDAAsD;QACtD,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,SAAS;YAChD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,SAAS,CAAC;QACtD,IAAI,MAAM,IAAI,kBAAkB,EAAE,EAAE,CAAC;YACnC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAC5C,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpD,8FAA8F;QAC9F,yFAAyF;QACzF,4FAA4F;QAC5F,4EAA4E;QAC5E,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAE9C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IAC/D,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orcareplay/adapters",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@orcareplay/node-instrument": "0.2.
|
|
21
|
-
"@orcareplay/plugin-api": "0.2.
|
|
22
|
-
"@orcareplay/proxy": "0.2.
|
|
23
|
-
"@orcareplay/shell-shim": "0.2.
|
|
20
|
+
"@orcareplay/node-instrument": "0.2.4",
|
|
21
|
+
"@orcareplay/plugin-api": "0.2.4",
|
|
22
|
+
"@orcareplay/proxy": "0.2.4",
|
|
23
|
+
"@orcareplay/shell-shim": "0.2.4"
|
|
24
24
|
}
|
|
25
25
|
}
|