fix askai put record
This commit is contained in:
@@ -85,6 +85,37 @@ Answer:`
|
||||
|
||||
console.log('AI response received:', answer)
|
||||
|
||||
// Save conversation to ATProto
|
||||
try {
|
||||
const timestamp = new Date().toISOString()
|
||||
const conversationRecord = {
|
||||
repo: adminData.did,
|
||||
collection: 'ai.syui.log.chat',
|
||||
record: {
|
||||
type: 'ai.syui.log.chat',
|
||||
question: question,
|
||||
answer: answer,
|
||||
user: user ? {
|
||||
did: user.did,
|
||||
handle: user.handle,
|
||||
displayName: user.displayName || user.handle
|
||||
} : null,
|
||||
ai: {
|
||||
did: adminData.did,
|
||||
handle: adminData.profile?.handle,
|
||||
displayName: adminData.profile?.displayName
|
||||
},
|
||||
timestamp: timestamp,
|
||||
createdAt: timestamp
|
||||
}
|
||||
}
|
||||
|
||||
await agent.com.atproto.repo.putRecord(conversationRecord)
|
||||
console.log('Conversation saved to ATProto')
|
||||
} catch (saveError) {
|
||||
console.error('Failed to save conversation:', saveError)
|
||||
}
|
||||
|
||||
// Send response to blog
|
||||
window.dispatchEvent(new CustomEvent('aiResponseReceived', {
|
||||
detail: {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { atproto, collections } from '../api/atproto.js'
|
||||
import { getApiConfig, isSyuIsHandle } from '../utils/pds.js'
|
||||
import { getApiConfig, isSyuIsHandle, getPdsFromHandle } from '../utils/pds.js'
|
||||
import { env } from '../config/env.js'
|
||||
|
||||
export function useUserData(adminData) {
|
||||
@@ -88,16 +88,11 @@ export function useUserData(adminData) {
|
||||
userPds = user.pds.replace('https://', '')
|
||||
userApiConfig = getApiConfig(userPds)
|
||||
} else {
|
||||
// Auto-detect PDS based on handle and get real DID
|
||||
if (isSyuIsHandle(userHandle)) {
|
||||
userPds = env.pds
|
||||
userApiConfig = getApiConfig(userPds)
|
||||
userDid = await atproto.getDid(userPds, userHandle)
|
||||
} else {
|
||||
userPds = 'bsky.social'
|
||||
userApiConfig = getApiConfig(userPds)
|
||||
userDid = await atproto.getDid(userPds, userHandle)
|
||||
}
|
||||
// Get actual PDS from handle first
|
||||
const realPds = await getPdsFromHandle(userHandle)
|
||||
userPds = realPds.replace('https://', '')
|
||||
userApiConfig = getApiConfig(realPds)
|
||||
userDid = await atproto.getDid(userPds, userHandle)
|
||||
}
|
||||
|
||||
// Get user's own ai.syui.log records
|
||||
|
@@ -1,8 +1,11 @@
|
||||
import { env } from '../config/env.js'
|
||||
|
||||
// PDS判定からAPI設定を取得
|
||||
// PDS判定からAPI設定を取得 - 実際のPDSエンドポイントに基づいて設定
|
||||
export function getApiConfig(pds) {
|
||||
if (pds.includes(env.pds)) {
|
||||
// pdsからhttps://を除去してドメインのみ取得
|
||||
const cleanPds = pds.replace(/^https?:\/\//, '')
|
||||
|
||||
if (cleanPds.includes(env.pds)) {
|
||||
return {
|
||||
pds: `https://${env.pds}`,
|
||||
bsky: `https://bsky.${env.pds}`,
|
||||
|
@@ -3,11 +3,11 @@
|
||||
set -e
|
||||
|
||||
cb=ai.syui.log
|
||||
cl=( $cb.chat.lang $cb.chat.comment)
|
||||
cl=($cb.chat $cb.user $cb )
|
||||
f=~/.config/syui/ai/log/config.json
|
||||
|
||||
default_collection="ai.syui.log.chat"
|
||||
default_pds="syu.is"
|
||||
default_pds=bsky.social
|
||||
default_did=`cat $f|jq -r .admin.did`
|
||||
default_token=`cat $f|jq -r .admin.access_jwt`
|
||||
default_refresh=`cat $f|jq -r .admin.refresh_jwt`
|
||||
|
Reference in New Issue
Block a user