diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9e954c4 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "env": { + "node": true, + "es2021": true + }, + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "rules": { + "semi": ["error", "always"], + "quotes": ["error", "single"], + "@typescript-eslint/no-unused-vars": "warn" + } +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..707740c --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @Yusasive diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..ed496ab --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,24 @@ +# Contributing to Eremos + +Thank you for your interest in contributing! Here’s how to get started: + +## Getting Started + +- Fork the repository and clone your fork. +- Install dependencies: `npm install` +- Run the project: `npm run dev` + +## How to Contribute + +- Propose improvements (code, docs, structure, tooling). +- Open a clean pull request with a clear description. +- Follow code style guidelines (see below). + +## Code Style + +- Use TypeScript for all source files. +- Run `npm run lint` and `npm run format` before submitting. + +## Need Help? + +Open an issue or join discussions! diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..8ab916e --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,14 @@ +# Issue Template + +## Description + +Describe the issue or suggestion. + +## Steps to Reproduce + +1. +2. + +## Expected Behavior + +## Additional Context diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..695547f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug Report +about: Create a report to help us improve +labels: bug +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '...' +3. Scroll down to '...' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..57786ae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature Request +about: Suggest an idea for this project +labels: enhancement +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..52fac91 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,11 @@ +# Pull Request + +## Description + +Please describe your changes and why they are useful. + +## Checklist + +- [ ] I have tested my changes +- [ ] I have updated documentation if needed +- [ ] My code follows the style guidelines diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bfbbccb --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: Node.js CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + - run: npm run lint + - run: npm run format + - run: npm test diff --git a/.gitignore b/.gitignore index 4192ea4..58e22c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules dist .env +.env.local # macOS system file .DS_Store diff --git a/.nycrc b/.nycrc new file mode 100644 index 0000000..49d8e3f --- /dev/null +++ b/.nycrc @@ -0,0 +1,7 @@ +{ + "extends": "@istanbuljs/nyc-config-typescript", + "all": true, + "reporter": ["text", "lcov"], + "include": ["agents/**/*.ts", "utils/**/*.ts", "types/**/*.ts"], + "exclude": ["**/*.test.ts", "scripts/**", "docs/**"] +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..bc0ebee --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "semi": true, + "singleQuote": true, + "printWidth": 100, + "tabWidth": 2 +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4222139 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [Unreleased] + +- Initial improvements: README overhaul, dev tooling, docs navigation, templates, CI/CD setup. diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 0000000..f84ab9c --- /dev/null +++ b/FAQ.md @@ -0,0 +1,22 @@ +# Frequently Asked Questions (FAQ) + +**Q: What is Eremos?** +A: Eremos is a modular agent framework for monitoring blockchain activity and emitting early signals. + +**Q: How do I run an agent?** +A: Use `npm run dev` after installing dependencies. See the README for details. + +**Q: Can I add my own agent?** +A: Yes! Use `agents/example.ts` as a template and follow the contributing guide. + +**Q: What chains are supported?** +A: Currently, Eremos supports RPC-based chains. Multi-chain support is planned (see ROADMAP). + +**Q: How do I report bugs or request features?** +A: Use the issue templates provided in the .github folder. + +**Q: Where can I find documentation?** +A: See the `docs/` folder and the README for navigation. + +**Q: Who maintains Eremos?** +A: The Eremos Core team. See the README for contact links. diff --git a/README.md b/README.md index 2cd120f..67a0367 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,8 @@ Designed for devs who want low-noise, early signals embedded into their workflow

