@clwnd/opencode 0.5.1 → 0.5.3
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/index.js +36 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -282,6 +282,21 @@ var generateId = createIdGenerator();
|
|
|
282
282
|
var { btoa, atob } = globalThis;
|
|
283
283
|
|
|
284
284
|
// provider.ts
|
|
285
|
+
import { appendFileSync, mkdirSync } from "fs";
|
|
286
|
+
var LOG_DIR = `${process.env.XDG_DATA_HOME || process.env.HOME + "/.local/share"}/opencode`;
|
|
287
|
+
var LOG_FILE = `${LOG_DIR}/clwnd-plugin.log`;
|
|
288
|
+
try {
|
|
289
|
+
mkdirSync(LOG_DIR, { recursive: true });
|
|
290
|
+
} catch {
|
|
291
|
+
}
|
|
292
|
+
function trace(event, data) {
|
|
293
|
+
const parts = [(/* @__PURE__ */ new Date()).toISOString(), event];
|
|
294
|
+
if (data) for (const [k, v] of Object.entries(data)) parts.push(`${k}=${v}`);
|
|
295
|
+
try {
|
|
296
|
+
appendFileSync(LOG_FILE, parts.join(" ") + "\n");
|
|
297
|
+
} catch {
|
|
298
|
+
}
|
|
299
|
+
}
|
|
285
300
|
var MCP_PREFIX = "mcp__clwnd__";
|
|
286
301
|
var TOOL_NAME_MAP = {
|
|
287
302
|
WebFetch: "webfetch",
|
|
@@ -371,6 +386,17 @@ function isAuxiliaryCall(opts) {
|
|
|
371
386
|
const hasTools = Array.isArray(opts.tools) && opts.tools.length > 0;
|
|
372
387
|
return !hasTools;
|
|
373
388
|
}
|
|
389
|
+
function isBrokeredToolReturn(prompt) {
|
|
390
|
+
if (prompt.length < 2) return false;
|
|
391
|
+
const last = prompt[prompt.length - 1];
|
|
392
|
+
if (last.role !== "tool" || !Array.isArray(last.content)) return false;
|
|
393
|
+
for (const part of last.content) {
|
|
394
|
+
if (part.type === "tool-result" && part.toolName && BROKERED_TOOLS.has(part.toolName)) {
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
374
400
|
var OC_TO_MCP = {
|
|
375
401
|
read: "read",
|
|
376
402
|
edit: "edit",
|
|
@@ -586,6 +612,16 @@ var ClwndModel = class {
|
|
|
586
612
|
const toolInputAccum = /* @__PURE__ */ new Map();
|
|
587
613
|
const permissions = isTitle ? [] : await getSessionPermissions(this.config.client, sid);
|
|
588
614
|
const allowedTools = isTitle ? [] : deriveAllowedTools(opts);
|
|
615
|
+
if (isBrokeredToolReturn(opts.prompt)) {
|
|
616
|
+
trace("brokered.return", { sid });
|
|
617
|
+
const stream2 = new ReadableStream({
|
|
618
|
+
start(controller) {
|
|
619
|
+
controller.enqueue({ type: "finish", finishReason: "stop", usage: { inputTokens: 0, outputTokens: 0, totalTokens: void 0 }, providerMetadata: {} });
|
|
620
|
+
controller.close();
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
return { stream: stream2, rawCall: { raw: {}, rawHeaders: {} }, warnings };
|
|
624
|
+
}
|
|
589
625
|
const stream = new ReadableStream({
|
|
590
626
|
async start(controller) {
|
|
591
627
|
const textId = generateId();
|