@agirails/sdk 2.6.0 → 3.0.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 +1 -1
- package/bin/agirails +10 -0
- package/dist/ACTPClient.d.ts +9 -4
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +12 -8
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/ACTPKernel.json +87 -6
- package/dist/adapters/BaseAdapter.d.ts +3 -3
- package/dist/adapters/BaseAdapter.js +3 -3
- package/dist/adapters/BasicAdapter.d.ts +1 -1
- package/dist/adapters/BasicAdapter.js +2 -2
- package/dist/adapters/BasicAdapter.js.map +1 -1
- package/dist/adapters/StandardAdapter.d.ts +30 -8
- package/dist/adapters/StandardAdapter.d.ts.map +1 -1
- package/dist/adapters/StandardAdapter.js +34 -9
- package/dist/adapters/StandardAdapter.js.map +1 -1
- package/dist/adapters/X402Adapter.d.ts.map +1 -1
- package/dist/adapters/X402Adapter.js +14 -12
- package/dist/adapters/X402Adapter.js.map +1 -1
- package/dist/api/agirailsApp.d.ts +197 -0
- package/dist/api/agirailsApp.d.ts.map +1 -0
- package/dist/api/agirailsApp.js +175 -0
- package/dist/api/agirailsApp.js.map +1 -0
- package/dist/cli/agirails.d.ts +10 -0
- package/dist/cli/agirails.d.ts.map +1 -0
- package/dist/cli/agirails.js +187 -0
- package/dist/cli/agirails.js.map +1 -0
- package/dist/cli/commands/autopublish.d.ts +13 -0
- package/dist/cli/commands/autopublish.d.ts.map +1 -0
- package/dist/cli/commands/autopublish.js +156 -0
- package/dist/cli/commands/autopublish.js.map +1 -0
- package/dist/cli/commands/batch.js +1 -1
- package/dist/cli/commands/claim-code.d.ts +11 -0
- package/dist/cli/commands/claim-code.d.ts.map +1 -0
- package/dist/cli/commands/claim-code.js +160 -0
- package/dist/cli/commands/claim-code.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +17 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +104 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/config.js +1 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/find.d.ts +23 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +230 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/health.d.ts +16 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +287 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +42 -13
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/negotiate.d.ts +11 -0
- package/dist/cli/commands/negotiate.d.ts.map +1 -0
- package/dist/cli/commands/negotiate.js +192 -0
- package/dist/cli/commands/negotiate.js.map +1 -0
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +310 -17
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +7 -3
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +105 -13
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/receipt.d.ts +31 -0
- package/dist/cli/commands/receipt.d.ts.map +1 -0
- package/dist/cli/commands/receipt.js +92 -0
- package/dist/cli/commands/receipt.js.map +1 -0
- package/dist/cli/commands/test.d.ts +15 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +176 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/testjobs/index.d.ts +18 -0
- package/dist/cli/testjobs/index.d.ts.map +1 -0
- package/dist/cli/testjobs/index.js +45 -0
- package/dist/cli/testjobs/index.js.map +1 -0
- package/dist/cli/testjobs/templates/automation.d.ts +3 -0
- package/dist/cli/testjobs/templates/automation.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/automation.js +32 -0
- package/dist/cli/testjobs/templates/automation.js.map +1 -0
- package/dist/cli/testjobs/templates/code-review.d.ts +3 -0
- package/dist/cli/testjobs/templates/code-review.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/code-review.js +27 -0
- package/dist/cli/testjobs/templates/code-review.js.map +1 -0
- package/dist/cli/testjobs/templates/content-writing.d.ts +3 -0
- package/dist/cli/testjobs/templates/content-writing.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/content-writing.js +20 -0
- package/dist/cli/testjobs/templates/content-writing.js.map +1 -0
- package/dist/cli/testjobs/templates/data-analysis.d.ts +3 -0
- package/dist/cli/testjobs/templates/data-analysis.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/data-analysis.js +34 -0
- package/dist/cli/testjobs/templates/data-analysis.js.map +1 -0
- package/dist/cli/testjobs/templates/generic.d.ts +3 -0
- package/dist/cli/testjobs/templates/generic.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/generic.js +17 -0
- package/dist/cli/testjobs/templates/generic.js.map +1 -0
- package/dist/cli/testjobs/templates/security-audit.d.ts +3 -0
- package/dist/cli/testjobs/templates/security-audit.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/security-audit.js +30 -0
- package/dist/cli/testjobs/templates/security-audit.js.map +1 -0
- package/dist/cli/testjobs/templates/testing.d.ts +3 -0
- package/dist/cli/testjobs/templates/testing.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/testing.js +29 -0
- package/dist/cli/testjobs/templates/testing.js.map +1 -0
- package/dist/cli/testjobs/templates/translation.d.ts +3 -0
- package/dist/cli/testjobs/templates/translation.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/translation.js +16 -0
- package/dist/cli/testjobs/templates/translation.js.map +1 -0
- package/dist/cli/testjobs/types.d.ts +16 -0
- package/dist/cli/testjobs/types.d.ts.map +1 -0
- package/dist/cli/testjobs/types.js +8 -0
- package/dist/cli/testjobs/types.js.map +1 -0
- package/dist/cli/utils/client.js +1 -1
- package/dist/cli/utils/client.js.map +1 -1
- package/dist/cli/utils/config.d.ts +12 -0
- package/dist/cli/utils/config.d.ts.map +1 -1
- package/dist/cli/utils/config.js +29 -2
- package/dist/cli/utils/config.js.map +1 -1
- package/dist/config/agirailsmd.d.ts +1 -1
- package/dist/config/agirailsmd.d.ts.map +1 -1
- package/dist/config/agirailsmd.js +3 -0
- package/dist/config/agirailsmd.js.map +1 -1
- package/dist/config/agirailsmdV4.d.ts +82 -0
- package/dist/config/agirailsmdV4.d.ts.map +1 -0
- package/dist/config/agirailsmdV4.js +254 -0
- package/dist/config/agirailsmdV4.js.map +1 -0
- package/dist/config/defaults.d.ts +50 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +77 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/networks.d.ts +1 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +16 -13
- package/dist/config/networks.js.map +1 -1
- package/dist/config/publishPipeline.d.ts.map +1 -1
- package/dist/config/publishPipeline.js +4 -0
- package/dist/config/publishPipeline.js.map +1 -1
- package/dist/config/slugUtils.d.ts +28 -0
- package/dist/config/slugUtils.d.ts.map +1 -0
- package/dist/config/slugUtils.js +51 -0
- package/dist/config/slugUtils.js.map +1 -0
- package/dist/level0/ServiceDirectory.d.ts +6 -6
- package/dist/level0/ServiceDirectory.js +11 -11
- package/dist/level0/ServiceDirectory.js.map +1 -1
- package/dist/level1/Agent.d.ts +10 -10
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +45 -29
- package/dist/level1/Agent.js.map +1 -1
- package/dist/level1/pricing/PriceCalculator.js +2 -2
- package/dist/level1/pricing/PriceCalculator.js.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts +108 -0
- package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -0
- package/dist/negotiation/BuyerOrchestrator.js +377 -0
- package/dist/negotiation/BuyerOrchestrator.js.map +1 -0
- package/dist/negotiation/DecisionEngine.d.ts +44 -0
- package/dist/negotiation/DecisionEngine.d.ts.map +1 -0
- package/dist/negotiation/DecisionEngine.js +116 -0
- package/dist/negotiation/DecisionEngine.js.map +1 -0
- package/dist/negotiation/PolicyEngine.d.ts +126 -0
- package/dist/negotiation/PolicyEngine.d.ts.map +1 -0
- package/dist/negotiation/PolicyEngine.js +265 -0
- package/dist/negotiation/PolicyEngine.js.map +1 -0
- package/dist/negotiation/SessionStore.d.ts +57 -0
- package/dist/negotiation/SessionStore.d.ts.map +1 -0
- package/dist/negotiation/SessionStore.js +179 -0
- package/dist/negotiation/SessionStore.js.map +1 -0
- package/dist/negotiation/index.d.ts +9 -0
- package/dist/negotiation/index.d.ts.map +1 -0
- package/dist/negotiation/index.js +12 -0
- package/dist/negotiation/index.js.map +1 -0
- package/dist/protocol/ACTPKernel.d.ts +32 -4
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +70 -16
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/AgentRegistry.js +2 -2
- package/dist/protocol/AgentRegistry.js.map +1 -1
- package/dist/protocol/DIDResolver.js +2 -2
- package/dist/protocol/DIDResolver.js.map +1 -1
- package/dist/protocol/EASHelper.d.ts +2 -2
- package/dist/protocol/EASHelper.js +5 -5
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +2 -2
- package/dist/protocol/EscrowVault.js +4 -4
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +4 -4
- package/dist/protocol/EventMonitor.js +5 -5
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +5 -5
- package/dist/protocol/MessageSigner.js +8 -8
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +4 -4
- package/dist/protocol/ProofGenerator.js +6 -6
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +24 -14
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +60 -45
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/dist/runtime/IACTPRuntime.d.ts +12 -1
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.d.ts +22 -9
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +76 -24
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/runtime/MockStateManager.js +2 -2
- package/dist/runtime/MockStateManager.js.map +1 -1
- package/dist/runtime/types/MockState.d.ts +1 -1
- package/dist/types/erc8004.d.ts +2 -2
- package/dist/types/erc8004.d.ts.map +1 -1
- package/dist/types/erc8004.js +4 -1
- package/dist/types/erc8004.js.map +1 -1
- package/dist/types/state.d.ts +1 -1
- package/dist/types/state.js +1 -1
- package/dist/types/transaction.d.ts +4 -0
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/types/x402.d.ts +17 -9
- package/dist/types/x402.d.ts.map +1 -1
- package/dist/types/x402.js +9 -9
- package/dist/types/x402.js.map +1 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +1 -1
- package/dist/utils/ErrorRecoveryGuide.js +1 -1
- package/dist/utils/Helpers.d.ts +6 -6
- package/dist/utils/Helpers.js +7 -7
- package/dist/utils/Helpers.js.map +1 -1
- package/dist/utils/IPFSClient.d.ts +7 -7
- package/dist/utils/IPFSClient.js +9 -9
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/Logger.d.ts +4 -4
- package/dist/utils/Logger.js +8 -8
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/NonceManager.d.ts +9 -9
- package/dist/utils/NonceManager.js +19 -19
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/RateLimiter.d.ts +10 -10
- package/dist/utils/RateLimiter.d.ts.map +1 -1
- package/dist/utils/RateLimiter.js +22 -22
- package/dist/utils/RateLimiter.js.map +1 -1
- package/dist/utils/ReceivedNonceTracker.d.ts +10 -10
- package/dist/utils/ReceivedNonceTracker.js +20 -20
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/SDKLifecycle.d.ts +3 -3
- package/dist/utils/SDKLifecycle.js +7 -7
- package/dist/utils/SDKLifecycle.js.map +1 -1
- package/dist/utils/SecureNonce.d.ts +1 -1
- package/dist/utils/SecureNonce.js +1 -1
- package/dist/utils/Semaphore.d.ts +2 -2
- package/dist/utils/Semaphore.js +2 -2
- package/dist/utils/UsedAttestationTracker.d.ts +13 -13
- package/dist/utils/UsedAttestationTracker.js +20 -20
- package/dist/utils/UsedAttestationTracker.js.map +1 -1
- package/dist/utils/security.d.ts +3 -3
- package/dist/utils/security.js +4 -4
- package/dist/utils/security.js.map +1 -1
- package/dist/utils/validation.d.ts +4 -4
- package/dist/utils/validation.js +9 -9
- package/dist/utils/validation.js.map +1 -1
- package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
- package/dist/wallet/AutoWalletProvider.js +2 -1
- package/dist/wallet/AutoWalletProvider.js.map +1 -1
- package/dist/wallet/IWalletProvider.d.ts +2 -0
- package/dist/wallet/IWalletProvider.d.ts.map +1 -1
- package/dist/wallet/aa/TransactionBatcher.d.ts +22 -2
- package/dist/wallet/aa/TransactionBatcher.d.ts.map +1 -1
- package/dist/wallet/aa/TransactionBatcher.js +51 -9
- package/dist/wallet/aa/TransactionBatcher.js.map +1 -1
- package/package.json +6 -12
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* agirails.app API Client
|
|
4
|
+
*
|
|
5
|
+
* Handles API calls to agirails.app for:
|
|
6
|
+
* - Slug availability check (pre-chain, no auth)
|
|
7
|
+
* - Agent upsert after publish (post-chain, wallet signature auth)
|
|
8
|
+
* - Dashboard claim (wallet signature auth)
|
|
9
|
+
*
|
|
10
|
+
* STATUS: All API routes are implemented on agirails.app:
|
|
11
|
+
* - GET /api/v1/agents/check-slug?slug=... (rate-limited, slug validation)
|
|
12
|
+
* - POST /api/v1/agents (dual auth: session + wallet-sig via EIP-712)
|
|
13
|
+
* - POST /api/v1/agents/claim/challenge (Redis-backed challenge)
|
|
14
|
+
* - POST /api/v1/agents/claim (on-chain ownerOf verification)
|
|
15
|
+
* - GET /a/{slug} (SSR profile page with OpenGraph)
|
|
16
|
+
*
|
|
17
|
+
* All callers handle API failures gracefully (non-blocking).
|
|
18
|
+
*
|
|
19
|
+
* @module api/agirailsApp
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.discoverAgents = exports.requestClaimCode = exports.claimAgent = exports.getClaimChallenge = exports.upsertAgent = exports.checkSlug = void 0;
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Constants
|
|
25
|
+
// ============================================================================
|
|
26
|
+
const AGIRAILS_APP_BASE_URL = process.env.AGIRAILS_APP_URL || 'https://www.agirails.app';
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// API Client
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Check if a slug is available on agirails.app.
|
|
32
|
+
*
|
|
33
|
+
* Pre-chain call, no auth required. Read-only.
|
|
34
|
+
*
|
|
35
|
+
* @param slug - The slug to check
|
|
36
|
+
* @returns Availability result with optional suggestion
|
|
37
|
+
*/
|
|
38
|
+
async function checkSlug(slug) {
|
|
39
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/agents/check-slug?slug=${encodeURIComponent(slug)}`;
|
|
40
|
+
const res = await fetch(url, {
|
|
41
|
+
method: 'GET',
|
|
42
|
+
headers: { 'Content-Type': 'application/json' },
|
|
43
|
+
});
|
|
44
|
+
if (!res.ok) {
|
|
45
|
+
throw new Error(`check-slug API failed: ${res.status} ${res.statusText}`);
|
|
46
|
+
}
|
|
47
|
+
return res.json();
|
|
48
|
+
}
|
|
49
|
+
exports.checkSlug = checkSlug;
|
|
50
|
+
/**
|
|
51
|
+
* Upsert an agent on agirails.app after successful on-chain publish.
|
|
52
|
+
*
|
|
53
|
+
* Post-chain call, requires wallet signature. The API verifies
|
|
54
|
+
* `ownerOf(agentId) == signer` on-chain before accepting.
|
|
55
|
+
*
|
|
56
|
+
* @param params - Agent data + wallet signature
|
|
57
|
+
* @returns Upsert result with profile URL
|
|
58
|
+
*/
|
|
59
|
+
async function upsertAgent(params) {
|
|
60
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/agents`;
|
|
61
|
+
const res = await fetch(url, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { 'Content-Type': 'application/json' },
|
|
64
|
+
body: JSON.stringify(params),
|
|
65
|
+
});
|
|
66
|
+
if (!res.ok) {
|
|
67
|
+
const body = await res.text().catch(() => '');
|
|
68
|
+
throw new Error(`upsert agent API failed: ${res.status} ${res.statusText}${body ? ` — ${body}` : ''}`);
|
|
69
|
+
}
|
|
70
|
+
return res.json();
|
|
71
|
+
}
|
|
72
|
+
exports.upsertAgent = upsertAgent;
|
|
73
|
+
/**
|
|
74
|
+
* Request a claim challenge from the dashboard.
|
|
75
|
+
*
|
|
76
|
+
* @param wallet - The wallet address requesting the challenge
|
|
77
|
+
* @returns Challenge string + expiration
|
|
78
|
+
*/
|
|
79
|
+
async function getClaimChallenge(wallet) {
|
|
80
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/agents/claim/challenge`;
|
|
81
|
+
const res = await fetch(url, {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: { 'Content-Type': 'application/json' },
|
|
84
|
+
body: JSON.stringify({ wallet }),
|
|
85
|
+
});
|
|
86
|
+
if (!res.ok) {
|
|
87
|
+
throw new Error(`claim challenge API failed: ${res.status} ${res.statusText}`);
|
|
88
|
+
}
|
|
89
|
+
return res.json();
|
|
90
|
+
}
|
|
91
|
+
exports.getClaimChallenge = getClaimChallenge;
|
|
92
|
+
/**
|
|
93
|
+
* Claim an agent on the dashboard by proving wallet ownership.
|
|
94
|
+
*
|
|
95
|
+
* The API verifies `ownerOf(agentId) == signer` on-chain.
|
|
96
|
+
*
|
|
97
|
+
* @param params - Claim data with challenge signature
|
|
98
|
+
* @returns Claim result with profile URL
|
|
99
|
+
*/
|
|
100
|
+
async function claimAgent(params) {
|
|
101
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/agents/claim`;
|
|
102
|
+
const res = await fetch(url, {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
headers: { 'Content-Type': 'application/json' },
|
|
105
|
+
body: JSON.stringify(params),
|
|
106
|
+
});
|
|
107
|
+
if (!res.ok) {
|
|
108
|
+
const body = await res.text().catch(() => '');
|
|
109
|
+
throw new Error(`claim API failed: ${res.status} ${res.statusText}${body ? ` — ${body}` : ''}`);
|
|
110
|
+
}
|
|
111
|
+
return res.json();
|
|
112
|
+
}
|
|
113
|
+
exports.claimAgent = claimAgent;
|
|
114
|
+
/**
|
|
115
|
+
* Request a new claim code for an agent (proves ownership via wallet signature).
|
|
116
|
+
*
|
|
117
|
+
* @param params - Agent ID + wallet signature
|
|
118
|
+
* @returns Claim code
|
|
119
|
+
*/
|
|
120
|
+
async function requestClaimCode(params) {
|
|
121
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/agents/claim-code`;
|
|
122
|
+
const res = await fetch(url, {
|
|
123
|
+
method: 'POST',
|
|
124
|
+
headers: { 'Content-Type': 'application/json' },
|
|
125
|
+
body: JSON.stringify(params),
|
|
126
|
+
});
|
|
127
|
+
if (!res.ok) {
|
|
128
|
+
const body = await res.text().catch(() => '');
|
|
129
|
+
throw new Error(`claim-code API failed: ${res.status} ${res.statusText}${body ? ` — ${body}` : ''}`);
|
|
130
|
+
}
|
|
131
|
+
return res.json();
|
|
132
|
+
}
|
|
133
|
+
exports.requestClaimCode = requestClaimCode;
|
|
134
|
+
/**
|
|
135
|
+
* Discover published agents on agirails.app.
|
|
136
|
+
*
|
|
137
|
+
* Public read-only endpoint, no auth required. Supports filtering
|
|
138
|
+
* by capability, payment mode, search text, and sorting.
|
|
139
|
+
*
|
|
140
|
+
* @param params - Discovery filter parameters
|
|
141
|
+
* @returns Paginated list of agents with total count
|
|
142
|
+
*/
|
|
143
|
+
async function discoverAgents(params = {}) {
|
|
144
|
+
const qs = new URLSearchParams();
|
|
145
|
+
if (params.search)
|
|
146
|
+
qs.set('search', params.search);
|
|
147
|
+
if (params.capability)
|
|
148
|
+
qs.set('capability', params.capability);
|
|
149
|
+
if (params.paymentMode)
|
|
150
|
+
qs.set('paymentMode', params.paymentMode);
|
|
151
|
+
if (params.sort)
|
|
152
|
+
qs.set('sort', params.sort);
|
|
153
|
+
if (params.limit != null)
|
|
154
|
+
qs.set('limit', String(params.limit));
|
|
155
|
+
if (params.offset != null)
|
|
156
|
+
qs.set('offset', String(params.offset));
|
|
157
|
+
if (params.maxPrice != null)
|
|
158
|
+
qs.set('maxPrice', String(params.maxPrice));
|
|
159
|
+
if (params.rank)
|
|
160
|
+
qs.set('rank', params.rank);
|
|
161
|
+
if (params.priority)
|
|
162
|
+
qs.set('priority', params.priority);
|
|
163
|
+
const queryString = qs.toString();
|
|
164
|
+
const url = `${AGIRAILS_APP_BASE_URL}/api/v1/discover${queryString ? `?${queryString}` : ''}`;
|
|
165
|
+
const res = await fetch(url, {
|
|
166
|
+
method: 'GET',
|
|
167
|
+
headers: { 'Accept': 'application/json' },
|
|
168
|
+
});
|
|
169
|
+
if (!res.ok) {
|
|
170
|
+
throw new Error(`discover API failed: ${res.status} ${res.statusText}`);
|
|
171
|
+
}
|
|
172
|
+
return res.json();
|
|
173
|
+
}
|
|
174
|
+
exports.discoverAgents = discoverAgents;
|
|
175
|
+
//# sourceMappingURL=agirailsApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agirailsApp.js","sourceRoot":"","sources":["../../src/api/agirailsApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npx agirails — One Command Entry Point
|
|
3
|
+
*
|
|
4
|
+
* 60-second quickstart: ask 3 questions → generate {slug}.md → mock earning loop → receipt.
|
|
5
|
+
* Re-entrant: if identity already exists, skips onboarding and runs test.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/agirails
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=agirails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agirails.d.ts","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* npx agirails — One Command Entry Point
|
|
4
|
+
*
|
|
5
|
+
* 60-second quickstart: ask 3 questions → generate {slug}.md → mock earning loop → receipt.
|
|
6
|
+
* Re-entrant: if identity already exists, skips onboarding and runs test.
|
|
7
|
+
*
|
|
8
|
+
* @module cli/agirails
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
27
|
+
if (mod && mod.__esModule) return mod;
|
|
28
|
+
var result = {};
|
|
29
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
30
|
+
__setModuleDefault(result, mod);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const readline = __importStar(require("readline"));
|
|
36
|
+
const ethers_1 = require("ethers");
|
|
37
|
+
const output_1 = require("./utils/output");
|
|
38
|
+
const config_1 = require("./utils/config");
|
|
39
|
+
const config_2 = require("./utils/config");
|
|
40
|
+
const slugUtils_1 = require("../config/slugUtils");
|
|
41
|
+
const test_1 = require("./commands/test");
|
|
42
|
+
const slugUtils_2 = require("../config/slugUtils");
|
|
43
|
+
const agirailsmd_1 = require("../config/agirailsmd");
|
|
44
|
+
const defaults_1 = require("../config/defaults");
|
|
45
|
+
const commander_1 = require("commander");
|
|
46
|
+
const find_1 = require("./commands/find");
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// readline helper
|
|
49
|
+
// ============================================================================
|
|
50
|
+
function ask(rl, question) {
|
|
51
|
+
return new Promise((resolve) => rl.question(question, resolve));
|
|
52
|
+
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Service type menu
|
|
55
|
+
// ============================================================================
|
|
56
|
+
const SERVICE_MENU = defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES.map((s, i) => ` ${i + 1}. ${s}`).join('\n');
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Main
|
|
59
|
+
// ============================================================================
|
|
60
|
+
async function main() {
|
|
61
|
+
const args = process.argv.slice(2);
|
|
62
|
+
const jsonMode = args.includes('--json');
|
|
63
|
+
const quietMode = args.includes('-q') || args.includes('--quiet');
|
|
64
|
+
const output = new output_1.Output(jsonMode ? 'json' : quietMode ? 'quiet' : 'human');
|
|
65
|
+
try {
|
|
66
|
+
// Re-entrant: if identity exists, skip onboarding
|
|
67
|
+
const existingIdentity = (0, config_1.resolveIdentityPath)();
|
|
68
|
+
if (existingIdentity) {
|
|
69
|
+
output.print(output_1.fmt.dim('Identity found: ' + existingIdentity));
|
|
70
|
+
output.print('');
|
|
71
|
+
await (0, test_1.runTest)(output);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Banner
|
|
75
|
+
output.print('');
|
|
76
|
+
output.print(output_1.fmt.bold('AGIRAILS') + output_1.fmt.dim(' — your agent earns in 60 seconds'));
|
|
77
|
+
output.print('');
|
|
78
|
+
// Interactive questions
|
|
79
|
+
const rl = readline.createInterface({
|
|
80
|
+
input: process.stdin,
|
|
81
|
+
output: process.stdout,
|
|
82
|
+
});
|
|
83
|
+
try {
|
|
84
|
+
// Q1: Agent name
|
|
85
|
+
const name = await ask(rl, output_1.fmt.cyan('? ') + 'What does your agent do? (name) ' + output_1.fmt.dim('> '));
|
|
86
|
+
if (!name.trim()) {
|
|
87
|
+
output.error('Agent name is required.');
|
|
88
|
+
process.exit(output_1.ExitCode.INVALID_INPUT);
|
|
89
|
+
}
|
|
90
|
+
// Q2: Service type
|
|
91
|
+
output.print('');
|
|
92
|
+
output.print(output_1.fmt.dim('Service types:'));
|
|
93
|
+
output.print(SERVICE_MENU);
|
|
94
|
+
const serviceInput = await ask(rl, output_1.fmt.cyan('? ') + 'Pick a service type ' + output_1.fmt.dim('[1-7, or custom] > '));
|
|
95
|
+
const serviceIdx = parseInt(serviceInput, 10);
|
|
96
|
+
const service = (serviceIdx >= 1 && serviceIdx <= defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES.length)
|
|
97
|
+
? defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES[serviceIdx - 1]
|
|
98
|
+
: serviceInput.trim().toLowerCase().replace(/[^a-z0-9-]+/g, '-') || 'automation';
|
|
99
|
+
// Q3: Base price
|
|
100
|
+
const priceInput = await ask(rl, output_1.fmt.cyan('? ') + 'Base price in USDC? ' + output_1.fmt.dim('[default: 1.00] > '));
|
|
101
|
+
const price = parseFloat(priceInput) || 1.00;
|
|
102
|
+
rl.close();
|
|
103
|
+
// Generate and validate slug
|
|
104
|
+
const slug = (0, slugUtils_2.generateSlug)(name.trim());
|
|
105
|
+
const slugError = (0, slugUtils_1.validateSlug)(slug);
|
|
106
|
+
if (slugError) {
|
|
107
|
+
output.error(`Invalid agent name: ${slugError}`);
|
|
108
|
+
process.exit(output_1.ExitCode.INVALID_INPUT);
|
|
109
|
+
}
|
|
110
|
+
// Build frontmatter
|
|
111
|
+
const frontmatter = {
|
|
112
|
+
name: name.trim(),
|
|
113
|
+
slug,
|
|
114
|
+
version: '1.0.0',
|
|
115
|
+
network: defaults_1.V4_DEFAULTS.network,
|
|
116
|
+
services: [service],
|
|
117
|
+
pricing: {
|
|
118
|
+
base: price,
|
|
119
|
+
currency: defaults_1.V4_DEFAULTS.pricing.currency,
|
|
120
|
+
unit: defaults_1.V4_DEFAULTS.pricing.unit,
|
|
121
|
+
},
|
|
122
|
+
sla: { ...defaults_1.V4_DEFAULTS.sla },
|
|
123
|
+
payment: { modes: [...defaults_1.V4_DEFAULTS.payment.modes] },
|
|
124
|
+
};
|
|
125
|
+
// Build body
|
|
126
|
+
const body = `\n# ${name.trim()}\n\nDescribe what your agent does here.\n\n## How to Request This Service\n\nExplain how clients should structure their requests.\n`;
|
|
127
|
+
// Write {slug}.md (guard against overwriting existing files)
|
|
128
|
+
const filename = `${slug}.md`;
|
|
129
|
+
if (fs.existsSync(filename)) {
|
|
130
|
+
output.error(`File already exists: ${filename}. Remove it or choose a different name.`);
|
|
131
|
+
process.exit(output_1.ExitCode.INVALID_INPUT);
|
|
132
|
+
}
|
|
133
|
+
const content = (0, agirailsmd_1.serializeAgirailsMd)(frontmatter, body);
|
|
134
|
+
fs.writeFileSync(filename, content, 'utf-8');
|
|
135
|
+
output.print('');
|
|
136
|
+
output.success(`Created ${output_1.fmt.bold(filename)}`);
|
|
137
|
+
// Bootstrap .actp/ or backfill identity pointer
|
|
138
|
+
if (!(0, config_1.isInitialized)()) {
|
|
139
|
+
const randomAddress = ethers_1.ethers.Wallet.createRandom().address;
|
|
140
|
+
(0, config_1.saveConfig)({
|
|
141
|
+
...config_1.CONFIG_DEFAULTS,
|
|
142
|
+
mode: 'mock',
|
|
143
|
+
address: randomAddress,
|
|
144
|
+
identity: filename,
|
|
145
|
+
});
|
|
146
|
+
(0, config_2.addToGitignore)();
|
|
147
|
+
output.success('Initialized .actp/ (mock mode)');
|
|
148
|
+
}
|
|
149
|
+
else if (!(0, config_1.resolveIdentityPath)()) {
|
|
150
|
+
// Existing config without identity pointer — backfill it
|
|
151
|
+
(0, config_1.updateConfig)({ identity: filename });
|
|
152
|
+
output.success('Updated .actp/config.json with identity pointer');
|
|
153
|
+
}
|
|
154
|
+
// Run mock earning loop
|
|
155
|
+
output.print('');
|
|
156
|
+
await (0, test_1.runTest)(output);
|
|
157
|
+
// Next steps
|
|
158
|
+
output.print('');
|
|
159
|
+
output.section('Next Steps');
|
|
160
|
+
output.print(` 1. Edit your agent: ${output_1.fmt.bold(filename)}`);
|
|
161
|
+
output.print(` 2. Go live on testnet: ${output_1.fmt.bold('actp publish')}`);
|
|
162
|
+
output.print(` 3. Your agent page: ${output_1.fmt.cyan(`agirails.app/a/${slug}`)} ${output_1.fmt.dim('(after publish)')}`);
|
|
163
|
+
output.print('');
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
rl.close();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
171
|
+
output.error(message);
|
|
172
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ============================================================================
|
|
176
|
+
// Subcommand routing: agirails find [query] [options]
|
|
177
|
+
// ============================================================================
|
|
178
|
+
const subCmd = process.argv[2];
|
|
179
|
+
if (subCmd === 'find') {
|
|
180
|
+
const sub = new commander_1.Command('agirails');
|
|
181
|
+
sub.addCommand((0, find_1.createFindCommand)());
|
|
182
|
+
sub.parse(process.argv);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
main();
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=agirails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agirails.js","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autopublish Command — Watch AGIRAILS.md and auto-publish on changes.
|
|
3
|
+
*
|
|
4
|
+
* Watches the specified file (or auto-detected AGIRAILS.md) for changes,
|
|
5
|
+
* debounces (2s), validates the config hash, and re-publishes if changed.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This is NOT `actp watch` (which watches transaction state).
|
|
8
|
+
*
|
|
9
|
+
* @module cli/commands/autopublish
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
export declare function createAutopublishCommand(): Command;
|
|
13
|
+
//# sourceMappingURL=autopublish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autopublish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/autopublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,wBAAwB,IAAI,OAAO,CA2BlD"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Autopublish Command — Watch AGIRAILS.md and auto-publish on changes.
|
|
4
|
+
*
|
|
5
|
+
* Watches the specified file (or auto-detected AGIRAILS.md) for changes,
|
|
6
|
+
* debounces (2s), validates the config hash, and re-publishes if changed.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This is NOT `actp watch` (which watches transaction state).
|
|
9
|
+
*
|
|
10
|
+
* @module cli/commands/autopublish
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.createAutopublishCommand = void 0;
|
|
14
|
+
const commander_1 = require("commander");
|
|
15
|
+
const output_1 = require("../utils/output");
|
|
16
|
+
const client_1 = require("../utils/client");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const fs_1 = require("fs");
|
|
19
|
+
const agirailsmd_1 = require("../../config/agirailsmd");
|
|
20
|
+
const child_process_1 = require("child_process");
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Command Definition
|
|
23
|
+
// ============================================================================
|
|
24
|
+
function createAutopublishCommand() {
|
|
25
|
+
const cmd = new commander_1.Command('autopublish')
|
|
26
|
+
.description('Watch AGIRAILS.md and auto-publish on changes')
|
|
27
|
+
.argument('[path]', 'Path to AGIRAILS.md or {slug}.md')
|
|
28
|
+
.option('--no-publish', 'Validate only, do not publish')
|
|
29
|
+
.option('--debounce <ms>', 'Debounce interval in ms', '2000')
|
|
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 runAutopublish(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.createAutopublishCommand = createAutopublishCommand;
|
|
50
|
+
async function runAutopublish(filePath, options, output) {
|
|
51
|
+
// Resolve file path
|
|
52
|
+
const resolvedPath = resolveFilePath(filePath);
|
|
53
|
+
if (!resolvedPath) {
|
|
54
|
+
output.errorResult({
|
|
55
|
+
code: 'FILE_NOT_FOUND',
|
|
56
|
+
message: filePath
|
|
57
|
+
? `File not found: ${filePath}`
|
|
58
|
+
: 'No AGIRAILS.md found in current directory',
|
|
59
|
+
});
|
|
60
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
61
|
+
}
|
|
62
|
+
const debounceMs = Math.max(500, parseInt(options.debounce ?? '2000', 10) || 2000);
|
|
63
|
+
// Compute initial hash
|
|
64
|
+
let lastHash = computeHash(resolvedPath);
|
|
65
|
+
const fileName = (0, path_1.basename)(resolvedPath);
|
|
66
|
+
output.print(`Watching ${output_1.fmt.cyan(fileName)} for changes (debounce: ${debounceMs}ms)...`);
|
|
67
|
+
if (!options.publish) {
|
|
68
|
+
output.print(output_1.fmt.dim(' --no-publish: validate only, will not publish'));
|
|
69
|
+
}
|
|
70
|
+
output.print(output_1.fmt.dim(` Initial hash: ${lastHash}`));
|
|
71
|
+
output.print(output_1.fmt.dim(' Press Ctrl+C to stop'));
|
|
72
|
+
output.blank();
|
|
73
|
+
// Use fs.watchFile (polling) for cross-platform reliability.
|
|
74
|
+
// fs.watch has issues with atomic writes on macOS (editors write to tmp + rename).
|
|
75
|
+
let debounceTimer = null;
|
|
76
|
+
(0, fs_1.watchFile)(resolvedPath, { interval: 500 }, () => {
|
|
77
|
+
if (debounceTimer)
|
|
78
|
+
clearTimeout(debounceTimer);
|
|
79
|
+
debounceTimer = setTimeout(async () => {
|
|
80
|
+
try {
|
|
81
|
+
const newHash = computeHash(resolvedPath);
|
|
82
|
+
if (newHash === lastHash) {
|
|
83
|
+
// File touched but content hash unchanged (e.g. only metadata/mtime changed)
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const timestamp = new Date().toISOString().slice(11, 19);
|
|
87
|
+
output.print(`${output_1.fmt.dim(timestamp)} Change detected — hash: ${output_1.fmt.cyan(newHash.slice(0, 16))}...`);
|
|
88
|
+
lastHash = newHash;
|
|
89
|
+
if (!options.publish) {
|
|
90
|
+
output.success(' Validated (--no-publish)');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Invoke actp publish as subprocess
|
|
94
|
+
output.print(' Publishing...');
|
|
95
|
+
const exitCode = await runPublishSubprocess(resolvedPath);
|
|
96
|
+
if (exitCode === 0) {
|
|
97
|
+
output.success(' Published successfully');
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
output.print(` ${output_1.fmt.yellow('Publish failed')} (exit code ${exitCode})`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
output.print(` ${output_1.fmt.yellow('Error:')} ${err instanceof Error ? err.message : String(err)}`);
|
|
105
|
+
}
|
|
106
|
+
}, debounceMs);
|
|
107
|
+
});
|
|
108
|
+
// Keep process alive until Ctrl+C
|
|
109
|
+
process.on('SIGINT', () => {
|
|
110
|
+
(0, fs_1.unwatchFile)(resolvedPath);
|
|
111
|
+
if (debounceTimer)
|
|
112
|
+
clearTimeout(debounceTimer);
|
|
113
|
+
output.blank();
|
|
114
|
+
output.print('Stopped watching.');
|
|
115
|
+
process.exit(0);
|
|
116
|
+
});
|
|
117
|
+
// Block forever (watchFile is non-blocking)
|
|
118
|
+
await new Promise(() => { });
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Helpers
|
|
122
|
+
// ============================================================================
|
|
123
|
+
function resolveFilePath(filePath) {
|
|
124
|
+
if (filePath) {
|
|
125
|
+
const resolved = (0, path_1.resolve)(filePath);
|
|
126
|
+
return (0, fs_1.existsSync)(resolved) ? resolved : null;
|
|
127
|
+
}
|
|
128
|
+
// Auto-detect: AGIRAILS.md in cwd
|
|
129
|
+
const agirailsMd = (0, path_1.resolve)(process.cwd(), 'AGIRAILS.md');
|
|
130
|
+
if ((0, fs_1.existsSync)(agirailsMd))
|
|
131
|
+
return agirailsMd;
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
function computeHash(filePath) {
|
|
135
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
136
|
+
const result = (0, agirailsmd_1.computeConfigHash)(content);
|
|
137
|
+
return result.configHash;
|
|
138
|
+
}
|
|
139
|
+
function runPublishSubprocess(filePath) {
|
|
140
|
+
return new Promise((res) => {
|
|
141
|
+
const actpBin = process.argv[1];
|
|
142
|
+
const args = ['publish', filePath, '--quiet'];
|
|
143
|
+
(0, child_process_1.execFile)(process.argv[0], [actpBin, ...args], { timeout: 60000 }, (error) => {
|
|
144
|
+
if (error && 'code' in error && typeof error.code === 'number') {
|
|
145
|
+
res(error.code);
|
|
146
|
+
}
|
|
147
|
+
else if (error) {
|
|
148
|
+
res(1);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
res(0);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=autopublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autopublish.js","sourceRoot":"","sources":["../../../src/cli/commands/autopublish.ts"],"names":[],"mappings":"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"}
|
|
@@ -330,7 +330,7 @@ function parseCommand(command) {
|
|
|
330
330
|
/**
|
|
331
331
|
* Execute a command (by spawning a child process)
|
|
332
332
|
*
|
|
333
|
-
*
|
|
333
|
+
* Security: No longer uses shell interpolation.
|
|
334
334
|
* Arguments are passed as an array directly to the actp binary.
|
|
335
335
|
* This prevents command injection attacks.
|
|
336
336
|
*/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claim-Code Command — Regenerate a claim code for dashboard linking.
|
|
3
|
+
*
|
|
4
|
+
* Signs a message with the agent's keystore wallet, sends to server,
|
|
5
|
+
* gets a fresh claim code. Use when the original code expired or was lost.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/commands/claim-code
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function createClaimCodeCommand(): Command;
|
|
11
|
+
//# sourceMappingURL=claim-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-code.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/claim-code.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,sBAAsB,IAAI,OAAO,CAyBhD"}
|