**Meet Theron - Agent-000** -*The first deployed agent in the swarm. Passive. Pattern-sensitive. -Modular and extendable by design.* - +_The first deployed agent in the swarm. Passive. Pattern-sensitive. +Modular and extendable by design._ **Agent-001 Coming Soon** [Teaser #1](https://x.com/EremosCore/status/1949154939923833239), [Teaser #2](https://x.com/EremosCore/status/1954856345284567218) @@ -25,15 +24,14 @@ Modular and extendable by design.* ## Features -- **Modular Agents** - Scoped logic for detecting wallet activity, contract spawns, and anomalies -- **Signal Emission** - Structured signals for logging, alerting, or downstream use -- **Swarm Design** - Each agent operates independently with shared utilities -- **Extensible Core** - Plug in watchers, inference layers, or custom triggers +- **Modular Agents** - Scoped logic for detecting wallet activity, contract spawns, and anomalies +- **Signal Emission** - Structured signals for logging, alerting, or downstream use +- **Swarm Design** - Each agent operates independently with shared utilities +- **Extensible Core** - Plug in watchers, inference layers, or custom triggers - **Minimal Output** - Log only what matters - **Launch Wallet Detection** - Agents can trace freshly funded wallets (e.g. from CEXs), track their contract interactions, and flag high-confidence deploys in real time - **Ghost Watcher** - Monitors long-dormant wallets that suddenly become active again. Useful for tracing old dev wallets or rug setups. -- *+ More to come.* - +- _+ More to come._ --- @@ -64,6 +62,7 @@ An example signal emitted by an agent detecting a live token deployment: ## Signal Confidence Each emitted signal includes a `confidence` score (0-1) based on behavioral heuristics: + - CEX-origin funding (e.g. Kraken, Coinbase) - Time between funding → deploy - Wallet linkage density (bundled activity) @@ -101,10 +100,10 @@ npm run dev ## Key Folders -- `/agents` - Agent templates + logic -- `/utils` - Shared signal/logging utilities -- `/types` - TypeScript interfaces + definitions -- `/scripts` - Bootstrap and dev scripts +- `/agents` - Agent templates + logic +- `/utils` - Shared signal/logging utilities +- `/types` - TypeScript interfaces + definitions +- `/scripts` - Bootstrap and dev scripts - `/docs` - Swarm structure, architecture, & our artwork/official whitepaper --- @@ -130,3 +129,19 @@ MIT © Eremos LLC - **Whitepaper:** [v1.0 PDF](docs/whitepaper.pdf) _Maintained by the Eremos Core team 💛._ + +--- + +## Code Coverage + +Code coverage is tracked using [nyc](https://github.com/istanbuljs/nyc). + +To run coverage: + +```bash +npm run coverage +``` + +Coverage reports are output in the terminal and as an lcov file for badge integration. + +--- diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..0dd1eca --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,22 @@ +# Eremos Roadmap + +## Q3 2025 + +- Launch Agent-001 (active agent) +- Add more agent templates +- Improve signal confidence scoring +- Expand documentation and onboarding + +## Q4 2025 + +- Add web-based dashboard for agent monitoring +- Integrate more chain layers and triggers +- Community-driven agent submissions + +## 2026 + +- Multi-chain support +- Advanced analytics and reporting +- Open API for third-party integrations + +_Contributions and suggestions welcome!_ diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..3d2253f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,8 @@ +# Security Policy + +If you discover a vulnerability in Eremos, please report it by opening a private issue or emailing the maintainers. + +- Do not disclose security issues publicly until they are resolved. +- We aim to respond to security reports within 48 hours. + +Thank you for helping keep Eremos safe! diff --git a/agents/README.md b/agents/README.md new file mode 100644 index 0000000..d80c84b --- /dev/null +++ b/agents/README.md @@ -0,0 +1,11 @@ +# Agents Folder + +This folder contains agent templates and logic for Eremos. + +- `example.ts`: Template agent for custom development +- `theron.ts`: Passive, pattern-sensitive agent +- `harvester.ts`, `observer.ts`, `launchtracker.ts`, `skieró.ts`: Specialized agents for different monitoring tasks + +To create your own agent, copy `example.ts` and modify its logic and metadata. + +See the main README and docs for more details. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..fc3dfa5 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,11 @@ +# Eremos Documentation + +Welcome to the Eremos docs! Use the links below to navigate key topics: + +- [Project Overview](architecture.md) +- [Agents](agents.md) +- [Signals](signals.md) +- [Metrics](metrics.md) +- [Memory](memory.md) +- [Deployment](deployment.md) +- [Contributing](contributing.md) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md new file mode 100644 index 0000000..a25f32b --- /dev/null +++ b/docs/SUMMARY.md @@ -0,0 +1,12 @@ +# Documentation Summary + +- [Agents](agents.md) +- [Architecture](architecture.md) +- [Contributing](contributing.md) +- [Deployment](deployment.md) +- [Events](events.md) +- [Memory](memory.md) +- [Metrics](metrics.md) +- [Runtime](runtime.md) +- [Signals](signals.md) +- [Throttle](throttle.md) diff --git a/docs/architecture-diagram.png b/docs/architecture-diagram.png new file mode 100644 index 0000000..6301575 --- /dev/null +++ b/docs/architecture-diagram.png @@ -0,0 +1 @@ +(placeholder for architecture diagram image) diff --git a/docs/architecture.md b/docs/architecture.md index 426984b..06836c4 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -3,6 +3,7 @@ Eremos is a swarm-style agent framework for passive blockchain observation. Each agent: + - Has a role (`observer`, `memory`, `trigger`, `+ more to come`) - Watches a specific event type - Emits structured signals @@ -12,3 +13,16 @@ Shared utilities and types define common structure across agents. Signals are deterministic and lightweight — not reactive. > Agent communication and orchestration are coming soon. + +# Architecture + +![Architecture Diagram](architecture-diagram.png) + +This diagram illustrates the modular agent framework of Eremos, showing how agents interact with blockchain data, utilities, and the signal emission system. + +- **Agents**: Monitor blockchain events and emit signals +- **Utils**: Provide shared logic for parsing, logging, metrics, and more +- **Types**: Define interfaces and data structures +- **Scripts**: Bootstrap and manage agent execution + +For more details, see the main README and docs. diff --git a/docs/badges.md b/docs/badges.md new file mode 100644 index 0000000..ce598d9 --- /dev/null +++ b/docs/badges.md @@ -0,0 +1,7 @@ +# Badges & Shields + +Add these to your main README for extra clarity: + +- ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) +- ![Node.js CI](https://github.com/Yusasive/Eremos/actions/workflows/node.js.yml/badge.svg) +- ![npm version](https://img.shields.io/npm/v/eremos-core) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..75eb1c7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,389 @@ +{ + "name": "eremos-core", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "eremos-core", + "version": "0.1.0", + "license": "MIT", + "devDependencies": { + "nodemon": "^3.1.10" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json index 75703f0..6a62525 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "description": "Modular agent framework for on-chain activity monitoring.", "main": "index.js", "scripts": { - "dev": "echo 'Running dev mode...'" + "dev": "nodemon --exec npx ts-node scripts/dev-agent.ts", + "test": "echo 'No test runner configured. Add one (e.g. jest, mocha) to run tests.'", + "coverage": "nyc npm test" }, "keywords": [ "agent", @@ -14,5 +16,8 @@ "framework" ], "license": "MIT", - "author": "EremosCore" + "author": "EremosCore", + "devDependencies": { + "nodemon": "^3.1.10" + } } diff --git a/utils/README.md b/utils/README.md new file mode 100644 index 0000000..ce40cfd --- /dev/null +++ b/utils/README.md @@ -0,0 +1,15 @@ +# Utils Folder + +Shared utilities for agent logic, signal generation, logging, and more. + +- `debug.ts`: Debugging helpers +- `error.ts`: Error handling +- `eventParser.ts`: Event parsing logic +- `lifecycle.ts`: Agent lifecycle management +- `logger.ts`: Logging utilities +- `metrics.ts`: Metrics and performance tracking +- `signal.ts`: Signal generation and handling +- `throttle.ts`: Throttling logic +- `time.ts`: Time utilities + +Use these utilities to build robust and efficient agents.