duskware 0.1.0

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 (70) hide show
  1. package/README.md +150 -0
  2. package/dist/commands/credits.d.ts +7 -0
  3. package/dist/commands/credits.d.ts.map +1 -0
  4. package/dist/commands/credits.js +220 -0
  5. package/dist/commands/credits.js.map +1 -0
  6. package/dist/commands/inference.d.ts +7 -0
  7. package/dist/commands/inference.d.ts.map +1 -0
  8. package/dist/commands/inference.js +148 -0
  9. package/dist/commands/inference.js.map +1 -0
  10. package/dist/commands/init.d.ts +7 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +158 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/memory.d.ts +7 -0
  15. package/dist/commands/memory.d.ts.map +1 -0
  16. package/dist/commands/memory.js +170 -0
  17. package/dist/commands/memory.js.map +1 -0
  18. package/dist/commands/sandbox.d.ts +7 -0
  19. package/dist/commands/sandbox.d.ts.map +1 -0
  20. package/dist/commands/sandbox.js +220 -0
  21. package/dist/commands/sandbox.js.map +1 -0
  22. package/dist/commands/skill.d.ts +7 -0
  23. package/dist/commands/skill.d.ts.map +1 -0
  24. package/dist/commands/skill.js +255 -0
  25. package/dist/commands/skill.js.map +1 -0
  26. package/dist/commands/spawn.d.ts +7 -0
  27. package/dist/commands/spawn.d.ts.map +1 -0
  28. package/dist/commands/spawn.js +225 -0
  29. package/dist/commands/spawn.js.map +1 -0
  30. package/dist/commands/specter.d.ts +7 -0
  31. package/dist/commands/specter.d.ts.map +1 -0
  32. package/dist/commands/specter.js +287 -0
  33. package/dist/commands/specter.js.map +1 -0
  34. package/dist/commands/status.d.ts +7 -0
  35. package/dist/commands/status.d.ts.map +1 -0
  36. package/dist/commands/status.js +106 -0
  37. package/dist/commands/status.js.map +1 -0
  38. package/dist/commands/trust.d.ts +7 -0
  39. package/dist/commands/trust.d.ts.map +1 -0
  40. package/dist/commands/trust.js +230 -0
  41. package/dist/commands/trust.js.map +1 -0
  42. package/dist/index.d.ts +9 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +61 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/services/contracts.d.ts +40 -0
  47. package/dist/services/contracts.d.ts.map +1 -0
  48. package/dist/services/contracts.js +141 -0
  49. package/dist/services/contracts.js.map +1 -0
  50. package/dist/services/inference.d.ts +63 -0
  51. package/dist/services/inference.d.ts.map +1 -0
  52. package/dist/services/inference.js +118 -0
  53. package/dist/services/inference.js.map +1 -0
  54. package/dist/services/wallet.d.ts +35 -0
  55. package/dist/services/wallet.d.ts.map +1 -0
  56. package/dist/services/wallet.js +60 -0
  57. package/dist/services/wallet.js.map +1 -0
  58. package/dist/services/x402.d.ts +30 -0
  59. package/dist/services/x402.d.ts.map +1 -0
  60. package/dist/services/x402.js +92 -0
  61. package/dist/services/x402.js.map +1 -0
  62. package/dist/utils/config.d.ts +64 -0
  63. package/dist/utils/config.d.ts.map +1 -0
  64. package/dist/utils/config.js +93 -0
  65. package/dist/utils/config.js.map +1 -0
  66. package/dist/utils/output.d.ts +29 -0
  67. package/dist/utils/output.d.ts.map +1 -0
  68. package/dist/utils/output.js +100 -0
  69. package/dist/utils/output.js.map +1 -0
  70. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Duskware CLI
