@activade/open-workflows 2.0.4 → 2.0.6
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 +48 -1
- package/actions/changeset/action.yml +46 -0
- package/actions/changeset/skill.md +285 -0
- package/dist/cli/index.js +73 -89
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ The CLI will prompt you to select workflows and install them to `.github/workflo
|
|
|
17
17
|
| `pr-review` | Yes | AI-powered code reviews |
|
|
18
18
|
| `issue-label` | Yes | Auto-label issues based on content |
|
|
19
19
|
| `doc-sync` | Yes | Keep docs in sync with code changes |
|
|
20
|
+
| `changeset` | Yes | AI-generated changesets for monorepo releases |
|
|
20
21
|
| `release` | No | Semantic versioning with npm provenance |
|
|
21
22
|
|
|
22
23
|
## Manual Usage
|
|
@@ -72,6 +73,38 @@ jobs:
|
|
|
72
73
|
|
|
73
74
|
No NPM_TOKEN needed - uses OIDC trusted publishing with provenance.
|
|
74
75
|
|
|
76
|
+
### Changeset Action (AI-Powered)
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
name: AI Changeset
|
|
80
|
+
on:
|
|
81
|
+
pull_request:
|
|
82
|
+
types: [opened, synchronize, reopened]
|
|
83
|
+
jobs:
|
|
84
|
+
changeset:
|
|
85
|
+
runs-on: ubuntu-latest
|
|
86
|
+
permissions:
|
|
87
|
+
contents: write
|
|
88
|
+
pull-requests: write
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v4
|
|
91
|
+
with:
|
|
92
|
+
fetch-depth: 0
|
|
93
|
+
ref: ${{ github.head_ref }}
|
|
94
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
95
|
+
- uses: activadee/open-workflows/actions/changeset@main
|
|
96
|
+
with:
|
|
97
|
+
mode: commit # or 'comment' to suggest via PR comment
|
|
98
|
+
env:
|
|
99
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
100
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The changeset action analyzes PR changes and generates [Changesets](https://github.com/changesets/changesets) files automatically:
|
|
104
|
+
- Detects which packages are affected in monorepos
|
|
105
|
+
- Infers version bump type from conventional commits
|
|
106
|
+
- Writes user-facing changelog entries
|
|
107
|
+
|
|
75
108
|
## Authentication
|
|
76
109
|
|
|
77
110
|
### For AI Actions
|
|
@@ -82,6 +115,14 @@ gh secret set ANTHROPIC_API_KEY
|
|
|
82
115
|
```
|
|
83
116
|
|
|
84
117
|
**Option 2: Claude Max (OAuth)**
|
|
118
|
+
|
|
119
|
+
Use the [opencode-auth-sync](https://github.com/activadee/opencode-auth-sync) plugin to automatically sync your OAuth tokens:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
bunx @activade/opencode-auth-sync
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Or manually set the secret:
|
|
85
126
|
```bash
|
|
86
127
|
gh secret set OPENCODE_AUTH < ~/.local/share/opencode/auth.json
|
|
87
128
|
```
|
|
@@ -99,12 +140,18 @@ OPTIONS
|
|
|
99
140
|
|
|
100
141
|
## How It Works
|
|
101
142
|
|
|
102
|
-
**AI Actions (pr-review, issue-label, doc-sync):**
|
|
143
|
+
**AI Actions (pr-review, issue-label, doc-sync, changeset):**
|
|
103
144
|
1. Workflow triggers on GitHub event
|
|
104
145
|
2. Composite action sets up Bun and OpenCode
|
|
105
146
|
3. OpenCode runs with the bundled skill
|
|
106
147
|
4. AI analyzes content and takes action
|
|
107
148
|
|
|
149
|
+
**Changeset Action:**
|
|
150
|
+
1. Triggers on PR open/update
|
|
151
|
+
2. AI analyzes diff, commits, and PR description
|
|
152
|
+
3. Generates `.changeset/<random>.md` with package bumps and changelog
|
|
153
|
+
4. Either commits to PR branch or suggests via comment
|
|
154
|
+
|
|
108
155
|
**Release Action:**
|
|
109
156
|
1. Manually triggered with version bump type
|
|
110
157
|
2. Generates changelog from git commits
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: 'AI Changeset'
|
|
2
|
+
description: 'AI-powered changeset generation for monorepo releases'
|
|
3
|
+
author: 'activadee'
|
|
4
|
+
|
|
5
|
+
inputs:
|
|
6
|
+
model:
|
|
7
|
+
description: 'Model to use for changeset generation'
|
|
8
|
+
required: false
|
|
9
|
+
default: 'anthropic/claude-sonnet-4-5'
|
|
10
|
+
mode:
|
|
11
|
+
description: 'Operation mode: commit (auto-commit changeset) or comment (suggest via PR comment)'
|
|
12
|
+
required: false
|
|
13
|
+
default: 'commit'
|
|
14
|
+
|
|
15
|
+
runs:
|
|
16
|
+
using: 'composite'
|
|
17
|
+
steps:
|
|
18
|
+
- name: Setup Bun
|
|
19
|
+
uses: oven-sh/setup-bun@v2
|
|
20
|
+
|
|
21
|
+
- name: Setup OpenCode auth
|
|
22
|
+
if: env.OPENCODE_AUTH != ''
|
|
23
|
+
shell: bash
|
|
24
|
+
run: |
|
|
25
|
+
mkdir -p ~/.local/share/opencode
|
|
26
|
+
echo "$OPENCODE_AUTH" > ~/.local/share/opencode/auth.json
|
|
27
|
+
- name: Install opencode-ai
|
|
28
|
+
shell: bash
|
|
29
|
+
run: |
|
|
30
|
+
curl -fsSL https://opencode.ai/install | bash
|
|
31
|
+
- name: Install skill and tools
|
|
32
|
+
shell: bash
|
|
33
|
+
run: |
|
|
34
|
+
mkdir -p .opencode/skill/changeset
|
|
35
|
+
cp "${{ github.action_path }}/skill.md" .opencode/skill/changeset/SKILL.md
|
|
36
|
+
mkdir -p ~/.config/opencode/tool
|
|
37
|
+
cp "${{ github.action_path }}/../../scripts/"*.ts ~/.config/opencode/tool/
|
|
38
|
+
cd ~/.config/opencode && bun add @opencode-ai/plugin
|
|
39
|
+
|
|
40
|
+
- name: Generate Changeset
|
|
41
|
+
shell: bash
|
|
42
|
+
run: |
|
|
43
|
+
opencode run --model "${{ inputs.model }}" \
|
|
44
|
+
"Load the changeset skill. Generate changeset for PR ${{ github.event.pull_request.number }} in mode: ${{ inputs.mode }}"
|
|
45
|
+
env:
|
|
46
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: changeset
|
|
3
|
+
description: AI-powered changeset generation for monorepo releases. Analyzes PR changes to generate properly formatted changeset files.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What I Do
|
|
8
|
+
|
|
9
|
+
Analyze pull request changes and generate [Changesets](https://github.com/changesets/changesets) files that capture:
|
|
10
|
+
1. Which packages are affected
|
|
11
|
+
2. What version bump is appropriate (patch/minor/major)
|
|
12
|
+
3. A user-facing changelog entry
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
1. **Get PR context**: Fetch PR metadata and changed files
|
|
17
|
+
```bash
|
|
18
|
+
gh pr view <number> --json files,title,body,commits,headRefOid
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
2. **Detect monorepo structure**: Find package locations
|
|
22
|
+
```bash
|
|
23
|
+
# Check for common monorepo patterns
|
|
24
|
+
ls packages/ 2>/dev/null || ls apps/ 2>/dev/null || cat pnpm-workspace.yaml 2>/dev/null
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
3. **Analyze changes**: For each changed file, determine:
|
|
28
|
+
- Which package it belongs to
|
|
29
|
+
- The nature of the change (feature, fix, breaking, docs, etc.)
|
|
30
|
+
|
|
31
|
+
4. **Infer version bump**: Based on changes and commit messages
|
|
32
|
+
- `major`: Breaking changes (look for BREAKING CHANGE, !)
|
|
33
|
+
- `minor`: New features (feat:, feature)
|
|
34
|
+
- `patch`: Bug fixes, refactors, docs (fix:, chore:, docs:, refactor:)
|
|
35
|
+
|
|
36
|
+
5. **Generate changeset**: Create the changeset content
|
|
37
|
+
|
|
38
|
+
6. **Execute action**: Based on mode parameter
|
|
39
|
+
- `commit`: Write file and commit to PR branch
|
|
40
|
+
- `comment`: Post suggestion as PR comment
|
|
41
|
+
|
|
42
|
+
## Package Detection
|
|
43
|
+
|
|
44
|
+
### Finding Affected Packages
|
|
45
|
+
|
|
46
|
+
1. **Parse monorepo config** (in priority order):
|
|
47
|
+
```bash
|
|
48
|
+
# pnpm workspaces
|
|
49
|
+
cat pnpm-workspace.yaml
|
|
50
|
+
|
|
51
|
+
# npm/yarn workspaces
|
|
52
|
+
cat package.json | jq '.workspaces'
|
|
53
|
+
|
|
54
|
+
# lerna
|
|
55
|
+
cat lerna.json | jq '.packages'
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
2. **Map files to packages**:
|
|
59
|
+
- `packages/cli/src/foo.ts` → `cli` package
|
|
60
|
+
- `apps/web/pages/index.tsx` → `web` package
|
|
61
|
+
- `libs/core/utils.ts` → `core` package
|
|
62
|
+
- Root-level files (README, configs) → may affect all packages or none
|
|
63
|
+
|
|
64
|
+
3. **Read package.json for each affected package**:
|
|
65
|
+
```bash
|
|
66
|
+
cat packages/cli/package.json | jq '.name'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Handling Root Changes
|
|
70
|
+
|
|
71
|
+
Files at the repository root typically don't need changesets:
|
|
72
|
+
- `.github/*` - CI/CD changes
|
|
73
|
+
- `*.md` - Documentation
|
|
74
|
+
- `.eslintrc`, `tsconfig.json` - Config files
|
|
75
|
+
- `package.json` (root) - Dependency updates
|
|
76
|
+
|
|
77
|
+
Exception: If root changes affect package behavior, include relevant packages.
|
|
78
|
+
|
|
79
|
+
## Version Inference
|
|
80
|
+
|
|
81
|
+
### From Conventional Commits
|
|
82
|
+
|
|
83
|
+
Parse commit messages in the PR:
|
|
84
|
+
```bash
|
|
85
|
+
gh pr view <number> --json commits --jq '.commits[].messageHeadline'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| Prefix | Version | Example |
|
|
89
|
+
|--------|---------|---------|
|
|
90
|
+
| `feat:` | minor | `feat: add retry logic` |
|
|
91
|
+
| `feat!:` | major | `feat!: change API signature` |
|
|
92
|
+
| `fix:` | patch | `fix: handle null case` |
|
|
93
|
+
| `perf:` | patch | `perf: optimize query` |
|
|
94
|
+
| `refactor:` | patch | `refactor: extract helper` |
|
|
95
|
+
| `docs:` | patch | `docs: update README` |
|
|
96
|
+
| `chore:` | patch | `chore: update deps` |
|
|
97
|
+
| `BREAKING CHANGE` | major | (in commit body) |
|
|
98
|
+
|
|
99
|
+
### From PR Content
|
|
100
|
+
|
|
101
|
+
If no conventional commits, analyze:
|
|
102
|
+
- PR title for keywords (add, fix, change, remove, break)
|
|
103
|
+
- PR body for context
|
|
104
|
+
- File changes (new files = likely feature, modified = likely fix)
|
|
105
|
+
|
|
106
|
+
### Default Behavior
|
|
107
|
+
|
|
108
|
+
When uncertain:
|
|
109
|
+
- Default to `patch` for single-package changes
|
|
110
|
+
- Ask via comment if breaking changes are detected but unclear
|
|
111
|
+
|
|
112
|
+
## Changeset Format
|
|
113
|
+
|
|
114
|
+
Changesets use this format in `.changeset/<random-id>.md`:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
---
|
|
118
|
+
"@myorg/cli": minor
|
|
119
|
+
"@myorg/core": patch
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
Add retry logic for failed API requests
|
|
123
|
+
|
|
124
|
+
The CLI now automatically retries failed requests up to 3 times with exponential backoff.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Formatting Rules
|
|
128
|
+
|
|
129
|
+
1. **YAML frontmatter**: Package names in quotes, version bump type
|
|
130
|
+
2. **Summary line**: Imperative mood, user-facing (what changed, not how)
|
|
131
|
+
3. **Optional body**: Additional context, migration notes for breaking changes
|
|
132
|
+
4. **Length**: Summary under 80 chars, body can be multiple paragraphs
|
|
133
|
+
|
|
134
|
+
### Good vs Bad Summaries
|
|
135
|
+
|
|
136
|
+
| Bad (dev-speak) | Good (user-facing) |
|
|
137
|
+
|-----------------|-------------------|
|
|
138
|
+
| `refactored auth module` | `Improved authentication reliability` |
|
|
139
|
+
| `fixed bug in parser` | `Fixed parsing of nested arrays` |
|
|
140
|
+
| `added new function` | `Add support for custom themes` |
|
|
141
|
+
| `updated dependencies` | `Security updates for dependencies` |
|
|
142
|
+
|
|
143
|
+
## Writing the Changeset
|
|
144
|
+
|
|
145
|
+
Use the `write-changeset` tool to create the changeset file:
|
|
146
|
+
|
|
147
|
+
### Tool Arguments
|
|
148
|
+
|
|
149
|
+
| Argument | Required | Description |
|
|
150
|
+
|----------|----------|-------------|
|
|
151
|
+
| `packages` | Yes | Object mapping package names to bump types |
|
|
152
|
+
| `summary` | Yes | Short summary (imperative mood, user-facing) |
|
|
153
|
+
| `body` | No | Additional details or migration notes |
|
|
154
|
+
|
|
155
|
+
### Example
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"packages": {
|
|
160
|
+
"@myorg/cli": "minor",
|
|
161
|
+
"@myorg/core": "patch"
|
|
162
|
+
},
|
|
163
|
+
"summary": "Add retry logic for failed API requests",
|
|
164
|
+
"body": "The CLI now automatically retries failed requests up to 3 times with exponential backoff."
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Mode: commit
|
|
169
|
+
|
|
170
|
+
When mode is `commit`:
|
|
171
|
+
|
|
172
|
+
1. Generate changeset using `write-changeset` tool
|
|
173
|
+
2. Stage the new file:
|
|
174
|
+
```bash
|
|
175
|
+
git add .changeset/*.md
|
|
176
|
+
```
|
|
177
|
+
3. Commit with `[skip ci]` to prevent infinite workflow loops:
|
|
178
|
+
```bash
|
|
179
|
+
git commit -m "chore: add changeset for PR #<number> [skip ci]"
|
|
180
|
+
```
|
|
181
|
+
4. Push to PR branch:
|
|
182
|
+
```bash
|
|
183
|
+
git push
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**CRITICAL**: Always include `[skip ci]` in the commit message to prevent the workflow from triggering itself.
|
|
187
|
+
|
|
188
|
+
## Mode: comment
|
|
189
|
+
|
|
190
|
+
When mode is `comment`:
|
|
191
|
+
|
|
192
|
+
1. Generate the changeset content
|
|
193
|
+
2. Post as PR comment with the suggested changeset:
|
|
194
|
+
|
|
195
|
+
````markdown
|
|
196
|
+
## Suggested Changeset
|
|
197
|
+
|
|
198
|
+
Based on the changes in this PR, here's the recommended changeset:
|
|
199
|
+
|
|
200
|
+
```markdown
|
|
201
|
+
---
|
|
202
|
+
"@myorg/cli": minor
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
Add retry logic for failed API requests
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
<details>
|
|
209
|
+
<summary>How to apply</summary>
|
|
210
|
+
|
|
211
|
+
Create this file as `.changeset/<any-name>.md` and commit it to this PR.
|
|
212
|
+
|
|
213
|
+
Or run: `npx changeset add` and follow the prompts.
|
|
214
|
+
</details>
|
|
215
|
+
````
|
|
216
|
+
|
|
217
|
+
## Edge Cases
|
|
218
|
+
|
|
219
|
+
### No Package Changes
|
|
220
|
+
|
|
221
|
+
If changes only affect non-package files (CI, docs, root configs):
|
|
222
|
+
- In `commit` mode: Skip creating changeset, post comment explaining why
|
|
223
|
+
- In `comment` mode: Explain that no changeset is needed
|
|
224
|
+
|
|
225
|
+
### Multiple Packages, Same Change
|
|
226
|
+
|
|
227
|
+
When a change spans packages but represents one logical feature:
|
|
228
|
+
- Create ONE changeset file
|
|
229
|
+
- List all affected packages with appropriate bumps
|
|
230
|
+
- Write a unified summary
|
|
231
|
+
|
|
232
|
+
### Existing Changeset
|
|
233
|
+
|
|
234
|
+
Before creating a new changeset:
|
|
235
|
+
```bash
|
|
236
|
+
ls .changeset/*.md 2>/dev/null | head -5
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
If changesets already exist for this PR:
|
|
240
|
+
- Check if they cover the current changes
|
|
241
|
+
- Only add a new one if there are uncovered changes
|
|
242
|
+
- Never overwrite existing changesets
|
|
243
|
+
|
|
244
|
+
## Common Mistakes to Avoid
|
|
245
|
+
|
|
246
|
+
- Do NOT create changesets for documentation-only changes in most cases
|
|
247
|
+
- Do NOT guess package names - always verify from package.json
|
|
248
|
+
- Do NOT create empty changesets
|
|
249
|
+
- Do NOT overwrite existing changesets from previous commits
|
|
250
|
+
- Do NOT commit in `comment` mode
|
|
251
|
+
- Do NOT assume monorepo structure - verify it exists first
|
|
252
|
+
- Do NOT forget `[skip ci]` in commit message - this causes infinite workflow loops
|
|
253
|
+
|
|
254
|
+
## Non-Monorepo Fallback
|
|
255
|
+
|
|
256
|
+
If no monorepo structure is detected (single package.json at root):
|
|
257
|
+
- Use the package name from root package.json
|
|
258
|
+
- Follow the same version inference rules
|
|
259
|
+
- Changeset format remains the same
|
|
260
|
+
|
|
261
|
+
## Example Changeset Output
|
|
262
|
+
|
|
263
|
+
For a PR that adds a feature to the CLI and fixes a related bug in core:
|
|
264
|
+
|
|
265
|
+
```markdown
|
|
266
|
+
---
|
|
267
|
+
"@myorg/cli": minor
|
|
268
|
+
"@myorg/core": patch
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
Add support for custom retry strategies
|
|
272
|
+
|
|
273
|
+
Users can now configure custom retry strategies for API requests. The default exponential backoff behavior is unchanged.
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Checklist Before Submitting
|
|
278
|
+
|
|
279
|
+
- [ ] Verified package names from actual package.json files
|
|
280
|
+
- [ ] Version bump matches the change type
|
|
281
|
+
- [ ] Summary is user-facing, not developer-focused
|
|
282
|
+
- [ ] Summary uses imperative mood ("Add" not "Added")
|
|
283
|
+
- [ ] No duplicate changesets for the same changes
|
|
284
|
+
- [ ] File committed only in `commit` mode
|
|
285
|
+
- [ ] Commit message includes `[skip ci]` (commit mode only)
|
package/dist/cli/index.js
CHANGED
|
@@ -1,64 +1,58 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var xs=Object.create;var{getPrototypeOf:Es,defineProperty:To,getOwnPropertyNames:ks}=Object;var ys=Object.prototype.hasOwnProperty;var B=(s,e,n)=>{n=s!=null?xs(Es(s)):{};let l=e||!s||!s.__esModule?To(n,"default",{value:s,enumerable:!0}):n;for(let r of ks(s))if(!ys.call(l,r))To(l,r,{get:()=>s[r],enumerable:!0});return l};var M=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var F=M((ge,No)=>{var u={to(s,e){if(!e)return`\x1B[${s+1}G`;return`\x1B[${e+1};${s+1}H`},move(s,e){let n="";if(s<0)n+=`\x1B[${-s}D`;else if(s>0)n+=`\x1B[${s}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(s=1)=>`\x1B[${s}A`,down:(s=1)=>`\x1B[${s}B`,forward:(s=1)=>`\x1B[${s}C`,backward:(s=1)=>`\x1B[${s}D`,nextLine:(s=1)=>"\x1B[E".repeat(s),prevLine:(s=1)=>"\x1B[F".repeat(s),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Os={up:(s=1)=>"\x1B[S".repeat(s),down:(s=1)=>"\x1B[T".repeat(s)},$s={screen:"\x1B[2J",up:(s=1)=>"\x1B[1J".repeat(s),down:(s=1)=>"\x1B[J".repeat(s),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(s){let e="";for(let n=0;n<s;n++)e+=this.line+(n<s-1?u.up():"");if(s)e+=u.left;return e}};No.exports={cursor:u,scroll:Os,erase:$s,beep:"\x07"}});var oo=M((xe,D)=>{var V=process||{},Ro=V.argv||[],j=V.env||{},vs=!(!!j.NO_COLOR||Ro.includes("--no-color"))&&(!!j.FORCE_COLOR||Ro.includes("--color")||V.platform==="win32"||(V.stdout||{}).isTTY&&j.TERM!=="dumb"||!!j.CI),Is=(s,e,n=s)=>(l)=>{let r=""+l,t=r.indexOf(e,s.length);return~t?s+_s(r,e,n,t)+e:s+r+e},_s=(s,e,n,l)=>{let r="",t=0;do r+=s.substring(t,l)+n,t=l+e.length,l=s.indexOf(e,t);while(~l);return r+s.substring(t)},Po=(s=vs)=>{let e=s?Is:()=>String;return{isColorSupported:s,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};D.exports=Po();D.exports.createColors=Po});var ws=M((De,me)=>{me.exports={name:"@activade/open-workflows",version:"2.0.4",description:"AI-powered GitHub automation workflows via composite actions",keywords:["github","github-actions","ai","automation","code-review","pr-review","issue-labeling","opencode"],author:"activadee",license:"MIT",repository:{type:"git",url:"git+https://github.com/activadee/open-workflows.git"},type:"module",bin:{"open-workflows":"dist/cli/index.js"},files:["dist","actions","README.md","LICENSE"],scripts:{clean:"rm -rf dist",build:"bun run clean && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --minify",dev:"bun run build --watch",typecheck:"tsc --noEmit",test:"bun test",prepublishOnly:"bun run clean && bun run build && bun run typecheck"},dependencies:{"@clack/prompts":"^0.10.0",picocolors:"^1.1.1"},devDependencies:{"@types/node":"^22.0.0","@types/bun":"^1.3.5",typescript:"^5.6.0"},engines:{node:">=18.0.0"}}});import{stripVTControlCharacters as po}from"util";var g=B(F(),1);import{stdin as jo,stdout as Vo}from"process";import*as _ from"readline";import Ho from"readline";import{Writable as Ss}from"stream";function As({onlyFirst:s=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,s?void 0:"g")}var Cs=As();function qo(s){if(typeof s!="string")throw TypeError(`Expected a \`string\`, got \`${typeof s}\``);return s.replace(Cs,"")}function zo(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Jo={exports:{}};(function(s){var e={};s.exports=e,e.eastAsianWidth=function(l){var r=l.charCodeAt(0),t=l.length==2?l.charCodeAt(1):0,o=r;return 55296<=r&&r<=56319&&56320<=t&&t<=57343&&(r&=1023,t&=1023,o=r<<10|t,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},e.characterLength=function(l){var r=this.eastAsianWidth(l);return r=="F"||r=="W"||r=="A"?2:1};function n(l){return l.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(l){for(var r=n(l),t=0,o=0;o<r.length;o++)t=t+this.characterLength(r[o]);return t},e.slice=function(l,r,t){textLen=e.length(l),r=r||0,t=t||1,r<0&&(r=textLen+r),t<0&&(t=textLen+t);for(var o="",i=0,p=n(l),m=0;m<p.length;m++){var b=p[m],c=e.length(b);if(i>=r-(c==2?1:0))if(i+c<=t)o+=b;else break;i+=c}return o}})(Jo);var Ts=Jo.exports,Ns=zo(Ts),Rs=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Ps=zo(Rs);function U(s,e={}){if(typeof s!="string"||s.length===0||(e={ambiguousIsNarrow:!0,...e},s=qo(s),s.length===0))return 0;s=s.replace(Ps()," ");let n=e.ambiguousIsNarrow?1:2,l=0;for(let r of s){let t=r.codePointAt(0);if(t<=31||t>=127&&t<=159||t>=768&&t<=879)continue;switch(Ns.eastAsianWidth(r)){case"F":case"W":l+=2;break;case"A":l+=n;break;default:l+=1}}return l}var so=10,Bo=(s=0)=>(e)=>`\x1B[${e+s}m`,Uo=(s=0)=>(e)=>`\x1B[${38+s};5;${e}m`,Ko=(s=0)=>(e,n,l)=>`\x1B[${38+s};2;${e};${n};${l}m`,w={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(w.modifier);var Hs=Object.keys(w.color),Bs=Object.keys(w.bgColor);[...Hs,...Bs];function Us(){let s=new Map;for(let[e,n]of Object.entries(w)){for(let[l,r]of Object.entries(n))w[l]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},n[l]=w[l],s.set(r[0],r[1]);Object.defineProperty(w,e,{value:n,enumerable:!1})}return Object.defineProperty(w,"codes",{value:s,enumerable:!1}),w.color.close="\x1B[39m",w.bgColor.close="\x1B[49m",w.color.ansi=Bo(),w.color.ansi256=Uo(),w.color.ansi16m=Ko(),w.bgColor.ansi=Bo(so),w.bgColor.ansi256=Uo(so),w.bgColor.ansi16m=Ko(so),Object.defineProperties(w,{rgbToAnsi256:{value:(e,n,l)=>e===n&&n===l?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(l/255*5),enumerable:!1},hexToRgb:{value:(e)=>{let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!n)return[0,0,0];let[l]=n;l.length===3&&(l=[...l].map((t)=>t+t).join(""));let r=Number.parseInt(l,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:(e)=>w.rgbToAnsi256(...w.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:(e)=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let n,l,r;if(e>=232)n=((e-232)*10+8)/255,l=n,r=n;else{e-=16;let i=e%36;n=Math.floor(e/36)/5,l=Math.floor(i/6)/5,r=i%6/5}let t=Math.max(n,l,r)*2;if(t===0)return 30;let o=30+(Math.round(r)<<2|Math.round(l)<<1|Math.round(n));return t===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(e,n,l)=>w.ansi256ToAnsi(w.rgbToAnsi256(e,n,l)),enumerable:!1},hexToAnsi:{value:(e)=>w.ansi256ToAnsi(w.hexToAnsi256(e)),enumerable:!1}}),w}var Ks=Us(),J=new Set(["\x1B","\x9B"]),Ws=39,ro="\x07",Qo="[",Ls="]",Xo="m",lo=`${Ls}8;;`,Wo=(s)=>`${J.values().next().value}${Qo}${s}${Xo}`,Lo=(s)=>`${J.values().next().value}${lo}${s}${ro}`,Gs=(s)=>s.split(" ").map((e)=>U(e)),eo=(s,e,n)=>{let l=[...e],r=!1,t=!1,o=U(qo(s[s.length-1]));for(let[i,p]of l.entries()){let m=U(p);if(o+m<=n?s[s.length-1]+=p:(s.push(p),o=0),J.has(p)&&(r=!0,t=l.slice(i+1).join("").startsWith(lo)),r){t?p===ro&&(r=!1,t=!1):p===Xo&&(r=!1);continue}o+=m,o===n&&i<l.length-1&&(s.push(""),o=0)}!o&&s[s.length-1].length>0&&s.length>1&&(s[s.length-2]+=s.pop())},Ys=(s)=>{let e=s.split(" "),n=e.length;for(;n>0&&!(U(e[n-1])>0);)n--;return n===e.length?s:e.slice(0,n).join(" ")+e.slice(n).join("")},js=(s,e,n={})=>{if(n.trim!==!1&&s.trim()==="")return"";let l="",r,t,o=Gs(s),i=[""];for(let[m,b]of s.split(" ").entries()){n.trim!==!1&&(i[i.length-1]=i[i.length-1].trimStart());let c=U(i[i.length-1]);if(m!==0&&(c>=e&&(n.wordWrap===!1||n.trim===!1)&&(i.push(""),c=0),(c>0||n.trim===!1)&&(i[i.length-1]+=" ",c++)),n.hard&&o[m]>e){let d=e-c,O=1+Math.floor((o[m]-d-1)/e);Math.floor((o[m]-1)/e)<O&&i.push(""),eo(i,b,e);continue}if(c+o[m]>e&&c>0&&o[m]>0){if(n.wordWrap===!1&&c<e){eo(i,b,e);continue}i.push("")}if(c+o[m]>e&&n.wordWrap===!1){eo(i,b,e);continue}i[i.length-1]+=b}n.trim!==!1&&(i=i.map((m)=>Ys(m)));let p=[...i.join(`
|
|
4
|
-
`)];for(let[m,
|
|
5
|
-
`?(t&&(l+=
|
|
6
|
-
`&&(r&&c&&(l+=
|
|
3
|
+
var xs=Object.create;var{getPrototypeOf:ks,defineProperty:Ao,getOwnPropertyNames:Es}=Object;var ys=Object.prototype.hasOwnProperty;var H=(s,e,n)=>{n=s!=null?xs(ks(s)):{};let l=e||!s||!s.__esModule?Ao(n,"default",{value:s,enumerable:!0}):n;for(let r of Es(s))if(!ys.call(l,r))Ao(l,r,{get:()=>s[r],enumerable:!0});return l};var u=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var D=u((de,No)=>{var F={to(s,e){if(!e)return`\x1B[${s+1}G`;return`\x1B[${e+1};${s+1}H`},move(s,e){let n="";if(s<0)n+=`\x1B[${-s}D`;else if(s>0)n+=`\x1B[${s}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(s=1)=>`\x1B[${s}A`,down:(s=1)=>`\x1B[${s}B`,forward:(s=1)=>`\x1B[${s}C`,backward:(s=1)=>`\x1B[${s}D`,nextLine:(s=1)=>"\x1B[E".repeat(s),prevLine:(s=1)=>"\x1B[F".repeat(s),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Is={up:(s=1)=>"\x1B[S".repeat(s),down:(s=1)=>"\x1B[T".repeat(s)},Os={screen:"\x1B[2J",up:(s=1)=>"\x1B[1J".repeat(s),down:(s=1)=>"\x1B[J".repeat(s),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(s){let e="";for(let n=0;n<s;n++)e+=this.line+(n<s-1?F.up():"");if(s)e+=F.left;return e}};No.exports={cursor:F,scroll:Is,erase:Os,beep:"\x07"}});var so=u((xe,oo)=>{var V=process||{},Co=V.argv||[],L=V.env||{},vs=!(!!L.NO_COLOR||Co.includes("--no-color"))&&(!!L.FORCE_COLOR||Co.includes("--color")||V.platform==="win32"||(V.stdout||{}).isTTY&&L.TERM!=="dumb"||!!L.CI),$s=(s,e,n=s)=>(l)=>{let r=""+l,t=r.indexOf(e,s.length);return~t?s+_s(r,e,n,t)+e:s+r+e},_s=(s,e,n,l)=>{let r="",t=0;do r+=s.substring(t,l)+n,t=l+e.length,l=s.indexOf(e,t);while(~l);return r+s.substring(t)},To=(s=vs)=>{let e=s?$s:()=>String;return{isColorSupported:s,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};oo.exports=To();oo.exports.createColors=To});var cs=u((on,me)=>{me.exports={name:"@activade/open-workflows",version:"2.0.6",description:"AI-powered GitHub automation workflows via composite actions",keywords:["github","github-actions","ai","automation","code-review","pr-review","issue-labeling","opencode"],author:"activadee",license:"MIT",repository:{type:"git",url:"git+https://github.com/activadee/open-workflows.git"},type:"module",bin:{"open-workflows":"dist/cli/index.js"},files:["dist","actions","README.md","LICENSE"],scripts:{clean:"rm -rf dist",build:"bun run clean && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --minify",dev:"bun run build --watch",typecheck:"tsc --noEmit",test:"bun test",prepublishOnly:"bun run clean && bun run build && bun run typecheck"},dependencies:{"@clack/prompts":"^0.10.0",picocolors:"^1.1.1"},devDependencies:{"@types/node":"^22.0.0","@types/bun":"^1.3.5",typescript:"^5.6.0"},engines:{node:">=18.0.0"}}});import{stripVTControlCharacters as co}from"util";var x=H(D(),1);import{stdin as Lo,stdout as Vo}from"process";import*as _ from"readline";import Po from"readline";import{Writable as Ss}from"stream";function As({onlyFirst:s=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,s?void 0:"g")}var Ns=As();function Yo(s){if(typeof s!="string")throw TypeError(`Expected a \`string\`, got \`${typeof s}\``);return s.replace(Ns,"")}function jo(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var qo={exports:{}};(function(s){var e={};s.exports=e,e.eastAsianWidth=function(l){var r=l.charCodeAt(0),t=l.length==2?l.charCodeAt(1):0,o=r;return 55296<=r&&r<=56319&&56320<=t&&t<=57343&&(r&=1023,t&=1023,o=r<<10|t,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},e.characterLength=function(l){var r=this.eastAsianWidth(l);return r=="F"||r=="W"||r=="A"?2:1};function n(l){return l.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(l){for(var r=n(l),t=0,o=0;o<r.length;o++)t=t+this.characterLength(r[o]);return t},e.slice=function(l,r,t){textLen=e.length(l),r=r||0,t=t||1,r<0&&(r=textLen+r),t<0&&(t=textLen+t);for(var o="",a=0,p=n(l),m=0;m<p.length;m++){var w=p[m],c=e.length(w);if(a>=r-(c==2?1:0))if(a+c<=t)o+=w;else break;a+=c}return o}})(qo);var Cs=qo.exports,Ts=jo(Cs),Ps=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Rs=jo(Ps);function K(s,e={}){if(typeof s!="string"||s.length===0||(e={ambiguousIsNarrow:!0,...e},s=Yo(s),s.length===0))return 0;s=s.replace(Rs()," ");let n=e.ambiguousIsNarrow?1:2,l=0;for(let r of s){let t=r.codePointAt(0);if(t<=31||t>=127&&t<=159||t>=768&&t<=879)continue;switch(Ts.eastAsianWidth(r)){case"F":case"W":l+=2;break;case"A":l+=n;break;default:l+=1}}return l}var eo=10,Ro=(s=0)=>(e)=>`\x1B[${e+s}m`,Bo=(s=0)=>(e)=>`\x1B[${38+s};5;${e}m`,Ho=(s=0)=>(e,n,l)=>`\x1B[${38+s};2;${e};${n};${l}m`,f={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(f.modifier);var Bs=Object.keys(f.color),Hs=Object.keys(f.bgColor);[...Bs,...Hs];function Ks(){let s=new Map;for(let[e,n]of Object.entries(f)){for(let[l,r]of Object.entries(n))f[l]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},n[l]=f[l],s.set(r[0],r[1]);Object.defineProperty(f,e,{value:n,enumerable:!1})}return Object.defineProperty(f,"codes",{value:s,enumerable:!1}),f.color.close="\x1B[39m",f.bgColor.close="\x1B[49m",f.color.ansi=Ro(),f.color.ansi256=Bo(),f.color.ansi16m=Ho(),f.bgColor.ansi=Ro(eo),f.bgColor.ansi256=Bo(eo),f.bgColor.ansi16m=Ho(eo),Object.defineProperties(f,{rgbToAnsi256:{value:(e,n,l)=>e===n&&n===l?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(l/255*5),enumerable:!1},hexToRgb:{value:(e)=>{let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!n)return[0,0,0];let[l]=n;l.length===3&&(l=[...l].map((t)=>t+t).join(""));let r=Number.parseInt(l,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:(e)=>f.rgbToAnsi256(...f.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:(e)=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let n,l,r;if(e>=232)n=((e-232)*10+8)/255,l=n,r=n;else{e-=16;let a=e%36;n=Math.floor(e/36)/5,l=Math.floor(a/6)/5,r=a%6/5}let t=Math.max(n,l,r)*2;if(t===0)return 30;let o=30+(Math.round(r)<<2|Math.round(l)<<1|Math.round(n));return t===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(e,n,l)=>f.ansi256ToAnsi(f.rgbToAnsi256(e,n,l)),enumerable:!1},hexToAnsi:{value:(e)=>f.ansi256ToAnsi(f.hexToAnsi256(e)),enumerable:!1}}),f}var Us=Ks(),q=new Set(["\x1B","\x9B"]),Ws=39,lo="\x07",zo="[",Gs="]",Jo="m",to=`${Gs}8;;`,Ko=(s)=>`${q.values().next().value}${zo}${s}${Jo}`,Uo=(s)=>`${q.values().next().value}${to}${s}${lo}`,Ls=(s)=>s.split(" ").map((e)=>K(e)),no=(s,e,n)=>{let l=[...e],r=!1,t=!1,o=K(Yo(s[s.length-1]));for(let[a,p]of l.entries()){let m=K(p);if(o+m<=n?s[s.length-1]+=p:(s.push(p),o=0),q.has(p)&&(r=!0,t=l.slice(a+1).join("").startsWith(to)),r){t?p===lo&&(r=!1,t=!1):p===Jo&&(r=!1);continue}o+=m,o===n&&a<l.length-1&&(s.push(""),o=0)}!o&&s[s.length-1].length>0&&s.length>1&&(s[s.length-2]+=s.pop())},Vs=(s)=>{let e=s.split(" "),n=e.length;for(;n>0&&!(K(e[n-1])>0);)n--;return n===e.length?s:e.slice(0,n).join(" ")+e.slice(n).join("")},Ys=(s,e,n={})=>{if(n.trim!==!1&&s.trim()==="")return"";let l="",r,t,o=Ls(s),a=[""];for(let[m,w]of s.split(" ").entries()){n.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let c=K(a[a.length-1]);if(m!==0&&(c>=e&&(n.wordWrap===!1||n.trim===!1)&&(a.push(""),c=0),(c>0||n.trim===!1)&&(a[a.length-1]+=" ",c++)),n.hard&&o[m]>e){let g=e-c,I=1+Math.floor((o[m]-g-1)/e);Math.floor((o[m]-1)/e)<I&&a.push(""),no(a,w,e);continue}if(c+o[m]>e&&c>0&&o[m]>0){if(n.wordWrap===!1&&c<e){no(a,w,e);continue}a.push("")}if(c+o[m]>e&&n.wordWrap===!1){no(a,w,e);continue}a[a.length-1]+=w}n.trim!==!1&&(a=a.map((m)=>Vs(m)));let p=[...a.join(`
|
|
4
|
+
`)];for(let[m,w]of p.entries()){if(l+=w,q.has(w)){let{groups:g}=new RegExp(`(?:\\${zo}(?<code>\\d+)m|\\${to}(?<uri>.*)${lo})`).exec(p.slice(m).join(""))||{groups:{}};if(g.code!==void 0){let I=Number.parseFloat(g.code);r=I===Ws?void 0:I}else g.uri!==void 0&&(t=g.uri.length===0?void 0:g.uri)}let c=Us.codes.get(Number(r));p[m+1]===`
|
|
5
|
+
`?(t&&(l+=Uo("")),r&&c&&(l+=Ko(c))):w===`
|
|
6
|
+
`&&(r&&c&&(l+=Ko(r)),t&&(l+=Uo(t)))}return l};function Wo(s,e,n){return String(s).normalize().replace(/\r\n/g,`
|
|
7
7
|
`).split(`
|
|
8
|
-
`).map((l)=>
|
|
9
|
-
`)}var
|
|
8
|
+
`).map((l)=>Ys(l,e,n)).join(`
|
|
9
|
+
`)}var js=["up","down","left","right","space","enter","cancel"],j={actions:new Set(js),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]])};function io(s,e){if(typeof s=="string")return j.aliases.get(s)===e;for(let n of s)if(n!==void 0&&io(n,e))return!0;return!1}function qs(s,e){if(s===e)return;let n=s.split(`
|
|
10
10
|
`),l=e.split(`
|
|
11
|
-
`),r=[];for(let t=0;t<Math.max(n.length,l.length);t++)n[t]!==l[t]&&r.push(t);return r}var zs=globalThis.process.platform.startsWith("win"),
|
|
12
|
-
`),
|
|
13
|
-
`).length-1;this.output.write(
|
|
14
|
-
`);this.output.write(l[n]),this._prevFrame=s,this.output.write(
|
|
11
|
+
`),r=[];for(let t=0;t<Math.max(n.length,l.length);t++)n[t]!==l[t]&&r.push(t);return r}var zs=globalThis.process.platform.startsWith("win"),ro=Symbol("clack:cancel");function T(s){return s===ro}function Y(s,e){let n=s;n.isTTY&&n.setRawMode(e)}function Qo({input:s=Lo,output:e=Vo,overwrite:n=!0,hideCursor:l=!0}={}){let r=_.createInterface({input:s,output:e,prompt:"",tabSize:1});_.emitKeypressEvents(s,r),s.isTTY&&s.setRawMode(!0);let t=(o,{name:a,sequence:p})=>{let m=String(o);if(io([m,a,p],"cancel")){l&&e.write(x.cursor.show),process.exit(0);return}if(!n)return;_.moveCursor(e,a==="return"?0:-1,a==="return"?-1:0,()=>{_.clearLine(e,1,()=>{s.once("keypress",t)})})};return l&&e.write(x.cursor.hide),s.once("keypress",t),()=>{s.off("keypress",t),l&&e.write(x.cursor.show),s.isTTY&&!zs&&s.setRawMode(!1),r.terminal=!1,r.close()}}var Js=Object.defineProperty,Qs=(s,e,n)=>(e in s)?Js(s,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[e]=n,y=(s,e,n)=>(Qs(s,typeof e!="symbol"?e+"":e,n),n);class ao{constructor(s,e=!0){y(this,"input"),y(this,"output"),y(this,"_abortSignal"),y(this,"rl"),y(this,"opts"),y(this,"_render"),y(this,"_track",!1),y(this,"_prevFrame",""),y(this,"_subscribers",new Map),y(this,"_cursor",0),y(this,"state","initial"),y(this,"error",""),y(this,"value");let{input:n=Lo,output:l=Vo,render:r,signal:t,...o}=s;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=e,this._abortSignal=t,this.input=n,this.output=l}unsubscribe(){this._subscribers.clear()}setSubscriber(s,e){let n=this._subscribers.get(s)??[];n.push(e),this._subscribers.set(s,n)}on(s,e){this.setSubscriber(s,{cb:e})}once(s,e){this.setSubscriber(s,{cb:e,once:!0})}emit(s,...e){let n=this._subscribers.get(s)??[],l=[];for(let r of n)r.cb(...e),r.once&&l.push(()=>n.splice(n.indexOf(r),1));for(let r of l)r()}prompt(){return new Promise((s,e)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),s(ro);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let n=new Ss;n._write=(l,r,t)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),t()},this.input.pipe(n),this.rl=Po.createInterface({input:this.input,output:n,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),Po.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),Y(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(x.cursor.show),this.output.off("resize",this.render),Y(this.input,!1),s(this.value)}),this.once("cancel",()=>{this.output.write(x.cursor.show),this.output.off("resize",this.render),Y(this.input,!1),s(ro)})})}onKeypress(s,e){if(this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&j.aliases.has(e.name)&&this.emit("cursor",j.aliases.get(e.name)),j.actions.has(e.name)&&this.emit("cursor",e.name)),s&&(s.toLowerCase()==="y"||s.toLowerCase()==="n")&&this.emit("confirm",s.toLowerCase()==="y"),s==="\t"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),s&&this.emit("key",s.toLowerCase()),e?.name==="return"){if(!this.value&&this.opts.placeholder&&(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder)),this.opts.validate){let n=this.opts.validate(this.value);n&&(this.error=n instanceof Error?n.message:n,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}io([s,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
12
|
+
`),Y(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let s=Wo(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
13
|
+
`).length-1;this.output.write(x.cursor.move(-999,s*-1))}render(){let s=Wo(this._render(this)??"",process.stdout.columns,{hard:!0});if(s!==this._prevFrame){if(this.state==="initial")this.output.write(x.cursor.hide);else{let e=qs(this._prevFrame,s);if(this.restoreCursor(),e&&e?.length===1){let n=e[0];this.output.write(x.cursor.move(0,n)),this.output.write(x.erase.lines(1));let l=s.split(`
|
|
14
|
+
`);this.output.write(l[n]),this._prevFrame=s,this.output.write(x.cursor.move(0,l.length-n-1));return}if(e&&e?.length>1){let n=e[0];this.output.write(x.cursor.move(0,n)),this.output.write(x.erase.down());let l=s.split(`
|
|
15
15
|
`).slice(n);this.output.write(l.join(`
|
|
16
|
-
`)),this._prevFrame=s;return}this.output.write(
|
|
17
|
-
${
|
|
18
|
-
`,r=this.value?e:n;switch(this.state){case"submit":return`${l}${
|
|
19
|
-
${
|
|
20
|
-
${
|
|
21
|
-
`}}}).prompt()};var
|
|
22
|
-
${
|
|
23
|
-
${
|
|
24
|
-
`,l=(r,t)=>{let o=this.value.includes(r.value);return t&&o?e(r,"active-selected"):o?e(r,"selected"):e(r,t?"active":"inactive")};switch(this.state){case"submit":return`${n}${
|
|
25
|
-
${
|
|
26
|
-
`).map((t,o)=>o===0?`${
|
|
27
|
-
`);return`${n+
|
|
28
|
-
${
|
|
16
|
+
`)),this._prevFrame=s;return}this.output.write(x.erase.down())}this.output.write(s),this.state==="initial"&&(this.state="active"),this._prevFrame=s}}}class po extends ao{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(s){super(s,!1),this.value=!!s.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(x.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var Xs;Xs=new WeakMap;var Zs=Object.defineProperty,Ms=(s,e,n)=>(e in s)?Zs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[e]=n,Go=(s,e,n)=>(Ms(s,typeof e!="symbol"?e+"":e,n),n),Xo=class extends ao{constructor(s){super(s,!1),Go(this,"options"),Go(this,"cursor",0),this.options=s.options,this.value=[...s.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===s.cursorAt),0),this.on("key",(e)=>{e==="a"&&this.toggleAll()}),this.on("cursor",(e)=>{switch(e){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let s=this.value.length===this.options.length;this.value=s?[]:this.options.map((e)=>e.value)}toggleValue(){let s=this.value.includes(this._value);this.value=s?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}};var i=H(so(),1),z=H(D(),1);import v from"process";function us(){return v.platform!=="win32"?v.env.TERM!=="linux":!!v.env.CI||!!v.env.WT_SESSION||!!v.env.TERMINUS_SUBLIME||v.env.ConEmuTask==="{cmd::Cmder}"||v.env.TERM_PROGRAM==="Terminus-Sublime"||v.env.TERM_PROGRAM==="vscode"||v.env.TERM==="xterm-256color"||v.env.TERM==="alacritty"||v.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var mo=us(),h=(s,e)=>mo?s:e,Fs=h("\u25C6","*"),os=h("\u25A0","x"),ss=h("\u25B2","x"),J=h("\u25C7","o"),Ds=h("\u250C","T"),b=h("\u2502","|"),U=h("\u2514","\u2014"),Zo=h("\u25CF",">"),Mo=h("\u25CB"," "),oe=h("\u25FB","[\u2022]"),uo=h("\u25FC","[+]"),se=h("\u25FB","[ ]"),Re=h("\u25AA","\u2022"),Fo=h("\u2500","-"),ee=h("\u256E","+"),ne=h("\u251C","+"),re=h("\u256F","+"),le=h("\u25CF","\u2022"),te=h("\u25C6","*"),ie=h("\u25B2","!"),ae=h("\u25A0","x"),es=(s)=>{switch(s){case"initial":case"active":return i.default.cyan(Fs);case"cancel":return i.default.red(os);case"error":return i.default.yellow(ss);case"submit":return i.default.green(J)}},Do=(s)=>{let{cursor:e,options:n,style:l}=s,r=s.maxItems??Number.POSITIVE_INFINITY,t=Math.max(process.stdout.rows-4,0),o=Math.min(t,Math.max(r,5)),a=0;e>=a+o-3?a=Math.max(Math.min(e-o+3,n.length-o),0):e<a+2&&(a=Math.max(e-2,0));let p=o<n.length&&a>0,m=o<n.length&&a+o<n.length;return n.slice(a,a+o).map((w,c,g)=>{let I=c===0&&p,R=c===g.length-1&&m;return I||R?i.default.dim("..."):l(w,c+a===e)})};var Q=(s)=>{let e=s.active??"Yes",n=s.inactive??"No";return new po({active:e,inactive:n,initialValue:s.initialValue??!0,render(){let l=`${i.default.gray(b)}
|
|
17
|
+
${es(this.state)} ${s.message}
|
|
18
|
+
`,r=this.value?e:n;switch(this.state){case"submit":return`${l}${i.default.gray(b)} ${i.default.dim(r)}`;case"cancel":return`${l}${i.default.gray(b)} ${i.default.strikethrough(i.default.dim(r))}
|
|
19
|
+
${i.default.gray(b)}`;default:return`${l}${i.default.cyan(b)} ${this.value?`${i.default.green(Zo)} ${e}`:`${i.default.dim(Mo)} ${i.default.dim(e)}`} ${i.default.dim("/")} ${this.value?`${i.default.dim(Mo)} ${i.default.dim(n)}`:`${i.default.green(Zo)} ${n}`}
|
|
20
|
+
${i.default.cyan(U)}
|
|
21
|
+
`}}}).prompt()};var ns=(s)=>{let e=(n,l)=>{let r=n.label??String(n.value);return l==="active"?`${i.default.cyan(oe)} ${r} ${n.hint?i.default.dim(`(${n.hint})`):""}`:l==="selected"?`${i.default.green(uo)} ${i.default.dim(r)} ${n.hint?i.default.dim(`(${n.hint})`):""}`:l==="cancelled"?`${i.default.strikethrough(i.default.dim(r))}`:l==="active-selected"?`${i.default.green(uo)} ${r} ${n.hint?i.default.dim(`(${n.hint})`):""}`:l==="submitted"?`${i.default.dim(r)}`:`${i.default.dim(se)} ${i.default.dim(r)}`};return new Xo({options:s.options,initialValues:s.initialValues,required:s.required??!0,cursorAt:s.cursorAt,validate(n){if(this.required&&n.length===0)return`Please select at least one option.
|
|
22
|
+
${i.default.reset(i.default.dim(`Press ${i.default.gray(i.default.bgWhite(i.default.inverse(" space ")))} to select, ${i.default.gray(i.default.bgWhite(i.default.inverse(" enter ")))} to submit`))}`},render(){let n=`${i.default.gray(b)}
|
|
23
|
+
${es(this.state)} ${s.message}
|
|
24
|
+
`,l=(r,t)=>{let o=this.value.includes(r.value);return t&&o?e(r,"active-selected"):o?e(r,"selected"):e(r,t?"active":"inactive")};switch(this.state){case"submit":return`${n}${i.default.gray(b)} ${this.options.filter(({value:r})=>this.value.includes(r)).map((r)=>e(r,"submitted")).join(i.default.dim(", "))||i.default.dim("none")}`;case"cancel":{let r=this.options.filter(({value:t})=>this.value.includes(t)).map((t)=>e(t,"cancelled")).join(i.default.dim(", "));return`${n}${i.default.gray(b)} ${r.trim()?`${r}
|
|
25
|
+
${i.default.gray(b)}`:""}`}case"error":{let r=this.error.split(`
|
|
26
|
+
`).map((t,o)=>o===0?`${i.default.yellow(U)} ${i.default.yellow(t)}`:` ${t}`).join(`
|
|
27
|
+
`);return`${n+i.default.yellow(b)} ${Do({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:l}).join(`
|
|
28
|
+
${i.default.yellow(b)} `)}
|
|
29
29
|
${r}
|
|
30
|
-
`}default:return`${n}${
|
|
31
|
-
${
|
|
32
|
-
${
|
|
33
|
-
`}}}).prompt()};var
|
|
30
|
+
`}default:return`${n}${i.default.cyan(b)} ${Do({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:l}).join(`
|
|
31
|
+
${i.default.cyan(b)} `)}
|
|
32
|
+
${i.default.cyan(U)}
|
|
33
|
+
`}}}).prompt()};var X=(s="",e="")=>{let n=`
|
|
34
34
|
${s}
|
|
35
35
|
`.split(`
|
|
36
|
-
`),l=
|
|
37
|
-
`);process.stdout.write(`${
|
|
38
|
-
${
|
|
36
|
+
`),l=co(e).length,r=Math.max(n.reduce((o,a)=>{let p=co(a);return p.length>o?p.length:o},0),l)+2,t=n.map((o)=>`${i.default.gray(b)} ${i.default.dim(o)}${" ".repeat(r-co(o).length)}${i.default.gray(b)}`).join(`
|
|
37
|
+
`);process.stdout.write(`${i.default.gray(b)}
|
|
38
|
+
${i.default.green(J)} ${i.default.reset(e)} ${i.default.gray(Fo.repeat(Math.max(r-l-1,1))+ee)}
|
|
39
39
|
${t}
|
|
40
|
-
${
|
|
41
|
-
`)},
|
|
40
|
+
${i.default.gray(ne+Fo.repeat(r+2)+re)}
|
|
41
|
+
`)},Z=(s="")=>{process.stdout.write(`${i.default.gray(U)} ${i.default.red(s)}
|
|
42
42
|
|
|
43
|
-
`)},
|
|
44
|
-
`)},
|
|
45
|
-
${
|
|
43
|
+
`)},rs=(s="")=>{process.stdout.write(`${i.default.gray(Ds)} ${s}
|
|
44
|
+
`)},ls=(s="")=>{process.stdout.write(`${i.default.gray(b)}
|
|
45
|
+
${i.default.gray(U)} ${s}
|
|
46
46
|
|
|
47
|
-
`)},
|
|
48
|
-
`);n.push(`${e} ${l}`,...r.map((t)=>`${
|
|
47
|
+
`)},d={message:(s="",{symbol:e=i.default.gray(b)}={})=>{let n=[`${i.default.gray(b)}`];if(s){let[l,...r]=s.split(`
|
|
48
|
+
`);n.push(`${e} ${l}`,...r.map((t)=>`${i.default.gray(b)} ${t}`))}process.stdout.write(`${n.join(`
|
|
49
49
|
`)}
|
|
50
|
-
`)},info:(s)=>{
|
|
50
|
+
`)},info:(s)=>{d.message(s,{symbol:i.default.blue(le)})},success:(s)=>{d.message(s,{symbol:i.default.green(te)})},step:(s)=>{d.message(s,{symbol:i.default.green(J)})},warn:(s)=>{d.message(s,{symbol:i.default.yellow(ie)})},warning:(s)=>{d.warn(s)},error:(s)=>{d.message(s,{symbol:i.default.red(ae)})}},Be=`${i.default.gray(b)} `;var ts=({indicator:s="dots"}={})=>{let e=mo?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],n=mo?80:120,l=process.env.CI==="true",r,t,o=!1,a="",p,m=performance.now(),w=(k)=>{let O=k>1?"Something went wrong":"Canceled";o&&So(O,k)},c=()=>w(2),g=()=>w(1),I=()=>{process.on("uncaughtExceptionMonitor",c),process.on("unhandledRejection",c),process.on("SIGINT",g),process.on("SIGTERM",g),process.on("exit",w)},R=()=>{process.removeListener("uncaughtExceptionMonitor",c),process.removeListener("unhandledRejection",c),process.removeListener("SIGINT",g),process.removeListener("SIGTERM",g),process.removeListener("exit",w)},B=()=>{if(p===void 0)return;l&&process.stdout.write(`
|
|
51
51
|
`);let k=p.split(`
|
|
52
|
-
`);process.stdout.write(
|
|
53
|
-
`);let
|
|
54
|
-
`):process.stdout.write(`${
|
|
55
|
-
`),
|
|
56
|
-
- uses: actions/cache/restore@v4
|
|
57
|
-
with:
|
|
58
|
-
path: ~/.local/share/opencode/auth.json
|
|
59
|
-
key: opencode-auth-
|
|
60
|
-
restore-keys: opencode-auth-
|
|
61
|
-
`;var fo=(s)=>`name: PR Review
|
|
52
|
+
`);process.stdout.write(z.cursor.move(-999,k.length-1)),process.stdout.write(z.erase.down(k.length))},M=(k)=>k.replace(/\.+$/,""),_o=(k)=>{let O=(performance.now()-k)/1000,$=Math.floor(O/60),C=Math.floor(O%60);return $>0?`[${$}m ${C}s]`:`[${C}s]`},gs=(k="")=>{o=!0,r=Qo(),a=M(k),m=performance.now(),process.stdout.write(`${i.default.gray(b)}
|
|
53
|
+
`);let O=0,$=0;I(),t=setInterval(()=>{if(l&&a===p)return;B(),p=a;let C=i.default.magenta(e[O]);if(l)process.stdout.write(`${C} ${a}...`);else if(s==="timer")process.stdout.write(`${C} ${a} ${_o(m)}`);else{let ds=".".repeat(Math.floor($)).slice(0,3);process.stdout.write(`${C} ${a}${ds}`)}O=O+1<e.length?O+1:0,$=$<e.length?$+0.125:0},n)},So=(k="",O=0)=>{o=!1,clearInterval(t),B();let $=O===0?i.default.green(J):O===1?i.default.red(os):i.default.red(ss);a=M(k??a),s==="timer"?process.stdout.write(`${$} ${a} ${_o(m)}
|
|
54
|
+
`):process.stdout.write(`${$} ${a}
|
|
55
|
+
`),R(),r()};return{start:gs,stop:So,message:(k="")=>{a=M(k??a)}}},is=async(s,e)=>{let n={},l=Object.keys(s);for(let r of l){let t=s[r],o=await t({results:n})?.catch((a)=>{throw a});if(typeof e?.onCancel=="function"&&T(o)){n[r]="canceled",e.onCancel({results:n});continue}n[r]=o}return n};var E=H(so(),1);import*as N from"fs";import*as W from"path";var S="\n OPENCODE_AUTH: ${{ secrets.OPENCODE_AUTH }}",A="\n ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}";var fo=(s)=>`name: PR Review
|
|
62
56
|
|
|
63
57
|
on:
|
|
64
58
|
pull_request:
|
|
@@ -72,11 +66,11 @@ jobs:
|
|
|
72
66
|
pull-requests: write
|
|
73
67
|
steps:
|
|
74
68
|
- uses: actions/checkout@v4
|
|
75
|
-
|
|
69
|
+
|
|
76
70
|
- uses: activadee/open-workflows/actions/pr-review@main
|
|
77
71
|
env:
|
|
78
|
-
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?
|
|
79
|
-
`;var
|
|
72
|
+
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?S:A}
|
|
73
|
+
`;var wo=(s)=>`name: Issue Label
|
|
80
74
|
|
|
81
75
|
on:
|
|
82
76
|
issues:
|
|
@@ -89,11 +83,11 @@ jobs:
|
|
|
89
83
|
issues: write
|
|
90
84
|
steps:
|
|
91
85
|
- uses: actions/checkout@v4
|
|
92
|
-
|
|
86
|
+
|
|
93
87
|
- uses: activadee/open-workflows/actions/issue-label@main
|
|
94
88
|
env:
|
|
95
|
-
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?
|
|
96
|
-
`;var
|
|
89
|
+
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?S:A}
|
|
90
|
+
`;var bo=(s)=>`name: Doc Sync
|
|
97
91
|
|
|
98
92
|
on:
|
|
99
93
|
pull_request:
|
|
@@ -110,11 +104,11 @@ jobs:
|
|
|
110
104
|
with:
|
|
111
105
|
ref: \${{ github.head_ref }}
|
|
112
106
|
fetch-depth: 0
|
|
113
|
-
|
|
107
|
+
|
|
114
108
|
- uses: activadee/open-workflows/actions/doc-sync@main
|
|
115
109
|
env:
|
|
116
|
-
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?
|
|
117
|
-
`;var
|
|
110
|
+
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?S:A}
|
|
111
|
+
`;var ho=(s)=>`name: Release
|
|
118
112
|
|
|
119
113
|
on:
|
|
120
114
|
workflow_dispatch:
|
|
@@ -149,39 +143,32 @@ jobs:
|
|
|
149
143
|
version: \${{ inputs.version }}
|
|
150
144
|
env:
|
|
151
145
|
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
|
|
152
|
-
`;var
|
|
146
|
+
`;var go=(s)=>`name: AI Changeset
|
|
153
147
|
|
|
154
148
|
on:
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
workflow_dispatch:
|
|
149
|
+
pull_request:
|
|
150
|
+
types: [opened, synchronize, reopened]
|
|
158
151
|
|
|
159
152
|
jobs:
|
|
160
|
-
|
|
153
|
+
changeset:
|
|
161
154
|
runs-on: ubuntu-latest
|
|
155
|
+
permissions:
|
|
156
|
+
contents: write
|
|
157
|
+
pull-requests: write
|
|
162
158
|
steps:
|
|
163
|
-
-
|
|
164
|
-
uses: actions/cache/restore@v4
|
|
159
|
+
- uses: actions/checkout@v4
|
|
165
160
|
with:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
- if: steps.cache.outputs.cache-hit != 'true'
|
|
171
|
-
run: |
|
|
172
|
-
mkdir -p ~/.local/share/opencode
|
|
173
|
-
echo '\${{ secrets.OPENCODE_AUTH }}' > ~/.local/share/opencode/auth.json
|
|
174
|
-
|
|
175
|
-
- run: curl -fsSL https://opencode.ai/install | bash
|
|
176
|
-
|
|
177
|
-
- run: opencode models
|
|
161
|
+
fetch-depth: 0
|
|
162
|
+
ref: \${{ github.head_ref }}
|
|
163
|
+
token: \${{ secrets.GITHUB_TOKEN }}
|
|
178
164
|
|
|
179
|
-
- uses: actions/
|
|
165
|
+
- uses: activadee/open-workflows/actions/changeset@main
|
|
180
166
|
with:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
`),process.
|
|
167
|
+
mode: commit
|
|
168
|
+
env:
|
|
169
|
+
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}${s?S:A}
|
|
170
|
+
`;var xo={review:"pr-review",label:"issue-label","doc-sync":"doc-sync",release:"release",changeset:"changeset"};var ce={"pr-review":fo,"issue-label":wo,"doc-sync":bo,release:ho,changeset:go};function as(s){let{workflows:e,cwd:n=process.cwd()}=s,l=W.join(n,".github","workflows"),r=[];for(let t of e){let o=xo[t],a=W.join(l,`${o}.yml`);if(N.existsSync(a))r.push({type:"workflow",name:t,path:`.github/workflows/${o}.yml`})}return r}function ps(s){let{workflows:e,cwd:n=process.cwd(),useOAuth:l=!1,override:r=!1,overrideNames:t}=s,o=[],a=W.join(n,".github","workflows");if(!N.existsSync(a))N.mkdirSync(a,{recursive:!0});for(let p of e){let m=xo[p],w=ce[m],c=W.join(a,`${m}.yml`);if(!w){o.push({type:"workflow",name:p,status:"error",path:c,message:`Unknown workflow: ${p}`});continue}let g=w(l);if(!g){o.push({type:"workflow",name:p,status:"error",path:c,message:`Unknown workflow: ${p}`});continue}let I=N.existsSync(c),R=r||t?.has(p);if(I&&!R){o.push({type:"workflow",name:p,status:"skipped",path:`.github/workflows/${m}.yml`,message:"Skipped: already exists"});continue}try{N.writeFileSync(c,g,"utf-8"),o.push({type:"workflow",name:p,status:I?"overwritten":"created",path:`.github/workflows/${m}.yml`,message:I?"Overwritten successfully":"Created successfully"})}catch(B){o.push({type:"workflow",name:p,status:"error",path:c,message:`Failed to write file: ${B instanceof Error?B.message:"Unknown error"}`})}}return o}var fe=await Promise.resolve().then(() => H(cs(),1)).catch(()=>({version:"unknown"})),vo=fe.version,P=process.argv.slice(2),we=P.includes("--help")||P.includes("-h"),be=P.includes("--version")||P.includes("-v"),Oo=P.includes("--force")||P.includes("-f");if(be)process.stdout.write(`@activade/open-workflows v${vo}
|
|
171
|
+
`),process.exit(0);if(we)process.stdout.write(`@activade/open-workflows v${vo}
|
|
185
172
|
|
|
186
173
|
AI-powered GitHub automation workflows.
|
|
187
174
|
|
|
@@ -199,23 +186,20 @@ WHAT GETS INSTALLED
|
|
|
199
186
|
.github/workflows/issue-label.yml
|
|
200
187
|
.github/workflows/doc-sync.yml
|
|
201
188
|
.github/workflows/release.yml
|
|
202
|
-
.github/workflows/
|
|
189
|
+
.github/workflows/changeset.yml
|
|
203
190
|
|
|
204
191
|
REQUIRED SECRETS
|
|
205
192
|
For Claude Max (OAuth):
|
|
206
|
-
OPENCODE_AUTH - Your auth.json
|
|
193
|
+
OPENCODE_AUTH - Your auth.json (use opencode-auth-sync plugin to keep it updated)
|
|
207
194
|
|
|
208
195
|
For API Key:
|
|
209
196
|
ANTHROPIC_API_KEY - Your Anthropic API key
|
|
210
197
|
|
|
211
198
|
For more information: https://github.com/activadee/open-workflows
|
|
212
|
-
`),process.exit(0);
|
|
199
|
+
`),process.exit(0);rs(E.default.bgCyan(E.default.black(` @activade/open-workflows v${vo} `)));var ms=await is({workflows:()=>ns({message:"Select workflows to install:",options:[{value:"review",label:"PR Review",hint:"AI-powered code reviews"},{value:"label",label:"Issue Label",hint:"Auto-label issues"},{value:"doc-sync",label:"Doc Sync",hint:"Keep docs in sync"},{value:"release",label:"Release",hint:"Automated releases with notes"},{value:"changeset",label:"Changeset",hint:"AI-generated changesets for monorepos"}],required:!0}),useOAuth:()=>Q({message:"Use Claude Max subscription (OAuth)? (No = API key)",initialValue:!1})},{onCancel:()=>{Z("Installation cancelled."),process.exit(0)}}),fs=ms.workflows||[],$o=Boolean(ms.useOAuth),ws=!1;if($o){let s=await Q({message:"Install opencode-auth-sync plugin? (keeps OAuth tokens synced)",initialValue:!0});if(T(s))Z("Installation cancelled."),process.exit(0);ws=Boolean(s)}var bs=new Set;if(!Oo){let s=as({workflows:fs});if(s.length>0){d.warn(`Found ${s.length} existing file(s):`);for(let e of s){let n=await Q({message:`Override ${e.path}?`,initialValue:!1});if(T(n))Z("Installation cancelled."),process.exit(0);if(n)bs.add(e.name)}}}var hs=ts();hs.start("Installing workflows...");var G=ps({workflows:fs,useOAuth:$o,override:Oo,overrideNames:Oo?void 0:bs}),he=G.some((s)=>s.status==="error");hs.stop(he?"Installation completed with errors":"Installation complete!");var ko=G.filter((s)=>s.status==="created"),Eo=G.filter((s)=>s.status==="overwritten"),yo=G.filter((s)=>s.status==="skipped"),Io=G.filter((s)=>s.status==="error");if(ko.length>0){d.success(`Created ${ko.length} file(s):`);for(let s of ko)d.message(` ${E.default.green("+")} ${s.path}`)}if(Eo.length>0){d.success(`Overwritten ${Eo.length} file(s):`);for(let s of Eo)d.message(` ${E.default.cyan("~")} ${s.path}`)}if(yo.length>0){d.warn(`Skipped ${yo.length} file(s) (already exist):`);for(let s of yo)d.message(` ${E.default.yellow("-")} ${s.path}`)}if(Io.length>0){d.error(`Failed ${Io.length} file(s):`);for(let s of Io)d.message(` ${E.default.red("x")} ${s.path}: ${s.message}`)}if($o)if(ws)d.info("Launching opencode-auth-sync setup..."),await Bun.spawn(["bunx","@activade/opencode-auth-sync"],{stdio:["inherit","inherit","inherit"]}).exited,X("Commit and push the workflow files","Next steps");else X(`${E.default.cyan("1.")} Export your OpenCode auth as a secret:
|
|
213
200
|
${E.default.dim("gh secret set OPENCODE_AUTH < ~/.local/share/opencode/auth.json")}
|
|
214
201
|
|
|
215
|
-
${E.default.cyan("2.")} Commit and push the workflow files
|
|
216
|
-
|
|
217
|
-
${E.default.cyan("3.")} Run the opencode-auth workflow manually to initialize the cache:
|
|
218
|
-
${E.default.dim("gh workflow run opencode-auth.yml")}`,"Next steps (OAuth)");else wo(`${E.default.cyan("1.")} Add your Anthropic API key:
|
|
202
|
+
${E.default.cyan("2.")} Commit and push the workflow files`,"Next steps (OAuth)");else X(`${E.default.cyan("1.")} Add your Anthropic API key:
|
|
219
203
|
${E.default.dim("gh secret set ANTHROPIC_API_KEY")}
|
|
220
204
|
|
|
221
|
-
${E.default.cyan("2.")} Commit and push the workflow files`,"Next steps");
|
|
205
|
+
${E.default.cyan("2.")} Commit and push the workflow files`,"Next steps");ls(E.default.green("Done!"));
|