clawcontract 0.1.0 → 0.1.2
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 +16 -21
- package/dist/cli/commands/full.d.ts +2 -0
- package/dist/cli/commands/full.d.ts.map +1 -1
- package/dist/cli/commands/full.js +13 -2
- package/dist/cli/commands/full.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.js +4 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/deployer/compiler.d.ts.map +1 -1
- package/dist/deployer/compiler.js +16 -2
- package/dist/deployer/compiler.js.map +1 -1
- package/dist/deployer/wallet.d.ts.map +1 -1
- package/dist/deployer/wallet.js +2 -9
- package/dist/deployer/wallet.js.map +1 -1
- package/dist/generator/index.js +1 -1
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/llm.js +5 -5
- package/dist/generator/llm.js.map +1 -1
- package/dist/verifier/explorer-api.js +4 -4
- package/dist/verifier/explorer-api.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/setup.js +0 -36
package/README.md
CHANGED
|
@@ -30,16 +30,6 @@ pnpm install
|
|
|
30
30
|
pnpm run build
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
Then set up your environment:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
clawcontract setup
|
|
37
|
-
clawcontract setup --openrouter-key sk-or-... --bscscan-key ABC123
|
|
38
|
-
clawcontract setup --private-key 0xabc... --openrouter-key sk-or-... --openrouter-model anthropic/claude-sonnet-4-20250514
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
This writes a `.env` file non-interactively. A wallet is auto-generated if `--private-key` is not provided.
|
|
42
|
-
|
|
43
33
|
## Usage
|
|
44
34
|
|
|
45
35
|
### Generate a contract
|
|
@@ -129,6 +119,15 @@ clawcontract delete 0xYourContractAddress --force
|
|
|
129
119
|
clawcontract full "staking contract for BNB with 10% APY" --chain bsc-testnet
|
|
130
120
|
```
|
|
131
121
|
|
|
122
|
+
Optional flags:
|
|
123
|
+
- `--skip-deploy` — stop after analysis, do not deploy or verify (useful for review before deploying)
|
|
124
|
+
- `--skip-fix` — do not auto-fix high-severity issues found during analysis
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Generate and analyze only — review before deploying
|
|
128
|
+
clawcontract full "staking contract for BNB with 10% APY" --chain bsc-testnet --skip-deploy
|
|
129
|
+
```
|
|
130
|
+
|
|
132
131
|
### Global options
|
|
133
132
|
|
|
134
133
|
| Option | Description | Default |
|
|
@@ -160,7 +159,7 @@ src/
|
|
|
160
159
|
|
|
161
160
|
## Pipeline Flow
|
|
162
161
|
|
|
163
|
-
The `full` command runs the entire pipeline end-to-end. If high-severity issues are found during analysis, the AI will automatically attempt to fix them (up to 3 attempts) before proceeding to deployment.
|
|
162
|
+
The `full` command runs the entire pipeline end-to-end. If high-severity issues are found during analysis, the AI will automatically attempt to fix them (up to 3 attempts) before proceeding to deployment. Use `--skip-deploy` to stop after analysis, or `--skip-fix` to disable automatic fix attempts.
|
|
164
163
|
|
|
165
164
|
```
|
|
166
165
|
Natural Language
|
|
@@ -186,20 +185,16 @@ ClawContract ships with an [OpenClaw skill](src/openclaw/SKILL.md) that teaches
|
|
|
186
185
|
|
|
187
186
|
## Configuration
|
|
188
187
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
cp .env.example .env
|
|
193
|
-
```
|
|
188
|
+
Environment variables are configured via `docker-compose.yml` or set directly in your environment.
|
|
194
189
|
|
|
195
190
|
| Variable | Description | Required |
|
|
196
191
|
|---|---|---|
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
200
|
-
| `
|
|
192
|
+
| `CLAWCONTRACT_PRIVATE_KEY` | Wallet private key for deployment (required for deploy/full) | Yes (for deploy) |
|
|
193
|
+
| `CLAWCONTRACT_OPENROUTER_API_KEY` | OpenRouter API key for AI contract generation | Yes |
|
|
194
|
+
| `CLAWCONTRACT_OPENROUTER_MODEL` | OpenRouter model (default: `anthropic/claude-sonnet-4-20250514`) | No |
|
|
195
|
+
| `CLAWCONTRACT_BSCSCAN_API_KEY` | BscScan / opBNBScan API key for contract verification | No |
|
|
201
196
|
|
|
202
|
-
> **Security:** Never commit
|
|
197
|
+
> **Security:** Never commit secrets to version control. When using Docker, set values in `docker-compose.yml` or pass them via environment variables.
|
|
203
198
|
|
|
204
199
|
> **Data:** Deployment metadata is saved to `contracts/.deployments/` using a directory-based store with deduplicated ABIs and an index for fast lookups. Legacy `.deployments.json` files are auto-migrated on first access. This directory is local and should not be committed.
|
|
205
200
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/full.ts"],"names":[],"mappings":"AA4DA,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"full.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/full.ts"],"names":[],"mappings":"AA4DA,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAClF,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
|
@@ -56,10 +56,21 @@ export async function fullCommand(description, options) {
|
|
|
56
56
|
if (!analysisResult.passed) {
|
|
57
57
|
const hasHigh = analysisResult.findings.some((f) => f.severity === 'High');
|
|
58
58
|
if (hasHigh) {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
if (options.skipFix) {
|
|
60
|
+
console.log(chalk.yellow.bold('\n ⚠ High-severity issues found — skipping auto-fix (--skip-fix).'));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log(chalk.red.bold('\n ⚠ High-severity issues detected — attempting AI auto-fix...'));
|
|
64
|
+
await autoFixHighSeverity(filePath);
|
|
65
|
+
}
|
|
61
66
|
}
|
|
62
67
|
}
|
|
68
|
+
if (options.skipDeploy) {
|
|
69
|
+
console.log(chalk.cyan(`\n Generated contract: ${filePath}`));
|
|
70
|
+
console.log(chalk.cyan(` Analysis passed: ${analysisResult.passed}`));
|
|
71
|
+
console.log(chalk.yellow.bold('\n Pipeline stopped after analysis (--skip-deploy).\n'));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
63
74
|
// Step 3: Deploy
|
|
64
75
|
console.log(chalk.bold.blue('\n━━━ Step 3/4: Deploy Contract ━━━\n'));
|
|
65
76
|
const deployResult = await deployCommand(filePath, { chain: options.chain });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full.js","sourceRoot":"","sources":["../../../src/cli/commands/full.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,KAAK,UAAU,mBAAmB,CAChC,QAAgB;IAEhB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,8BAA8B,OAAO,IAAI,gBAAgB,IAAI,CAAC,CAAC,CAAC;QAE9F,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAElF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAClE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzH,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,YAAY,CAAC,MAAM,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjG,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,gBAAgB,kBAAkB,CAAC,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAE7E,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,gBAAgB,qCAAqC,CAAC,CAAC,CAAC;IAChI,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"full.js","sourceRoot":"","sources":["../../../src/cli/commands/full.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAuBxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,UAAU,YAAY,CAAC,OAAqB;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;IACpF,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACtF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IAE3E,MAAM,QAAQ,GAAa;QACzB,eAAe,UAAU,EAAE;QAC3B,EAAE;QACF,sBAAsB,aAAa,EAAE;QACrC,EAAE;QACF,+BAA+B;QAC/B,oBAAoB,eAAe,EAAE;QACrC,EAAE;QACF,mBAAmB,UAAU,EAAE;QAC/B,EAAE;KACH,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC5F,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,7 +9,6 @@ import { deployCommand } from './commands/deploy.js';
|
|
|
9
9
|
import { verifyCommand } from './commands/verify.js';
|
|
10
10
|
import { fullCommand } from './commands/full.js';
|
|
11
11
|
import { interactCommand } from './commands/interact.js';
|
|
12
|
-
import { setupCommand } from './commands/setup.js';
|
|
13
12
|
import { listCommand } from './commands/list.js';
|
|
14
13
|
import { deleteCommand } from './commands/delete.js';
|
|
15
14
|
const require = createRequire(import.meta.url);
|
|
@@ -55,9 +54,11 @@ program
|
|
|
55
54
|
program
|
|
56
55
|
.command('full <description>')
|
|
57
56
|
.description('Full pipeline: generate → analyze → deploy → verify')
|
|
58
|
-
.
|
|
57
|
+
.option('--skip-deploy', 'Stop after analysis — do not deploy or verify')
|
|
58
|
+
.option('--skip-fix', 'Do not auto-fix high-severity issues')
|
|
59
|
+
.action(async (description, cmdOpts) => {
|
|
59
60
|
const opts = program.opts();
|
|
60
|
-
await fullCommand(description, opts);
|
|
61
|
+
await fullCommand(description, { ...opts, skipDeploy: cmdOpts.skipDeploy, skipFix: cmdOpts.skipFix });
|
|
61
62
|
});
|
|
62
63
|
program
|
|
63
64
|
.command('interact <address> <function> [args...]')
|
|
@@ -68,21 +69,6 @@ program
|
|
|
68
69
|
const opts = program.opts();
|
|
69
70
|
await interactCommand(address, fn, args, { chain: opts.chain, file: cmdOpts.file, value: cmdOpts.value });
|
|
70
71
|
});
|
|
71
|
-
program
|
|
72
|
-
.command('setup')
|
|
73
|
-
.description('Generate .env file non-interactively (flags or env vars, auto-generates wallet if needed)')
|
|
74
|
-
.option('--private-key <key>', 'wallet private key')
|
|
75
|
-
.option('--openrouter-key <key>', 'OpenRouter API key')
|
|
76
|
-
.option('--openrouter-model <model>', 'OpenRouter model')
|
|
77
|
-
.option('--bscscan-key <key>', 'BscScan API key')
|
|
78
|
-
.action((opts) => {
|
|
79
|
-
setupCommand({
|
|
80
|
-
privateKey: opts.privateKey,
|
|
81
|
-
openrouterKey: opts.openrouterKey,
|
|
82
|
-
openrouterModel: opts.openrouterModel,
|
|
83
|
-
bscscanKey: opts.bscscanKey,
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
72
|
program
|
|
87
73
|
.command('list')
|
|
88
74
|
.description('List all stored deployment records')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiEhF"}
|
|
@@ -2,7 +2,9 @@ import { execSync } from 'node:child_process';
|
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import * as os from 'node:os';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
5
6
|
import { getHardhatConfigContent } from './hardhat-config-template.js';
|
|
7
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
8
|
export async function compileContract(sourceFile) {
|
|
7
9
|
const sourceCode = fs.readFileSync(sourceFile, 'utf-8');
|
|
8
10
|
const contractName = extractContractName(sourceCode);
|
|
@@ -24,7 +26,8 @@ export async function compileContract(sourceFile) {
|
|
|
24
26
|
const fileName = path.basename(sourceFile);
|
|
25
27
|
fs.writeFileSync(path.join(contractsDir, fileName), sourceCode);
|
|
26
28
|
const hardhatBin = resolveHardhatBin();
|
|
27
|
-
|
|
29
|
+
const compileCmd = hardhatBin === 'npx' ? 'npx hardhat compile' : `"${hardhatBin}" compile`;
|
|
30
|
+
execSync(compileCmd, {
|
|
28
31
|
cwd: tmpDir,
|
|
29
32
|
stdio: 'pipe',
|
|
30
33
|
env: { ...process.env, HARDHAT_CONFIG: path.join(tmpDir, 'hardhat.config.ts') },
|
|
@@ -54,6 +57,7 @@ function extractContractName(sourceCode) {
|
|
|
54
57
|
return match[1];
|
|
55
58
|
}
|
|
56
59
|
function resolveHardhatBin() {
|
|
60
|
+
// Check CWD's node_modules first
|
|
57
61
|
const localBin = path.resolve('node_modules', '.bin', 'hardhat');
|
|
58
62
|
if (fs.existsSync(localBin)) {
|
|
59
63
|
return localBin;
|
|
@@ -62,7 +66,17 @@ function resolveHardhatBin() {
|
|
|
62
66
|
if (fs.existsSync(localCmd)) {
|
|
63
67
|
return localCmd;
|
|
64
68
|
}
|
|
65
|
-
|
|
69
|
+
// Resolve from the package's own node_modules (for global installs)
|
|
70
|
+
const pkgRoot = path.resolve(__dirname, '..', '..');
|
|
71
|
+
const pkgBin = path.join(pkgRoot, 'node_modules', '.bin', 'hardhat');
|
|
72
|
+
if (fs.existsSync(pkgBin)) {
|
|
73
|
+
return pkgBin;
|
|
74
|
+
}
|
|
75
|
+
const pkgCmd = pkgBin + '.cmd';
|
|
76
|
+
if (fs.existsSync(pkgCmd)) {
|
|
77
|
+
return pkgCmd;
|
|
78
|
+
}
|
|
79
|
+
return 'npx';
|
|
66
80
|
}
|
|
67
81
|
function readBuildInfo(tmpDir) {
|
|
68
82
|
const buildInfoDir = path.join(tmpDir, 'artifacts', 'build-info');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/deployer/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/deployer/wallet.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,IAAI,MAAM,CAS1C;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAIzF"}
|
package/dist/deployer/wallet.js
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
2
|
export function resolvePrivateKey() {
|
|
4
|
-
const envKey = process.env.
|
|
3
|
+
const envKey = process.env.CLAWCONTRACT_PRIVATE_KEY;
|
|
5
4
|
if (envKey && envKey.trim()) {
|
|
6
5
|
return envKey.startsWith('0x') ? envKey : `0x${envKey}`;
|
|
7
6
|
}
|
|
8
|
-
|
|
9
|
-
const generatedKey = wallet.privateKey;
|
|
10
|
-
console.log(chalk.yellow('\n ⚠ No PRIVATE_KEY found — auto-generated a new wallet:'));
|
|
11
|
-
console.log(chalk.yellow(` Address: ${wallet.address}`));
|
|
12
|
-
console.log(chalk.yellow(` Private Key: ${generatedKey}`));
|
|
13
|
-
console.log(chalk.yellow(' Save this key to your .env file to reuse this wallet.\n'));
|
|
14
|
-
return generatedKey;
|
|
7
|
+
throw new Error('No CLAWCONTRACT_PRIVATE_KEY found. Set CLAWCONTRACT_PRIVATE_KEY in your environment.');
|
|
15
8
|
}
|
|
16
9
|
export function getWalletInfo(privateKey) {
|
|
17
10
|
const normalized = privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/deployer/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/deployer/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACpD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7D,CAAC"}
|
package/dist/generator/index.js
CHANGED
|
@@ -16,7 +16,7 @@ export async function generateContract(options) {
|
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
18
|
throw new Error("AI generation is unavailable. " +
|
|
19
|
-
"Set the
|
|
19
|
+
"Set the CLAWCONTRACT_OPENROUTER_API_KEY environment variable to enable contract generation.");
|
|
20
20
|
}
|
|
21
21
|
await ensureOutputDir(outputDir);
|
|
22
22
|
const contractName = extractContractName(source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgBrG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB;IAExB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAElD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;IAE/C,IAAI,MAAc,CAAC;IACnB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACjD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,gCAAgC;YAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgBrG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB;IAExB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAElD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;IAE/C,IAAI,MAAc,CAAC;IACnB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACjD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,gCAAgC;YAC9B,6FAA6F,CAChG,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAEjC,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEpE,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/generator/llm.js
CHANGED
|
@@ -5,7 +5,7 @@ Follow these rules strictly:
|
|
|
5
5
|
- Ensure compatibility with BSC and opBNB (EVM-compatible)
|
|
6
6
|
- Always include an SPDX license identifier comment at the top (e.g., // SPDX-License-Identifier: MIT)
|
|
7
7
|
- Return ONLY the Solidity source code, no markdown fences, no explanations`;
|
|
8
|
-
const OPENROUTER_MODEL = process.env.
|
|
8
|
+
const OPENROUTER_MODEL = process.env.CLAWCONTRACT_OPENROUTER_MODEL || "anthropic/claude-sonnet-4-20250514";
|
|
9
9
|
const MAX_TOKENS = 4096;
|
|
10
10
|
function stripMarkdownFences(text) {
|
|
11
11
|
return text.replace(/^```(?:solidity)?\n?/m, "").replace(/\n?```\s*$/m, "").trim();
|
|
@@ -57,12 +57,12 @@ function createOpenRouterClient(apiKey) {
|
|
|
57
57
|
const NULL_CLIENT = {
|
|
58
58
|
isAvailable: () => false,
|
|
59
59
|
provider: () => null,
|
|
60
|
-
customizeContract: () => { throw new Error("No LLM API key configured. Set
|
|
61
|
-
generateContract: () => { throw new Error("No LLM API key configured. Set
|
|
62
|
-
suggestFixes: () => { throw new Error("No LLM API key configured. Set
|
|
60
|
+
customizeContract: () => { throw new Error("No LLM API key configured. Set CLAWCONTRACT_OPENROUTER_API_KEY."); },
|
|
61
|
+
generateContract: () => { throw new Error("No LLM API key configured. Set CLAWCONTRACT_OPENROUTER_API_KEY."); },
|
|
62
|
+
suggestFixes: () => { throw new Error("No LLM API key configured. Set CLAWCONTRACT_OPENROUTER_API_KEY."); },
|
|
63
63
|
};
|
|
64
64
|
export function createLLMClient() {
|
|
65
|
-
const openrouterKey = process.env.
|
|
65
|
+
const openrouterKey = process.env.CLAWCONTRACT_OPENROUTER_API_KEY;
|
|
66
66
|
if (openrouterKey) {
|
|
67
67
|
return createOpenRouterClient(openrouterKey);
|
|
68
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/generator/llm.ts"],"names":[],"mappings":"AAUA,MAAM,sBAAsB,GAAG;;;;;;4EAM6C,CAAC;AAE7E,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/generator/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@ const SUBMIT_MAX_RETRIES = 5;
|
|
|
8
8
|
const SUBMIT_INITIAL_DELAY_MS = 5_000;
|
|
9
9
|
export async function submitVerification(options) {
|
|
10
10
|
const chain = getChain(options.chainKey);
|
|
11
|
-
const apiKey = process.env['
|
|
11
|
+
const apiKey = process.env['CLAWCONTRACT_BSCSCAN_API_KEY'];
|
|
12
12
|
if (!apiKey) {
|
|
13
|
-
throw new Error('
|
|
13
|
+
throw new Error('CLAWCONTRACT_BSCSCAN_API_KEY environment variable is not set');
|
|
14
14
|
}
|
|
15
15
|
const params = new URLSearchParams({
|
|
16
16
|
module: 'contract',
|
|
@@ -53,9 +53,9 @@ export async function submitVerification(options) {
|
|
|
53
53
|
}
|
|
54
54
|
export async function checkVerificationStatus(guid, chainKey) {
|
|
55
55
|
const chain = getChain(chainKey);
|
|
56
|
-
const apiKey = process.env['
|
|
56
|
+
const apiKey = process.env['CLAWCONTRACT_BSCSCAN_API_KEY'];
|
|
57
57
|
if (!apiKey) {
|
|
58
|
-
throw new Error('
|
|
58
|
+
throw new Error('CLAWCONTRACT_BSCSCAN_API_KEY environment variable is not set');
|
|
59
59
|
}
|
|
60
60
|
const params = new URLSearchParams({
|
|
61
61
|
module: 'contract',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer-api.js","sourceRoot":"","sources":["../../src/verifier/explorer-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAoB/C,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAC5D,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAC3D,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"explorer-api.js","sourceRoot":"","sources":["../../src/verifier/explorer-api.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import { ethers } from 'ethers';
|
|
5
|
-
export function setupCommand(options) {
|
|
6
|
-
const privateKey = resolveKey(options.privateKey ?? process.env.PRIVATE_KEY);
|
|
7
|
-
const openrouterKey = options.openrouterKey ?? process.env.OPENROUTER_API_KEY ?? '';
|
|
8
|
-
const openrouterModel = options.openrouterModel ?? process.env.OPENROUTER_MODEL ?? '';
|
|
9
|
-
const bscscanKey = options.bscscanKey ?? process.env.BSCSCAN_API_KEY ?? '';
|
|
10
|
-
const envLines = [
|
|
11
|
-
`PRIVATE_KEY=${privateKey}`,
|
|
12
|
-
'',
|
|
13
|
-
`OPENROUTER_API_KEY=${openrouterKey}`,
|
|
14
|
-
'',
|
|
15
|
-
'# OpenRouter model (optional)',
|
|
16
|
-
`OPENROUTER_MODEL=${openrouterModel}`,
|
|
17
|
-
'',
|
|
18
|
-
`BSCSCAN_API_KEY=${bscscanKey}`,
|
|
19
|
-
'',
|
|
20
|
-
];
|
|
21
|
-
const envPath = path.resolve(process.cwd(), '.env');
|
|
22
|
-
fs.writeFileSync(envPath, envLines.join('\n'), 'utf-8');
|
|
23
|
-
console.log(chalk.green(`\n✔ .env written to ${envPath}`));
|
|
24
|
-
console.log(chalk.gray(' Make sure .env is in your .gitignore!'));
|
|
25
|
-
}
|
|
26
|
-
function resolveKey(raw) {
|
|
27
|
-
if (raw && raw.trim()) {
|
|
28
|
-
return raw.startsWith('0x') ? raw : `0x${raw}`;
|
|
29
|
-
}
|
|
30
|
-
const wallet = ethers.Wallet.createRandom();
|
|
31
|
-
console.log(chalk.yellow('\n⚠ No private key supplied — auto-generated:'));
|
|
32
|
-
console.log(chalk.yellow(` Address: ${wallet.address}`));
|
|
33
|
-
console.log(chalk.yellow(` Private Key: ${wallet.privateKey}`));
|
|
34
|
-
return wallet.privateKey;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=setup.js.map
|