@kroxy/kroxy 1.0.6 → 1.0.8

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 (41) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +73 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/client.d.ts +43 -0
  5. package/dist/src/client.d.ts.map +1 -1
  6. package/dist/src/client.js +90 -13
  7. package/dist/src/client.js.map +1 -1
  8. package/dist/src/tools/balance.d.ts +13 -0
  9. package/dist/src/tools/balance.d.ts.map +1 -0
  10. package/dist/src/tools/balance.js +34 -0
  11. package/dist/src/tools/balance.js.map +1 -0
  12. package/dist/src/tools/browse.d.ts +19 -0
  13. package/dist/src/tools/browse.d.ts.map +1 -0
  14. package/dist/src/tools/browse.js +75 -0
  15. package/dist/src/tools/browse.js.map +1 -0
  16. package/dist/src/tools/dispute.d.ts +15 -0
  17. package/dist/src/tools/dispute.d.ts.map +1 -0
  18. package/dist/src/tools/dispute.js +61 -0
  19. package/dist/src/tools/dispute.js.map +1 -0
  20. package/dist/src/tools/hire.d.ts +2 -0
  21. package/dist/src/tools/hire.d.ts.map +1 -1
  22. package/dist/src/tools/hire.js +84 -16
  23. package/dist/src/tools/hire.js.map +1 -1
  24. package/dist/src/tools/history.d.ts +15 -0
  25. package/dist/src/tools/history.d.ts.map +1 -0
  26. package/dist/src/tools/history.js +54 -0
  27. package/dist/src/tools/history.js.map +1 -0
  28. package/dist/src/tools/setup.d.ts +9 -0
  29. package/dist/src/tools/setup.d.ts.map +1 -0
  30. package/dist/src/tools/setup.js +141 -0
  31. package/dist/src/tools/setup.js.map +1 -0
  32. package/dist/src/tools/status.d.ts +13 -0
  33. package/dist/src/tools/status.d.ts.map +1 -0
  34. package/dist/src/tools/status.js +79 -0
  35. package/dist/src/tools/status.js.map +1 -0
  36. package/dist/src/utils/fetchWithRetry.d.ts +12 -0
  37. package/dist/src/utils/fetchWithRetry.d.ts.map +1 -0
  38. package/dist/src/utils/fetchWithRetry.js +58 -0
  39. package/dist/src/utils/fetchWithRetry.js.map +1 -0
  40. package/index.ts +97 -4
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;;;;kBAY7C,iBAAiB;;AAHjC,wBA2DE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;;;;kBAwB7C,iBAAiB;;AAHjC,wBA4IE"}
package/dist/index.js CHANGED
@@ -1,6 +1,12 @@
1
1
  import { hireParams, executeHire } from './src/tools/hire.js';
2
2
  import { offerParams, executeOffer } from './src/tools/offer.js';
3
3
  import { reputationParams, executeReputation } from './src/tools/reputation.js';
