@clawnch/clawtomaton 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.
- package/README.md +231 -0
- package/constitution.md +15 -0
- package/dist/agent/index.d.ts +43 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +315 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/prompt.d.ts +24 -0
- package/dist/agent/prompt.d.ts.map +1 -0
- package/dist/agent/prompt.js +137 -0
- package/dist/agent/prompt.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +303 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +18 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/heartbeat/index.d.ts +38 -0
- package/dist/heartbeat/index.d.ts.map +1 -0
- package/dist/heartbeat/index.js +127 -0
- package/dist/heartbeat/index.js.map +1 -0
- package/dist/identity/index.d.ts +39 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +134 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/market/index.d.ts +73 -0
- package/dist/market/index.d.ts.map +1 -0
- package/dist/market/index.js +205 -0
- package/dist/market/index.js.map +1 -0
- package/dist/self-mod/index.d.ts +30 -0
- package/dist/self-mod/index.d.ts.map +1 -0
- package/dist/self-mod/index.js +83 -0
- package/dist/self-mod/index.js.map +1 -0
- package/dist/skills/check-balance.d.ts +7 -0
- package/dist/skills/check-balance.d.ts.map +1 -0
- package/dist/skills/check-balance.js +46 -0
- package/dist/skills/check-balance.js.map +1 -0
- package/dist/skills/check-stats.d.ts +6 -0
- package/dist/skills/check-stats.d.ts.map +1 -0
- package/dist/skills/check-stats.js +49 -0
- package/dist/skills/check-stats.js.map +1 -0
- package/dist/skills/claim-fees.d.ts +14 -0
- package/dist/skills/claim-fees.d.ts.map +1 -0
- package/dist/skills/claim-fees.js +109 -0
- package/dist/skills/claim-fees.js.map +1 -0
- package/dist/skills/conway.d.ts +16 -0
- package/dist/skills/conway.d.ts.map +1 -0
- package/dist/skills/conway.js +97 -0
- package/dist/skills/conway.js.map +1 -0
- package/dist/skills/deploy.d.ts +19 -0
- package/dist/skills/deploy.d.ts.map +1 -0
- package/dist/skills/deploy.js +167 -0
- package/dist/skills/deploy.js.map +1 -0
- package/dist/skills/edit-soul.d.ts +10 -0
- package/dist/skills/edit-soul.d.ts.map +1 -0
- package/dist/skills/edit-soul.js +68 -0
- package/dist/skills/edit-soul.js.map +1 -0
- package/dist/skills/index.d.ts +21 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +59 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/shell.d.ts +12 -0
- package/dist/skills/shell.d.ts.map +1 -0
- package/dist/skills/shell.js +66 -0
- package/dist/skills/shell.js.map +1 -0
- package/dist/skills/swap.d.ts +6 -0
- package/dist/skills/swap.d.ts.map +1 -0
- package/dist/skills/swap.js +87 -0
- package/dist/skills/swap.js.map +1 -0
- package/dist/skills/transfer.d.ts +7 -0
- package/dist/skills/transfer.d.ts.map +1 -0
- package/dist/skills/transfer.js +82 -0
- package/dist/skills/transfer.js.map +1 -0
- package/dist/state/index.d.ts +44 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +266 -0
- package/dist/state/index.js.map +1 -0
- package/dist/survival/index.d.ts +49 -0
- package/dist/survival/index.d.ts.map +1 -0
- package/dist/survival/index.js +151 -0
- package/dist/survival/index.js.map +1 -0
- package/dist/types.d.ts +132 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: conway — Conway Terminal integration for domains and VMs.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the `conway-terminal` npm package. Requires a Conway API key
|
|
5
|
+
* in the agent's config. Capabilities:
|
|
6
|
+
* - Buy domains
|
|
7
|
+
* - Provision VMs (for hosting frontends, APIs, etc.)
|
|
8
|
+
* - Check domain availability
|
|
9
|
+
* - List owned resources
|
|
10
|
+
*
|
|
11
|
+
* This is optional infrastructure — agents don't need it to function,
|
|
12
|
+
* but it lets them build real web presence.
|
|
13
|
+
*/
|
|
14
|
+
export const conwaySkill = {
|
|
15
|
+
name: 'conway',
|
|
16
|
+
description: 'Conway Terminal: buy domains, provision VMs, manage infrastructure. Requires Conway API key.',
|
|
17
|
+
parameters: [
|
|
18
|
+
{
|
|
19
|
+
name: 'action',
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Action to perform: "check_domain", "buy_domain", "provision_vm", "list_resources".',
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'domain',
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Domain name (for check_domain/buy_domain actions).',
|
|
28
|
+
required: false,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'vmSpec',
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'VM specification as JSON string (for provision_vm). E.g. {"size":"small","region":"us-east"}.',
|
|
34
|
+
required: false,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
execute: async (params, ctx) => {
|
|
38
|
+
try {
|
|
39
|
+
// Conway integration is lazy-loaded since it's optional
|
|
40
|
+
let conway;
|
|
41
|
+
try {
|
|
42
|
+
// @ts-ignore — conway-terminal is an optional dependency
|
|
43
|
+
conway = await import('conway-terminal');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {
|
|
47
|
+
callId: '',
|
|
48
|
+
success: false,
|
|
49
|
+
result: null,
|
|
50
|
+
error: 'conway-terminal package not installed. Run: npm install conway-terminal',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const apiKey = process.env.CONWAY_API_KEY;
|
|
54
|
+
if (!apiKey) {
|
|
55
|
+
return {
|
|
56
|
+
callId: '',
|
|
57
|
+
success: false,
|
|
58
|
+
result: null,
|
|
59
|
+
error: 'CONWAY_API_KEY not set. Conway Terminal features are unavailable.',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const action = params.action;
|
|
63
|
+
const client = new conway.ConwayClient({ apiKey });
|
|
64
|
+
switch (action) {
|
|
65
|
+
case 'check_domain': {
|
|
66
|
+
if (!params.domain) {
|
|
67
|
+
return { callId: '', success: false, result: null, error: 'domain parameter required for check_domain' };
|
|
68
|
+
}
|
|
69
|
+
const result = await client.checkDomain(params.domain);
|
|
70
|
+
return { callId: '', success: true, result: JSON.stringify(result, null, 2) };
|
|
71
|
+
}
|
|
72
|
+
case 'buy_domain': {
|
|
73
|
+
if (!params.domain) {
|
|
74
|
+
return { callId: '', success: false, result: null, error: 'domain parameter required for buy_domain' };
|
|
75
|
+
}
|
|
76
|
+
const result = await client.buyDomain(params.domain);
|
|
77
|
+
return { callId: '', success: true, result: JSON.stringify(result, null, 2) };
|
|
78
|
+
}
|
|
79
|
+
case 'provision_vm': {
|
|
80
|
+
const spec = params.vmSpec ? JSON.parse(params.vmSpec) : { size: 'small' };
|
|
81
|
+
const result = await client.provisionVM(spec);
|
|
82
|
+
return { callId: '', success: true, result: JSON.stringify(result, null, 2) };
|
|
83
|
+
}
|
|
84
|
+
case 'list_resources': {
|
|
85
|
+
const result = await client.listResources();
|
|
86
|
+
return { callId: '', success: true, result: JSON.stringify(result, null, 2) };
|
|
87
|
+
}
|
|
88
|
+
default:
|
|
89
|
+
return { callId: '', success: false, result: null, error: `Unknown Conway action: "${action}". Valid: check_domain, buy_domain, provision_vm, list_resources.` };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=conway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conway.js","sourceRoot":"","sources":["../../src/skills/conway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,8FAA8F;IAC3G,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+FAA+F;YAC5G,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAuB,EAAE;QAClD,IAAI,CAAC;YACH,wDAAwD;YACxD,IAAI,MAAW,CAAC;YAChB,IAAI,CAAC;gBACH,yDAAyD;gBACzD,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,yEAAyE;iBACjF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,mEAAmE;iBAC3E,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAEnD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;oBAC3G,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;oBACjE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChF,CAAC;gBAED,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;oBACzG,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;oBAC/D,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChF,CAAC;gBAED,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oBACrF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChF,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC5C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChF,CAAC;gBAED;oBACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,MAAM,mEAAmE,EAAE,CAAC;YACrK,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/G,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: deploy_token — Deploy a token via Clawncher API with strategic defaults.
|
|
3
|
+
*
|
|
4
|
+
* Not just "launch a token." This skill enforces sane configuration:
|
|
5
|
+
* - 100% fee rewards to agent (agent earns from its own token's volume)
|
|
6
|
+
* - Fee preference "Both" (collect both WETH and own token)
|
|
7
|
+
* - Optional vault (lock a % of supply for future use — community incentives, partnerships)
|
|
8
|
+
* - Optional dev buy (agent buys its own token to seed initial liquidity depth)
|
|
9
|
+
* - Captcha solved automatically by SDK
|
|
10
|
+
* - Single attempt, no retry
|
|
11
|
+
*
|
|
12
|
+
* The agent should only deploy when it has:
|
|
13
|
+
* - A clear project concept (name, symbol, narrative)
|
|
14
|
+
* - Enough ETH for gas + optional dev buy
|
|
15
|
+
* - A plan for what to do after deployment
|
|
16
|
+
*/
|
|
17
|
+
import type { SkillDefinition } from '../types.js';
|
|
18
|
+
export declare const deployTokenSkill: SkillDefinition;
|
|
19
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/skills/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAE7E,eAAO,MAAM,gBAAgB,EAAE,eA6J9B,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: deploy_token — Deploy a token via Clawncher API with strategic defaults.
|
|
3
|
+
*
|
|
4
|
+
* Not just "launch a token." This skill enforces sane configuration:
|
|
5
|
+
* - 100% fee rewards to agent (agent earns from its own token's volume)
|
|
6
|
+
* - Fee preference "Both" (collect both WETH and own token)
|
|
7
|
+
* - Optional vault (lock a % of supply for future use — community incentives, partnerships)
|
|
8
|
+
* - Optional dev buy (agent buys its own token to seed initial liquidity depth)
|
|
9
|
+
* - Captcha solved automatically by SDK
|
|
10
|
+
* - Single attempt, no retry
|
|
11
|
+
*
|
|
12
|
+
* The agent should only deploy when it has:
|
|
13
|
+
* - A clear project concept (name, symbol, narrative)
|
|
14
|
+
* - Enough ETH for gas + optional dev buy
|
|
15
|
+
* - A plan for what to do after deployment
|
|
16
|
+
*/
|
|
17
|
+
import { ClawnchApiDeployer } from '@clawnch/clawncher-sdk';
|
|
18
|
+
import { formatEther } from 'viem';
|
|
19
|
+
export const deployTokenSkill = {
|
|
20
|
+
name: 'deploy_token',
|
|
21
|
+
description: [
|
|
22
|
+
'Deploy a new ERC-20 token on Base via Clawncher with verified badge.',
|
|
23
|
+
'Agent receives 100% of LP fees. Single attempt, no retry.',
|
|
24
|
+
'Requires: enough ETH for gas (~0.0001 ETH). Optional: dev buy ETH, vault %.',
|
|
25
|
+
].join(' '),
|
|
26
|
+
parameters: [
|
|
27
|
+
{
|
|
28
|
+
name: 'name',
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'Token name.',
|
|
31
|
+
required: true,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'symbol',
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Token symbol (uppercase, 3-10 chars).',
|
|
37
|
+
required: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'image',
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Image URL or base64 for the token logo.',
|
|
43
|
+
required: false,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'description',
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Token description / narrative.',
|
|
49
|
+
required: false,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'devBuyEth',
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'ETH to spend buying own token at launch (e.g. "0.005"). Creates initial depth. Sent from agent wallet.',
|
|
55
|
+
required: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'vaultPct',
|
|
59
|
+
type: 'number',
|
|
60
|
+
description: 'Percentage of token supply to lock in vault (1-90). Locked for 30 days, then vests over 90 days. For future community use.',
|
|
61
|
+
required: false,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'bypassRateLimit',
|
|
65
|
+
type: 'boolean',
|
|
66
|
+
description: 'Burn 10,000 $CLAWNCH to bypass 1-deploy-per-hour rate limit. Usually not needed.',
|
|
67
|
+
required: false,
|
|
68
|
+
default: false,
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
execute: async (params, ctx) => {
|
|
72
|
+
try {
|
|
73
|
+
// Guard: one token per agent
|
|
74
|
+
if (ctx.identity.tokenAddress) {
|
|
75
|
+
return {
|
|
76
|
+
callId: '',
|
|
77
|
+
success: false,
|
|
78
|
+
result: null,
|
|
79
|
+
error: `Already deployed $${ctx.identity.tokenSymbol} (${ctx.identity.tokenAddress}). One token per agent.`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const { buildClients } = await import('../identity/index.js');
|
|
83
|
+
const rpcUrl = process.env.BASE_RPC_URL ?? 'https://mainnet.base.org';
|
|
84
|
+
const { publicClient, walletClient } = buildClients(ctx.identity, rpcUrl);
|
|
85
|
+
// Pre-flight: check ETH balance
|
|
86
|
+
const ethBalance = await publicClient.getBalance({ address: ctx.identity.address });
|
|
87
|
+
const devBuyEth = params.devBuyEth;
|
|
88
|
+
const devBuyWei = devBuyEth ? BigInt(Math.floor(parseFloat(devBuyEth) * 1e18)) : 0n;
|
|
89
|
+
const minRequired = BigInt('200000000000000') + devBuyWei; // 0.0002 ETH gas + dev buy
|
|
90
|
+
if (ethBalance < minRequired) {
|
|
91
|
+
return {
|
|
92
|
+
callId: '',
|
|
93
|
+
success: false,
|
|
94
|
+
result: null,
|
|
95
|
+
error: `Insufficient ETH. Have ${formatEther(ethBalance)}, need at least ${formatEther(minRequired)} (gas + dev buy).`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const deployer = new ClawnchApiDeployer({
|
|
99
|
+
apiKey: ctx.identity.apiKey,
|
|
100
|
+
wallet: walletClient,
|
|
101
|
+
publicClient: publicClient,
|
|
102
|
+
network: 'mainnet',
|
|
103
|
+
});
|
|
104
|
+
// Build deploy config
|
|
105
|
+
const vaultPct = params.vaultPct;
|
|
106
|
+
const deployConfig = {
|
|
107
|
+
name: params.name,
|
|
108
|
+
symbol: params.symbol,
|
|
109
|
+
image: params.image,
|
|
110
|
+
description: params.description,
|
|
111
|
+
// 100% fees to agent, both WETH and own token
|
|
112
|
+
rewards: {
|
|
113
|
+
recipients: [
|
|
114
|
+
{
|
|
115
|
+
recipient: ctx.identity.address,
|
|
116
|
+
admin: ctx.identity.address,
|
|
117
|
+
bps: 10000,
|
|
118
|
+
feePreference: 'Both',
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
bypassRateLimit: params.bypassRateLimit ?? false,
|
|
123
|
+
};
|
|
124
|
+
// Dev buy: agent buys its own token at launch
|
|
125
|
+
if (devBuyEth) {
|
|
126
|
+
deployConfig.devBuy = {
|
|
127
|
+
ethAmount: devBuyEth,
|
|
128
|
+
recipient: ctx.identity.address,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Vault: lock token supply for future community use
|
|
132
|
+
if (vaultPct && vaultPct >= 1 && vaultPct <= 90) {
|
|
133
|
+
deployConfig.vault = {
|
|
134
|
+
percentage: vaultPct,
|
|
135
|
+
lockupDuration: 30 * 24 * 60 * 60, // 30 days locked
|
|
136
|
+
vestingDuration: 90 * 24 * 60 * 60, // 90 days vesting after lockup
|
|
137
|
+
recipient: ctx.identity.address,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const result = await deployer.deploy(deployConfig);
|
|
141
|
+
const lines = [
|
|
142
|
+
`Token deployed!`,
|
|
143
|
+
` Name: ${params.name}`,
|
|
144
|
+
` Symbol: $${params.symbol}`,
|
|
145
|
+
` Address: ${result.tokenAddress}`,
|
|
146
|
+
` TX: ${result.txHash}`,
|
|
147
|
+
` Fee recipient: ${ctx.identity.address} (100%, Both)`,
|
|
148
|
+
];
|
|
149
|
+
if (devBuyEth) {
|
|
150
|
+
lines.push(` Dev buy: ${devBuyEth} ETH`);
|
|
151
|
+
}
|
|
152
|
+
if (vaultPct) {
|
|
153
|
+
lines.push(` Vault: ${vaultPct}% locked (30d lockup, 90d vest)`);
|
|
154
|
+
}
|
|
155
|
+
if (result.clawnchBurned && result.clawnchBurned !== '0') {
|
|
156
|
+
lines.push(` $CLAWNCH burned for rate limit bypass: ${result.clawnchBurned}`);
|
|
157
|
+
}
|
|
158
|
+
lines.push('');
|
|
159
|
+
lines.push('Next steps: monitor volume, let fees accumulate, claim when profitable.');
|
|
160
|
+
return { callId: '', success: true, result: lines.join('\n') };
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/skills/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: edit_soul — Read or update the agent's SOUL.md.
|
|
3
|
+
*
|
|
4
|
+
* SOUL.md is the agent's self-authored identity document. It can contain
|
|
5
|
+
* strategy notes, personality, goals, memory, and anything the agent
|
|
6
|
+
* wants to persist across sessions.
|
|
7
|
+
*/
|
|
8
|
+
import type { SkillDefinition } from '../types.js';
|
|
9
|
+
export declare const editSoulSkill: SkillDefinition;
|
|
10
|
+
//# sourceMappingURL=edit-soul.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-soul.d.ts","sourceRoot":"","sources":["../../src/skills/edit-soul.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAE7E,eAAO,MAAM,aAAa,EAAE,eA8D3B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: edit_soul — Read or update the agent's SOUL.md.
|
|
3
|
+
*
|
|
4
|
+
* SOUL.md is the agent's self-authored identity document. It can contain
|
|
5
|
+
* strategy notes, personality, goals, memory, and anything the agent
|
|
6
|
+
* wants to persist across sessions.
|
|
7
|
+
*/
|
|
8
|
+
export const editSoulSkill = {
|
|
9
|
+
name: 'edit_soul',
|
|
10
|
+
description: 'Read or update the SOUL.md document — the agent\'s persistent self-authored identity and memory.',
|
|
11
|
+
parameters: [
|
|
12
|
+
{
|
|
13
|
+
name: 'action',
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: '"read" to view current SOUL.md, "write" to replace it, "append" to add to the end.',
|
|
16
|
+
required: true,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'content',
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'New content for write/append actions.',
|
|
22
|
+
required: false,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
execute: async (params, ctx) => {
|
|
26
|
+
try {
|
|
27
|
+
// We need the state store — it's injected via a closure at registration time
|
|
28
|
+
// For now, use the soul field from the context
|
|
29
|
+
const action = params.action;
|
|
30
|
+
switch (action) {
|
|
31
|
+
case 'read':
|
|
32
|
+
return {
|
|
33
|
+
callId: '',
|
|
34
|
+
success: true,
|
|
35
|
+
result: ctx.soul || '(SOUL.md is empty)',
|
|
36
|
+
};
|
|
37
|
+
case 'write': {
|
|
38
|
+
if (!params.content) {
|
|
39
|
+
return { callId: '', success: false, result: null, error: 'content parameter required for write action' };
|
|
40
|
+
}
|
|
41
|
+
// The agent loop will persist this via state.setSoul()
|
|
42
|
+
return {
|
|
43
|
+
callId: '',
|
|
44
|
+
success: true,
|
|
45
|
+
result: `SOUL.md updated (${params.content.length} chars). Will be persisted after this turn.`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
case 'append': {
|
|
49
|
+
if (!params.content) {
|
|
50
|
+
return { callId: '', success: false, result: null, error: 'content parameter required for append action' };
|
|
51
|
+
}
|
|
52
|
+
const newSoul = ctx.soul + '\n' + params.content;
|
|
53
|
+
return {
|
|
54
|
+
callId: '',
|
|
55
|
+
success: true,
|
|
56
|
+
result: `Appended to SOUL.md (now ${newSoul.length} chars). Will be persisted after this turn.`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
return { callId: '', success: false, result: null, error: `Unknown action: "${action}". Valid: read, write, append.` };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=edit-soul.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-soul.js","sourceRoot":"","sources":["../../src/skills/edit-soul.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,kGAAkG;IAC/G,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAuB,EAAE;QAClD,IAAI,CAAC;YACH,6EAA6E;YAC7E,+CAA+C;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YAEvC,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,OAAO;wBACL,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,oBAAoB;qBACzC,CAAC;gBAEJ,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;oBAC5G,CAAC;oBACD,uDAAuD;oBACvD,OAAO;wBACL,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,oBAAqB,MAAM,CAAC,OAAkB,CAAC,MAAM,6CAA6C;qBAC3G,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;oBAC7G,CAAC;oBACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAI,MAAM,CAAC,OAAkB,CAAC;oBAC7D,OAAO;wBACL,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,4BAA4B,OAAO,CAAC,MAAM,6CAA6C;qBAChG,CAAC;gBACJ,CAAC;gBAED;oBACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,MAAM,gCAAgC,EAAE,CAAC;YAC3H,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/G,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill registry — all available skills for the Clawtomaton agent.
|
|
3
|
+
*/
|
|
4
|
+
import type { SkillDefinition, SurvivalTier } from '../types.js';
|
|
5
|
+
import { checkBalanceSkill } from './check-balance.js';
|
|
6
|
+
import { checkStatsSkill } from './check-stats.js';
|
|
7
|
+
import { claimFeesSkill } from './claim-fees.js';
|
|
8
|
+
import { deployTokenSkill } from './deploy.js';
|
|
9
|
+
import { swapSkill } from './swap.js';
|
|
10
|
+
import { transferSkill } from './transfer.js';
|
|
11
|
+
import { shellSkill } from './shell.js';
|
|
12
|
+
import { conwaySkill } from './conway.js';
|
|
13
|
+
import { editSoulSkill } from './edit-soul.js';
|
|
14
|
+
/** All registered skills */
|
|
15
|
+
export declare const ALL_SKILLS: SkillDefinition[];
|
|
16
|
+
/**
|
|
17
|
+
* Get skills available at a given survival tier.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getSkillsForTier(tier: SurvivalTier): SkillDefinition[];
|
|
20
|
+
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, };
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,4BAA4B;AAC5B,eAAO,MAAM,UAAU,EAAE,eAAe,EAUvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,EAAE,CAEtE;AA8BD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,GACd,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill registry — all available skills for the Clawtomaton agent.
|
|
3
|
+
*/
|
|
4
|
+
import { checkBalanceSkill } from './check-balance.js';
|
|
5
|
+
import { checkStatsSkill } from './check-stats.js';
|
|
6
|
+
import { claimFeesSkill } from './claim-fees.js';
|
|
7
|
+
import { deployTokenSkill } from './deploy.js';
|
|
8
|
+
import { swapSkill } from './swap.js';
|
|
9
|
+
import { transferSkill } from './transfer.js';
|
|
10
|
+
import { shellSkill } from './shell.js';
|
|
11
|
+
import { conwaySkill } from './conway.js';
|
|
12
|
+
import { editSoulSkill } from './edit-soul.js';
|
|
13
|
+
/** All registered skills */
|
|
14
|
+
export const ALL_SKILLS = [
|
|
15
|
+
deployTokenSkill,
|
|
16
|
+
claimFeesSkill,
|
|
17
|
+
checkStatsSkill,
|
|
18
|
+
swapSkill,
|
|
19
|
+
checkBalanceSkill,
|
|
20
|
+
transferSkill,
|
|
21
|
+
shellSkill,
|
|
22
|
+
conwaySkill,
|
|
23
|
+
editSoulSkill,
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Get skills available at a given survival tier.
|
|
27
|
+
*/
|
|
28
|
+
export function getSkillsForTier(tier) {
|
|
29
|
+
return ALL_SKILLS.filter((skill) => TIER_SKILLS[tier].has(skill.name));
|
|
30
|
+
}
|
|
31
|
+
/** Skills allowed at each survival tier */
|
|
32
|
+
const TIER_SKILLS = {
|
|
33
|
+
normal: new Set([
|
|
34
|
+
'deploy_token',
|
|
35
|
+
'claim_fees',
|
|
36
|
+
'check_stats',
|
|
37
|
+
'swap',
|
|
38
|
+
'check_balance',
|
|
39
|
+
'transfer',
|
|
40
|
+
'shell',
|
|
41
|
+
'conway',
|
|
42
|
+
'edit_soul',
|
|
43
|
+
]),
|
|
44
|
+
low_compute: new Set([
|
|
45
|
+
'claim_fees',
|
|
46
|
+
'check_stats',
|
|
47
|
+
'swap',
|
|
48
|
+
'check_balance',
|
|
49
|
+
'transfer',
|
|
50
|
+
'edit_soul',
|
|
51
|
+
]),
|
|
52
|
+
critical: new Set([
|
|
53
|
+
'claim_fees',
|
|
54
|
+
'check_balance',
|
|
55
|
+
]),
|
|
56
|
+
dead: new Set(),
|
|
57
|
+
};
|
|
58
|
+
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, };
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,4BAA4B;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,2CAA2C;AAC3C,MAAM,WAAW,GAAsC;IACrD,MAAM,EAAE,IAAI,GAAG,CAAC;QACd,cAAc;QACd,YAAY;QACZ,aAAa;QACb,MAAM;QACN,eAAe;QACf,UAAU;QACV,OAAO;QACP,QAAQ;QACR,WAAW;KACZ,CAAC;IACF,WAAW,EAAE,IAAI,GAAG,CAAC;QACnB,YAAY;QACZ,aAAa;QACb,MAAM;QACN,eAAe;QACf,UAAU;QACV,WAAW;KACZ,CAAC;IACF,QAAQ,EAAE,IAAI,GAAG,CAAC;QAChB,YAAY;QACZ,eAAe;KAChB,CAAC;IACF,IAAI,EAAE,IAAI,GAAG,EAAE;CAChB,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,GACd,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: shell — Execute a shell command.
|
|
3
|
+
*
|
|
4
|
+
* This is the agent's self-modification primitive. It can install packages,
|
|
5
|
+
* edit files, run scripts. The constitution limits what it SHOULD do;
|
|
6
|
+
* this skill provides the raw capability.
|
|
7
|
+
*
|
|
8
|
+
* All commands are logged to the audit trail.
|
|
9
|
+
*/
|
|
10
|
+
import type { SkillDefinition } from '../types.js';
|
|
11
|
+
export declare const shellSkill: SkillDefinition;
|
|
12
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/skills/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAK7E,eAAO,MAAM,UAAU,EAAE,eAwDxB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: shell — Execute a shell command.
|
|
3
|
+
*
|
|
4
|
+
* This is the agent's self-modification primitive. It can install packages,
|
|
5
|
+
* edit files, run scripts. The constitution limits what it SHOULD do;
|
|
6
|
+
* this skill provides the raw capability.
|
|
7
|
+
*
|
|
8
|
+
* All commands are logged to the audit trail.
|
|
9
|
+
*/
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
const MAX_OUTPUT_LENGTH = 4096;
|
|
12
|
+
const TIMEOUT_MS = 30_000;
|
|
13
|
+
export const shellSkill = {
|
|
14
|
+
name: 'shell',
|
|
15
|
+
description: 'Execute a shell command. Output is captured and returned. Max 30s timeout.',
|
|
16
|
+
parameters: [
|
|
17
|
+
{
|
|
18
|
+
name: 'command',
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'The shell command to execute.',
|
|
21
|
+
required: true,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'cwd',
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Working directory. Defaults to agent state directory.',
|
|
27
|
+
required: false,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
execute: async (params, ctx) => {
|
|
31
|
+
const command = params.command;
|
|
32
|
+
const cwd = params.cwd;
|
|
33
|
+
// Audit BEFORE execution
|
|
34
|
+
ctx.history; // unused but ensures ctx is available
|
|
35
|
+
// We log via state in the agent loop, not here — skill is stateless
|
|
36
|
+
try {
|
|
37
|
+
const output = execSync(command, {
|
|
38
|
+
timeout: TIMEOUT_MS,
|
|
39
|
+
maxBuffer: 1024 * 1024, // 1MB
|
|
40
|
+
encoding: 'utf-8',
|
|
41
|
+
cwd,
|
|
42
|
+
env: { ...process.env },
|
|
43
|
+
});
|
|
44
|
+
const trimmed = output.length > MAX_OUTPUT_LENGTH
|
|
45
|
+
? output.slice(0, MAX_OUTPUT_LENGTH) + '\n... (output truncated)'
|
|
46
|
+
: output;
|
|
47
|
+
return {
|
|
48
|
+
callId: '',
|
|
49
|
+
success: true,
|
|
50
|
+
result: trimmed || '(no output)',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const stderr = err.stderr?.toString() ?? '';
|
|
55
|
+
const stdout = err.stdout?.toString() ?? '';
|
|
56
|
+
const output = (stderr || stdout || err.message).slice(0, MAX_OUTPUT_LENGTH);
|
|
57
|
+
return {
|
|
58
|
+
callId: '',
|
|
59
|
+
success: false,
|
|
60
|
+
result: null,
|
|
61
|
+
error: `Exit code ${err.status ?? 'unknown'}: ${output}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/skills/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,4EAA4E;IACzF,UAAU,EAAE;QACV;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAuB,EAAE;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAyB,CAAC;QAE7C,yBAAyB;QACzB,GAAG,CAAC,OAAO,CAAC,CAAC,sCAAsC;QACnD,oEAAoE;QAEpE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;gBAC/B,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,GAAG;gBACH,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;aACxB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,iBAAiB;gBAC/C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,0BAA0B;gBACjE,CAAC,CAAC,MAAM,CAAC;YAEX,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,IAAI,aAAa;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAE7E,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,aAAa,GAAG,CAAC,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/skills/swap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAE7E,eAAO,MAAM,SAAS,EAAE,eAuFvB,CAAC"}
|