permamind
Version:
An MCP server that provides an immortal memory layer for AI agents and clients
208 lines (207 loc) • 3.96 kB
JavaScript
// Type definitions for Arweave GraphQL queries and responses
export var SortOrder;
(function (SortOrder) {
SortOrder["HEIGHT_ASC"] = "HEIGHT_ASC";
SortOrder["HEIGHT_DESC"] = "HEIGHT_DESC";
SortOrder["INGESTED_AT_ASC"] = "INGESTED_AT_ASC";
SortOrder["INGESTED_AT_DESC"] = "INGESTED_AT_DESC";
})(SortOrder || (SortOrder = {}));
export var TagOperator;
(function (TagOperator) {
TagOperator["EQ"] = "EQ";
TagOperator["NEQ"] = "NEQ";
})(TagOperator || (TagOperator = {}));
// Common GraphQL query fragments
export const TRANSACTION_FIELDS_FRAGMENT = `
fragment TransactionFields on Transaction {
id
anchor
signature
recipient
owner {
address
key
}
fee {
winston
ar
}
quantity {
winston
ar
}
data {
size
type
}
tags {
name
value
}
block {
id
timestamp
height
previous
}
bundledIn {
id
}
ingested_at
}
`;
export const BLOCK_FIELDS_FRAGMENT = `
fragment BlockFields on Block {
id
timestamp
height
previous
}
`;
// Pre-built GraphQL queries
export const TRANSACTION_QUERY = `
query GetTransactions(
$ids: [ID!]
$owners: [String!]
$recipients: [String!]
$tags: [TagFilter!]
$bundledIn: [ID!]
$block: BlockFilter
$ingested_at: IngestedAtFilter
$first: Int
$after: String
$sort: SortOrder
) {
transactions(
ids: $ids
owners: $owners
recipients: $recipients
tags: $tags
bundledIn: $bundledIn
block: $block
ingested_at: $ingested_at
first: $first
after: $after
sort: $sort
) {
pageInfo {
hasNextPage
}
edges {
cursor
node {
...TransactionFields
}
}
}
}
${TRANSACTION_FIELDS_FRAGMENT}
`;
export const SINGLE_TRANSACTION_QUERY = `
query GetTransaction($id: ID!) {
transaction(id: $id) {
...TransactionFields
}
}
${TRANSACTION_FIELDS_FRAGMENT}
`;
export const BLOCK_QUERY = `
query GetBlocks(
$ids: [ID!]
$height: BlockFilter
$first: Int
$after: String
$sort: SortOrder
) {
blocks(
ids: $ids
height: $height
first: $first
after: $after
sort: $sort
) {
pageInfo {
hasNextPage
}
edges {
cursor
node {
...BlockFields
}
}
}
}
${BLOCK_FIELDS_FRAGMENT}
`;
export const SINGLE_BLOCK_QUERY = `
query GetBlock($id: String!) {
block(id: $id) {
...BlockFields
}
}
${BLOCK_FIELDS_FRAGMENT}
`;
// AO-specific queries
export const AO_PROCESS_MESSAGES_QUERY = `
query GetAOProcessMessages(
$fromProcessId: String!
$msgRefs: [String!]!
$limit: Int!
$sortOrder: SortOrder!
$cursor: String
$ingestedAtMin: Int
) {
transactions(
sort: $sortOrder
first: $limit
after: $cursor
tags: [
{ name: "Reference", values: $msgRefs }
{ name: "From-Process", values: [$fromProcessId] }
{ name: "Data-Protocol", values: ["ao"] }
]
ingested_at: { min: $ingestedAtMin }
) {
pageInfo {
hasNextPage
}
edges {
cursor
node {
...TransactionFields
}
}
}
}
${TRANSACTION_FIELDS_FRAGMENT}
`;
export const AO_PROCESS_QUERY = `
query GetAOProcess(
$processId: String!
$first: Int
$after: String
$sort: SortOrder
) {
transactions(
tags: [
{ name: "Data-Protocol", values: ["ao"] }
{ name: "Type", values: ["Process"] }
{ name: "Process", values: [$processId] }
]
first: $first
after: $after
sort: $sort
) {
pageInfo {
hasNextPage
}
edges {
cursor
node {
...TransactionFields
}
}
}
}
${TRANSACTION_FIELDS_FRAGMENT}
`;