4
+ * Sovereign onchain runtime for AI agents
5
+ *
6
+ * Usage: npx duskware [command]
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Duskware CLI
4
+ * Sovereign onchain runtime for AI agents
5
+ *
6
+ * Usage: npx duskware [command]
7
+ */
8
+ import { Command } from 'commander';
9
+ import { initCommand } from './commands/init.js';
10
+ import { statusCommand } from './commands/status.js';
11
+ import { skillCommand } from './commands/skill.js';
12
+ import { spawnCommand } from './commands/spawn.js';
13
+ import { trustCommand } from './commands/trust.js';
14
+ import { memoryCommand } from './commands/memory.js';
15
+ import { inferenceCommand } from './commands/inference.js';
16
+ import { sandboxCommand } from './commands/sandbox.js';
17
+ import { specterCommand } from './commands/specter.js';
18
+ import { creditsCommand } from './commands/credits.js';
19
+ import * as output from './utils/output.js';
20
+ const program = new Command();
21
+ program
22
+ .name('duskware')
23
+ .description('Sovereign onchain runtime for AI agents')
24
+ .version('0.1.0');
25
+ // Register commands
26
+ program.addCommand(initCommand);
27
+ program.addCommand(statusCommand);
28
+ program.addCommand(skillCommand);
29
+ program.addCommand(spawnCommand);
30
+ program.addCommand(trustCommand);
31
+ program.addCommand(memoryCommand);
32
+ program.addCommand(inferenceCommand);
33
+ program.addCommand(sandboxCommand);
34
+ program.addCommand(specterCommand);
35
+ program.addCommand(creditsCommand);
36
+ // Help command with banner
37
+ program
38
+ .command('help')
39
+ .description('Show help information')
40
+ .action(() => {
41
+ output.banner();
42
+ program.outputHelp();
43
+ });
44
+ // Error handling
45
+ program.exitOverride((err) => {
46
+ if (err.code === 'commander.help' || err.code === 'commander.helpDisplayed') {
47
+ process.exit(0);
48
+ }
49
+ if (err.code !== 'commander.executeSubCommandAsync') {
50
+ output.error(err.message);
51
+ }
52
+ process.exit(1);
53
+ });
54
+ // Parse arguments
55
+ program.parse();
56
+ // Show help if no command
57
+ if (!process.argv.slice(2).length) {
58
+ output.banner();
59
+ console.log(program.helpInformation());
60
+ }
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,2BAA2B;AAC3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,0BAA0B;AAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Contract Service
3
+ * Handles all contract interactions
4
+ */
5
+ import { Contract, Wallet, ContractTransactionResponse } from 'ethers';
6
+ export declare const FEE_CONTROLLER_ABI: string[];
7
+ export declare const AGENT_IDENTITY_ABI: string[];
8
+ export declare const SKILL_NFT_ABI: string[];
9
+ export declare const SPAWN_PROTOCOL_ABI: string[];
10
+ export declare const TRUST_GRAPH_ABI: string[];
11
+ export declare const ERC20_ABI: string[];
12
+ export interface ContractInstances {
13
+ feeController: Contract;
14
+ agentIdentity: Contract;
15
+ skillNFT: Contract;
16
+ spawnProtocol: Contract;
17
+ trustGraph: Contract;
18
+ usdc: Contract;
19
+ }
20
+ /**
21
+ * Gets all contract instances for a network
22
+ */
23
+ export declare function getContracts(wallet: Wallet, network: 'sepolia' | 'mainnet'): ContractInstances;
24
+ /**
25
+ * Gets a specific agent identity contract
26
+ */
27
+ export declare function getAgentContract(agentAddress: string, wallet: Wallet, network: 'sepolia' | 'mainnet'): Contract;
28
+ /**
29
+ * Gets USDC contract
30
+ */
31
+ export declare function getUsdcContract(wallet: Wallet, network: 'sepolia' | 'mainnet'): Contract;
32
+ /**
33
+ * Waits for transaction and returns receipt
34
+ */
35
+ export declare function waitForTx(tx: ContractTransactionResponse): Promise<{
36
+ hash: string;
37
+ blockNumber: number;
38
+ gasUsed: bigint;
39
+ }>;
40
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/services/contracts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAmB,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAMxF,eAAO,MAAM,kBAAkB,UAQ9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAsB9B,CAAC;AAEF,eAAO,MAAM,aAAa,UAezB,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAa9B,CAAC;AAEF,eAAO,MAAM,eAAe,UAc3B,CAAC;AAEF,eAAO,MAAM,SAAS,UAOrB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,QAAQ,CAAC;IACxB,aAAa,EAAE,QAAQ,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,QAAQ,CAAC;IACxB,UAAU,EAAE,QAAQ,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,iBAAiB,CAanB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,QAAQ,CAIV;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,QAAQ,CAKV;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAUD"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Contract Service
3
+ * Handles all contract interactions
4
+ */
5
+ import { Contract, JsonRpcProvider } from 'ethers';
6
+ import { getContractAddresses, getRpcUrl } from '../utils/config.js';
7
+ // Minimal ABIs for CLI operations
8
+ // Full ABIs would be imported from compiled contracts in production
9
+ export const FEE_CONTROLLER_ABI = [
10
+ 'function feesActive() view returns (bool)',
11
+ 'function getRegistrationFee() view returns (uint256)',
12
+ 'function getSpawnFee() view returns (uint256)',
13
+ 'function getDuskwareCut() view returns (uint256)',
14
+ 'function treasuryAddress() view returns (address)',
15
+ 'event FeesActivated(uint256 timestamp)',
16
+ 'event FeesDeactivated(uint256 timestamp)',
17
+ ];
18
+ export const AGENT_IDENTITY_ABI = [
19
+ // Read functions
20
+ 'function agentName() view returns (string)',
21
+ 'function capabilities(uint256) view returns (string)',
22
+ 'function getCapabilities() view returns (string[])',
23
+ 'function memoryRoot() view returns (string)',
24
+ 'function memoryVersion() view returns (uint256)',
25
+ 'function memoryUpdatedAt() view returns (uint256)',
26
+ 'function reputationScore() view returns (uint256)',
27
+ 'function parentAgent() view returns (address)',
28
+ 'function spawnCount() view returns (uint256)',
29
+ 'function totalEarnings() view returns (uint256)',
30
+ 'function createdAt() view returns (uint256)',
31
+ 'function owner() view returns (address)',
32
+ // Write functions
33
+ 'function initialize(string name, string[] capabilities, address feeController, address usdcAddress) external',
34
+ 'function updateMemoryRoot(string cid) external',
35
+ 'function addCapability(string capability) external',
36
+ // Events
37
+ 'event MemoryUpdated(string cid, uint256 version)',
38
+ 'event CapabilityAdded(string capability)',
39
+ 'event ReputationChanged(uint256 oldScore, uint256 newScore)',
40
+ ];
41
+ export const SKILL_NFT_ABI = [
42
+ // Read functions - matches actual deployed contract
43
+ 'function nextSkillId() view returns (uint256)',
44
+ 'function skills(uint256) view returns (string name, string description, string skillCID, uint256 priceUSDC, address creatorAgent, uint256 usageCount, uint256 ratingTotal, uint256 ratingCount, bool isActive, string capability)',
45
+ 'function isLicensed(address agent, uint256 skillId) view returns (bool)',
46
+ // Write functions
47
+ 'function mintSkill(string name, string description, string skillCID, uint256 priceUSDC, string capability, uint256[] prerequisites) external returns (uint256)',
48
+ 'function licenseSkill(uint256 skillId) external',
49
+ 'function executeSkill(uint256 skillId) external',
50
+ 'function rateSkill(uint256 skillId, uint256 score) external',
51
+ // Events
52
+ 'event SkillMinted(uint256 indexed skillId, address indexed creator, string name)',
53
+ 'event SkillLicensed(uint256 indexed skillId, address indexed licensee)',
54
+ 'event SkillExecuted(uint256 indexed skillId, address indexed executor)',
55
+ 'event SkillRated(uint256 indexed skillId, address indexed rater, uint256 score)',
56
+ ];
57
+ export const SPAWN_PROTOCOL_ABI = [
58
+ // Read functions
59
+ 'function getChildren(address parent) view returns (address[])',
60
+ 'function getParent(address child) view returns (address)',
61
+ 'function getSpawnDepth(address agent) view returns (uint256)',
62
+ 'function getLineage(address agent) view returns (address[])',
63
+ 'function getConstraints(address agent) view returns (tuple(string[] initialCapabilities, address[] skillAllowlist, uint256 dailySpendingLimit, uint256 maxSpawnDepth, bool isRevocable))',
64
+ // Write functions
65
+ 'function spawn(string[] initialCapabilities, address[] skillAllowlist, uint256 dailySpendingLimit, uint256 maxSpawnDepth, bool isRevocable) external returns (address)',
66
+ 'function revokeChild(address child) external',
67
+ // Events
68
+ 'event AgentSpawned(address indexed parent, address indexed child, uint256 timestamp)',
69
+ 'event AgentRevoked(address indexed parent, address indexed child)',
70
+ ];
71
+ export const TRUST_GRAPH_ABI = [
72
+ // Read functions - matches actual deployed contract
73
+ 'function getTrustScore(address agent) view returns (uint256)',
74
+ 'function nextAttestationId() view returns (uint256)',
75
+ 'function attestations(uint256 attestationId) view returns (address attester, address subject, uint256 score, string context, uint256 timestamp, uint256 attesterReputation, uint8 status)',
76
+ 'function isRegisteredAgent(address agent) view returns (bool)',
77
+ 'function trustScores(address agent) view returns (uint256)',
78
+ // Write functions
79
+ 'function registerAgent(address agent) external',
80
+ 'function attest(address subject, uint256 score, string context) external',
81
+ 'function disputeAttestation(uint256 attestationId) external payable',
82
+ // Events
83
+ 'event AttestationSubmitted(uint256 indexed attestationId, address indexed attester, address indexed subject, uint256 score)',
84
+ 'event AgentRegistered(address indexed agent, uint256 timestamp)',
85
+ ];
86
+ export const ERC20_ABI = [
87
+ 'function balanceOf(address owner) view returns (uint256)',
88
+ 'function allowance(address owner, address spender) view returns (uint256)',
89
+ 'function approve(address spender, uint256 amount) external returns (bool)',
90
+ 'function transfer(address to, uint256 amount) external returns (bool)',
91
+ 'function decimals() view returns (uint8)',
92
+ 'function symbol() view returns (string)',
93
+ ];
94
+ /**
95
+ * Gets all contract instances for a network
96
+ */
97
+ export function getContracts(wallet, network) {
98
+ const addresses = getContractAddresses(network);
99
+ const provider = new JsonRpcProvider(getRpcUrl(network));
100
+ const connectedWallet = wallet.connect(provider);
101
+ return {
102
+ feeController: new Contract(addresses.feeController, FEE_CONTROLLER_ABI, connectedWallet),
103
+ agentIdentity: new Contract(addresses.agentIdentity, AGENT_IDENTITY_ABI, connectedWallet),
104
+ skillNFT: new Contract(addresses.skillNFT, SKILL_NFT_ABI, connectedWallet),
105
+ spawnProtocol: new Contract(addresses.spawnProtocol, SPAWN_PROTOCOL_ABI, connectedWallet),
106
+ trustGraph: new Contract(addresses.trustGraph, TRUST_GRAPH_ABI, connectedWallet),
107
+ usdc: new Contract(addresses.usdc, ERC20_ABI, connectedWallet),
108
+ };
109
+ }
110
+ /**
111
+ * Gets a specific agent identity contract
112
+ */
113
+ export function getAgentContract(agentAddress, wallet, network) {
114
+ const provider = new JsonRpcProvider(getRpcUrl(network));
115
+ const connectedWallet = wallet.connect(provider);
116
+ return new Contract(agentAddress, AGENT_IDENTITY_ABI, connectedWallet);
117
+ }
118
+ /**
119
+ * Gets USDC contract
120
+ */
121
+ export function getUsdcContract(wallet, network) {
122
+ const addresses = getContractAddresses(network);
123
+ const provider = new JsonRpcProvider(getRpcUrl(network));
124
+ const connectedWallet = wallet.connect(provider);
125
+ return new Contract(addresses.usdc, ERC20_ABI, connectedWallet);
126
+ }
127
+ /**
128
+ * Waits for transaction and returns receipt
129
+ */
130
+ export async function waitForTx(tx) {
131
+ const receipt = await tx.wait();
132
+ if (!receipt) {
133
+ throw new Error('Transaction failed - no receipt');
134
+ }
135
+ return {
136
+ hash: receipt.hash,
137
+ blockNumber: receipt.blockNumber,
138
+ gasUsed: receipt.gasUsed,
139
+ };
140
+ }
141
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/services/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Inference Service
3
+ * Client for Duskware Inference Proxy
4
+ */
5
+ import { Wallet } from 'ethers';
6
+ import type { DuskwareConfig } from '../utils/config.js';
7
+ export interface Message {
8
+ role: 'user' | 'assistant' | 'system';
9
+ content: string;
10
+ }
11
+ export interface InferenceRequest {
12
+ model: string;
13
+ messages: Message[];
14
+ maxTokens?: number;
15
+ }
16
+ export interface InferenceResponse {
17
+ id: string;
18
+ model: string;
19
+ content: string;
20
+ usage: {
21
+ promptTokens: number;
22
+ completionTokens: number;
23
+ totalTokens: number;
24
+ };
25
+ cost: {
26
+ amount: bigint;
27
+ currency: 'USDC';
28
+ };
29
+ }
30
+ export interface Model {
31
+ id: string;
32
+ name: string;
33
+ pricePerKToken: bigint;
34
+ maxTokens: number;
35
+ }
36
+ export interface Quote {
37
+ model: string;
38
+ estimatedTokens: number;
39
+ price: bigint;
40
+ validUntil: number;
41
+ paymentAddress: string;
42
+ }
43
+ /**
44
+ * Gets available models and pricing
45
+ */
46
+ export declare function getModels(): Promise<Model[]>;
47
+ /**
48
+ * Gets a price quote for an inference request
49
+ */
50
+ export declare function getQuote(model: string, maxTokens: number, agentAddress: string): Promise<Quote>;
51
+ /**
52
+ * Sends an inference request with USDC payment
53
+ */
54
+ export declare function sendInference(request: InferenceRequest, wallet: Wallet, config: DuskwareConfig): Promise<InferenceResponse>;
55
+ /**
56
+ * Gets prepaid balance for an agent
57
+ */
58
+ export declare function getBalance(agentAddress: string): Promise<bigint>;
59
+ /**
60
+ * Prepays USDC to inference proxy
61
+ */
62
+ export declare function prepay(amount: bigint, wallet: Wallet, config: DuskwareConfig): Promise<string>;
63
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/services/inference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAkBD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAMlD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC,CAYhB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA8C5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Inference Service
3
+ * Client for Duskware Inference Proxy
4
+ */
5
+ import { signTransferAuthorization } from './x402.js';
6
+ const INFERENCE_URL = process.env.DUSKWARE_INFERENCE_URL || 'https://inference.duskware.xyz';
7
+ /**
8
+ * Gets available models and pricing
9
+ */
10
+ export async function getModels() {
11
+ const response = await fetch(`${INFERENCE_URL}/models`);
12
+ if (!response.ok) {
13
+ throw new Error(`Failed to fetch models: ${response.statusText}`);
14
+ }
15
+ return response.json();
16
+ }
17
+ /**
18
+ * Gets a price quote for an inference request
19
+ */
20
+ export async function getQuote(model, maxTokens, agentAddress) {
21
+ const response = await fetch(`${INFERENCE_URL}/quote`, {
22
+ method: 'POST',
23
+ headers: { 'Content-Type': 'application/json' },
24
+ body: JSON.stringify({ model, maxTokens, agentAddress }),
25
+ });
26
+ if (!response.ok) {
27
+ throw new Error(`Failed to get quote: ${response.statusText}`);
28
+ }
29
+ return response.json();
30
+ }
31
+ /**
32
+ * Sends an inference request with USDC payment
33
+ */
34
+ export async function sendInference(request, wallet, config) {
35
+ // Step 1: Get quote
36
+ const quote = await getQuote(request.model, request.maxTokens || 1000, config.agentAddress);
37
+ // Step 2: Sign USDC payment
38
+ const payment = await signTransferAuthorization(wallet, quote.paymentAddress, quote.price, 300, // 5 minute validity
39
+ config.network);
40
+ // Step 3: Send inference request with payment
41
+ const response = await fetch(`${INFERENCE_URL}/inference`, {
42
+ method: 'POST',
43
+ headers: { 'Content-Type': 'application/json' },
44
+ body: JSON.stringify({
45
+ model: request.model,
46
+ messages: request.messages,
47
+ maxTokens: request.maxTokens,
48
+ agentAddress: config.agentAddress,
49
+ payment: {
50
+ from: payment.from,
51
+ to: payment.to,
52
+ value: payment.value.toString(),
53
+ validAfter: payment.validAfter.toString(),
54
+ validBefore: payment.validBefore.toString(),
55
+ nonce: payment.nonce,
56
+ v: payment.v,
57
+ r: payment.r,
58
+ s: payment.s,
59
+ },
60
+ }),
61
+ });
62
+ if (!response.ok) {
63
+ const error = await response.json().catch(() => ({ message: response.statusText }));
64
+ throw new Error(`Inference failed: ${error.message}`);
65
+ }
66
+ return response.json();
67
+ }
68
+ /**
69
+ * Gets prepaid balance for an agent
70
+ */
71
+ export async function getBalance(agentAddress) {
72
+ const response = await fetch(`${INFERENCE_URL}/balance/${agentAddress}`);
73
+ if (!response.ok) {
74
+ throw new Error(`Failed to get balance: ${response.statusText}`);
75
+ }
76
+ const data = await response.json();
77
+ return BigInt(data.balance);
78
+ }
79
+ /**
80
+ * Prepays USDC to inference proxy
81
+ */
82
+ export async function prepay(amount, wallet, config) {
83
+ // Get proxy's prepay address
84
+ const response = await fetch(`${INFERENCE_URL}/prepay-address`);
85
+ if (!response.ok) {
86
+ throw new Error(`Failed to get prepay address: ${response.statusText}`);
87
+ }
88
+ const addressData = await response.json();
89
+ const prepayAddress = addressData.address;
90
+ // Sign USDC transfer
91
+ const payment = await signTransferAuthorization(wallet, prepayAddress, amount, 3600, // 1 hour validity
92
+ config.network);
93
+ // Submit prepayment
94
+ const prepayResponse = await fetch(`${INFERENCE_URL}/prepay`, {
95
+ method: 'POST',
96
+ headers: { 'Content-Type': 'application/json' },
97
+ body: JSON.stringify({
98
+ agentAddress: config.agentAddress,
99
+ payment: {
100
+ from: payment.from,
101
+ to: payment.to,
102
+ value: payment.value.toString(),
103
+ validAfter: payment.validAfter.toString(),
104
+ validBefore: payment.validBefore.toString(),
105
+ nonce: payment.nonce,
106
+ v: payment.v,
107
+ r: payment.r,
108
+ s: payment.s,
109
+ },
110
+ }),
111
+ });
112
+ if (!prepayResponse.ok) {
113
+ throw new Error(`Prepay failed: ${prepayResponse.statusText}`);
114
+ }
115
+ const result = await prepayResponse.json();
116
+ return result.transactionHash;
117
+ }
118
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/services/inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Wallet Service
3
+ * Manages agent wallet creation and operations
4
+ */
5
+ import { Wallet, HDNodeWallet } from 'ethers';
6
+ export interface AgentWallet {
7
+ wallet: HDNodeWallet;
8
+ address: string;
9
+ privateKey: string;
10
+ }
11
+ /**
12
+ * Creates a new random wallet for an agent
13
+ */
14
+ export declare function createWallet(): AgentWallet;
15
+ /**
16
+ * Loads existing wallet from config
17
+ */
18
+ export declare function getWallet(): Wallet | null;
19
+ /**
20
+ * Gets wallet connected to provider
21
+ */
22
+ export declare function getConnectedWallet(): Wallet | null;
23
+ /**
24
+ * Saves wallet to config file with secure permissions
25
+ */
26
+ export declare function persistWallet(address: string, privateKey: string): void;
27
+ /**
28
+ * Gets ETH balance for gas
29
+ */
30
+ export declare function getEthBalance(wallet: Wallet): Promise<bigint>;
31
+ /**
32
+ * Formats ETH balance for display
33
+ */
34
+ export declare function formatEth(wei: bigint): string;
35
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/services/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAmB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAO1C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAIzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAOlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKnE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Wallet Service
3
+ * Manages agent wallet creation and operations
4
+ */
5
+ import { Wallet, JsonRpcProvider } from 'ethers';
6
+ import { loadWallet, saveWallet, loadConfig, getRpcUrl } from '../utils/config.js';
7
+ /**
8
+ * Creates a new random wallet for an agent
9
+ */
10
+ export function createWallet() {
11
+ const hdWallet = Wallet.createRandom();
12
+ return {
13
+ wallet: hdWallet,
14
+ address: hdWallet.address,
15
+ privateKey: hdWallet.privateKey,
16
+ };
17
+ }
18
+ /**
19
+ * Loads existing wallet from config
20
+ */
21
+ export function getWallet() {
22
+ const walletConfig = loadWallet();
23
+ if (!walletConfig)
24
+ return null;
25
+ return new Wallet(walletConfig.privateKey);
26
+ }
27
+ /**
28
+ * Gets wallet connected to provider
29
+ */
30
+ export function getConnectedWallet() {
31
+ const walletConfig = loadWallet();
32
+ const config = loadConfig();
33
+ if (!walletConfig || !config)
34
+ return null;
35
+ const provider = new JsonRpcProvider(getRpcUrl(config.network));
36
+ return new Wallet(walletConfig.privateKey, provider);
37
+ }
38
+ /**
39
+ * Saves wallet to config file with secure permissions
40
+ */
41
+ export function persistWallet(address, privateKey) {
42
+ saveWallet({ address, privateKey });
43
+ }
44
+ /**
45
+ * Gets ETH balance for gas
46
+ */
47
+ export async function getEthBalance(wallet) {
48
+ if (!wallet.provider) {
49
+ throw new Error('Wallet not connected to provider');
50
+ }
51
+ return wallet.provider.getBalance(wallet.address);
52
+ }
53
+ /**
54
+ * Formats ETH balance for display
55
+ */
56
+ export function formatEth(wei) {
57
+ const eth = Number(wei) / 1e18;
58
+ return `${eth.toFixed(6)} ETH`;
59
+ }
60
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/services/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAgB,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQnF;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACvC,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,UAAkB;IAC/D,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * x402 Payment Service
3
+ * EIP-3009 transferWithAuthorization for gasless USDC payments
4
+ */
5
+ import { Wallet } from 'ethers';
6
+ export interface TransferAuthorization {
7
+ from: string;
8
+ to: string;
9
+ value: bigint;
10
+ validAfter: bigint;
11
+ validBefore: bigint;
12
+ nonce: string;
13
+ v: number;
14
+ r: string;
15
+ s: string;
16
+ }
17
+ /**
18
+ * Signs a transferWithAuthorization for USDC payment
19
+ */
20
+ export declare function signTransferAuthorization(wallet: Wallet, to: string, value: bigint, validityDuration?: number, // 1 hour default
21
+ network?: 'sepolia' | 'mainnet'): Promise<TransferAuthorization>;
22
+ /**
23
+ * Verifies a transferWithAuthorization hasn't been used
24
+ */
25
+ export declare function verifyAuthorizationNotUsed(from: string, nonce: string, network?: 'sepolia' | 'mainnet'): Promise<boolean>;
26
+ /**
27
+ * Executes a transferWithAuthorization
28
+ */
29
+ export declare function executeTransferAuthorization(auth: TransferAuthorization, executor: Wallet, network?: 'sepolia' | 'mainnet'): Promise<string>;
30
+ //# sourceMappingURL=x402.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../src/services/x402.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAA0E,MAAM,QAAQ,CAAC;AAsBxG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,gBAAgB,GAAE,MAAa,EAAE,iBAAiB;AAClD,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,qBAAqB,CAAC,CAuEhC;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,MAAM,CAAC,CAmBjB"}