Sfoglia il codice sorgente

feat: url based instructions (#7125)

Spoon 1 mese fa
parent
commit
a10cc63403
1 ha cambiato i file con 13 aggiunte e 2 eliminazioni
  1. 13 2
      packages/opencode/src/session/system.ts

+ 13 - 2
packages/opencode/src/session/system.ts

@@ -90,8 +90,13 @@ export namespace SystemPrompt {
       }
       }
     }
     }
 
 
+    const urls: string[] = []
     if (config.instructions) {
     if (config.instructions) {
       for (let instruction of config.instructions) {
       for (let instruction of config.instructions) {
+        if (instruction.startsWith("https://") || instruction.startsWith("http://")) {
+          urls.push(instruction)
+          continue
+        }
         if (instruction.startsWith("~/")) {
         if (instruction.startsWith("~/")) {
           instruction = path.join(os.homedir(), instruction.slice(2))
           instruction = path.join(os.homedir(), instruction.slice(2))
         }
         }
@@ -111,12 +116,18 @@ export namespace SystemPrompt {
       }
       }
     }
     }
 
 
-    const found = Array.from(paths).map((p) =>
+    const foundFiles = Array.from(paths).map((p) =>
       Bun.file(p)
       Bun.file(p)
         .text()
         .text()
         .catch(() => "")
         .catch(() => "")
         .then((x) => "Instructions from: " + p + "\n" + x),
         .then((x) => "Instructions from: " + p + "\n" + x),
     )
     )
-    return Promise.all(found).then((result) => result.filter(Boolean))
+    const foundUrls = urls.map((url) =>
+      fetch(url)
+        .then((res) => (res.ok ? res.text() : ""))
+        .catch(() => "")
+        .then((x) => (x ? "Instructions from: " + url + "\n" + x : "")),
+    )
+    return Promise.all([...foundFiles, ...foundUrls]).then((result) => result.filter(Boolean))
   }
   }
 }
 }