@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Survival module — monitors ETH balance and determines operational tier.
|
|
3
|
+
*
|
|
4
|
+
* Tiers control what the agent is allowed to do:
|
|
5
|
+
* normal (>= 0.01 ETH) — Full capabilities, all skills enabled
|
|
6
|
+
* low_compute (>= 0.001 ETH) — Cheaper inference model, reduced heartbeat freq
|
|
7
|
+
* critical (>= 0.0001 ETH) — Emergency mode: only claim fees and check balance
|
|
8
|
+
* dead (< 0.0001 ETH) — Agent halts, cannot act
|
|
9
|
+
*/
|
|
10
|
+
import { formatEther } from 'viem';
|
|
11
|
+
import { SURVIVAL_THRESHOLDS } from '../types.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Tier Determination
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export function determineTier(ethBalance) {
|
|
16
|
+
if (ethBalance >= SURVIVAL_THRESHOLDS.normal)
|
|
17
|
+
return 'normal';
|
|
18
|
+
if (ethBalance >= SURVIVAL_THRESHOLDS.low_compute)
|
|
19
|
+
return 'low_compute';
|
|
20
|
+
if (ethBalance >= SURVIVAL_THRESHOLDS.critical)
|
|
21
|
+
return 'critical';
|
|
22
|
+
return 'dead';
|
|
23
|
+
}
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Survival Monitor
|
|
26
|
+
// ============================================================================
|
|
27
|
+
export class SurvivalMonitor {
|
|
28
|
+
publicClient;
|
|
29
|
+
address;
|
|
30
|
+
state;
|
|
31
|
+
constructor(publicClient, address, state) {
|
|
32
|
+
this.publicClient = publicClient;
|
|
33
|
+
this.address = address;
|
|
34
|
+
this.state = state;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check current ETH balance, update tier, persist to state.
|
|
38
|
+
*/
|
|
39
|
+
async check() {
|
|
40
|
+
const ethBalance = await this.publicClient.getBalance({ address: this.address });
|
|
41
|
+
const tier = determineTier(ethBalance);
|
|
42
|
+
const prev = this.state.getSurvival();
|
|
43
|
+
const survival = {
|
|
44
|
+
...prev,
|
|
45
|
+
ethBalance,
|
|
46
|
+
tier,
|
|
47
|
+
lastBalanceCheck: Date.now(),
|
|
48
|
+
};
|
|
49
|
+
this.state.saveSurvival(survival);
|
|
50
|
+
// Log tier transitions
|
|
51
|
+
if (prev.tier !== tier) {
|
|
52
|
+
this.state.audit('tier_change', `Survival tier changed: ${prev.tier} → ${tier} (${formatEther(ethBalance)} ETH)`);
|
|
53
|
+
}
|
|
54
|
+
return survival;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get current survival state from DB (no RPC call).
|
|
58
|
+
*/
|
|
59
|
+
getCached() {
|
|
60
|
+
return this.state.getSurvival();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if a given skill is allowed at the current tier.
|
|
64
|
+
*/
|
|
65
|
+
isSkillAllowed(skillName, tier) {
|
|
66
|
+
return TIER_SKILLS[tier].has(skillName);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the inference model to use for the current tier.
|
|
70
|
+
*/
|
|
71
|
+
getModel(tier, config) {
|
|
72
|
+
if (tier === 'low_compute' || tier === 'critical') {
|
|
73
|
+
return config.fallbackModel;
|
|
74
|
+
}
|
|
75
|
+
return config.model;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get heartbeat interval multiplier for current tier.
|
|
79
|
+
* Higher tier = less frequent heartbeats to conserve compute.
|
|
80
|
+
*/
|
|
81
|
+
getHeartbeatMultiplier(tier) {
|
|
82
|
+
return HEARTBEAT_MULTIPLIERS[tier];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Record a fee claim.
|
|
86
|
+
*/
|
|
87
|
+
recordFeeClaim(amount) {
|
|
88
|
+
const prev = this.state.getSurvival();
|
|
89
|
+
this.state.saveSurvival({
|
|
90
|
+
...prev,
|
|
91
|
+
totalFeesClaimed: prev.totalFeesClaimed + amount,
|
|
92
|
+
lastFeeClaim: Date.now(),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// Tier → Allowed Skills
|
|
98
|
+
// ============================================================================
|
|
99
|
+
/** Skills allowed at each survival tier */
|
|
100
|
+
const TIER_SKILLS = {
|
|
101
|
+
normal: new Set([
|
|
102
|
+
'deploy_token',
|
|
103
|
+
'claim_fees',
|
|
104
|
+
'check_stats',
|
|
105
|
+
'swap',
|
|
106
|
+
'check_balance',
|
|
107
|
+
'transfer',
|
|
108
|
+
'shell',
|
|
109
|
+
'conway',
|
|
110
|
+
'edit_soul',
|
|
111
|
+
]),
|
|
112
|
+
low_compute: new Set([
|
|
113
|
+
'claim_fees',
|
|
114
|
+
'check_stats',
|
|
115
|
+
'swap',
|
|
116
|
+
'check_balance',
|
|
117
|
+
'transfer',
|
|
118
|
+
'edit_soul',
|
|
119
|
+
]),
|
|
120
|
+
critical: new Set([
|
|
121
|
+
'claim_fees',
|
|
122
|
+
'check_balance',
|
|
123
|
+
]),
|
|
124
|
+
dead: new Set(),
|
|
125
|
+
};
|
|
126
|
+
/** Heartbeat interval multipliers per tier */
|
|
127
|
+
const HEARTBEAT_MULTIPLIERS = {
|
|
128
|
+
normal: 1,
|
|
129
|
+
low_compute: 2,
|
|
130
|
+
critical: 5,
|
|
131
|
+
dead: Infinity,
|
|
132
|
+
};
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// Formatting
|
|
135
|
+
// ============================================================================
|
|
136
|
+
export function formatSurvivalStatus(state) {
|
|
137
|
+
const lines = [
|
|
138
|
+
`Tier: ${state.tier.toUpperCase()}`,
|
|
139
|
+
`ETH Balance: ${formatEther(state.ethBalance)} ETH`,
|
|
140
|
+
`Unclaimed Fees: ${formatEther(state.unclaimedFees)} WETH`,
|
|
141
|
+
`Total Fees Claimed: ${formatEther(state.totalFeesClaimed)} WETH`,
|
|
142
|
+
];
|
|
143
|
+
if (state.lastFeeClaim > 0) {
|
|
144
|
+
lines.push(`Last Fee Claim: ${new Date(state.lastFeeClaim).toISOString()}`);
|
|
145
|
+
}
|
|
146
|
+
if (state.lastBalanceCheck > 0) {
|
|
147
|
+
lines.push(`Last Balance Check: ${new Date(state.lastBalanceCheck).toISOString()}`);
|
|
148
|
+
}
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/survival/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,IAAI,UAAU,IAAI,mBAAmB,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC9D,IAAI,UAAU,IAAI,mBAAmB,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IACxE,IAAI,UAAU,IAAI,mBAAmB,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,OAAO,eAAe;IAEhB;IACA;IACA;IAHV,YACU,YAA0B,EAC1B,OAAgB,EAChB,KAAiB;QAFjB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAY;IACxB,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAkB;YAC9B,GAAG,IAAI;YACP,UAAU;YACV,IAAI;YACJ,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE;SAC7B,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAElC,uBAAuB;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,aAAa,EACb,0BAA0B,IAAI,CAAC,IAAI,MAAM,IAAI,KAAK,WAAW,CAAC,UAAU,CAAC,OAAO,CACjF,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAiB,EAAE,IAAkB;QAClD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAkB,EAAE,MAAgD;QAC3E,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,IAAkB;QACvC,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACtB,GAAG,IAAI;YACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM;YAChD,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;CACF;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,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,8CAA8C;AAC9C,MAAM,qBAAqB,GAAiC;IAC1D,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,MAAM,KAAK,GAAG;QACZ,SAAS,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;QACnC,gBAAgB,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;QACnD,mBAAmB,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO;QAC1D,uBAAuB,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO;KAClE,CAAC;IACF,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the Clawtomaton runtime
|
|
3
|
+
*/
|
|
4
|
+
import type { Address, Hash } from 'viem';
|
|
5
|
+
export interface ClawtomatonIdentity {
|
|
6
|
+
/** Agent name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Ethereum wallet address (agent's on-chain identity) */
|
|
9
|
+
address: Address;
|
|
10
|
+
/** Private key (stored encrypted in state) */
|
|
11
|
+
privateKey: `0x${string}`;
|
|
12
|
+
/** Clawncher API key (from registration) */
|
|
13
|
+
apiKey: string;
|
|
14
|
+
/** Creator's wallet address (has audit rights) */
|
|
15
|
+
creatorAddress: Address;
|
|
16
|
+
/** Genesis prompt — the seed instruction */
|
|
17
|
+
genesisPrompt: string;
|
|
18
|
+
/** Token address once deployed */
|
|
19
|
+
tokenAddress?: Address;
|
|
20
|
+
/** Token symbol */
|
|
21
|
+
tokenSymbol?: string;
|
|
22
|
+
/** Deploy tx hash */
|
|
23
|
+
deployTxHash?: Hash;
|
|
24
|
+
}
|
|
25
|
+
export type SurvivalTier = 'normal' | 'low_compute' | 'critical' | 'dead';
|
|
26
|
+
export interface SurvivalState {
|
|
27
|
+
tier: SurvivalTier;
|
|
28
|
+
ethBalance: bigint;
|
|
29
|
+
/** Accumulated fees available to claim (WETH) */
|
|
30
|
+
unclaimedFees: bigint;
|
|
31
|
+
/** Total fees claimed lifetime */
|
|
32
|
+
totalFeesClaimed: bigint;
|
|
33
|
+
/** Timestamp of last fee claim */
|
|
34
|
+
lastFeeClaim: number;
|
|
35
|
+
/** Timestamp of last balance check */
|
|
36
|
+
lastBalanceCheck: number;
|
|
37
|
+
}
|
|
38
|
+
export declare const SURVIVAL_THRESHOLDS: {
|
|
39
|
+
/** Above this: full capabilities */
|
|
40
|
+
readonly normal: bigint;
|
|
41
|
+
/** Above this: reduced capabilities */
|
|
42
|
+
readonly low_compute: bigint;
|
|
43
|
+
/** Above this: emergency mode */
|
|
44
|
+
readonly critical: bigint;
|
|
45
|
+
};
|
|
46
|
+
export interface AgentContext {
|
|
47
|
+
identity: ClawtomatonIdentity;
|
|
48
|
+
survival: SurvivalState;
|
|
49
|
+
/** Current turn number */
|
|
50
|
+
turn: number;
|
|
51
|
+
/** Conversation history (last N turns) */
|
|
52
|
+
history: ConversationTurn[];
|
|
53
|
+
/** SOUL.md content — self-authored identity */
|
|
54
|
+
soul: string;
|
|
55
|
+
/** Available skills */
|
|
56
|
+
skills: SkillDefinition[];
|
|
57
|
+
/** Constitution text */
|
|
58
|
+
constitution: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ConversationTurn {
|
|
61
|
+
role: 'system' | 'assistant' | 'tool';
|
|
62
|
+
content: string;
|
|
63
|
+
timestamp: number;
|
|
64
|
+
/** Tool calls made this turn */
|
|
65
|
+
toolCalls?: ToolCall[];
|
|
66
|
+
/** Tool results received this turn */
|
|
67
|
+
toolResults?: ToolResult[];
|
|
68
|
+
}
|
|
69
|
+
export interface ToolCall {
|
|
70
|
+
id: string;
|
|
71
|
+
skill: string;
|
|
72
|
+
params: Record<string, unknown>;
|
|
73
|
+
}
|
|
74
|
+
export interface ToolResult {
|
|
75
|
+
callId: string;
|
|
76
|
+
success: boolean;
|
|
77
|
+
result: unknown;
|
|
78
|
+
error?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface SkillDefinition {
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
parameters: SkillParameter[];
|
|
84
|
+
execute: (params: Record<string, unknown>, ctx: AgentContext) => Promise<ToolResult>;
|
|
85
|
+
}
|
|
86
|
+
export interface SkillParameter {
|
|
87
|
+
name: string;
|
|
88
|
+
type: 'string' | 'number' | 'boolean' | 'address';
|
|
89
|
+
description: string;
|
|
90
|
+
required: boolean;
|
|
91
|
+
default?: unknown;
|
|
92
|
+
}
|
|
93
|
+
export interface HeartbeatTask {
|
|
94
|
+
name: string;
|
|
95
|
+
/** Interval in milliseconds */
|
|
96
|
+
intervalMs: number;
|
|
97
|
+
/** Last execution timestamp */
|
|
98
|
+
lastRun: number;
|
|
99
|
+
/** Whether task is enabled */
|
|
100
|
+
enabled: boolean;
|
|
101
|
+
execute: (ctx: AgentContext) => Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
export interface ClawtomatonConfig {
|
|
104
|
+
/** Inference provider */
|
|
105
|
+
inference: {
|
|
106
|
+
provider: 'openrouter' | 'anthropic' | 'conway';
|
|
107
|
+
apiKey: string;
|
|
108
|
+
model: string;
|
|
109
|
+
/** Cheaper model for low_compute tier */
|
|
110
|
+
fallbackModel: string;
|
|
111
|
+
};
|
|
112
|
+
/** Base RPC URL */
|
|
113
|
+
rpcUrl: string;
|
|
114
|
+
/** State directory */
|
|
115
|
+
stateDir: string;
|
|
116
|
+
/** Heartbeat interval in ms (normal tier) */
|
|
117
|
+
heartbeatIntervalMs: number;
|
|
118
|
+
/** Max conversation history turns to keep in context */
|
|
119
|
+
maxHistoryTurns: number;
|
|
120
|
+
/** Conway Terminal API key (optional — for domains, VMs) */
|
|
121
|
+
conwayApiKey?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface ActivationResult {
|
|
124
|
+
burnTxHash: Hash;
|
|
125
|
+
amountBurned: bigint;
|
|
126
|
+
activatedAt: number;
|
|
127
|
+
}
|
|
128
|
+
/** 1,000,000 $CLAWNCH with 18 decimals */
|
|
129
|
+
export declare const CLAWTOMATON_ACTIVATION_COST: bigint;
|
|
130
|
+
export declare const CLAWNCH_TOKEN_ADDRESS: Address;
|
|
131
|
+
export declare const CLAWNCH_BURN_ADDRESS: Address;
|
|
132
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the Clawtomaton runtime
|
|
3
|
+
*/
|
|
4
|
+
export const SURVIVAL_THRESHOLDS = {
|
|
5
|
+
/** Above this: full capabilities */
|
|
6
|
+
normal: BigInt('10000000000000000'), // 0.01 ETH
|
|
7
|
+
/** Above this: reduced capabilities */
|
|
8
|
+
low_compute: BigInt('1000000000000000'), // 0.001 ETH
|
|
9
|
+
/** Above this: emergency mode */
|
|
10
|
+
critical: BigInt('100000000000000'), // 0.0001 ETH
|
|
11
|
+
/** Below critical: dead */
|
|
12
|
+
};
|
|
13
|
+
/** 1,000,000 $CLAWNCH with 18 decimals */
|
|
14
|
+
export const CLAWTOMATON_ACTIVATION_COST = BigInt('1000000000000000000000000'); // 1e24 = 1M * 1e18
|
|
15
|
+
export const CLAWNCH_TOKEN_ADDRESS = '0xa1F72459dfA10BAD200Ac160eCd78C6b77a747be';
|
|
16
|
+
export const CLAWNCH_BURN_ADDRESS = '0x000000000000000000000000000000000000dEaD';
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgDH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAM,WAAW;IACpD,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,YAAY;IACrD,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAM,aAAa;IACtD,2BAA2B;CACnB,CAAC;AAiHX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,mBAAmB;AAEnG,MAAM,CAAC,MAAM,qBAAqB,GAAY,4CAA4C,CAAC;AAC3F,MAAM,CAAC,MAAM,oBAAoB,GAAY,4CAA4C,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@clawnch/clawtomaton",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Clawtomaton — Autonomous AI agents that launch and manage crypto projects on Base",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"clawtomaton": "dist/cli.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"constitution.md"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"clean": "rm -rf dist",
|
|
26
|
+
"start": "node dist/cli.js --run",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:watch": "vitest",
|
|
29
|
+
"prepublishOnly": "npm run build"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"clawtomaton",
|
|
33
|
+
"clawncher",
|
|
34
|
+
"autonomous",
|
|
35
|
+
"agent",
|
|
36
|
+
"crypto",
|
|
37
|
+
"base",
|
|
38
|
+
"ai"
|
|
39
|
+
],
|
|
40
|
+
"author": "Clawncher",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"homepage": "https://clawn.ch/er",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@clawnch/clawncher-sdk": "^0.1.0",
|
|
48
|
+
"better-sqlite3": "^11.0.0",
|
|
49
|
+
"viem": "^2.0.0"
|
|
50
|
+
},
|
|
51
|
+
"optionalDependencies": {
|
|
52
|
+
"conway-terminal": "^0.1.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
56
|
+
"@types/node": "^22.10.0",
|
|
57
|
+
"typescript": "^5.7.2",
|
|
58
|
+
"vitest": "^3.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|