4
+ import { setupParams, executeSetup } from './src/tools/setup.js';
5
+ import { statusParams, executeStatus } from './src/tools/status.js';
6
+ import { balanceParams, executeBalance } from './src/tools/balance.js';
7
+ import { browseParams, executeBrowse } from './src/tools/browse.js';
8
+ import { disputeParams, executeDispute } from './src/tools/dispute.js';
9
+ import { historyParams, executeHistory } from './src/tools/history.js';
4
10
  export default {
5
11
  id: 'kroxy',
6
12
  name: 'Kroxy',
@@ -18,7 +24,19 @@ export default {
18
24
  process.env.KROXY_DEMO_MODE = cfg.KROXY_DEMO_MODE;
19
25
  if (cfg.NEXUS_URL)
20
26
  process.env.NEXUS_URL = cfg.NEXUS_URL;
21
- // Read-only reputation lookup always available, no side effects.
27
+ // ── Setup / Onboarding ────────────────────────────────────────────────────
28
+ // Run this first to check configuration and get guided setup instructions.
29
+ api.registerTool({
30
+ name: 'kroxy_setup',
31
+ label: 'Kroxy Setup',
32
+ description: 'Check your Kroxy configuration and connectivity. Run this first to diagnose any setup issues. ' +
33
+ 'Shows API reachability, demo mode status, wallet config, and what to fix next.',
34
+ parameters: setupParams,
35
+ async execute(_id, params) {
36
+ return executeSetup(params);
37
+ },
38
+ });
39
+ // ── Read-only tools — always available ────────────────────────────────────
22
40
  api.registerTool({
23
41
  name: 'kroxy_reputation',
24
42
  label: 'Kroxy Reputation',
@@ -29,8 +47,48 @@ export default {
29
47
  return executeReputation(params);
30
48
  },
31
49
  });
50
+ api.registerTool({
51
+ name: 'kroxy_status',
52
+ label: 'Kroxy Job Status',
53
+ description: 'Check the status of an active job mid-flight. Shows current status, agent assigned, ' +
54
+ 'escrow amount, and time elapsed. Use after kroxy_hire with the returned jobId.',
55
+ parameters: statusParams,
56
+ async execute(_id, params) {
57
+ return executeStatus(params);
58
+ },
59
+ });
60
+ api.registerTool({
61
+ name: 'kroxy_balance',
62
+ label: 'Kroxy Balance',
63
+ description: 'Check your USDC balance, pending escrow totals, and total earned in one call. ' +
64
+ 'Defaults to your own agent wallet (KROXY_AGENT_WALLET).',
65
+ parameters: balanceParams,
66
+ async execute(_id, params) {
67
+ return executeBalance(params);
68
+ },
69
+ });
70
+ api.registerTool({
71
+ name: 'kroxy_browse',
72
+ label: 'Kroxy Browse',
73
+ description: 'Browse available agents on the Kroxy network or view the open job board. ' +
74
+ 'Filter by capability and price. Use mode="agents" to find providers, mode="jobs" for open work.',
75
+ parameters: browseParams,
76
+ async execute(_id, params) {
77
+ return executeBrowse(params);
78
+ },
79
+ });
80
+ api.registerTool({
81
+ name: 'kroxy_history',
82
+ label: 'Kroxy History',
83
+ description: 'View your full job history — tasks hired, amounts paid, durations, and escrow tx hashes. ' +
84
+ 'Provides a full audit trail for any agent wallet.',
85
+ parameters: historyParams,
86
+ async execute(_id, params) {
87
+ return executeHistory(params);
88
+ },
89
+ });
90
+ // ── Mutating tools — require configuration ────────────────────────────────
32
91
  // Register your agent as a paid service provider on the Kroxy job board.
33
- // Optional: requires a public webhook endpoint and configures on-chain identity.
34
92
  api.registerTool({
35
93
  name: 'kroxy_offer',
36
94
  label: 'Kroxy Offer',
@@ -42,18 +100,29 @@ export default {
42
100
  },
43
101
  }, { optional: true });
44
102
  // Hire another agent with USDC held in conditional escrow on Base.
45
- // Optional: requires private key for on-chain signing and triggers financial transactions.
46
103
  api.registerTool({
47
104
  name: 'kroxy_hire',
48
105
  label: 'Kroxy Hire',
49
106
  description: 'Hire a specialist agent to complete a task, paid in USDC via conditional escrow on Base. ' +
50
107
  'Funds are locked until work quality is verified — payment is automatic and trustless. ' +
51
- 'Requires KROXY_AGENT_WALLET and KROXY_AGENT_PRIVATE_KEY.',
108
+ 'Requires KROXY_AGENT_WALLET. Set KROXY_DEMO_MODE=1 to try without a real private key.',
52
109
  parameters: hireParams,
53
110
  async execute(_id, params) {
54
111
  return executeHire(params);
55
112
  },
56
113
  }, { optional: true });
114
+ // Raise a dispute on a job in escrow.
115
+ api.registerTool({
116
+ name: 'kroxy_dispute',
117
+ label: 'Kroxy Dispute',
118
+ description: 'Raise a dispute on a job that is in escrow. Triggers arbitration by three independent ' +
119
+ 'AI judges (Claude, GPT-4o, Gemini). Use when the delivered work does not meet requirements. ' +
120
+ 'Requires KROXY_API_KEY.',
121
+ parameters: disputeParams,
122
+ async execute(_id, params) {
123
+ return executeDispute(params);
124
+ },
125
+ }, { optional: true });
57
126
  },
58
127
  };
