open-index/open-npm huggingface dataset:
npm package: @rexxars/rsa-unpack
Description: unpack rsa fields from PEM strings (typescript/browser-compatible fork)
Author: James Halliday
Latest version: 1.0.1

# rsa-unpack

unpack rsa fields from PEM strings

[![build status](https://secure.travis-ci.org/rexxars/rsa-unpack.png)](http://travis-ci.org/rexxars/rsa-unpack)

## example

```js
const unpack = require('@rexxars/rsa-unpack')
const rsa = unpack('-----BEGIN RSA PRIVATE KEY----- /* ... */')
console.dir(rsa)
```

---

```
{ modulus: <Buffer 02 6f cb 5a 12 79 81 c0 b7 03 ad b8 eb 20 a3 2f 5c 26 09 ab 4e e1 e9 66 05 2c 36 84 b2 21 76 3a 65 ce 8b b3 4e fd 51 03 ea 98 4d f8 8d ab cc 1b 60 a6 3b ...>,
  bits: 1073,
  publicExponent: 65537,
  privateExponent: <Buffer 01 e9 6a 97 e9 e4 d1 6b bd 6b b2 72 62 70 41 f8 57 89 34 8e e6 9e 12 fc 4b 54 ac 15 a2 98 e4 64 df 19 95 bc 02 5e 77 a0 e5 ff c7 35 1b 1a 4e 52 b0 9a dc ...>,
  prime1: <Buffer 01 9f 6b 9a 2c 1f 1e 6e 4a a3 a5 00 e8 e6 1a be 30 41 e2 66 3e be b5 81 0a d2 d4 0e d1 86 bf 4a e3 1d 20 ac 6a fb a1 cd 0c db 2a 2d 09 27 c7 d3 81 e0 f0 ...>,
  prime2: <Buffer 01 80 68 ba c8 93 2c 79 e6 8e f5 8d 0f 8c b3 af 24 96 19 2c d4 43 23 54 48 78 36 42 d0 a3 12 16 a0 03 ac 3a 77 e9 17 a1 8a 0c 4a a9 b5 cf cb b6 6a d4 ad ...>,
  exponent1: <Buffer 22 4e 1c 79 30 48 af 0a f2 e0 99 66 a2 39 eb 22 c9 0e 0d 2b 79 4c 3b cf cd 01 3e 08 07 7c 9c 8e 8c c5 39 f7 cb b7 dc db 06 ee 40 b1 d4 db 27 98 3e 1f 14 ...>,
  exponent2: <Buffer 00 f3 5c 5a 33 b5 08 c9 3b af 71 c1 16 01 0b 98 6b df 22 9d 00 dc 68 37 69 91 c1 38 57 81 85 68 11 71 81 cd 9a 30 55 27 8d 8f ee 8c b6 6f 91 16 31 57 e7 ...>,
  coefficient: <Buffer 0f a9 06 b8 51 44 98 84 9e d7 92 5f 0d 24 0a f0 3f e1 bb 86 52 93 e5 b4 53 c9 6c 0a da ef 70 1b 83 99 a4 9a 15 e8 cb 43 5b f7 14 9b d5 a0 8c 0d 47 c0 af ...> }
```

## methods

```js
const unpack = require('@rexxars/rsa-unpack')
```

### unpack(pemKeyString)

Unpack the PEM-formatted string `pemKeyString` into the RSA field values.
The key can be a public or private key.

If the key is invalid, returns undefined.

## install

With [npm](https://www.npmjs.com/) do:

```
npm install @rexxars/rsa-unpack
```

## fork

This is a fork of the original [rsa-unpack](https://github.com/substack/rsa-unpack) by [substack](https://github.com/substack), making it more browser-friendly and providing typescript types.

## license

MIT
npm package: @rexxars/sanity-diff-patch
Description: Generates a set of Sanity patches by comparing two JSON structures
Author: Espen Hovlandsdal
Latest version: 0.1.0

# @rexxars/sanity-diff-patch

Generates a set of Sanity patches needed to change an item from shape to another.

## Getting started

npm install --save @rexxars/sanity-diff-patch

## Usage

```js
import {diffPatch} from '@rexxars/sanity-diff-patch'

const patch = diffPatch(itemA, itemB)
/*
[
  {patch: {id: 'docId', set: {...}}},
  {patch: {id: 'docId', unset: [...]}},
  {patch: {id: 'docId', insert: {...}}}
]
*/
```

## Example usage

```js
import {diffPatch} from '@rexxars/sanity-diff-patch'
import sanityClient from './myConfiguredSanityClient'

const itemA = {
  _id: 'die-hard-iii',
  _type: 'movie',
  name: 'Die Hard 3',
  year: 1995,
  characters: [
    {
      _key: 'ma4sg31',
      name: 'John McClane'
    },
    {
      _key: 'l13ma92',
      name: 'Simon Gruber'
    }
  ]
}

const itemB = {
  _id: 'drafts.die-hard-iii',
  _type: 'movie',
  name: 'Die Hard with a Vengeance',
  characters: [
    {
      _key: 'ma4sg31',
      name: 'John McClane'
    },
    {
      _key: 'l13ma92',
      name: 'Simon Grüber'
    }
  ]
}

// Specify id if the two documents do not match
const operations = diffPatch(itemA, itemB, {id: itemA._id})
await sanityClient.transaction(operations).commit()

// Patches generated:
const generatedPatches = [
  {
    patch: {
      id: 'die-hard-iii',
      set: {
        'name': 'Die Hard with a Vengeance',
        'characters[_key=="l13ma92"].name': 'Simon Grüber'
      },
    }
  },
  {
    patch: {
      id: 'die-hard-iii',
      unset: ['year']
    }
  }
}
```

## Needs improvement

- Improve patch on array item move
- Improve patch on array item delete
npm package: @rexxars/session-checker
Description: Refreshes the current user session in Sanity studios on an interval
Author: Espen Hovlandsdal
Latest version: 1.0.1

# @rexxars/session-checker

Refreshes the current user session in Sanity studios on an interval

## Installation

```
sanity install @rexxars/session-checker
```

## License

MIT © Espen Hovlandsdal
See LICENSE
npm package: @rexxars/timed-out
Description: Emit `ETIMEDOUT` or `ESOCKETTIMEDOUT` when ClientRequest is hanged
Author: Vsevolod Strukchinsky
Latest version: 3.0.1

# timed-out [![Build Status](https://travis-ci.org/floatdrop/timed-out.svg?branch=master)](https://travis-ci.org/floatdrop/timed-out)

> Timeout HTTP/HTTPS requests

Emit Error object with `code` property equal `ETIMEDOUT` or `ESOCKETTIMEDOUT` when ClientRequest is hanged.

## Usage

```js
var get = require('http').get;
var timeout = require('timed-out');

var req = get('http://www.google.ru');
timeout(req, 2000); // Set 2 seconds limit
```

### API

#### timedout(request, time)

##### request

*Required*  
Type: [`ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest)

The request to watch on.

##### time

*Required*  
Type: `number`

Time in milliseconds to wait for `connect` event on socket and also time to wait on inactive socket.

## License

MIT © [Vsevolod Strukchinsky](floatdrop@gmail.com)
npm package: @rexxars/vite-dts
Description: Blazing fast .d.ts modules for libraries
Author: Alec Larson
Latest version: 1.0.4

# vite-dts

[![npm](https://img.shields.io/npm/v/vite-dts.svg)](https://www.npmjs.com/package/vite-dts)
[![Code style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/alecdotbiz)

Generate a `.d.ts` module for both `.es` and `.cjs` entry points when using Vite's [lib mode](https://vitejs.dev/guide/build.html#library-mode). Instead of generating type definitions from your TypeScript source code (and bundling them), it assumes you will publish your source code, which means it can re-export from your TypeScript entry module. This improves performance drastically.

&nbsp;

### FAQ

- **Do I have to publish my `src` folder for this to work?**  
  Yes. For libraries, you generally need to do that anyway, if you publish sourcemaps (which you should).

- **Will this bundle my types?**  
  No. It merely re-exports from your library's entry module.

&nbsp;

### Usage

See the [`./demo/vite.config.js`](https://github.com/alloc/vite-dts/blob/master/demo/vite.config.js) file for more details.

```ts
import dts from 'vite-dts'

export default {
  plugins: [dts()],
}
```
npm package: @rexxhayanasi/keyed-db
Description: Lightweight library to store an in-memory DB
Author: Adhiraj Singh
Latest version: 1.0.0

# Keyed DB

A light-weight node library to manage a sorted & indexed collection with pagination support. 
All done using Binary Search. Based off my swift code for [Queenfisher](https://github.com/adiwajshing/Queenfisher)

## Install

`npm i github:adiwajshing/keyed-db`

## Running Tests

`npm test`

## Functions

``` ts

db = new KeyedDB<T> (t => t.uniqueNumberKeyProperty, t => t.optionalUniqueIDProperty)
// compare with a custom function
db = new KeyedDB<T> ({  
    key: t => t.someProperty,
    compare: (t1, t2) => someComputation(t1, t2) // return -1 if t1 < t2, 0 if t1=t2 & 1 if t1 > t2
}, t => t.optionalUniqueIDProperty)

db.insert (value) // insert value in DB
db.upsert (value) // upserts value
db.insertIfAbsent (value) // only inserts if not already present in DB
db.delete (value) // delete value
db.deleteById (value.optionalUniqueIDProperty) // delete value by referencing the ID
// update the key of a value, 
// will automatically place object after key change
db.updateKey (value, value => value.uniqueKeyProperty = newValue) 
db.paginated (someCursor, 20) // get X results after the given cursor (null for the first X results)

```

## Usage

``` ts
import KeyedDB from '@adiwajshing/keyed-db'

// Let's use the db to sort & maintain a list of chats
// Chats must be accessed quickly via the chatID (the person you're chatting with)
// Chats must be sorted by recency
type Chat = {
    timestamp: Date
    chatID: string
}

// first argument -- sorting property, second argument -- ID property
const db = new KeyedDB<Chat>(value => value.timestamp.getTime()*-1, value => value.chatID)

for (let i = 0; i < 1000;i++) {
    // insert data
    db.insert (
        {
            timestamp: new Date( new Date().getTime() - Math.random()*10000 ), 
            chatID: `person ${i}`
        }
    )
}
console.log (db.all()) // return internal sorted array
console.log (db.paginated(null, 20)) // return first 20 chats
console.log (db.paginated(null, 20, null, 'before')) // return last 20 chats
console.log (db.paginated(null, 20, chat => chat.chatID.includes('something'))) // return first 20 chats where the chatID contains 'something'

const someDate = new Date().getTime()
const cursorPaginated = db.paginated(someDate, 20)
console.log (cursorPaginated) // return 20 chats after the specified date

db.delete (cursorPaginated[0]) // delete paginated chats 

// update chat timestamp
db.updateKey(cursorPaginated[1], value => value.timestamp = new Date().getTime()) 

```

## Time Complexity

| Operation      | Time Complexity |
|----------------|-----------------|
| db.insert()    | O(logN)         |
| db.delete()    | O(logN)         |
| db.get()       | O(1)            |
| db.updateKey() | O(logN)         |
npm package: @reyah/m2m-auth-provider
Description: Reyah SDK M2M authentication provider
Author: Arthur Knoepflin
Latest version: 0.0.2

# Reyah M2M auth provider
Reyah M2M auth provider for Node.js written in TypeScript

## Compile
This project use typescript

```bash
yarn install
yarn build
```

## Usage

```javascript
import Reyah from '@reyah/api-sdk';
import M2MAuthProvider from '@reyah/m2m-auth-provider';

const provider = new M2MAuthProvider('client_id', 'client_secret', ['optional scopes']);
Reyah.Auth.getInstance().useAuthProvider(provider);
```

## Docs
The documentation is generated with Typedoc.

```bash
yarn install
yarn run gendoc
```
npm package: @reyaxyz/api-sdk
Description: <p align="center"> API sdk for the Reya Network </p>
Latest version: 0.164.20

# @reyaxyz/api-sdk

<p align="center"> API sdk for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/athena-logger
Description: <p align="center"> Athena Logger sdk for the Reya Network </p>
Latest version: 0.4.366

# @reyaxyz/athena-logger

<p align="center"> Athena Logger sdk for the Reya Network </p>

<br />

## Searching Logs in Datadog

To search logs in Datadog, use the appropriate log tags. The service is customizable. Here are examples for searching user journey actions and errors:

### User Journey Actions

To find user journey actions, search with the tag `athena.user_journey`:

```
service:<your-service> athena.user_journey @user.walletAddress:<wallet-address>

```

### Errors

To find errors, search with the tag athena.error:

```
service:test athena.error @user.walletAddress:0x123

```

| Statements                                                                     | Branches                                                                             | Functions                                                                    | Lines                                                                |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/chimera
Description: <p align="center"> @reyaxyz/chimera </p>
Latest version: 0.4.1

# @reyaxyz/wallet-sdk

<p align="center"> @reyaxyz/chimera </p>

Boosting confidence in SDK flows via service that performs the integration.


<br />

| Statements                                                                     | Branches                                                                   | Functions                                                                    | Lines                                                                |
| ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/common
Description: <p align="center"> Common shared types/functions for the Reya Network </p>
Latest version: 0.344.2

# @reyaxyz/common

<p align="center"> Common shared types/functions for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-32.94%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-31.28%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-18.72%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-34.22%25-red.svg?style=flat) |
npm package: @reyaxyz/community-sdk
Description: <p align="center"> Community sdk for the Reya Network </p>
Latest version: 0.57.17

# @reyaxyz/community-sdk

<p align="center"> Community sdk for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/network-sdk
Description: <p align="center"> SDK for the Reya network-wide functionality </p>
Latest version: 0.36.3

# @reyaxyz/network-sdk

<p align="center"> SDK for the Reya network-wide functionality </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/risk-sdk
Description: <p align="center"> Risk sdk for the Reya Network </p>
Latest version: 0.7.146

# @reyaxyz/risk-sdk

<p align="center"> Risk sdk for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyaxyz/sdk
Description: <p align="center"> API sdk for the Reya Network </p>
Latest version: 0.146.6

# @reya-network/api-sdk

<p align="center"> API sdk for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-6.39%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-5.55%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-2.66%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-6.09%25-red.svg?style=flat) |
npm package: @reyaxyz/ui-minions
Description: Library that takes care of providing utility methods across Reya projects.
Author: antoni0dev
Latest version: 1.15.0

# ui-minions

<p align="center">
  <a href="https://app.reya.xyz/">
    <picture>
      <img src="./docs/logo.png" alt="Reya" width="128" />
    </picture>
  </a>
</p>

<p align="center">Powering Reya and beyond!!!</p>

<p align="center">
  <img src="https://badgen.net/github/tag/Reya-Labs/ui-minions" alt="Tag" />
  <img src="https://badgen.net/github/checks/Reya-Labs/ui-minions/main" alt="Checks" />
  <img src="https://badgen.net/github/last-commit/Reya-Labs/ui-minions/main" alt="Last Commit" />
</p>

<p align="center">
A package providing useful various utilities for Reya Labs projects including formatters, error extractors, date formatters, string/number formatters and others.
</p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-90.02%25-brightgreen.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-80.63%25-yellow.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-85.89%25-yellow.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-90.05%25-brightgreen.svg?style=flat) |
npm package: @reyaxyz/wallet-sdk
Description: <p align="center"> Wallet sdk for the Reya Network </p>
Latest version: 0.18.55

# @reyaxyz/wallet-sdk

<p align="center"> Wallet sdk for the Reya Network </p>

<br />

| Statements                  | Branches                | Functions                 | Lines             |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-0%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-0%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-0%25-red.svg?style=flat) |
npm package: @reyco1/release-notes
Description: Generates formatted release notes from Git commit logs using OpenAI's API.
Author: Rey Columnam
Latest version: 1.0.10

# Release Notes Generator

[![GitHub license](https://img.shields.io/github/license/reyco1/release-notes)](https://github.com/reyco1/release-notes/blob/main/LICENSE)  [![GitHub issues](https://img.shields.io/github/issues/reyco1/release-notes)](https://github.com/reyco1/release-notes/issues)  ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/reyco1/release-notes)  ![npm](https://img.shields.io/npm/dw/@reyco1/release-notes)  ![npm](https://img.shields.io/npm/v/@reyco1/release-notes) ![GitHub watchers](https://img.shields.io/github/watchers/reyco1/release-notes)



The Release Notes Generator is a command-line tool that automates the creation of professional release notes from Git commit logs. Leveraging OpenAI's powerful GPT-3.5 model, it efficiently converts raw commit data into a clean, structured format. This tool is ideal for project managers, developers, and teams looking to streamline their release documentation process.

## Features

- **Automated Generation**: Automatically generates release notes from Git commit logs.
- **OpenAI Integration**: Uses OpenAI's GPT-3.5 to ensure the notes are concise and professionally formatted.
- **Customizable Date Range**: Generate notes for specific development periods by specifying start and end dates.

## Prerequisites

Before you install and use the Release Notes Generator, ensure you have the following:

- Node.js (v14 or higher)
- npm (v6 or higher)
- Git installed on your machine
- An OpenAI API key (set as an environment variable `OPENAI_API_KEY`)

## Installation

To install the Release Notes Generator globally, run the following command:

```bash
npm install -g @reyco1/release-notes
```

## Usage

To generate release notes, you need to provide a date range (`since` and `until`) and an output file path:

```bash
release-notes --since=YYYY-MM-DD --until=YYYY-MM-DD --output=path/to/output.md
```

### Example

```bash
release-notes --since=2024-01-01 --until=2024-04-01 --output=./release-notes-April.md
```

This will fetch commits from 1st January 2024 to 1st April 2024 and save the generated release notes to `release-notes-April.md`.

## Configuration

Ensure that your `OPENAI_API_KEY` is set in your environment variables to authenticate requests to OpenAI:

```bash
export OPENAI_API_KEY="your_openai_api_key_here"
```

## Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue if you have feedback, suggestions, or improvements.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

If you encounter any problems or have any queries about using the tool, please open an issue on GitHub.

## Authors

- **Rey Columna** - [reyco1](https://github.com/reyco1)

Thank you for using or contributing to Release Notes Generator!
npm package: @reyemtech/stack-upgrade
Description: CLI to launch Stack Upgrade Agents via Docker or Kubernetes
Latest version: 1.0.1

# @reyemtech/stack-upgrade

[![npm](https://img.shields.io/npm/v/@reyemtech/stack-upgrade)](https://www.npmjs.com/package/@reyemtech/stack-upgrade)
[![npm downloads](https://img.shields.io/npm/dm/@reyemtech/stack-upgrade)](https://www.npmjs.com/package/@reyemtech/stack-upgrade)
[![License: BSL 1.1](https://img.shields.io/badge/License-BSL_1.1-yellow.svg)](https://github.com/ReyemTech/stack-upgrade/blob/main/LICENSE)
[![Node](https://img.shields.io/node/v/@reyemtech/stack-upgrade)](https://nodejs.org)

CLI to launch Stack Upgrade Agents via Docker or Kubernetes. Auto-detects repos, Claude credentials, and runtime — then launches disposable containers that upgrade your stack autonomously using [Claude Code](https://docs.anthropic.com/en/docs/claude-code).

**Currently supports:** Laravel. **Coming soon:** React, Rails, Django.

## Quick Start

```bash
npx @reyemtech/stack-upgrade
```

Or install globally:

```bash
npm i -g @reyemtech/stack-upgrade
stack-upgrade
```

## Prerequisites

- **Docker** or **kubectl** in PATH
- **GitHub CLI** (`gh`) authenticated — for repo discovery and PR creation
- **Claude credentials** — Claude Max token or Anthropic API key

## What It Does

1. Scans your GitHub repos for supported stacks (Laravel via `composer.json`)
2. Prompts for target version, push/PR preference, and branch suffix
3. Supports queuing multiple upgrades to run in parallel
4. Launches a disposable Docker container (or K8s pod) per upgrade
5. Each container runs Claude Code autonomously through upgrade phases
6. Pushes an upgrade branch and optionally opens a PR with a generated changelog

## Supported Stacks

| Stack | Image | Status |
|-------|-------|--------|
| Laravel | `ghcr.io/reyemtech/laravel-upgrade-agent` | Available |
| React | — | Planned |
| Rails | — | Planned |
| Django | — | Planned |

## Configuration

Config is persisted to `~/.stack-upgrade/config.json`:

- Claude credentials (auto-detected from `~/.claude/.credentials.json`, env vars, or manual input)
- GitHub token
- Preferred run target (Docker or Kubernetes)

## License

[BSL 1.1](https://github.com/ReyemTech/stack-upgrade/blob/main/LICENSE)

---

<p align="center">
  <a href="https://www.reyem.tech">
    <img src="https://www.reyem.tech/images/logo-light-tagline.webp" alt="ReyemTech" width="200">
  </a>
</p>