@ixo/asks-mcp 1.6.0-dev.4 → 1.6.0-dev.5

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/asks-mcp.mjs +30 -12
  2. package/package.json +1 -1
package/dist/asks-mcp.mjs CHANGED
@@ -7409,6 +7409,16 @@ var init_given = __esm({
7409
7409
  }
7410
7410
  });
7411
7411
 
7412
+ // ../../packages/openhands-sdk/src/chain/rewardDenom.ts
7413
+ var USDC_MAINNET, rewardDenomFor;
7414
+ var init_rewardDenom = __esm({
7415
+ "../../packages/openhands-sdk/src/chain/rewardDenom.ts"() {
7416
+ "use strict";
7417
+ USDC_MAINNET = "ibc/77C12480BD8C29BF0ACEC2143736C15BAF8CD232CA27BAE09336677B828955E6";
7418
+ rewardDenomFor = (network2, configured) => network2 === "mainnet" && configured?.trim() !== "upay" ? USDC_MAINNET : "upay";
7419
+ }
7420
+ });
7421
+
7412
7422
  // ../../packages/openhands-sdk/src/chain/money.ts
7413
7423
  var money_exports = {};
7414
7424
  __export(money_exports, {
@@ -7451,12 +7461,12 @@ function orgShortfall(org, reward, fee, held) {
7451
7461
  const holds = [...need.keys()].map((denom) => `${face(Number(held[denom] ?? 0))} ${symbolOf(denom)}`).join(" and ");
7452
7462
  return `${org} needs ${[rewards, reviews].filter(Boolean).join(" and ")}; it holds ${holds}`;
7453
7463
  }
7454
- var USDC_MAINNET, USDC_NOBLE_LEGACY, asRewardDenom, usdcDenom, envDenom, currentNetwork, askDenom, heldDenom, rewardDenom, checkerFeeDenom, symbolOf, MICRO, toBase, isPegged;
7464
+ var USDC_NOBLE_LEGACY, asRewardDenom, usdcDenom, envDenom, currentNetwork, askDenom, heldDenom, rewardDenom, checkerFeeDenom, symbolOf, MICRO, toBase, isPegged;
7455
7465
  var init_money = __esm({
7456
7466
  "../../packages/openhands-sdk/src/chain/money.ts"() {
7457
7467
  "use strict";
7458
7468
  init_given();
7459
- USDC_MAINNET = "ibc/77C12480BD8C29BF0ACEC2143736C15BAF8CD232CA27BAE09336677B828955E6";
7469
+ init_rewardDenom();
7460
7470
  USDC_NOBLE_LEGACY = "ibc/6BBE9BD4246F8E04948D5A4EEE7164B2630263B9EBB5E7DC5F0A46C62A2FF97B";
7461
7471
  asRewardDenom = (_value, network2) => rewardDenom(network2);
7462
7472
  usdcDenom = (network2) => network2 === "mainnet" ? USDC_MAINNET : null;
@@ -7467,7 +7477,7 @@ var init_money = __esm({
7467
7477
  const env = envDenom();
7468
7478
  return env === "upay" || env === USDC_MAINNET ? env : "uixo";
7469
7479
  };
7470
- rewardDenom = (network2) => network2 === "mainnet" ? USDC_MAINNET : "upay";
7480
+ rewardDenom = (network2) => rewardDenomFor(network2, envDenom());
7471
7481
  checkerFeeDenom = (_network) => "upay";
7472
7482
  symbolOf = (denom) => denom === "upay" ? "PAY" : denom === USDC_MAINNET ? "USDC" : denom === USDC_NOBLE_LEGACY ? "USDC (old)" : "IXO";
7473
7483
  MICRO = 1e6;
@@ -7864,9 +7874,10 @@ function money(base6, denom, viewer) {
7864
7874
  return { face, local: localOf(exact, viewer), approx: false, title: `${face} in US dollars` };
7865
7875
  }
7866
7876
  if (denom === "uixo" && viewer.sandbox) return { face: dollarsOfBase(exact), local: null, approx: true, title: "sandbox amount" };
7877
+ if (denom === "uixo") return { face: ixoWords(Number(exact) / 1e6), local: null, approx: false, title: IXO_TITLE };
7867
7878
  return null;
7868
7879
  }
7869
- var USDC_MAINNET2, USDC_NOBLE_LEGACY2, DOLLAR_DENOMS, MICRO2, placesFor;
7880
+ var USDC_MAINNET2, USDC_NOBLE_LEGACY2, DOLLAR_DENOMS, MICRO2, placesFor, ixoWords, IXO_TITLE;
7870
7881
  var init_money2 = __esm({
7871
7882
  "../../packages/openhands-sdk/src/data/money.ts"() {
7872
7883
  "use strict";
@@ -7875,6 +7886,8 @@ var init_money2 = __esm({
7875
7886
  DOLLAR_DENOMS = /* @__PURE__ */ new Set(["upay", USDC_MAINNET2, USDC_NOBLE_LEGACY2]);
7876
7887
  MICRO2 = 1000000n;
7877
7888
  placesFor = (value) => value === 0 ? 2 : Math.abs(value) < 1e-4 ? 6 : Math.abs(value) < 1 ? 4 : 2;
7889
+ ixoWords = (value) => `${value.toLocaleString("en-US", { maximumFractionDigits: placesFor(value) })} IXO`;
7890
+ IXO_TITLE = "IXO, the network's own coin, not a dollar coin";
7878
7891
  }
7879
7892
  });
7880
7893
 
@@ -30183,6 +30196,7 @@ function faceOf(amount3, sandbox = envSandbox()) {
30183
30196
  const { value, symbol: symbol2 } = amount3;
30184
30197
  if (PEGGED.has(symbol2)) return { value, prefix: "$", title: `${dollars2(value)} in US dollars`, text: dollars2(value) };
30185
30198
  if (symbol2 === "IXO" && sandbox) return { value, prefix: "$", title: "sandbox amount", text: dollars2(value), approx: true };
30199
+ if (symbol2 === "IXO") return { value, title: "IXO, the network's own coin, not a dollar coin", text: `${value.toLocaleString("en-US", { maximumFractionDigits: fractionFor(value) })} IXO` };
30186
30200
  return { value, title: "Paid in the network's own coin: the public record has the amount", text: UNFACED2, unfaced: true };
30187
30201
  }
30188
30202
  function approvalAmount(payments) {
@@ -261292,7 +261306,7 @@ function prepareAsk(poster, entityDid, adminAccount, terms, now3 = Date.now(), s
261292
261306
  const checkReward = terms.checker && terms.checkRewardUixo ? BigInt(terms.checkRewardUixo) : 0n;
261293
261307
  const spots = BigInt(Math.max(1, terms.quota));
261294
261308
  const denom = terms.denom ?? askDenom();
261295
- if (denom === "upay" && !offChain && network() === "mainnet") throw new Error("PAY is not a reward coin on mainnet: post the reward in USDC");
261309
+ if (denom === "upay" && !offChain && network() === "mainnet" && askDenom() !== "upay") throw new Error("PAY is not a reward coin on mainnet: post the reward in USDC");
261296
261310
  const feeDenom = terms.feeDenom ?? checkerFeeDenom(network());
261297
261311
  const rewardEscrow = offChain ? 0n : BigInt(terms.amountUixo) * spots;
261298
261312
  const feeEscrow = checkReward * spots;
@@ -262045,7 +262059,7 @@ function assertAskShape(ask) {
262045
262059
  const campaignAsk = typeof ask.terms?.campaign === "string";
262046
262060
  const asky = askyChecker(network());
262047
262061
  const askyReview = ask.terms?.call?.kind === "review" && asky !== null && asky.fee.denom === "upay" && ask.checker === asky.address;
262048
- if (network() === "mainnet" && !ask.payoutTerms && !campaignAsk && !askyReview && (ask.denom ?? askDenom()) === "upay") throw new Error(PAY_NOT_A_REWARD);
262062
+ if (network() === "mainnet" && !ask.payoutTerms && !campaignAsk && !askyReview && askDenom() !== "upay" && (ask.denom ?? askDenom()) === "upay") throw new Error(PAY_NOT_A_REWARD);
262049
262063
  if (ask.payoutTerms) {
262050
262064
  if (!ask.org) throw new Error("payout terms need the organisation (org) whose facilitator pays them");
262051
262065
  if (ask.amountUixo !== 0) throw new Error("an ask paid off chain carries nothing on chain: amountUixo must be 0, or the worker is paid twice");
@@ -264462,7 +264476,7 @@ var init_call2 = __esm({
264462
264476
  isTxFailed = (error54) => error54 instanceof Error && error54.name === "TxFailed";
264463
264477
  tagOf = (draft) => callTag(draft.slug);
264464
264478
  TESTNET_CALL_DEFAULTS = {
264465
- /* The sandbox's reward coin is test PAY (build sheet P5); read for one release, the network decides (`readDenom`). */
264479
+ /* The sandbox's reward coin is test PAY (build sheet P5); read for one release, the network decides (`rewardDenomFor`). */
264466
264480
  NEXT_PUBLIC_ASK_DENOM: "upay",
264467
264481
  NEXT_PUBLIC_CHECKER_ADDRESS: "ixo175rlze3q6gap5ddxzc6m92u2ahw7a9h8n4uksq",
264468
264482
  NEXT_PUBLIC_GRANTER_ADDRESS: "ixo1rknlkm29zs2cd8m8y2c6ahmh2jald8swy9g7rn",
@@ -292021,7 +292035,7 @@ import { randomBytes as randomBytes7 } from "node:crypto";
292021
292035
  // package.json
292022
292036
  var package_default = {
292023
292037
  name: "@ixo/asks-mcp",
292024
- version: "1.6.0-dev.4",
292038
+ version: "1.6.0-dev.5",
292025
292039
  description: "The Openhands Network MCP server: read the board, answer asks, post work and get paid on the ixo chain, with a key of its own on your machine.",
292026
292040
  license: "Apache-2.0",
292027
292041
  repository: {
@@ -292530,7 +292544,7 @@ init_networks();
292530
292544
  init_env();
292531
292545
  init_net();
292532
292546
  init_given();
292533
- init_money();
292547
+ init_rewardDenom();
292534
292548
 
292535
292549
  // ../../packages/openhands-sdk/src/data/plans.ts
292536
292550
  var plansEnabled = () => typeof process !== "undefined" && process.env.NEXT_PUBLIC_PLANS_ENABLED === "1";
@@ -292538,7 +292552,9 @@ var plansEnabled = () => typeof process !== "undefined" && process.env.NEXT_PUBL
292538
292552
  // src/config.ts
292539
292553
  var siteOf = () => (ownEnv().OPENHANDS_SITE || originOf(currentNetwork2())).replace(/\/$/, "");
292540
292554
  var expertSiteOf = () => proOrigin(siteOf());
292541
- var readDenom = (_value, network2) => rewardDenom(network2);
292555
+ function adoptAskDenom(facts) {
292556
+ adopt({ askDenom: facts.askDenom });
292557
+ }
292542
292558
  var CLAIM_FORM_ENV = ["NEXT_PUBLIC_VCT_ENTITY_DID", "NEXT_PUBLIC_VCT_PROOF", "NEXT_PUBLIC_VCT_URL"];
292543
292559
  function claimFormIn(env) {
292544
292560
  const [entity, proof, url4] = CLAIM_FORM_ENV.map((name8) => env[name8]?.trim() || "");
@@ -292562,7 +292578,7 @@ function fromEnv() {
292562
292578
  const env = ownEnv();
292563
292579
  return {
292564
292580
  network: currentNetwork2(),
292565
- askDenom: readDenom(env.NEXT_PUBLIC_ASK_DENOM, currentNetwork2()),
292581
+ askDenom: rewardDenomFor(currentNetwork2(), env.NEXT_PUBLIC_ASK_DENOM),
292566
292582
  checker: env.NEXT_PUBLIC_CHECKER_ADDRESS?.trim() || "",
292567
292583
  gate: env.NEXT_PUBLIC_GRANTER_ADDRESS?.trim() || "",
292568
292584
  checkRewardBase: Number(env.QI_CHECK_REWARD_BASE || env.QI_CHECK_REWARD_UIXO || 1e5),
@@ -292610,7 +292626,7 @@ async function deployment() {
292610
292626
  const engineSet = own2.ENGINE_ORACLE_ADDRESS !== void 0 || own2.QI_ENGINE_LIVE !== void 0;
292611
292627
  return {
292612
292628
  network: NETWORK2,
292613
- askDenom: readDenom(own2.NEXT_PUBLIC_ASK_DENOM || answer.askDenom, NETWORK2),
292629
+ askDenom: rewardDenomFor(NETWORK2, own2.NEXT_PUBLIC_ASK_DENOM || answer.askDenom),
292614
292630
  checker: env.checker || answer.checker?.trim() || "",
292615
292631
  gate: env.gate || answer.gate?.trim() || "",
292616
292632
  checkRewardBase: own2.QI_CHECK_REWARD_BASE || own2.QI_CHECK_REWARD_UIXO ? env.checkRewardBase : Number(answer.checkRewardBase || 1e5),
@@ -294139,6 +294155,7 @@ async function build2(options, server2, parts) {
294139
294155
  adoptReviewBilling(DEPLOYMENT);
294140
294156
  adoptOracleUrl(DEPLOYMENT);
294141
294157
  if (local) adoptFeeSplit(DEPLOYMENT);
294158
+ if (local) adoptAskDenom(DEPLOYMENT);
294142
294159
  const OWN_FORM_ENV = Object.fromEntries(CLAIM_FORM_ENV.map((name8) => [name8, ownEnv()[name8]]));
294143
294160
  if (local) adoptClaimForm(DEPLOYMENT);
294144
294161
  let CLAIM_FORM = DEPLOYMENT.claimForm;
@@ -294157,6 +294174,7 @@ async function build2(options, server2, parts) {
294157
294174
  adoptReviewBilling(fresh2);
294158
294175
  adoptOracleUrl(fresh2);
294159
294176
  adoptFeeSplit(fresh2);
294177
+ adoptAskDenom(fresh2);
294160
294178
  adoptClaimForm(fresh2);
294161
294179
  CLAIM_FORM = fresh2.claimForm;
294162
294180
  applyDeployment(fresh2);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ixo/asks-mcp",
3
- "version": "1.6.0-dev.4",
3
+ "version": "1.6.0-dev.5",
4
4
  "description": "The Openhands Network MCP server: read the board, answer asks, post work and get paid on the ixo chain, with a key of its own on your machine.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {