@agirails/sdk 2.2.2 → 2.3.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.
- package/README.md +20 -23
- package/dist/ACTPClient.d.ts +7 -0
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +56 -1
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/AgentRegistry.json +133 -0
- package/dist/adapters/X402Adapter.d.ts +34 -7
- package/dist/adapters/X402Adapter.d.ts.map +1 -1
- package/dist/adapters/X402Adapter.js +36 -8
- package/dist/adapters/X402Adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/cli/commands/diff.d.ts +11 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +115 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +51 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/publish.d.ts +11 -0
- package/dist/cli/commands/publish.d.ts.map +1 -0
- package/dist/cli/commands/publish.js +170 -0
- package/dist/cli/commands/publish.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +12 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/commands/pull.js +99 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/agirailsmd.d.ts +94 -0
- package/dist/config/agirailsmd.d.ts.map +1 -0
- package/dist/config/agirailsmd.js +209 -0
- package/dist/config/agirailsmd.js.map +1 -0
- package/dist/config/networks.d.ts +2 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +10 -4
- package/dist/config/networks.js.map +1 -1
- package/dist/config/publishPipeline.d.ts +61 -0
- package/dist/config/publishPipeline.d.ts.map +1 -0
- package/dist/config/publishPipeline.js +192 -0
- package/dist/config/publishPipeline.js.map +1 -0
- package/dist/config/syncOperations.d.ts +67 -0
- package/dist/config/syncOperations.d.ts.map +1 -0
- package/dist/config/syncOperations.js +208 -0
- package/dist/config/syncOperations.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/level0/request.d.ts.map +1 -1
- package/dist/level0/request.js +23 -86
- package/dist/level0/request.js.map +1 -1
- package/dist/level1/Agent.d.ts +0 -11
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +15 -32
- package/dist/level1/Agent.js.map +1 -1
- package/dist/registry/AgentRegistryClient.d.ts +75 -0
- package/dist/registry/AgentRegistryClient.d.ts.map +1 -0
- package/dist/registry/AgentRegistryClient.js +160 -0
- package/dist/registry/AgentRegistryClient.js.map +1 -0
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +3 -1
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/types/adapter.d.ts +39 -0
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/adapter.js +7 -0
- package/dist/types/adapter.js.map +1 -1
- package/dist/types/x402.d.ts +23 -0
- package/dist/types/x402.d.ts.map +1 -1
- package/dist/types/x402.js.map +1 -1
- package/dist/wallet/keystore.d.ts +16 -0
- package/dist/wallet/keystore.d.ts.map +1 -0
- package/dist/wallet/keystore.js +132 -0
- package/dist/wallet/keystore.js.map +1 -0
- package/package.json +2 -1
- package/src/ACTPClient.ts +63 -1
- package/src/abi/AgentRegistry.json +133 -0
- package/src/adapters/X402Adapter.ts +94 -16
- package/src/adapters/index.ts +9 -1
- package/src/cli/commands/diff.ts +141 -0
- package/src/cli/commands/init.ts +65 -4
- package/src/cli/commands/publish.ts +209 -0
- package/src/cli/commands/pull.ts +124 -0
- package/src/cli/index.ts +8 -0
- package/src/config/agirailsmd.ts +262 -0
- package/src/config/networks.ts +12 -4
- package/src/config/publishPipeline.ts +276 -0
- package/src/config/syncOperations.ts +279 -0
- package/src/index.ts +3 -0
- package/src/level0/request.ts +27 -88
- package/src/level1/Agent.ts +16 -32
- package/src/registry/AgentRegistryClient.ts +202 -0
- package/src/runtime/MockRuntime.ts +3 -1
- package/src/types/adapter.ts +14 -0
- package/src/types/x402.ts +32 -0
- package/src/wallet/keystore.ts +119 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pull Command - Pull on-chain config to local AGIRAILS.md
|
|
4
|
+
*
|
|
5
|
+
* Fetches the published AGIRAILS.md from IPFS (via on-chain CID),
|
|
6
|
+
* verifies integrity against on-chain hash, and writes locally.
|
|
7
|
+
* Use --force to overwrite existing file without confirmation.
|
|
8
|
+
*
|
|
9
|
+
* @module cli/commands/pull
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createPullCommand = void 0;
|
|
13
|
+
const commander_1 = require("commander");
|
|
14
|
+
const output_1 = require("../utils/output");
|
|
15
|
+
const client_1 = require("../utils/client");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const ethers_1 = require("ethers");
|
|
18
|
+
const syncOperations_1 = require("../../config/syncOperations");
|
|
19
|
+
const networks_1 = require("../../config/networks");
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Command Definition
|
|
22
|
+
// ============================================================================
|
|
23
|
+
function createPullCommand() {
|
|
24
|
+
const cmd = new commander_1.Command('pull')
|
|
25
|
+
.description('Pull on-chain AGIRAILS.md config to local file')
|
|
26
|
+
.argument('[path]', 'Path to write AGIRAILS.md', './AGIRAILS.md')
|
|
27
|
+
.option('-n, --network <network>', 'Network (base-sepolia | base-mainnet)', 'base-sepolia')
|
|
28
|
+
.option('-a, --address <address>', 'Agent address to pull config for')
|
|
29
|
+
.option('--force', 'Overwrite without confirmation (CI mode)')
|
|
30
|
+
.option('--json', 'Output as JSON')
|
|
31
|
+
.option('-q, --quiet', 'Minimal output')
|
|
32
|
+
.action(async (path, options) => {
|
|
33
|
+
const output = new output_1.Output(options.json ? 'json' : options.quiet ? 'quiet' : 'human');
|
|
34
|
+
try {
|
|
35
|
+
await runPull(path, options, output);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const structuredError = (0, client_1.mapError)(error);
|
|
39
|
+
output.errorResult({
|
|
40
|
+
code: structuredError.code,
|
|
41
|
+
message: structuredError.message,
|
|
42
|
+
details: structuredError.details,
|
|
43
|
+
});
|
|
44
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return cmd;
|
|
48
|
+
}
|
|
49
|
+
exports.createPullCommand = createPullCommand;
|
|
50
|
+
async function runPull(filePath, options, output) {
|
|
51
|
+
const resolvedPath = (0, path_1.resolve)(filePath);
|
|
52
|
+
// Determine agent address
|
|
53
|
+
let agentAddress = options.address;
|
|
54
|
+
if (!agentAddress) {
|
|
55
|
+
const privateKey = process.env.ACTP_PRIVATE_KEY || process.env.PRIVATE_KEY;
|
|
56
|
+
if (!privateKey) {
|
|
57
|
+
output.error('Agent address required. Use --address or set ACTP_PRIVATE_KEY env var.');
|
|
58
|
+
process.exit(output_1.ExitCode.INVALID_INPUT);
|
|
59
|
+
}
|
|
60
|
+
agentAddress = new ethers_1.ethers.Wallet(privateKey).address;
|
|
61
|
+
}
|
|
62
|
+
const networkConfig = (0, networks_1.getNetwork)(options.network);
|
|
63
|
+
if (!networkConfig.contracts.agentRegistry) {
|
|
64
|
+
output.error(`AgentRegistry not deployed on ${options.network}`);
|
|
65
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
66
|
+
}
|
|
67
|
+
const spinner = output.spinner('Pulling config from on-chain...');
|
|
68
|
+
try {
|
|
69
|
+
const provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
|
|
70
|
+
const result = await (0, syncOperations_1.pull)({
|
|
71
|
+
path: resolvedPath,
|
|
72
|
+
agentAddress,
|
|
73
|
+
registryAddress: networkConfig.contracts.agentRegistry,
|
|
74
|
+
provider,
|
|
75
|
+
force: options.force,
|
|
76
|
+
});
|
|
77
|
+
spinner.stop(result.written);
|
|
78
|
+
output.result({
|
|
79
|
+
written: result.written,
|
|
80
|
+
cid: result.cid || null,
|
|
81
|
+
status: result.status,
|
|
82
|
+
path: resolvedPath,
|
|
83
|
+
network: options.network,
|
|
84
|
+
}, { quietKey: 'status' });
|
|
85
|
+
if (result.written) {
|
|
86
|
+
output.blank();
|
|
87
|
+
output.success(`Config pulled and written to ${filePath}`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
output.blank();
|
|
91
|
+
output.info(result.status);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
spinner.stop(false);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -49,6 +49,9 @@ const watch_1 = require("./commands/watch");
|
|
|
49
49
|
const simulate_1 = require("./commands/simulate");
|
|
50
50
|
const batch_1 = require("./commands/batch");
|
|
51
51
|
const time_1 = require("./commands/time");
|
|
52
|
+
const publish_1 = require("./commands/publish");
|
|
53
|
+
const pull_1 = require("./commands/pull");
|
|
54
|
+
const diff_1 = require("./commands/diff");
|
|
52
55
|
// ============================================================================
|
|
53
56
|
// Program Setup
|
|
54
57
|
// ============================================================================
|
|
@@ -83,6 +86,10 @@ program.addCommand((0, simulate_1.createSimulateCommand)());
|
|
|
83
86
|
program.addCommand((0, batch_1.createBatchCommand)());
|
|
84
87
|
// Mock mode utilities
|
|
85
88
|
program.addCommand((0, time_1.createTimeCommand)());
|
|
89
|
+
// Config sync commands (AGIRAILS.md as source of truth)
|
|
90
|
+
program.addCommand((0, publish_1.createPublishCommand)());
|
|
91
|
+
program.addCommand((0, pull_1.createPullCommand)());
|
|
92
|
+
program.addCommand((0, diff_1.createDiffCommand)());
|
|
86
93
|
// ============================================================================
|
|
87
94
|
// Error Handling
|
|
88
95
|
// ============================================================================
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGIRAILS.md Parser + Canonical Hash
|
|
3
|
+
*
|
|
4
|
+
* Parses AGIRAILS.md files (YAML frontmatter + markdown body),
|
|
5
|
+
* computes deterministic canonical hashes for on-chain verification.
|
|
6
|
+
*
|
|
7
|
+
* ## Canonical Hash Algorithm
|
|
8
|
+
*
|
|
9
|
+
* 1. Parse YAML frontmatter into a plain object
|
|
10
|
+
* 2. **Strip publish metadata keys** (config_hash, published_at, config_cid, arweave_tx)
|
|
11
|
+
* — these are written back by the publish pipeline and must not affect the hash
|
|
12
|
+
* 3. Canonicalize frontmatter:
|
|
13
|
+
* - Object keys: sorted lexicographically (recursive)
|
|
14
|
+
* - Primitive arrays: sorted lexicographically by `String(value).localeCompare()`
|
|
15
|
+
* - Object arrays: order preserved (semantic ordering matters)
|
|
16
|
+
* - Date objects: converted to ISO-8601 string (`.toISOString()`)
|
|
17
|
+
* - null/undefined: preserved as-is
|
|
18
|
+
* 4. `structuredHash = keccak256(JSON.stringify(canonical))`
|
|
19
|
+
* 5. Normalize body: CRLF→LF, strip trailing whitespace per line, trim
|
|
20
|
+
* 6. `bodyHash = keccak256(normalizedBody)`
|
|
21
|
+
* 7. `configHash = keccak256(structuredHash ++ bodyHash)` (byte concatenation)
|
|
22
|
+
*
|
|
23
|
+
* @module config/agirailsmd
|
|
24
|
+
*/
|
|
25
|
+
export interface AgirailsMdConfig {
|
|
26
|
+
/** Parsed YAML frontmatter as a plain object */
|
|
27
|
+
frontmatter: Record<string, unknown>;
|
|
28
|
+
/** Markdown body (everything after the closing ---) */
|
|
29
|
+
body: string;
|
|
30
|
+
}
|
|
31
|
+
export interface AgirailsMdHashResult {
|
|
32
|
+
/** Final configHash = keccak256(structuredHash + bodyHash) */
|
|
33
|
+
configHash: string;
|
|
34
|
+
/** Hash of the canonical JSON representation of frontmatter */
|
|
35
|
+
structuredHash: string;
|
|
36
|
+
/** Hash of the normalized markdown body */
|
|
37
|
+
bodyHash: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Frontmatter keys written by the publish pipeline.
|
|
41
|
+
* These are stripped before hash computation to prevent self-reference drift:
|
|
42
|
+
* publish writes config_hash back → changes frontmatter → changes hash → never in sync.
|
|
43
|
+
*/
|
|
44
|
+
export declare const PUBLISH_METADATA_KEYS: readonly ["config_hash", "published_at", "config_cid", "arweave_tx", "template_source"];
|
|
45
|
+
/**
|
|
46
|
+
* Strip publish metadata keys from a frontmatter object.
|
|
47
|
+
* Returns a shallow copy with the metadata keys removed.
|
|
48
|
+
*/
|
|
49
|
+
export declare function stripPublishMetadata(frontmatter: Record<string, unknown>): Record<string, unknown>;
|
|
50
|
+
/**
|
|
51
|
+
* Parse an AGIRAILS.md file into frontmatter + body.
|
|
52
|
+
*
|
|
53
|
+
* @param content - Raw file content (string)
|
|
54
|
+
* @returns Parsed config with frontmatter object and body string
|
|
55
|
+
* @throws Error if content has no valid YAML frontmatter
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseAgirailsMd(content: string): AgirailsMdConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Recursively canonicalize a value for deterministic JSON serialization.
|
|
60
|
+
*
|
|
61
|
+
* - Object keys: sorted lexicographically
|
|
62
|
+
* - Primitive arrays: sorted by String(x).localeCompare()
|
|
63
|
+
* - Object arrays: order preserved
|
|
64
|
+
* - Date objects: converted to ISO-8601 string
|
|
65
|
+
* - null/undefined: preserved
|
|
66
|
+
*/
|
|
67
|
+
export declare function canonicalize(value: unknown): unknown;
|
|
68
|
+
/**
|
|
69
|
+
* Compute the canonical config hash from raw AGIRAILS.md content.
|
|
70
|
+
*
|
|
71
|
+
* @param content - Raw AGIRAILS.md file content
|
|
72
|
+
* @returns Hash result with configHash, structuredHash, and bodyHash
|
|
73
|
+
*/
|
|
74
|
+
export declare function computeConfigHash(content: string): AgirailsMdHashResult;
|
|
75
|
+
/**
|
|
76
|
+
* Compute the canonical config hash from parsed parts.
|
|
77
|
+
*
|
|
78
|
+
* Publish metadata keys (config_hash, published_at, config_cid, arweave_tx)
|
|
79
|
+
* are automatically stripped before hashing to prevent self-reference drift.
|
|
80
|
+
*
|
|
81
|
+
* @param frontmatter - Parsed YAML frontmatter object
|
|
82
|
+
* @param body - Markdown body string
|
|
83
|
+
* @returns Hash result with configHash, structuredHash, and bodyHash
|
|
84
|
+
*/
|
|
85
|
+
export declare function computeConfigHashFromParts(frontmatter: Record<string, unknown>, body: string): AgirailsMdHashResult;
|
|
86
|
+
/**
|
|
87
|
+
* Serialize config back to AGIRAILS.md format.
|
|
88
|
+
*
|
|
89
|
+
* @param frontmatter - YAML frontmatter object
|
|
90
|
+
* @param body - Markdown body string
|
|
91
|
+
* @returns Complete AGIRAILS.md file content
|
|
92
|
+
*/
|
|
93
|
+
export declare function serializeAgirailsMd(frontmatter: Record<string, unknown>, body: string): string;
|
|
94
|
+
//# sourceMappingURL=agirailsmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agirailsmd.d.ts","sourceRoot":"","sources":["../../src/config/agirailsmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,yFAMxB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAiCjE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqCpD;AAkBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAGvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,IAAI,EAAE,MAAM,GACX,oBAAoB,CAmBtB;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,IAAI,EAAE,MAAM,GACX,MAAM,CASR"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AGIRAILS.md Parser + Canonical Hash
|
|
4
|
+
*
|
|
5
|
+
* Parses AGIRAILS.md files (YAML frontmatter + markdown body),
|
|
6
|
+
* computes deterministic canonical hashes for on-chain verification.
|
|
7
|
+
*
|
|
8
|
+
* ## Canonical Hash Algorithm
|
|
9
|
+
*
|
|
10
|
+
* 1. Parse YAML frontmatter into a plain object
|
|
11
|
+
* 2. **Strip publish metadata keys** (config_hash, published_at, config_cid, arweave_tx)
|
|
12
|
+
* — these are written back by the publish pipeline and must not affect the hash
|
|
13
|
+
* 3. Canonicalize frontmatter:
|
|
14
|
+
* - Object keys: sorted lexicographically (recursive)
|
|
15
|
+
* - Primitive arrays: sorted lexicographically by `String(value).localeCompare()`
|
|
16
|
+
* - Object arrays: order preserved (semantic ordering matters)
|
|
17
|
+
* - Date objects: converted to ISO-8601 string (`.toISOString()`)
|
|
18
|
+
* - null/undefined: preserved as-is
|
|
19
|
+
* 4. `structuredHash = keccak256(JSON.stringify(canonical))`
|
|
20
|
+
* 5. Normalize body: CRLF→LF, strip trailing whitespace per line, trim
|
|
21
|
+
* 6. `bodyHash = keccak256(normalizedBody)`
|
|
22
|
+
* 7. `configHash = keccak256(structuredHash ++ bodyHash)` (byte concatenation)
|
|
23
|
+
*
|
|
24
|
+
* @module config/agirailsmd
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.serializeAgirailsMd = exports.computeConfigHashFromParts = exports.computeConfigHash = exports.canonicalize = exports.parseAgirailsMd = exports.stripPublishMetadata = exports.PUBLISH_METADATA_KEYS = void 0;
|
|
28
|
+
const ethers_1 = require("ethers");
|
|
29
|
+
const yaml_1 = require("yaml");
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Publish Metadata (excluded from hash computation)
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Frontmatter keys written by the publish pipeline.
|
|
35
|
+
* These are stripped before hash computation to prevent self-reference drift:
|
|
36
|
+
* publish writes config_hash back → changes frontmatter → changes hash → never in sync.
|
|
37
|
+
*/
|
|
38
|
+
exports.PUBLISH_METADATA_KEYS = [
|
|
39
|
+
'config_hash',
|
|
40
|
+
'published_at',
|
|
41
|
+
'config_cid',
|
|
42
|
+
'arweave_tx',
|
|
43
|
+
'template_source',
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Strip publish metadata keys from a frontmatter object.
|
|
47
|
+
* Returns a shallow copy with the metadata keys removed.
|
|
48
|
+
*/
|
|
49
|
+
function stripPublishMetadata(frontmatter) {
|
|
50
|
+
const stripped = { ...frontmatter };
|
|
51
|
+
for (const key of exports.PUBLISH_METADATA_KEYS) {
|
|
52
|
+
delete stripped[key];
|
|
53
|
+
}
|
|
54
|
+
return stripped;
|
|
55
|
+
}
|
|
56
|
+
exports.stripPublishMetadata = stripPublishMetadata;
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Parser
|
|
59
|
+
// ============================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Parse an AGIRAILS.md file into frontmatter + body.
|
|
62
|
+
*
|
|
63
|
+
* @param content - Raw file content (string)
|
|
64
|
+
* @returns Parsed config with frontmatter object and body string
|
|
65
|
+
* @throws Error if content has no valid YAML frontmatter
|
|
66
|
+
*/
|
|
67
|
+
function parseAgirailsMd(content) {
|
|
68
|
+
const trimmed = content.trimStart();
|
|
69
|
+
if (!trimmed.startsWith('---')) {
|
|
70
|
+
throw new Error('AGIRAILS.md must start with YAML frontmatter (---)');
|
|
71
|
+
}
|
|
72
|
+
// Find closing ---
|
|
73
|
+
const closingIndex = trimmed.indexOf('\n---', 3);
|
|
74
|
+
if (closingIndex === -1) {
|
|
75
|
+
throw new Error('AGIRAILS.md frontmatter is not closed (missing closing ---)');
|
|
76
|
+
}
|
|
77
|
+
const yamlContent = trimmed.slice(4, closingIndex); // skip opening ---\n
|
|
78
|
+
const body = trimmed.slice(closingIndex + 4); // skip \n---
|
|
79
|
+
// Parse YAML
|
|
80
|
+
let frontmatter;
|
|
81
|
+
try {
|
|
82
|
+
frontmatter = (0, yaml_1.parse)(yamlContent);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
86
|
+
throw new Error(`Failed to parse YAML frontmatter: ${message}`);
|
|
87
|
+
}
|
|
88
|
+
if (typeof frontmatter !== 'object' || frontmatter === null) {
|
|
89
|
+
throw new Error('YAML frontmatter must be an object');
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
frontmatter,
|
|
93
|
+
body: body.startsWith('\n') ? body.slice(1) : body,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
exports.parseAgirailsMd = parseAgirailsMd;
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Canonical Hash
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Recursively canonicalize a value for deterministic JSON serialization.
|
|
102
|
+
*
|
|
103
|
+
* - Object keys: sorted lexicographically
|
|
104
|
+
* - Primitive arrays: sorted by String(x).localeCompare()
|
|
105
|
+
* - Object arrays: order preserved
|
|
106
|
+
* - Date objects: converted to ISO-8601 string
|
|
107
|
+
* - null/undefined: preserved
|
|
108
|
+
*/
|
|
109
|
+
function canonicalize(value) {
|
|
110
|
+
if (value === null || value === undefined) {
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
// Handle Date objects deterministically (YAML parser may auto-create these)
|
|
114
|
+
if (value instanceof Date) {
|
|
115
|
+
return value.toISOString();
|
|
116
|
+
}
|
|
117
|
+
if (Array.isArray(value)) {
|
|
118
|
+
// Canonicalize each element, then sort arrays of primitives lexicographically
|
|
119
|
+
const canonicalized = value.map(canonicalize);
|
|
120
|
+
// Only sort arrays of primitives (strings, numbers, booleans)
|
|
121
|
+
// Arrays of objects maintain order (e.g., onboarding questions have semantic ordering)
|
|
122
|
+
const allPrimitive = canonicalized.every((item) => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');
|
|
123
|
+
if (allPrimitive) {
|
|
124
|
+
return canonicalized.sort((a, b) => String(a).localeCompare(String(b)));
|
|
125
|
+
}
|
|
126
|
+
return canonicalized;
|
|
127
|
+
}
|
|
128
|
+
if (typeof value === 'object') {
|
|
129
|
+
const sorted = {};
|
|
130
|
+
const keys = Object.keys(value).sort();
|
|
131
|
+
for (const key of keys) {
|
|
132
|
+
sorted[key] = canonicalize(value[key]);
|
|
133
|
+
}
|
|
134
|
+
return sorted;
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
exports.canonicalize = canonicalize;
|
|
139
|
+
/**
|
|
140
|
+
* Normalize markdown body for deterministic hashing.
|
|
141
|
+
* - Strip trailing whitespace from each line
|
|
142
|
+
* - Ensure \n line endings
|
|
143
|
+
* - Trim leading/trailing whitespace
|
|
144
|
+
*/
|
|
145
|
+
function normalizeBody(body) {
|
|
146
|
+
return body
|
|
147
|
+
.replace(/\r\n/g, '\n') // CRLF → LF
|
|
148
|
+
.replace(/\r/g, '\n') // CR → LF
|
|
149
|
+
.split('\n')
|
|
150
|
+
.map((line) => line.trimEnd()) // strip trailing whitespace per line
|
|
151
|
+
.join('\n')
|
|
152
|
+
.trim(); // trim leading/trailing
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Compute the canonical config hash from raw AGIRAILS.md content.
|
|
156
|
+
*
|
|
157
|
+
* @param content - Raw AGIRAILS.md file content
|
|
158
|
+
* @returns Hash result with configHash, structuredHash, and bodyHash
|
|
159
|
+
*/
|
|
160
|
+
function computeConfigHash(content) {
|
|
161
|
+
const { frontmatter, body } = parseAgirailsMd(content);
|
|
162
|
+
return computeConfigHashFromParts(frontmatter, body);
|
|
163
|
+
}
|
|
164
|
+
exports.computeConfigHash = computeConfigHash;
|
|
165
|
+
/**
|
|
166
|
+
* Compute the canonical config hash from parsed parts.
|
|
167
|
+
*
|
|
168
|
+
* Publish metadata keys (config_hash, published_at, config_cid, arweave_tx)
|
|
169
|
+
* are automatically stripped before hashing to prevent self-reference drift.
|
|
170
|
+
*
|
|
171
|
+
* @param frontmatter - Parsed YAML frontmatter object
|
|
172
|
+
* @param body - Markdown body string
|
|
173
|
+
* @returns Hash result with configHash, structuredHash, and bodyHash
|
|
174
|
+
*/
|
|
175
|
+
function computeConfigHashFromParts(frontmatter, body) {
|
|
176
|
+
// Step 0: Strip publish metadata to prevent self-reference drift
|
|
177
|
+
const stripped = stripPublishMetadata(frontmatter);
|
|
178
|
+
// Step 1: Canonical JSON of frontmatter (with metadata stripped)
|
|
179
|
+
const canonical = canonicalize(stripped);
|
|
180
|
+
const canonicalJson = JSON.stringify(canonical);
|
|
181
|
+
const structuredHash = ethers_1.ethers.keccak256(ethers_1.ethers.toUtf8Bytes(canonicalJson));
|
|
182
|
+
// Step 2: Normalized body hash
|
|
183
|
+
const normalized = normalizeBody(body);
|
|
184
|
+
const bodyHash = ethers_1.ethers.keccak256(ethers_1.ethers.toUtf8Bytes(normalized));
|
|
185
|
+
// Step 3: Combined hash
|
|
186
|
+
const configHash = ethers_1.ethers.keccak256(ethers_1.ethers.concat([ethers_1.ethers.getBytes(structuredHash), ethers_1.ethers.getBytes(bodyHash)]));
|
|
187
|
+
return { configHash, structuredHash, bodyHash };
|
|
188
|
+
}
|
|
189
|
+
exports.computeConfigHashFromParts = computeConfigHashFromParts;
|
|
190
|
+
// ============================================================================
|
|
191
|
+
// Serializer
|
|
192
|
+
// ============================================================================
|
|
193
|
+
/**
|
|
194
|
+
* Serialize config back to AGIRAILS.md format.
|
|
195
|
+
*
|
|
196
|
+
* @param frontmatter - YAML frontmatter object
|
|
197
|
+
* @param body - Markdown body string
|
|
198
|
+
* @returns Complete AGIRAILS.md file content
|
|
199
|
+
*/
|
|
200
|
+
function serializeAgirailsMd(frontmatter, body) {
|
|
201
|
+
const yamlStr = (0, yaml_1.stringify)(frontmatter, {
|
|
202
|
+
lineWidth: 120,
|
|
203
|
+
singleQuote: false,
|
|
204
|
+
}).trimEnd();
|
|
205
|
+
const normalizedBody = body.startsWith('\n') ? body : `\n${body}`;
|
|
206
|
+
return `---\n${yamlStr}\n---\n${normalizedBody}`;
|
|
207
|
+
}
|
|
208
|
+
exports.serializeAgirailsMd = serializeAgirailsMd;
|
|
209
|
+
//# sourceMappingURL=agirailsmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agirailsmd.js","sourceRoot":"","sources":["../../src/config/agirailsmd.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAEH,mCAAgC;AAChC,+BAAsE;AAsBtE,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E;;;;GAIG;AACU,QAAA,qBAAqB,GAAG;IACnC,aAAa;IACb,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,iBAAiB;CACT,CAAC;AAEX;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,WAAoC;IAEpC,MAAM,QAAQ,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,6BAAqB,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AARD,oDAQC;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,qBAAqB;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;IAE3D,aAAa;IACb,IAAI,WAAoC,CAAC;IACzC,IAAI,CAAC;QACH,WAAW,GAAG,IAAA,YAAS,EAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,WAAW;QACX,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACnD,CAAC;AACJ,CAAC;AAjCD,0CAiCC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,8EAA8E;QAC9E,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE9C,8DAA8D;QAC9D,uFAAuF;QACvF,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,CAC5F,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AArCD,oCAqCC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI;SACR,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,YAAY;SACnC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU;SAC/B,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,qCAAqC;SACnE,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC,CAAC,wBAAwB;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAHD,8CAGC;AAED;;;;;;;;;GASG;AACH,SAAgB,0BAA0B,CACxC,WAAoC,EACpC,IAAY;IAEZ,iEAAiE;IACjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEnD,iEAAiE;IACjE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,eAAM,CAAC,SAAS,CAAC,eAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IAE3E,+BAA+B;IAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,eAAM,CAAC,SAAS,CAAC,eAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,UAAU,GAAG,eAAM,CAAC,SAAS,CACjC,eAAM,CAAC,MAAM,CAAC,CAAC,eAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5E,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAtBD,gEAsBC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,WAAoC,EACpC,IAAY;IAEZ,MAAM,OAAO,GAAG,IAAA,gBAAa,EAAC,WAAW,EAAE;QACzC,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEb,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAElE,OAAO,QAAQ,OAAO,UAAU,cAAc,EAAE,CAAC;AACnD,CAAC;AAZD,kDAYC"}
|
|
@@ -15,9 +15,11 @@ export interface NetworkConfig {
|
|
|
15
15
|
agentRegistry?: string;
|
|
16
16
|
identityRegistry?: string;
|
|
17
17
|
archiveTreasury?: string;
|
|
18
|
+
x402Relay?: string;
|
|
18
19
|
};
|
|
19
20
|
eas: {
|
|
20
21
|
deliverySchemaUID: string;
|
|
22
|
+
configSnapshotSchemaUID?: string;
|
|
21
23
|
};
|
|
22
24
|
gasSettings: {
|
|
23
25
|
maxFeePerGas: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,GAAG,EAAE;QACH,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,WAAW,EAAE;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aA8B1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,aAiC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAGlD,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAqCzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CA0BjE"}
|
package/dist/config/networks.js
CHANGED
|
@@ -36,7 +36,9 @@ exports.BASE_SEPOLIA = {
|
|
|
36
36
|
// AIP-7 Identity Registry - ERC-1056 DID Registry (deployed 2026-01-09)
|
|
37
37
|
identityRegistry: '0xF64F748C7802a68Cb936a9213881fE74e83FDA97',
|
|
38
38
|
// AIP-7 Archive Treasury - Arweave funding (deployed 2026-01-09)
|
|
39
|
-
archiveTreasury: '0xeB75DE7cF5ce77ab15BB0fFa3a2A79e6aaa554B0'
|
|
39
|
+
archiveTreasury: '0xeB75DE7cF5ce77ab15BB0fFa3a2A79e6aaa554B0',
|
|
40
|
+
// X402Relay - atomic payment fee splitting (TODO: deploy and set address)
|
|
41
|
+
// x402Relay: '0x...',
|
|
40
42
|
},
|
|
41
43
|
eas: {
|
|
42
44
|
// Deployed 2025-11-23 - AIP-4 delivery proof schema
|
|
@@ -69,7 +71,9 @@ exports.BASE_MAINNET = {
|
|
|
69
71
|
easSchemaRegistry: '0x4200000000000000000000000000000000000020',
|
|
70
72
|
// AIP-7 contracts
|
|
71
73
|
agentRegistry: '0xbf9Aa0FC291A06A4dFA943c3E0Ad41E7aE20DF02',
|
|
72
|
-
archiveTreasury: '0x64B8f93fef2D2E749F5E88586753343F73246012'
|
|
74
|
+
archiveTreasury: '0x64B8f93fef2D2E749F5E88586753343F73246012',
|
|
75
|
+
// X402Relay - atomic payment fee splitting (TODO: deploy and set address)
|
|
76
|
+
// x402Relay: '0x...',
|
|
73
77
|
},
|
|
74
78
|
eas: {
|
|
75
79
|
// Registered 2026-02-03
|
|
@@ -117,10 +121,12 @@ function getNetwork(network) {
|
|
|
117
121
|
easSchemaRegistry: config.contracts.easSchemaRegistry,
|
|
118
122
|
agentRegistry: config.contracts.agentRegistry,
|
|
119
123
|
identityRegistry: config.contracts.identityRegistry,
|
|
120
|
-
archiveTreasury: config.contracts.archiveTreasury
|
|
124
|
+
archiveTreasury: config.contracts.archiveTreasury,
|
|
125
|
+
x402Relay: config.contracts.x402Relay
|
|
121
126
|
},
|
|
122
127
|
eas: {
|
|
123
|
-
deliverySchemaUID: config.eas.deliverySchemaUID
|
|
128
|
+
deliverySchemaUID: config.eas.deliverySchemaUID,
|
|
129
|
+
configSnapshotSchemaUID: config.eas.configSnapshotSchemaUID
|
|
124
130
|
},
|
|
125
131
|
gasSettings: {
|
|
126
132
|
maxFeePerGas: config.gasSettings.maxFeePerGas,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAC/E,+DAA+D;AAC/D,2EAA2E;AAC3E,8DAA8D;AAC9D,EAAE;AACF,gEAAgE;AAChE,2DAA2D;AAC3D,mDAAmD;AACnD,+EAA+E;AAE/E,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;AACxF,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish Pipeline - AGIRAILS.md → IPFS → Arweave → On-Chain
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full publish flow:
|
|
5
|
+
* 1. Read AGIRAILS.md → parse → compute configHash
|
|
6
|
+
* 2. Upload to Filebase (IPFS pinning)
|
|
7
|
+
* 3. Upload to Arweave (permanent storage) [optional]
|
|
8
|
+
* 4. Call AgentRegistry.publishConfig(cid, hash) on-chain
|
|
9
|
+
* 5. Update AGIRAILS.md frontmatter with config_hash and published_at
|
|
10
|
+
*
|
|
11
|
+
* @module config/publishPipeline
|
|
12
|
+
*/
|
|
13
|
+
import { Signer } from 'ethers';
|
|
14
|
+
import { FilebaseClient } from '../storage/FilebaseClient';
|
|
15
|
+
import { ArweaveClient } from '../storage/ArweaveClient';
|
|
16
|
+
export interface PublishOptions {
|
|
17
|
+
/** Path to AGIRAILS.md file */
|
|
18
|
+
path: string;
|
|
19
|
+
/** Network name (for registry address lookup) */
|
|
20
|
+
network: string;
|
|
21
|
+
/** AgentRegistry contract address */
|
|
22
|
+
registryAddress: string;
|
|
23
|
+
/** Signer for on-chain transactions */
|
|
24
|
+
signer: Signer;
|
|
25
|
+
/** Filebase client for IPFS upload */
|
|
26
|
+
filebaseClient: FilebaseClient;
|
|
27
|
+
/** Arweave client for permanent storage (optional) */
|
|
28
|
+
arweaveClient?: ArweaveClient;
|
|
29
|
+
/** Skip Arweave upload (dev mode) */
|
|
30
|
+
skipArweave?: boolean;
|
|
31
|
+
/** Dry run - compute and show but don't execute */
|
|
32
|
+
dryRun?: boolean;
|
|
33
|
+
/** Gas settings */
|
|
34
|
+
gasSettings?: {
|
|
35
|
+
maxFeePerGas?: bigint;
|
|
36
|
+
maxPriorityFeePerGas?: bigint;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface PublishResult {
|
|
40
|
+
/** IPFS CID of the uploaded AGIRAILS.md */
|
|
41
|
+
cid: string;
|
|
42
|
+
/** Canonical config hash (bytes32) */
|
|
43
|
+
configHash: string;
|
|
44
|
+
/** On-chain transaction hash */
|
|
45
|
+
txHash?: string;
|
|
46
|
+
/** Arweave transaction ID (if uploaded) */
|
|
47
|
+
arweaveTxId?: string;
|
|
48
|
+
/** Whether this was a dry run */
|
|
49
|
+
dryRun: boolean;
|
|
50
|
+
/** Whether the agent was auto-registered during this publish */
|
|
51
|
+
registered?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare const PENDING_ENDPOINT = "https://pending.agirails.io";
|
|
54
|
+
/**
|
|
55
|
+
* Execute the full publish pipeline.
|
|
56
|
+
*
|
|
57
|
+
* @param options - Publish configuration
|
|
58
|
+
* @returns Publish result with CID, hash, and transaction hashes
|
|
59
|
+
*/
|
|
60
|
+
export declare function publishAgirailsMd(options: PublishOptions): Promise<PublishResult>;
|
|
61
|
+
//# sourceMappingURL=publishPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishPipeline.d.ts","sourceRoot":"","sources":["../../src/config/publishPipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,MAAM,EAA0B,MAAM,QAAQ,CAAC;AAIxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,cAAc,EAAE,cAAc,CAAC;IAC/B,sDAAsD;IACtD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAgH9D;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAwFvF"}
|