diff --git a/components/hooks/useExampleClient.tsx b/components/hooks/useExampleClient.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/desci-nodes/getDpid.ts b/desci-nodes/getDpid.ts
new file mode 100644
index 0000000..675f845
--- /dev/null
+++ b/desci-nodes/getDpid.ts
@@ -0,0 +1,67 @@
+import { requestUrl} from 'obsidian'
+import type ObsidianDecsiPlugin from '../main'
+import {
+ createNode,
+ placeholderNoteHeight,
+ assistantColor,
+ getNodeText
+ } from '../utils/canvas-util'
+
+export const getDpid = async function () {
+ console.log('this', this)
+ if (this.unloaded) return
+ this.logDebug("fetching dpid json from desci nodes")
+ const canvas = this.getActiveCanvas()
+ if (!canvas) {
+ this.logDebug('No active canvas')
+ return
+ }
+ const selection = canvas.selection
+ if (selection?.size !== 1) return
+ const values = Array.from(selection.values())
+ const node = values[0]
+ if (node) {
+ await canvas.requestSave()
+ await sleep(200)
+
+ const settings = this.settings
+
+ //const nodeData = node.getData()
+ let nodeText = await getNodeText(node) || ''
+ if (nodeText.length == 0) {
+ console.log('no node text')
+ this.logDebug('no node Text found')
+ return
+ }
+
+ const created = createNode(canvas, node,
+ {
+ text: `fetching dpid: ${nodeText}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+ try {
+ const json = await requestUrl(`http://beta.dpid.org/${nodeText}?jsonld`)
+ console.log('json: ', json)
+ const ipfsFetchNode = createNode(canvas, created,
+ {
+ text: `${JSON.stringify(json)}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+
+ } catch (e) {
+ created.setText(`error :( ${e}`)
+ this.logDebug(`error :( : ${e}`)
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/ipfs/dagGet.ts b/ipfs/dagGet.ts
new file mode 100644
index 0000000..3885d36
--- /dev/null
+++ b/ipfs/dagGet.ts
@@ -0,0 +1,78 @@
+import { requestUrl } from 'obsidian'
+
+import {
+ createNode,
+ placeholderNoteHeight,
+ assistantColor,
+ getNodeText
+} from '../utils/canvas-util'
+export const dagGet = async function () {
+ if (this.unloaded) return
+
+ const canvas = this.getActiveCanvas()
+ if (!canvas) {
+ this.logDebug('No active canvas')
+ return
+ }
+ const selection = canvas.selection
+ if (selection?.size !== 1) return
+ const values = Array.from(selection.values())
+ const node = values[0]
+ if (node) {
+ await canvas.requestSave()
+ await sleep(200)
+
+ const settings = this.settings
+
+ const nodeData = node.getData()
+ let nodeText = await getNodeText(node) || ''
+ if (nodeText.length == 0) {
+ this.logDebug('no node Text found')
+ return
+ }
+
+ const created = createNode(canvas, node,
+ {
+ text: `attempting to fetch ${nodeText} from ipfs`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+ try {
+ console.log('waiting for ipfs. . .')
+ let res = await requestUrl(`http://localhost:3000/dag?cid=${nodeText}`)
+ console.log('res', res)
+ res.json.Links.forEach((link: any) => {
+ const name = createNode(canvas, created,
+ {
+ text: `${link.Name}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+ createNode(canvas, name,
+ {
+ text: `${link.Hash['/']}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+ })
+ created.setText('success~')
+ } catch (e) {
+ this.logDebug(e)
+ console.log('ipfs fetch error: ', e)
+ created.setText(`error :( : ${e}`)
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/ipfs/kuboFetch.ts b/ipfs/kuboFetch.ts
new file mode 100644
index 0000000..137b33c
--- /dev/null
+++ b/ipfs/kuboFetch.ts
@@ -0,0 +1,89 @@
+import { requestUrl } from 'obsidian'
+
+import {
+ createNode,
+ placeholderNoteHeight,
+ assistantColor,
+ getNodeText
+} from '../utils/canvas-util'
+
+export const kuboFetch = async function () {
+
+ if (this.unloaded) return
+
+ this.logDebug("attempting to fetch from kubo node")
+
+ const canvas = this.getActiveCanvas()
+ if (!canvas) {
+ this.logDebug('No active canvas')
+ return
+ }
+ const selection = canvas.selection
+ if (selection?.size !== 1) return
+ const values = Array.from(selection.values())
+ const node = values[0]
+ if (node) {
+ await canvas.requestSave()
+ await sleep(200)
+
+ const settings = this.settings
+
+ const nodeData = node.getData()
+ let nodeText = await getNodeText(node) || ''
+ if (nodeText.length == 0) {
+ this.logDebug('no node Text found')
+ return
+ }
+
+ const created = createNode(canvas, node,
+ {
+ text: `attempting to fetch ${nodeText} from ipfs`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+
+ try {
+ const res = await requestUrl({
+ url: `http://localhost:3000/gateway?cid=${nodeText}`,
+ method: 'POST'
+ })
+ console.log('res', res)
+ function _arrayBufferToBase64(buffer) {
+ var binary = '';
+ var bytes = new Uint8Array(buffer);
+ var len = bytes.byteLength;
+ for (var i = 0; i < len; i++) {
+ binary += String.fromCharCode(bytes[i]);
+ }
+ return window.btoa(binary);
+ }
+ const cidNode = createNode(canvas, created,
+ {
+ text: `
`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+
+ } catch (e) {
+ const cideNodeError = createNode(canvas, created,
+ {
+ text: `error at ${e}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/lilypad/runSdxl.ts b/lilypad/runSdxl.ts
new file mode 100644
index 0000000..e8cf3ae
--- /dev/null
+++ b/lilypad/runSdxl.ts
@@ -0,0 +1,83 @@
+import {
+ createNode,
+ placeholderNoteHeight,
+ assistantColor,
+ getNodeText
+} from '../utils/canvas-util'
+import { ethers } from 'ethers'
+export const runSdxl = async function () {
+ if (this.unloaded) return
+
+ this.logDebug("Running sdxl")
+
+ const canvas = this.getActiveCanvas()
+ if (!canvas) {
+ this.logDebug('No active canvas')
+ return
+ }
+ const selection = canvas.selection
+ if (selection?.size !== 1) return
+ const values = Array.from(selection.values())
+ const node = values[0]
+ if (node) {
+ await canvas.requestSave()
+ await sleep(200)
+
+ const settings = this.settings
+
+ //const nodeData = node.getData()
+ let nodeText = await getNodeText(node) || ''
+ if (nodeText.length == 0) {
+ console.log('no node text')
+ this.logDebug('no node Text found')
+ return
+ }
+
+ const created = createNode(canvas, node,
+ {
+ text: `Calling Lilpad sdxl with ${nodeText}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+ try {
+ console.log('waiting for sdxl run')
+ console.log('signer', this.signer)
+ const tx = await this.exampleClient.runSDXL(
+ nodeText, {
+ value: ethers.parseUnits('4', 'ether')
+ }
+ )
+ const receipt = await tx.wait()
+ console.log('receipt', receipt)
+
+ console.log('tx', tx)
+ created.setText(`success! tx hash: ${tx.hash}, listening for job completion`)
+ this.exampleClient.on("ReceivedJobResults", (jobId, cid) => {
+ //const res = await this.exampleClient.fetchAllResults()
+ //console.log('res', res)
+ //const ipfsio = res[res.length -1][2]
+ const ipfsFetchNode = createNode(canvas, created,
+ {
+ text: `${cid}`,
+ size: { height: placeholderNoteHeight }
+ },
+ {
+ color: assistantColor,
+ chat_role: 'assistant'
+ }
+ )
+
+ })
+ /*
+ */
+ } catch (e) {
+ created.setText(`error :( ${e}`)
+ this.logDebug(`error :( : ${e}`)
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/main.tsx b/main.tsx
index 7eebbb1..0732391 100644
--- a/main.tsx
+++ b/main.tsx
@@ -5,8 +5,12 @@ import {
createNode,
placeholderNoteHeight,
assistantColor,
+ getNodeText
} from './utils/canvas-util'
-
+import { getDpid} from './desci-nodes/getDpid'
+import { runSdxl} from './lilypad/runSdxl'
+import {dagGet} from './ipfs/dagGet'
+import {kuboFetch} from './ipfs/kuboFetch'
import { ethers, Signer, Provider, JsonRpcProvider, Wallet } from 'ethers';
import ExampleClient from './artifacts/ExampleClient.json'
@@ -48,16 +52,12 @@ export default class ObsidianDesci extends Plugin {
this.addCommand({
id: 'runSDXL',
name: 'runSDXL - execute stable diffusion on a text node',
- callback: () => {
- this.runSDXL()
- }
+ callback: runSdxl.bind(this)
});
this.addCommand({
id: 'getDpid',
name: 'getDpid - retreive the json of a desci nodes research object',
- callback: () => {
- this.getDpid()
- }
+ callback: getDpid.bind(this)
});
this.addCommand({
id: 'ipfsCat',
@@ -69,9 +69,7 @@ export default class ObsidianDesci extends Plugin {
this.addCommand({
id: 'ipfsDagGet',
name: 'ipfsDagGet - fetch json behind a persistent identifer',
- callback: () => {
- this.ipfsDagGet()
- }
+ callback: dagGet.bind(this)
});
this.addCommand({
id: 'ipfsAdd',
@@ -83,9 +81,7 @@ export default class ObsidianDesci extends Plugin {
this.addCommand({
id: 'ipfsKuboFetch',
name: 'ipfsKuboFetch - fetch a Cid from a Kubo node ',
- callback: () => {
- this.ipfsKuboFetch()
- }
+ callback: kuboFetch.bind(this)
});
// This creates an icon in the left ribbon.
@@ -121,142 +117,6 @@ export default class ObsidianDesci extends Plugin {
onunload() {
}
-
- async getDpid() {
- if (this.unloaded) return
-
- this.logDebug("fetching dpid json from desci nodes")
-
- const canvas = this.getActiveCanvas()
- if (!canvas) {
- this.logDebug('No active canvas')
- return
- }
- const selection = canvas.selection
- if (selection?.size !== 1) return
- const values = Array.from(selection.values())
- const node = values[0]
- if (node) {
- await canvas.requestSave()
- await sleep(200)
-
- const settings = this.settings
-
- //const nodeData = node.getData()
- let nodeText = await getNodeText(node) || ''
- if (nodeText.length == 0) {
- console.log('no node text')
- this.logDebug('no node Text found')
- return
- }
-
- const created = createNode(canvas, node,
- {
- text: `fetching dpid: ${nodeText}`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
- try {
- const json = await requestUrl(`http://beta.dpid.org/${nodeText}?jsonld`)
- console.log('json: ', json)
- const ipfsFetchNode = createNode(canvas, created,
- {
- text: `${JSON.stringify(json)}`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
-
- } catch (e) {
- created.setText(`error :( ${e}`)
- this.logDebug(`error :( : ${e}`)
- return
- }
- }
- }
- async runSDXL() {
- if (this.unloaded) return
-
- this.logDebug("Running sdxl")
-
- const canvas = this.getActiveCanvas()
- if (!canvas) {
- this.logDebug('No active canvas')
- return
- }
- const selection = canvas.selection
- if (selection?.size !== 1) return
- const values = Array.from(selection.values())
- const node = values[0]
- if (node) {
- await canvas.requestSave()
- await sleep(200)
-
- const settings = this.settings
-
- //const nodeData = node.getData()
- let nodeText = await getNodeText(node) || ''
- if (nodeText.length == 0) {
- console.log('no node text')
- this.logDebug('no node Text found')
- return
- }
-
- const created = createNode(canvas, node,
- {
- text: `Calling Lilpad sdxl with ${nodeText}`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
- try {
- console.log('waiting for sdxl run')
- console.log('signer', this.signer)
- const tx = await this.exampleClient.runSDXL(
- nodeText, {
- value: ethers.parseUnits('4', 'ether')
- }
- )
- const receipt = await tx.wait()
- console.log('receipt', receipt)
-
- console.log('tx', tx)
- created.setText(`success! tx hash: ${tx.hash}, listening for job completion`)
- this.exampleClient.on("ReceivedJobResults", (jobId, cid) => {
- //const res = await this.exampleClient.fetchAllResults()
- //console.log('res', res)
- //const ipfsio = res[res.length -1][2]
- const ipfsFetchNode = createNode(canvas, created,
- {
- text: `${cid}`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
-
- })
- /*
- */
- } catch (e) {
- created.setText(`error :( ${e}`)
- this.logDebug(`error :( : ${e}`)
- return
- }
- }
- }
async cat() {
if (this.unloaded) return
@@ -325,85 +185,6 @@ export default class ObsidianDesci extends Plugin {
}
}
}
- async ipfsKuboFetch() {
- if (this.unloaded) return
-
- this.logDebug("attempting to fetch from kubo node")
-
- const canvas = this.getActiveCanvas()
- if (!canvas) {
- this.logDebug('No active canvas')
- return
- }
- const selection = canvas.selection
- if (selection?.size !== 1) return
- const values = Array.from(selection.values())
- const node = values[0]
- if (node) {
- await canvas.requestSave()
- await sleep(200)
-
- const settings = this.settings
-
- const nodeData = node.getData()
- let nodeText = await getNodeText(node) || ''
- if (nodeText.length == 0) {
- this.logDebug('no node Text found')
- return
- }
-
- const created = createNode(canvas, node,
- {
- text: `attempting to fetch ${nodeText} from ipfs`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
-
- try {
- const res = await requestUrl({
- url: `http://localhost:3000/gateway?cid=${nodeText}`,
- method: 'POST'
- })
- console.log('res', res)
- function _arrayBufferToBase64( buffer ) {
- var binary = '';
- var bytes = new Uint8Array( buffer );
- var len = bytes.byteLength;
- for (var i = 0; i < len; i++) {
- binary += String.fromCharCode( bytes[ i ] );
- }
- return window.btoa( binary );
- }
- const cidNode = createNode(canvas, created,
- {
- text: `
`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
-
- } catch (e) {
- const cideNodeError = createNode(canvas, created,
- {
- text: `error at ${e}`,
- size: { height: placeholderNoteHeight }
- },
- {
- color: assistantColor,
- chat_role: 'assistant'
- }
- )
-
- }
- }
- }
async ipfsAdd() {
if (this.unloaded) return
@@ -650,20 +431,3 @@ export default class ObsidianDesci extends Plugin {
}
}
-async function getNodeText(node: CanvasNode) {
- const nodeData = node.getData()
- switch (nodeData.type) {
- case 'text':
- return nodeData.text
- case 'file':
- return readFile(nodeData.file)
- }
-}
-
-async function readFile(path: string) {
- const file = this.app.vault.getAbstractFileByPath(path)
- if (file instanceof TFile) {
- const body = await app.vault.read(file)
- return `## ${file.basename}\n${body}`
- }
-}
\ No newline at end of file
diff --git a/utils/canvas-util.ts b/utils/canvas-util.ts
index 3726fac..041729c 100644
--- a/utils/canvas-util.ts
+++ b/utils/canvas-util.ts
@@ -1,4 +1,4 @@
-import { ItemView } from 'obsidian'
+import { ItemView, TFile } from 'obsidian'
import { Canvas, CanvasNode, CreateNodeOptions } from './canvas-internal'
import { AllCanvasNodeData } from 'obsidian/canvas'
@@ -164,4 +164,21 @@ export const createNode = (
})
return newNode
-}
\ No newline at end of file
+}
+
+async function readFile(path: string) {
+ const file = this.app.vault.getAbstractFileByPath(path)
+ if (file instanceof TFile) {
+ const body = await app.vault.read(file)
+ return `## ${file.basename}\n${body}`
+ }
+}
+export async function getNodeText(node: CanvasNode) {
+ const nodeData = node.getData()
+ switch (nodeData.type) {
+ case 'text':
+ return nodeData.text
+ case 'file':
+ return readFile(nodeData.file)
+ }
+}