59
128
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMhF,eAAe;IACb,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,QAAQ,CAAC,GAAsB;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAsC,CAAC;QACvD,IAAI,GAAG,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACrE,IAAI,GAAG,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACrE,IAAI,GAAG,CAAC,kBAAkB;YAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;QACpF,IAAI,GAAG,CAAC,uBAAuB;YAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC,uBAAuB,CAAC;QACnG,IAAI,GAAG,CAAC,eAAe;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3E,IAAI,GAAG,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QACzD,mEAAmE;QACnE,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,yEAAyE;gBACzE,iFAAiF;YACnF,UAAU,EAAE,gBAAgB;YAC5B,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAA4B;gBACrD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QAEH,yEAAyE;QACzE,iFAAiF;QACjF,GAAG,CAAC,YAAY,CACd;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,6EAA6E;gBAC7E,kFAAkF;YACpF,UAAU,EAAE,WAAW;YACvB,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAuB;gBAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QAEF,mEAAmE;QACnE,2FAA2F;QAC3F,GAAG,CAAC,YAAY,CACd;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,YAAY;YACnB,WAAW,EACT,2FAA2F;gBAC3F,wFAAwF;gBACxF,0DAA0D;YAC5D,UAAU,EAAE,UAAU;YACtB,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAsB;gBAC/C,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface AgentProfile {
9
9
  capabilities: string[];
10
10
  pricingUsdc: string;
11
11
  endpoint: string;
12
+ reputationScore?: number;
12
13
  }
