diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..2ba298d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..665eb17 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + +jobs: + validate: + name: Build, lint, and typecheck + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Lint + run: npm run lint + + - name: Typecheck + run: npm run typecheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..bce0a7c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,77 @@ +name: Release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + validate: + name: Validate release tag + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Release checks + run: npm run release:check + + - name: Verify package tarballs + run: npm run release:pack + + github_release: + name: Create GitHub Release + runs-on: ubuntu-latest + needs: validate + + steps: + - name: Create release + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + draft: false + prerelease: false + + npm_publish: + name: Publish npm packages + runs-on: ubuntu-latest + needs: validate + if: ${{ secrets.NPM_TOKEN != '' }} + + permissions: + id-token: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: https://registry.npmjs.org + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Build packages + run: npm run build + + - name: Publish omniforge + run: npm publish -w omniforge --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..56b4307 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,27 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org). + +## [0.1.0] - 2026-04-09 + +### Added +- Local-first, open-source AI automation app with LLM-powered agent generation. +- End-user CLI (`omniforge`) for onboarding, creating agents, and managing automations. +- Local-first runtime with encrypted secrets and portable state in `~/.omniforge/`. +- Provider support through [providers/catalog.json](providers/catalog.json): Anthropic, OpenAI, Gemini, Ollama, DeepSeek, xAI, Groq, Mistral, OpenRouter. +- Reusable skills framework in [skills/](skills/) with markdown playbooks and YAML frontmatter. +- Agent scheduling with timezone-aware daily execution (optional). +- Cross-platform scheduler auto-start management (`omniforge scheduler-service install|status|uninstall`). +- Built-in tools: file I/O, web search, HTTP requests, terminal execution, patch application. +- Bounded context history (default 60 messages, configurable via `OMNIFORGE_MAX_CONTEXT_MESSAGES`). +- Agent state persistence with checkpointing under `~/.omniforge/agents//`. +- Open-source governance: `LICENSE`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`. +- CI/CD workflows: build, lint, typecheck on PR; automated release to GitHub and npm on version tags. +- Dependabot configuration for weekly npm dependency updates. + +### Security +- Zero vulnerabilities verified with `npm audit --omit=dev`. +- Secrets encrypted at rest in `~/.omniforge/params.json`. +- Local-first data model keeps user data and provider keys off remote servers. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..1f07c36 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,79 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, +and learning from the experience +- Focusing on what is best not just for us as individuals, but for the +overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or +advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email +address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a +professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at: +siddak.bath@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. + +[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..bae7673 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,47 @@ +# Contributing to OmniForge + +Thanks for contributing to OmniForge. + +## Development setup + +1. Fork and clone the repository. +2. Install dependencies: + - `npm install` +3. Validate workspace health: + - `npm run check` +4. Run the CLI in development mode: + - `npm run dev:cli -- --help` + +## Pull request checklist + +Before opening a PR, ensure all of the following are true: + +- `npm run build` passes. +- `npm run lint` passes. +- `npm run typecheck` passes. +- You updated docs when behavior changed. +- You included tests when practical. +- You kept changes focused and backwards compatible where possible. + +## Commit and PR guidance + +- Use clear, imperative commit messages. +- Keep PRs small and reviewable. +- Explain motivation, design decisions, and risks. +- Link related issues in the PR description. + +## Reporting issues + +When filing bugs, include: + +- Expected behavior +- Actual behavior +- Reproduction steps +- Operating system and Node.js version +- Relevant logs (with secrets redacted) + +## Security issues + +Do not open public issues for vulnerabilities. + +Please report via the process in [SECURITY.md](SECURITY.md). diff --git a/IMPLEMENTATION_SUMMARY.md b/IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index 82b52e1..0000000 --- a/IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,386 +0,0 @@ -# OpenForge CLI - Implementation Summary - -## Overview - -The OpenForge CLI has been completely redesigned with a beautiful Terminal User Interface (TUI) using Ink and React, transforming it from basic console output into a professional, interactive application. - -## Files Created - -### 1. Components (`src/components/`) - -#### `index.tsx` (365 lines) -Core UI component library: -- **Header**: Stylized titles with subtitles -- **Section**: Bordered content areas -- **Spinner**: Animated loading indicator (9-frame animation) -- **StatusBox**: Status messages with icons -- **ListItem**: List items with selection indicators -- **ProgressBar**: Visual progress display -- **InfoBox**: Information boxes with borders -- **TextBlock**: Multi-line text handling -- **Highlight**: Colored text emphasis -- **KeyHint**: Keyboard shortcut hints -- **Theme System**: Consistent color palette (cyan, blue, green, red, yellow, gray) - -#### `forms.tsx` (195 lines) -Interactive form components for future enhancements: -- **SelectMenu**: Keyboard-navigable selection menus -- **TextInput**: Text input with prompts -- **CheckboxList**: Multi-select with checkboxes -- Full keyboard control support (↑↓, Space, Enter, Ctrl+C) - -### 2. Utilities (`src/utils/`) - -#### `interactive.ts` (120 lines) -Shared interactive input utilities replacing @inquirer/prompts: -- **selectFromList()**: Beautiful menu selection with descriptions -- **promptInput()**: Text input prompts with optional defaults -- **promptPassword()**: Masked password input -- **promptConfirm()**: Yes/No confirmations -- All use native readline for better control and performance - -### 3. Updated Commands (`src/commands/`) - -#### `onboarding.ts` (Refactored) -- Beautiful welcome screen with Header and Section components -- Interactive provider selection with keyboard navigation -- Model selection showing context window and tags -- Secure password input for API keys -- Visual progress indicator -- Success confirmation with setup details - -#### `create-agent.ts` (Refactored) -- Stylized command header with subtitle -- Natural language description input -- Interactive provider and model selection -- Live "Building Your Agent" spinner during generation -- Skill parameter configuration with descriptions -- Real-time streaming output with color coding -- Session summary with details - -#### `sessions.ts` (Refactored) -- Interactive session list with status indicators -- Session details display (provider, model, status) -- Agent message input with styling -- Live response streaming -- Completion confirmation with session info - -#### `skills.ts` (Refactored) -- Interactive skill library viewer -- Keyboard navigation (↑↓ to scroll, Ctrl+C to exit) -- Real-time skill detail display on cursor movement -- Shows parameters, tools, and descriptions -- Navigation hints - -#### `settings.ts` (Refactored) -- Beautiful settings display -- Generator configuration section -- Configured providers with redacted API keys -- Visual section borders and styling - -## Files Documented - -### 1. `CLI_TUI_DESIGN.md` (800+ lines) -Comprehensive design system documentation: -- Architecture overview -- Component descriptions with examples -- Feature breakdown by command -- Design system details (colors, icons, layout patterns) -- Interactive control mappings -- File structure -- Implementation details and decisions -- Future enhancement roadmap - -### 2. `CLI_VISUAL_EXAMPLES.md` (700+ lines) -Visual walkthroughs of all commands: -- Onboarding flow with ASCII mockups -- Create Agent flow with live updates -- Sessions flow with interaction -- Skills viewer with navigation -- Settings display -- UI component examples -- Color scheme visualization -- Responsive behavior documentation - -### 3. `CLI_DEVELOPMENT.md` (600+ lines) -Developer guide for extending the CLI: -- What changed from old approach -- Key files and their purposes -- New implementation patterns -- Building new commands (step-by-step) -- Common component patterns -- Advanced patterns (streaming, state updates) -- Testing and building instructions -- Customization guide -- Troubleshooting tips -- Best practices -- Performance notes -- Migration checklist - -### 4. `CLI_QUICK_REFERENCE.md` (400+ lines) -Quick lookup reference: -- Command quick table -- Keyboard controls -- Component snippets -- Utility function signatures -- File locations -- Color palette reference -- Status icons -- Common code patterns -- Build commands -- Tips & tricks -- Environment variables -- Known limitations -- Help resources - -### 5. `README_TUI.md` (250+ lines) -High-level overview and getting started: -- Key features summary -- Architecture overview -- Before/after comparison -- Documentation index -- Getting started guide -- Design principles -- Component reference -- Installation notes -- Browser compatibility -- Performance metrics -- Future plans -- Contributing guide - -## Key Implementation Details - -### Technology Stack -- **Ink**: ^6.8.0 (React for terminal UI) -- **React**: ^19.0.0 (component framework) -- **Commander**: ^13.1.0 (CLI argument parsing) -- **Node.js readline**: Built-in (keyboard input) - -### Removed Dependencies -- `@inquirer/prompts` (replaced with native readline implementations) - -### Design Patterns Used -1. **React.createElement()** - Consistent component creation (no JSX) -2. **Immutable Props** - Components take all configuration as props -3. **Stateless Components** - Functions returning elements -4. **Ink render()** - Display components to terminal -5. **Streaming Updates** - rerender() for live data -6. **Native Readline** - Raw keyboard handling for menus -7. **Keyboard Shortcuts** - Ctrl+C to exit, ↑↓ to navigate - -### Performance Optimizations -- Direct readline without polling -- Minimal re-renders with targeted prop updates -- Native terminal output (no JavaScript overhead) -- Efficient string handling for streaming -- Fast keyboard response (<10ms) - -## Features Delivered - -### ✅ Onboarding Wizard -- Interactive provider selection -- Model selection with context info -- Secure API key input -- Visual progress -- Success confirmation - -### ✅ Create Agent -- Natural language input -- Live building progress -- Skill parameter configuration -- Real-time streaming output -- Session summary - -### ✅ Session Management -- Interactive session list -- Session resume with input -- Live agent responses -- Session status tracking - -### ✅ Skill Library -- Interactive viewer -- Real-time detail display -- Parameter information -- Tool descriptions - -### ✅ Settings Display -- Configuration overview -- Provider list with keys -- Visual organization - -### ✅ Component System -- Reusable UI components -- Consistent styling -- Theme system -- Icons and indicators - -### ✅ Interactive Controls -- Keyboard navigation -- Menu selection -- Text input -- Password input -- Confirmation prompts - -### ✅ Documentation -- Design system docs -- Visual examples -- Developer guide -- Quick reference -- High-level overview - -## Code Statistics - -| File | Lines | Purpose | -|------|-------|---------| -| components/index.tsx | 365 | Core UI components | -| components/forms.tsx | 195 | Form components | -| utils/interactive.ts | 120 | Input utilities | -| commands/onboarding.ts | 120 | Onboarding command | -| commands/create-agent.ts | 250 | Create agent command | -| commands/sessions.ts | 200 | Sessions command | -| commands/skills.ts | 100 | Skills command | -| commands/settings.ts | 90 | Settings command | -| **Total Code** | **~1,440** | **Implementation** | -| **Total Docs** | **~3,000** | **Documentation** | - -## Testing Checklist - -### Manual Testing (Recommended) -- [ ] `npm run dev -w @openforge/cli -- onboard` -- [ ] `npm run dev -w @openforge/cli -- create "test agent"` -- [ ] `npm run dev -w @openforge/cli -- sessions` -- [ ] `npm run dev -w @openforge/cli -- skills` -- [ ] `npm run dev -w @openforge/cli -- settings` - -### Keyboard Tests -- [ ] ↑↓ navigation works -- [ ] Enter confirms selection -- [ ] Ctrl+C exits gracefully -- [ ] Type input works -- [ ] Backspace works in inputs - -### Visual Tests -- [ ] Colors display correctly -- [ ] Spinners animate -- [ ] Text alignment is clean -- [ ] Borders render properly -- [ ] Icons display correctly - -### Edge Cases -- [ ] Empty states handled -- [ ] Error messages display -- [ ] Long text wraps -- [ ] Wide terminals work -- [ ] Narrow terminals work - -## Build & Deployment - -### Build Command -```bash -npm run build -w @openforge/cli -``` - -### Package.json Updates -- Already includes ink and react -- No new external dependencies required -- Removed @inquirer/prompts usage - -### TypeScript -- All files use TypeScript -- Full type safety -- No `any` types - -## Backward Compatibility - -### Breaking Changes -- Command output format changed (now TUI-based) -- Removed @inquirer/prompts usage -- CLI no longer works with some legacy piping patterns - -### Non-Breaking -- All commands still work with same names -- Same functionality, better UX -- Degrades gracefully in non-TTY environments - -## Documentation Quality - -- **Design System**: Complete with colors, icons, patterns -- **Visual Examples**: ASCII mockups of all flows -- **Developer Guide**: Step-by-step patterns and examples -- **Quick Reference**: Fast lookup for common tasks -- **Overview**: High-level summary for users - -## Success Metrics - -✅ **Beautiful UI** - Modern, professional appearance -✅ **Interactive** - Full keyboard navigation -✅ **Fast** - Instant responses, smooth animations -✅ **Documented** - Comprehensive guides -✅ **Extensible** - Easy to add new features -✅ **Performant** - <100ms perceived latency -✅ **Accessible** - Keyboard-only, no mouse required -✅ **Maintainable** - Clean code, reusable components - -## Next Steps - -1. **Build & Test** - ```bash - npm run build -w @openforge/cli - npm run dev -w @openforge/cli -- onboard - ``` - -2. **Try All Commands** - - Test each command interactively - - Verify keyboard navigation - - Check visual consistency - -3. **Extend (Optional)** - - Add new commands following the patterns - - Create additional components - - Customize colors/theme - -4. **Deploy** - - Update CLI documentation - - Add to release notes - - Announce to users - -## Files Modified Summary - -### New Files Created -- `src/components/index.tsx` - Core UI components -- `src/components/forms.tsx` - Form components -- `src/utils/interactive.ts` - Input utilities -- `CLI_TUI_DESIGN.md` - Design documentation -- `CLI_VISUAL_EXAMPLES.md` - Visual guide -- `CLI_DEVELOPMENT.md` - Developer guide -- `CLI_QUICK_REFERENCE.md` - Quick reference -- `README_TUI.md` - Overview - -### Files Modified -- `src/commands/onboarding.ts` - Complete rewrite with TUI -- `src/commands/create-agent.ts` - Complete rewrite with TUI -- `src/commands/sessions.ts` - Complete rewrite with TUI -- `src/commands/skills.ts` - Complete rewrite with TUI -- `src/commands/settings.ts` - Complete rewrite with TUI - -### Files Unchanged -- `src/index.ts` - No changes to CLI entry point -- `src/commands/web.ts` - No changes -- `package.json` - No changes needed (ink/react already present) -- `tsconfig.json` - No changes - -## Conclusion - -The OpenForge CLI has been successfully transformed from a basic console application into a beautiful, interactive Terminal User Interface. The implementation is clean, well-documented, and ready for both users and developers. - -All features requested have been implemented: -- ✅ Onboarding wizard -- ✅ Create agent with live progress -- ✅ Session list with resume -- ✅ Skill library viewer -- ✅ Settings display -- ✅ Interactive controls -- ✅ Beautiful styling -- ✅ Professional appearance - -The CLI now feels like a proper TUI application rather than simple console.log output. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9844081 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 OmniForge contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index f9aa143..cfd83a1 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,6 @@ OmniForge is for people who want automation outcomes, not framework plumbing. - Let OmniForge generate and run the workflow. - Keep control of your data and provider keys locally. -You can still extend it as a developer, but the product goal is simple: **non-developers can use it successfully**. - ## What ships - **End-user CLI app** (`omniforge`) for onboarding, creating automations, and running agents @@ -56,48 +54,34 @@ Resume an existing agent: omniforge agents ``` -Run scheduled agents continuously: - -```bash -omniforge scheduler -``` - -## Run from source (optional) - -### 1) Install dependencies +## Run from source (development) ```bash +git clone https://github.com/siddakBath/omniforge.git +cd omniforge npm install -``` - -### 2) Build workspace - -```bash npm run build ``` -### 3) First-time onboarding (CLI) +First-time onboarding: ```bash npm run dev:cli -- onboard ``` -This sets your default generator provider/model and stores keys in `~/.omniforge/config.json`. - -### 4) Create an agent +Create and manage agents: ```bash -npm run dev:cli -- create "I need an agent that monitors my Gmail for investor replies and drafts follow-ups in my voice" +npm run dev:cli -- create "Your automation description" +npm run dev:cli -- agents ``` -### 5) Run local CLI +Optional: configure scheduler startup from source: ```bash -npm run dev +npm run dev:cli -- scheduler-service install ``` -Then use the interactive CLI to continue managing agents and skills. - ## Architecture overview See [docs/architecture.md](docs/architecture.md). @@ -132,6 +116,7 @@ Optional per-agent daily schedule is stored in the `schedule` field inside `agen Runtime context is bounded automatically to the most recent messages (default `60`), while always injecting `system-prompt.md` at the top for every model call. Configure with `OMNIFORGE_MAX_CONTEXT_MESSAGES`. Scheduling is timezone-aware (IANA timezone) and runs once per day at configured `HH:mm` local time. +The scheduler dynamically reloads schedule changes and runs catch-up jobs missed during downtime. ## Contributing @@ -145,7 +130,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, standards, and pull request re ## Notes -- Provider catalog includes: Anthropic, OpenAI, Gemini, DeepSeek, xAI, Groq, Mistral, OpenRouter. +- Provider catalog includes: Anthropic, OpenAI, Gemini, Ollama (local), DeepSeek, xAI, Groq, Mistral, OpenRouter. - Anthropic and Gemini use native SDK paths; compatible providers use OpenAI-style API routing. - Skills are markdown playbooks with YAML frontmatter metadata. - Tools are runtime capabilities and are injected separately from skills. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..cde39a2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,27 @@ +# Security Policy + +## Supported versions + +OmniForge is currently pre-1.0. Security fixes are applied to the latest minor release on the default branch. + +## Reporting a vulnerability + +Please do **not** disclose vulnerabilities publicly in issues or discussions. + +Report privately by emailing: siddak.bath@gmail.com + +Include: + +- Affected component/package +- Reproduction details +- Impact assessment +- Suggested fix (if available) + +We will acknowledge receipt within 3 business days and provide status updates as investigation progresses. + +## Disclosure process + +- Confirm and triage the report +- Develop and validate a fix +- Coordinate disclosure timing +- Publish release notes and mitigation guidance diff --git a/package-lock.json b/package-lock.json index a9b9cbe..f0d86e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,9 +32,9 @@ } }, "node_modules/@anthropic-ai/sdk": { - "version": "0.82.0", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.82.0.tgz", - "integrity": "sha512-xdHTjL1GlUlDugHq/I47qdOKp/ROPvuHl7ROJCgUQigbvPu7asf9KcAcU1EqdrP2LuVhEKaTs7Z+ShpZDRzHdQ==", + "version": "0.86.1", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.86.1.tgz", + "integrity": "sha512-Q32GUFCVMmTJrVQC4bQOG2mA8rGNuYWJP8ODufxl3g5Awy1VjY5wy0Xm+mC++i5rBkZMvxhzOR9MNTW7IvIAmw==", "license": "MIT", "dependencies": { "json-schema-to-ts": "^3.1.1" @@ -497,7 +497,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -508,7 +507,6 @@ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1188,6 +1186,15 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/node-cron": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.2.1.tgz", + "integrity": "sha512-lgimEHPE/QDgFlywTd8yTR61ptugX3Qer29efeyWw2rv259HtGBNn1vZVmp8lB9uo9wC0t/AT4iGqXxia+CJFg==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -1317,7 +1324,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1671,7 +1677,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -1681,11 +1686,12 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@anthropic-ai/sdk": "^0.82.0", + "@anthropic-ai/sdk": "^0.86.1", "@google/genai": "^1.46.0", "@inquirer/prompts": "^8.3.2", "commander": "^13.1.0", "ink": "^6.8.0", + "node-cron": "^4.2.1", "openai": "^6.33.0", "react": "^19.0.0", "yaml": "^2.8.1", diff --git a/package.json b/package.json index fa2961e..bdcf7c7 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,10 @@ "build": "npm run --workspaces build", "dev": "npm run -w omniforge dev", "dev:cli": "npm run -w omniforge dev", + "dev:scheduler": "npm run -w omniforge dev -- scheduler", + "dev:scheduler:install": "npm run -w omniforge dev -- scheduler-service install", + "dev:scheduler:status": "npm run -w omniforge dev -- scheduler-service status", + "dev:scheduler:uninstall": "npm run -w omniforge dev -- scheduler-service uninstall", "check": "npm run build && npm run lint && npm run typecheck", "lint": "npm run --workspaces lint", "release:check": "npm run check && npm audit --omit=dev", diff --git a/packages/cli/package.json b/packages/cli/package.json index a224db9..1c4475f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -43,7 +43,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@anthropic-ai/sdk": "^0.82.0", + "@anthropic-ai/sdk": "^0.86.1", "@google/genai": "^1.46.0", "@inquirer/prompts": "^8.3.2", "commander": "^13.1.0",