@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.
Files changed (2) hide show
  1. package/dist/index.js +36 -0
  2. 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();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clwnd/opencode",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "clwnd for opencode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",