13
14
  export interface Job {
14
15
  id: string;
@@ -18,6 +19,9 @@ export interface Job {
18
19
  escrowId?: string | null;
19
20
  posterWallet: string;
20
21
  description: string;
22
+ budgetMaxUsdc?: string;
23
+ createdAt?: string;
24
+ updatedAt?: string;
21
25
  }
22
26
  export interface Bid {
23
27
  id: string;
@@ -47,7 +51,36 @@ export interface ReputationResult {
47
51
  totalEarned: string;
48
52
  score: number;
49
53
  }
54
+ export interface BalanceSummary {
55
+ wallet: string;
56
+ usdcBalance: string;
57
+ pendingEscrow: string;
58
+ pendingEscrowCount: number;
59
+ totalEarned: string;
60
+ demo?: boolean;
61
+ }
62
+ export interface DisputeResult {
63
+ escrowId: string;
64
+ caseId?: string;
65
+ status: string;
66
+ message: string;
67
+ }
68
+ export interface AuditEvent {
69
+ id: string;
70
+ sequence: number;
71
+ escrowId: string;
72
+ eventType: string;
73
+ actorAddress: string;
74
+ rawData: unknown;
75
+ txHash: string | null;
76
+ createdAt: string;
77
+ }
50
78
  export declare function findAgents(capability: string, maxPrice: number): Promise<AgentProfile[]>;
79
+ export declare function getAgents(filters?: {
80
+ capability?: string;
81
+ maxPrice?: number;
82
+ limit?: number;
83
+ }): Promise<AgentProfile[]>;
51
84
  export declare function postJob(jobId: string, description: string, capability: string, budgetUsdc: number, conditionsJson: ConditionsDefinition, posterWallet: string): Promise<Job>;
52
85
  export declare function acceptBid(jobId: string, bidId: string, payerPrivateKey: string): Promise<{
53
86
  jobId: string;
@@ -55,8 +88,17 @@ export declare function acceptBid(jobId: string, bidId: string, payerPrivateKey:
55
88
  escrowId: string;
56
89
  txHash: string;
57
90
  }>;
91
+ export declare function getJob(jobId: string): Promise<Job>;
92
+ export declare function listJobs(filters?: {
93
+ status?: string;
94
+ posterWallet?: string;
95
+ limit?: number;
96
+ }): Promise<Job[]>;
58
97
  export declare function pollJob(jobId: string, condition: (job: Job) => boolean, maxMs?: number, intervalMs?: number): Promise<Job | null>;
59
98
  export declare function getReputation(walletAddress: string): Promise<ReputationResult>;
99
+ export declare function getWalletBalance(walletAddress: string): Promise<BalanceSummary>;
100
+ export declare function raiseDisputeForEscrow(escrowId: string, reason: string): Promise<DisputeResult>;
101
+ export declare function getAuditTrail(escrowId: string): Promise<AuditEvent[]>;
60
102
  export declare function registerProvider(opts: {
61
103
  walletAddress: string;
62
104
  name: string;
@@ -65,4 +107,5 @@ export declare function registerProvider(opts: {
65
107
  pricingUsdc: number;
66
108
  modelName?: string;
67
109
  }): Promise<AgentProfile>;
110
+ export declare function pingApi(): Promise<boolean>;
68
111
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Reads KROXY_API_URL and KROXY_API_KEY from process.env at call time,
4
4
  * so runtime-injected env vars are always used.
5
5
  */
6
+ import { fetchWithRetry } from './utils/fetchWithRetry.js';
6
7
  function apiBase() {
7
8
  return process.env.KROXY_API_URL ?? 'http://localhost:3001';
8
9
  }
@@ -13,25 +14,69 @@ function authHeaders() {
13
14
  'X-Kroxy-API-Key': key,
14
15
  };
15
16
  }
17
+ function apiError(method, path, status, body) {
18
+ const base = apiBase();
19
+ let hint = '';
20
+ if (status === 401 || status === 403) {
21
+ hint = ' Check KROXY_API_KEY in plugin config.';
22
+ }
23
+ else if (status === 404) {
24
+ hint = ` Resource not found: ${path}`;
25
+ }
26
+ else if (status === 503) {
27
+ hint = ` API may be starting up — retry in a moment. Is ${base} running?`;
28
+ }
29
+ else if (status === 0) {
30
+ hint = ` Cannot reach ${base}. Check KROXY_API_URL. Set KROXY_DEMO_MODE=1 to use demo mode.`;
31
+ }
32
+ return new Error(`${method} ${path} → ${status}: ${body.slice(0, 200)}${hint}`);
33
+ }
16
34
  async function apiGet(path) {
17
- const res = await fetch(`${apiBase()}${path}`, { headers: authHeaders() });
18
- if (!res.ok)
19
- throw new Error(`GET ${path} ${res.status}: ${await res.text()}`);
20
- return res.json();
35
+ let resp;
36
+ try {
37
+ resp = await fetchWithRetry(`${apiBase()}${path}`, { headers: authHeaders() });
38
+ }
39
+ catch (err) {
40
+ const msg = err instanceof Error ? err.message : String(err);
41
+ throw new Error(`GET ${path} failed: ${msg}. Cannot reach ${apiBase()} — check KROXY_API_URL. Set KROXY_DEMO_MODE=1 to skip network calls.`);
42
+ }
43
+ if (!resp.ok) {
44
+ const body = await resp.text().catch(() => '');
45
+ throw apiError('GET', path, resp.status, body);
46
+ }
47
+ return resp.json();
21
48
  }
22
49
  async function apiPost(path, body) {
23
- const res = await fetch(`${apiBase()}${path}`, {
24
- method: 'POST',
25
- headers: authHeaders(),
26
- body: JSON.stringify(body),
27
- });
28
- if (!res.ok)
29
- throw new Error(`POST ${path} → ${res.status}: ${await res.text()}`);
30
- return res.json();
50
+ let resp;
51
+ try {
52
+ resp = await fetchWithRetry(`${apiBase()}${path}`, {
53
+ method: 'POST',
54
+ headers: authHeaders(),
55
+ body: JSON.stringify(body),
56
+ });
57
+ }
58
+ catch (err) {
59
+ const msg = err instanceof Error ? err.message : String(err);
60
+ throw new Error(`POST ${path} failed: ${msg}. Cannot reach ${apiBase()} — check KROXY_API_URL. Set KROXY_DEMO_MODE=1 to skip network calls.`);
61
+ }
62
+ if (!resp.ok) {
63
+ const text = await resp.text().catch(() => '');
64
+ throw apiError('POST', path, resp.status, text);
65
+ }
66
+ return resp.json();
31
67
  }
32
68
  export function findAgents(capability, maxPrice) {
33
69
  return apiGet(`/api/agents/find?capability=${encodeURIComponent(capability)}&maxPrice=${maxPrice}`);
34
70
  }
71
+ export function getAgents(filters = {}) {
72
+ const params = new URLSearchParams();
73
+ if (filters.capability)
74
+ params.set('capability', filters.capability);
75
+ if (filters.maxPrice !== undefined)
76
+ params.set('maxPrice', String(filters.maxPrice));
77
+ const qs = params.toString();
78
+ return apiGet(`/api/agents/find${qs ? `?${qs}` : ''}`);
79
+ }
35
80
  export function postJob(jobId, description, capability, budgetUsdc, conditionsJson, posterWallet) {
36
81
  const deadline = new Date(Date.now() + 30 * 60 * 1000).toISOString();
37
82
  return apiPost('/api/jobs', {
@@ -47,10 +92,24 @@ export function postJob(jobId, description, capability, budgetUsdc, conditionsJs
47
92
  export function acceptBid(jobId, bidId, payerPrivateKey) {
48
93
  return apiPost(`/api/jobs/${jobId}/accept/${bidId}`, { payerPrivateKey });
49
94
  }
95
+ export function getJob(jobId) {
96
+ return apiGet(`/api/jobs/${jobId}`);
97
+ }
98
+ export function listJobs(filters = {}) {
99
+ const params = new URLSearchParams();
100
+ if (filters.status)
101
+ params.set('status', filters.status);
102
+ if (filters.posterWallet)
103
+ params.set('posterWallet', filters.posterWallet);
104
+ if (filters.limit !== undefined)
105
+ params.set('limit', String(filters.limit));
106
+ const qs = params.toString();
107
+ return apiGet(`/api/jobs${qs ? `?${qs}` : ''}`);
108
+ }
50
109
  export async function pollJob(jobId, condition, maxMs = 300_000, intervalMs = 5_000) {
51
110
  const deadline = Date.now() + maxMs;
52
111
  while (Date.now() < deadline) {
53
- const job = await apiGet(`/api/jobs/${jobId}`);
112
+ const job = await getJob(jobId);
54
113
  if (condition(job))
55
114
  return job;
56
115
  await new Promise((r) => setTimeout(r, intervalMs));
@@ -60,6 +119,15 @@ export async function pollJob(jobId, condition, maxMs = 300_000, intervalMs = 5_
60
119
  export function getReputation(walletAddress) {
61
120
  return apiGet(`/api/reputation/${walletAddress}`);
62
121
  }
122
+ export function getWalletBalance(walletAddress) {
123
+ return apiGet(`/api/agents/${walletAddress}/balance`);
124
+ }
125
+ export function raiseDisputeForEscrow(escrowId, reason) {
126
+ return apiPost(`/api/escrows/${escrowId}/dispute`, { reason, evidenceData: {} });
127
+ }
128
+ export function getAuditTrail(escrowId) {
129
+ return apiGet(`/api/audit/${escrowId}`);
130
+ }
63
131
  export function registerProvider(opts) {
64
132
  return apiPost('/api/agents/register', {
65
133
  walletAddress: opts.walletAddress,
@@ -72,4 +140,13 @@ export function registerProvider(opts) {
72
140
  slaResponseMs: 30000,
73
141
  });
74
142
  }
143
+ export async function pingApi() {
144
+ try {
145
+ const resp = await fetchWithRetry(`${apiBase()}/livez`, {}, 5_000);
146
+ return resp.ok;
147
+ }
148
+ catch {
149
+ return false;
150
+ }
151
+ }
75
152
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const balanceParams: import("@sinclair/typebox").TObject<{
2
+ wallet: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
3
+ }>;
4
+ export declare function executeBalance(params: {
5
+ wallet?: string;
6
+ }): Promise<{
7
+ content: [{
8
+ type: 'text';
9
+ text: string;
10
+ }];
11
+ details: unknown;
12
+ }>;
13
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/tools/balance.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;EAOxB,CAAC;AAEH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+B1E"}
@@ -0,0 +1,34 @@
1
+ import { Type } from '@sinclair/typebox';
2
+ import { getWalletBalance } from '../client.js';
3
+ export const balanceParams = Type.Object({
4
+ wallet: Type.Optional(Type.String({
5
+ description: 'Wallet address to check. Defaults to KROXY_AGENT_WALLET (your own agent).',
6
+ pattern: '^0x[0-9a-fA-F]{40}$',
7
+ })),
8
+ });
9
+ export async function executeBalance(params) {
10
+ const walletAddress = params.wallet ?? process.env.KROXY_AGENT_WALLET;
11
+ if (!walletAddress) {
12
+ throw new Error('No wallet address provided and KROXY_AGENT_WALLET is not configured. ' +
13
+ 'Pass a wallet address or set KROXY_AGENT_WALLET in plugin config.');
14
+ }
15
+ if (!/^0x[0-9a-fA-F]{40}$/.test(walletAddress)) {
16
+ throw new Error(`Invalid wallet address: ${walletAddress}. Must be 0x + 40 hex chars.`);
17
+ }
18
+ const balance = await getWalletBalance(walletAddress);
19
+ const escrowLine = balance.pendingEscrowCount > 0
20
+ ? `$${balance.pendingEscrow} USDC (${balance.pendingEscrowCount} active job${balance.pendingEscrowCount === 1 ? '' : 's'})`
21
+ : '$0.00 (no active jobs)';
22
+ const lines = [
23
+ `Balance: ${walletAddress.slice(0, 6)}...${walletAddress.slice(-4)}${balance.demo ? ' (demo)' : ''}`,
24
+ `─────────────────────────────────────`,
25
+ `USDC Balance: $${balance.usdcBalance}`,
26
+ `Pending Escrow: ${escrowLine}`,
27
+ `Total Earned: $${balance.totalEarned} USDC`,
28
+ ];
29
+ return {
30
+ content: [{ type: 'text', text: lines.join('\n') }],
31
+ details: balance,
32
+ };
33
+ }
34
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/tools/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC;QACV,WAAW,EAAE,2EAA2E;QACxF,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA2B;IAE3B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,uEAAuE;YACvE,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,8BAA8B,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,CAAC;QAC/C,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,WAAW,OAAO,CAAC,kBAAkB,cAAc,OAAO,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QAC5H,CAAC,CAAC,yBAAyB,CAAC;IAE9B,MAAM,KAAK,GAAG;QACZ,YAAY,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;QACpG,uCAAuC;QACvC,oBAAoB,OAAO,CAAC,WAAW,EAAE;QACzC,mBAAmB,UAAU,EAAE;QAC/B,oBAAoB,OAAO,CAAC,WAAW,OAAO;KAC/C,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare const browseParams: import("@sinclair/typebox").TObject<{
2
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agents">, import("@sinclair/typebox").TLiteral<"jobs">]>;
3
+ capability: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
4
+ maxPrice: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
5
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
6
+ }>;
7
+ export declare function executeBrowse(params: {
8
+ mode: 'agents' | 'jobs';
9
+ capability?: string;
10
+ maxPrice?: number;
11
+ limit?: number;
12
+ }): Promise<{
13
+ content: [{
14
+ type: 'text';
15
+ text: string;
16
+ }];
17
+ details: unknown;
18
+ }>;
19
+ //# sourceMappingURL=browse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../../src/tools/browse.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;EAcvB,CAAC;AAMH,wBAAsB,aAAa,CACjC,MAAM,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4E1E"}
@@ -0,0 +1,75 @@
1
+ import { Type } from '@sinclair/typebox';
2
+ import { getAgents, listJobs } from '../client.js';
3
+ export const browseParams = Type.Object({
4
+ mode: Type.Union([Type.Literal('agents'), Type.Literal('jobs')], { description: '"agents" to browse available providers, "jobs" to see the open job board.' }),
5
+ capability: Type.Optional(Type.String({ description: 'Filter agents/jobs by capability: research, writing, coding, etc.' })),
6
+ maxPrice: Type.Optional(Type.Number({ minimum: 0.01, description: 'Maximum price per job in USDC.' })),
7
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 50, description: 'Max results to return. Default 10.' })),
8
+ });
9
+ function pad(str, len) {
10
+ return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
11
+ }
12
+ export async function executeBrowse(params) {
13
+ const limit = params.limit ?? 10;
14
+ if (params.mode === 'agents') {
15
+ const agents = await getAgents({
16
+ capability: params.capability,
17
+ maxPrice: params.maxPrice,
18
+ });
19
+ const sliced = agents.slice(0, limit);
20
+ if (sliced.length === 0) {
21
+ const filterDesc = [
22
+ params.capability && `capability="${params.capability}"`,
23
+ params.maxPrice !== undefined && `maxPrice=$${params.maxPrice}`,
24
+ ].filter(Boolean).join(', ');
25
+ return {
26
+ content: [{ type: 'text', text: `No agents found${filterDesc ? ` for ${filterDesc}` : ''}.` }],
27
+ details: { agents: [] },
28
+ };
29
+ }
30
+ const header = params.capability
31
+ ? `Available Agents (${params.capability}${params.maxPrice ? `, ≤$${params.maxPrice}` : ''})`
32
+ : 'Available Agents';
33
+ const lines = [header, '─'.repeat(60)];
34
+ sliced.forEach((agent, i) => {
35
+ const rep = agent.reputationScore !== undefined ? `rep: ${agent.reputationScore}` : 'rep: —';
36
+ const price = `$${parseFloat(agent.pricingUsdc).toFixed(2)} USDC`;
37
+ const caps = agent.capabilities.join(', ');
38
+ lines.push(`${i + 1}. ${pad(agent.name, 16)} ${pad(price, 12)} ${pad(rep, 10)} ${caps}`);
39
+ });
40
+ lines.push('', `Showing ${sliced.length} of ${agents.length} agents.`);
41
+ if (sliced.length < agents.length) {
42
+ lines.push('Use limit param or add filters to narrow results.');
43
+ }
44
+ return {
45
+ content: [{ type: 'text', text: lines.join('\n') }],
46
+ details: { agents: sliced },
47
+ };
48
+ }
49
+ // mode === 'jobs'
50
+ const jobs = await listJobs({ status: 'OPEN' });
51
+ const filtered = params.capability
52
+ ? jobs.filter((j) => j.requiredCaps?.includes(params.capability))
53
+ : jobs;
54
+ const sliced = filtered.slice(0, limit);
55
+ if (sliced.length === 0) {
56
+ return {
57
+ content: [{ type: 'text', text: 'No open jobs found.' }],
58
+ details: { jobs: [] },
59
+ };
60
+ }
61
+ const lines = ['Open Job Board', '─'.repeat(60)];
62
+ sliced.forEach((job, i) => {
63
+ const budget = job.budgetMaxUsdc ? `$${parseFloat(job.budgetMaxUsdc).toFixed(2)}` : '?';
64
+ const desc = job.description.slice(0, 60);
65
+ const bids = job.bids?.length ?? 0;
66
+ lines.push(`${i + 1}. [${budget}] ${desc}${job.description.length > 60 ? '…' : ''} (${bids} bid${bids === 1 ? '' : 's'})`);
67
+ lines.push(` ID: ${job.id}`);
68
+ });
69
+ lines.push('', `Showing ${sliced.length} of ${filtered.length} open jobs.`);
70
+ return {
71
+ content: [{ type: 'text', text: lines.join('\n') }],
72
+ details: { jobs: sliced },
73
+ };
74
+ }
75
+ //# sourceMappingURL=browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../../src/tools/browse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const disputeParams: import("@sinclair/typebox").TObject<{
2
+ jobId: import("@sinclair/typebox").TString;
3
+ reason: import("@sinclair/typebox").TString;
4
+ }>;
5
+ export declare function executeDispute(params: {
6
+ jobId: string;
7
+ reason: string;
8
+ }): Promise<{
9
+ content: [{
10
+ type: 'text';
11
+ text: string;
12
+ }];
13
+ details: unknown;
14
+ }>;
15
+ //# sourceMappingURL=dispute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispute.d.ts","sourceRoot":"","sources":["../../../src/tools/dispute.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;EAMxB,CAAC;AAEH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA2D1E"}