@automagik/genie 0.260202.1901 → 0.260203.135

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.
Files changed (104) hide show
  1. package/.beads/issues.jsonl +9 -0
  2. package/.claude/skills/brainstorm/SKILL.md +53 -0
  3. package/.claude/skills/genie-base/SKILL.md +66 -0
  4. package/.claude/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  5. package/.claude/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  6. package/.claude/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  7. package/.claude/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  8. package/.claude/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  9. package/.claude/skills/genie-base/assets/workspace/ROLE.md +14 -0
  10. package/.claude/skills/genie-base/assets/workspace/SOUL.md +36 -0
  11. package/.claude/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  12. package/.claude/skills/genie-base/assets/workspace/USER.md +13 -0
  13. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-30.md +6 -0
  14. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-31.md +16 -0
  15. package/.claude/skills/genie-base/assets/workspace/memory/882c22be-9710-41c1-91f8-ed82947ef6ce.txt +1 -0
  16. package/.claude/skills/genie-base/scripts/install-workspace.sh +107 -0
  17. package/.claude/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  18. package/.claude/skills/genie-blank-init/SKILL.md +37 -0
  19. package/.claude/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  20. package/.claude/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  21. package/.claude/skills/genie-blank-init/assets/SOUL.md +10 -0
  22. package/.claude/skills/genie-blank-init/assets/USER.md +9 -0
  23. package/.claude/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  24. package/.claude/skills/genie-forge/SKILL.md +171 -0
  25. package/.claude/skills/genie-plan-review/CLAUDE.md +11 -0
  26. package/.claude/skills/genie-plan-review/SKILL.md +53 -0
  27. package/.claude/skills/genie-review/SKILL.md +171 -0
  28. package/.claude/skills/genie-wish/SKILL.md +141 -0
  29. package/.claude-plugin/marketplace.json +18 -0
  30. package/.genie/.gitkeep +3 -0
  31. package/.genie/backlog/hooks-v2.md +82 -0
  32. package/.genie/wishes/upgrade-brainstorm-handoff/wish.md +124 -0
  33. package/.gitattributes +1 -1
  34. package/AGENTS.md +35 -0
  35. package/README.md +10 -5
  36. package/bun.lock +55 -0
  37. package/dist/claudio.js +1 -1
  38. package/dist/genie.js +1 -1
  39. package/dist/term.js +108 -85
  40. package/docs/CO-ORCHESTRATION-GUIDE.md +375 -0
  41. package/package.json +5 -1
  42. package/plugin/.claude-plugin/plugin.json +18 -0
  43. package/plugin/README.md +120 -0
  44. package/plugin/agents/implementor.md +92 -0
  45. package/plugin/agents/quality-reviewer.md +113 -0
  46. package/plugin/agents/spec-reviewer.md +90 -0
  47. package/plugin/hooks/hooks.json +3 -0
  48. package/plugin/hooks/postInstall.sh +10 -0
  49. package/plugin/references/review-criteria.md +72 -0
  50. package/plugin/references/wish-template.md +92 -0
  51. package/plugin/scripts/genie.cjs +141 -0
  52. package/plugin/scripts/smart-install.js +308 -0
  53. package/plugin/scripts/src/install-genie-cli.sh +120 -0
  54. package/plugin/scripts/src/validate-completion.ts +142 -0
  55. package/plugin/scripts/src/validate-wish.ts +137 -0
  56. package/plugin/scripts/term.cjs +231 -0
  57. package/plugin/scripts/validate-completion.cjs +16 -0
  58. package/plugin/scripts/validate-wish.cjs +17 -0
  59. package/plugin/scripts/worker-service.cjs +28 -0
  60. package/plugin/skills/brainstorm/SKILL.md +106 -0
  61. package/plugin/skills/forge/SKILL.md +171 -0
  62. package/plugin/skills/genie-base/SKILL.md +99 -0
  63. package/plugin/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  64. package/plugin/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  65. package/plugin/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  66. package/plugin/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  67. package/plugin/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  68. package/plugin/skills/genie-base/assets/workspace/ROLE.md +14 -0
  69. package/plugin/skills/genie-base/assets/workspace/SOUL.md +36 -0
  70. package/plugin/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  71. package/plugin/skills/genie-base/assets/workspace/USER.md +13 -0
  72. package/plugin/skills/genie-base/scripts/install-workspace.sh +107 -0
  73. package/plugin/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  74. package/plugin/skills/genie-blank-init/SKILL.md +73 -0
  75. package/plugin/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  76. package/plugin/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  77. package/plugin/skills/genie-blank-init/assets/SOUL.md +10 -0
  78. package/plugin/skills/genie-blank-init/assets/USER.md +9 -0
  79. package/plugin/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  80. package/plugin/skills/genie-cli-dev/CLAUDE.md +19 -0
  81. package/plugin/skills/genie-cli-dev/SKILL.md +295 -0
  82. package/plugin/skills/plan-review/SKILL.md +101 -0
  83. package/plugin/skills/review/SKILL.md +221 -0
  84. package/plugin/skills/wish/SKILL.md +110 -0
  85. package/plugin/skills/work-orchestration/SKILL.md +116 -0
  86. package/scripts/build.js +132 -0
  87. package/scripts/smart-install.js +308 -0
  88. package/scripts/sync.js +134 -0
  89. package/src/lib/beads-registry.ts +49 -0
  90. package/src/lib/orchestrator/event-monitor.ts +2 -0
  91. package/src/lib/skill-loader.ts +215 -0
  92. package/src/lib/tmux.ts +19 -14
  93. package/src/lib/version.ts +1 -1
  94. package/src/lib/worker-registry.ts +10 -0
  95. package/src/services/worker-service.ts +351 -0
  96. package/src/term-commands/close.ts +14 -4
  97. package/src/term-commands/create.ts +95 -0
  98. package/src/term-commands/kill.ts +15 -4
  99. package/src/term-commands/orchestrate.ts +3 -2
  100. package/src/term-commands/send.ts +43 -15
  101. package/src/term-commands/spawn.ts +446 -0
  102. package/src/term-commands/split.ts +14 -3
  103. package/src/term-commands/work.ts +217 -57
  104. package/src/term.ts +81 -6
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: "wish"
3
+ description: "Use when starting any non-trivial work that needs structured planning - converts ideas into wish documents with scope, acceptance criteria, and execution tasks"
4
+ ---
5
+
6
+ # Wish - Turn Ideas Into Plans
7
+
8
+ ## Overview
9
+
10
+ Convert an idea into a structured wish document through collaborative brainstorming, then create native Claude Code tasks for execution.
11
+
12
+ **Output:** `.genie/wishes/<slug>/wish.md` + native tasks ready for `/forge`
13
+
14
+ ---
15
+
16
+ ## The Flow
17
+
18
+ ### Phase 1: Brainstorm (Explore Mode)
19
+
20
+ Enter plan mode to explore the codebase read-only. Understand the landscape before proposing anything.
21
+
22
+ **One question at a time. Multiple choice when possible.**
23
+
24
+ 1. **Resonate** - Understand the intent
25
+ - What does the user actually want? (not just what they said)
26
+ - Ask clarifying questions, one at a time
27
+ - Prefer multiple choice: "Which of these best describes what you want?"
28
+
29
+ 2. **Explore approaches** - Propose 2-3 alternatives
30
+ - Present options with trade-offs
31
+ - Lead with your recommendation and explain why
32
+ - Let the user choose (or propose something different)
33
+
34
+ 3. **Align on scope** - Define boundaries
35
+ - What's IN scope?
36
+ - What's explicitly OUT of scope?
37
+ - What assumptions are we making?
38
+
39
+ ### Phase 2: Design (200-300 Word Sections)
40
+
41
+ Present the design incrementally. Check after each section.
42
+
43
+ **Sections to cover:**
44
+ - Summary (what and why, 2-3 sentences)
45
+ - Architecture approach
46
+ - Key decisions with rationale
47
+ - Risks and mitigations
48
+
49
+ ### Phase 3: Plan (Bite-Sized Tasks)
50
+
51
+ Break the design into execution groups. Each task should be:
52
+ - **Small enough** to implement in one focused session
53
+ - **Testable** with clear acceptance criteria
54
+ - **Independent** where possible (minimize blocking dependencies)
55
+
56
+ **Per task, define:**
57
+ - What to do (deliverables)
58
+ - Acceptance criteria (checkboxes)
59
+ - Validation command (how to verify it worked)
60
+ - Files likely touched
61
+
62
+ ### Phase 4: Write the Wish Document
63
+
64
+ Write to `.genie/wishes/<slug>/wish.md` using the template structure:
65
+
66
+ ```markdown
67
+ # Wish: <Title>
68
+
69
+ **Status:** DRAFT
70
+ **Slug:** `<slug>`
71
+
72
+ ---
73
+
74
+ ## Summary
75
+ <2-3 sentences: what and why>
76
+
77
+ ## Scope
78
+ ### IN
79
+ - <what we're doing>
80
+
81
+ ### OUT
82
+ - <what we're not doing>
83
+
84
+ ## Decisions
85
+ - **DEC-1:** <key decision with rationale>
86
+
87
+ ## Success Criteria
88
+ - [ ] <overall criterion 1>
89
+ - [ ] <overall criterion 2>
90
+
91
+ ## Execution Groups
92
+
93
+ ### Group A: <Name>
94
+ **Goal:** <one sentence>
95
+
96
+ **Deliverables:**
97
+ - <concrete output>
98
+
99
+ **Acceptance Criteria:**
100
+ - [ ] <testable criterion>
101
+
102
+ **Validation:** `<command to verify>`
103
+
104
+ ### Group B: <Name>
105
+ ...
106
+ ```
107
+
108
+ ### Phase 5: Create Native Tasks
109
+
110
+ After writing the wish document:
111
+ - Use `TaskCreate` for each execution group
112
+ - Set up `addBlockedBy` dependencies between tasks
113
+ - Include wish slug and group name in task description
114
+
115
+ ### Phase 6: Handoff
116
+
117
+ Output: **"Wish documented. Run `/wish-review` to validate, then `/forge` to begin execution."**
118
+
119
+ ---
120
+
121
+ ## Key Principles
122
+
123
+ - **One question at a time** - Never ask multiple questions in one message
124
+ - **Multiple choice preferred** - Easier for users to answer
125
+ - **YAGNI ruthlessly** - Remove unnecessary features from all designs
126
+ - **Acceptance criteria are king** - Every task must have testable criteria
127
+ - **Validation commands required** - Every task must have a way to verify completion
128
+ - **Explore before proposing** - Read code before designing changes
129
+ - **Small tasks** - If a task feels big, split it
130
+
131
+ ---
132
+
133
+ ## Never Do
134
+
135
+ - Skip brainstorming and jump to plan writing
136
+ - Ask more than one question per message
137
+ - Create tasks without acceptance criteria
138
+ - Create tasks without validation commands
139
+ - Write a wish without user agreement on scope
140
+ - Start implementation during wish creation (plan mode only)
141
+ - Create overly broad tasks ("implement everything")
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "namastexlabs",
3
+ "owner": {
4
+ "name": "Namastex Labs"
5
+ },
6
+ "metadata": {
7
+ "description": "Plugins by Namastex Labs",
8
+ "homepage": "https://github.com/namastexlabs/genie-cli"
9
+ },
10
+ "plugins": [
11
+ {
12
+ "name": "automagik-genie",
13
+ "version": "2026.02.02",
14
+ "source": "./plugin",
15
+ "description": "Human-AI partnership for Claude Code. Share a terminal, orchestrate workers, evolve together. Brainstorm ideas, wish them into plans, forge with parallel agents, ship as one team. A coding genie that grows with your project."
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,3 @@
1
+ # .genie directory structure
2
+ # wishes/ - Wish documents created by genie:wish skill
3
+ # notes/ - Session notes and brainstorm artifacts
@@ -0,0 +1,82 @@
1
+ # Hooks v2 - Intelligent Session Awareness
2
+
3
+ **Status:** Parked (removed 2026-02-02)
4
+ **Why parked:** Scripts weren't being copied to plugin cache + bun dependency
5
+
6
+ ---
7
+
8
+ ## The Soul
9
+
10
+ Hooks that make Genie *aware* of the session flow:
11
+ - Know when a wish task is being written (validate structure live)
12
+ - Know when Claude stops (did we actually complete what was asked?)
13
+ - Know session context (what wish are we forging? what task?)
14
+
15
+ ## What We Had (v1 - broken)
16
+
17
+ ```json
18
+ {
19
+ "hooks": [
20
+ {
21
+ "event": "PreToolUse",
22
+ "matcher": { "tool_name": "Write", "file_path": ".genie/wishes/**/*.md" },
23
+ "command": "bun ${CLAUDE_PLUGIN_ROOT}/scripts/validate-wish.ts --file \"$CLAUDE_FILE_PATH\"",
24
+ "timeout_ms": 5000,
25
+ "on_failure": "warn"
26
+ },
27
+ {
28
+ "event": "Stop",
29
+ "matcher": { "stop_reason": "end_turn" },
30
+ "command": "bun ${CLAUDE_PLUGIN_ROOT}/scripts/validate-completion.ts --session \"$CLAUDE_SESSION_ID\"",
31
+ "timeout_ms": 10000,
32
+ "on_failure": "ignore"
33
+ }
34
+ ]
35
+ }
36
+ ```
37
+
38
+ ## Problems
39
+ 1. `.ts` files not copied to plugin cache (only `smart-install.js` was)
40
+ 2. `bun` dependency - not always available
41
+ 3. Scripts need to be self-contained `.js` or `.cjs`
42
+
43
+ ## Ideas for v2
44
+
45
+ ### Wish Validation Hook
46
+ - Validate wish.md structure before write
47
+ - Check: scope section exists, acceptance criteria present, tasks defined
48
+ - Output: warn if missing sections, suggest fixes
49
+ - Could use prompt-based hook instead of script?
50
+
51
+ ### Completion Awareness Hook
52
+ - On Stop: check if we're in a forge session
53
+ - Did we complete the current task?
54
+ - Should we mark task done? Move to next?
55
+ - Auto-update task status in wish.md?
56
+
57
+ ### Session Context Hook
58
+ - SessionStart: detect if we're resuming a wish/forge
59
+ - Load context automatically
60
+ - "Welcome back, you were working on wish X, task 3"
61
+
62
+ ### Prompt-Based Alternative
63
+ Instead of scripts, use Claude's own judgment via prompt hooks:
64
+ ```json
65
+ {
66
+ "event": "Stop",
67
+ "hooks": [{
68
+ "type": "prompt",
69
+ "prompt": "Check if the current task from .genie/active-wish was completed..."
70
+ }]
71
+ }
72
+ ```
73
+
74
+ ## Questions to Brainstorm
75
+ - What's the minimal viable hook that adds value?
76
+ - Script vs prompt-based - which fits genie's soul better?
77
+ - How to track "active wish" and "active task" across sessions?
78
+ - Should hooks modify files or just inform?
79
+
80
+ ---
81
+
82
+ *This is a parking lot for hook ideas. When ready, run /wish to plan implementation.*
@@ -0,0 +1,124 @@
1
+ # Wish: Upgrade Brainstorm Skill with Handoff Output
2
+
3
+ **Status:** DRAFT
4
+ **Slug:** `upgrade-brainstorm-handoff`
5
+ **Created:** 2026-02-02
6
+
7
+ ---
8
+
9
+ ## Summary
10
+
11
+ Merge the best parts from local and plugin brainstorm skill versions, and add a structured handoff output to `.genie/brainstorms/<slug>/design.md` that provides the perfect input for `/wish` to begin execution planning.
12
+
13
+ ---
14
+
15
+ ## Scope
16
+
17
+ ### IN
18
+ - Merge local `.claude/skills/brainstorm/` improvements into plugin
19
+ - Add design.md output template as a reference file
20
+ - Update SKILL.md to include handoff phase
21
+ - Delete local duplicate after merge
22
+ - Test the upgraded skill works
23
+
24
+ ### OUT
25
+ - Changes to other skills (wish, forge, review)
26
+ - New features beyond the handoff document
27
+ - Changes to the wish template (wish reads brainstorm output, not the other way)
28
+
29
+ ---
30
+
31
+ ## Decisions
32
+
33
+ - **DEC-1:** Output location is `.genie/brainstorms/<slug>/design.md` — keeps brainstorm artifacts separate from wishes
34
+ - **DEC-2:** Handoff document uses markdown table format for decisions/risks — scannable and structured
35
+ - **DEC-3:** Status field in design.md is `VALIDATED` — signals ready for /wish consumption
36
+
37
+ ---
38
+
39
+ ## Success Criteria
40
+
41
+ - [ ] Plugin brainstorm skill includes all best practices from both versions
42
+ - [ ] Running `/brainstorm` produces `.genie/brainstorms/<slug>/design.md` on completion
43
+ - [ ] Design.md format includes: Problem, Solution, Scope IN/OUT, Decisions, Risks, Success definition
44
+ - [ ] Local `.claude/skills/brainstorm/` is deleted
45
+ - [ ] No duplicate brainstorm skills exist
46
+
47
+ ---
48
+
49
+ ## Assumptions
50
+
51
+ - **ASM-1:** The plugin can be updated and reinstalled locally for testing
52
+ - **ASM-2:** The design.md template is sufficient for /wish to begin planning
53
+
54
+ ## Risks
55
+
56
+ - **RISK-1:** Breaking existing brainstorm behavior — Mitigation: Test with a real brainstorm session before deleting local
57
+
58
+ ---
59
+
60
+ ## Execution Groups
61
+
62
+ ### Group A: Create Design Template Reference
63
+
64
+ **Goal:** Add the design.md template as a reference file in the plugin.
65
+
66
+ **Deliverables:**
67
+ - `plugin/references/design-template.md` with the agreed format
68
+
69
+ **Acceptance Criteria:**
70
+ - [ ] Template file exists at `plugin/references/design-template.md`
71
+ - [ ] Template includes all agreed sections (Problem, Solution, Scope, Design, Constraints, Success)
72
+
73
+ **Validation:** `cat plugin/references/design-template.md | head -30`
74
+
75
+ ---
76
+
77
+ ### Group B: Upgrade Brainstorm SKILL.md
78
+
79
+ **Goal:** Merge best practices and add handoff phase to the brainstorm skill.
80
+
81
+ **Deliverables:**
82
+ - Updated `plugin/skills/brainstorm/SKILL.md` with:
83
+ - Merged content from both versions
84
+ - New Phase 6: Write Handoff Document
85
+ - Reference to design-template.md
86
+
87
+ **Acceptance Criteria:**
88
+ - [ ] SKILL.md includes all 6 phases
89
+ - [ ] Phase 6 writes to `.genie/brainstorms/<slug>/design.md`
90
+ - [ ] References the design-template.md for format
91
+ - [ ] Includes "Never Do" guardrails
92
+
93
+ **Validation:** `grep -c "Phase\|design-template\|\.genie/brainstorms" plugin/skills/brainstorm/SKILL.md`
94
+
95
+ ---
96
+
97
+ ### Group C: Delete Local Duplicate
98
+
99
+ **Goal:** Remove the local `.claude/skills/brainstorm/` now that plugin is upgraded.
100
+
101
+ **Deliverables:**
102
+ - Delete `.claude/skills/brainstorm/` directory
103
+
104
+ **Acceptance Criteria:**
105
+ - [ ] `.claude/skills/brainstorm/` no longer exists
106
+ - [ ] No errors when running `/brainstorm` (uses plugin version)
107
+
108
+ **Validation:** `ls .claude/skills/brainstorm 2>&1 | grep -c "No such file"`
109
+
110
+ ---
111
+
112
+ ## Review Results
113
+
114
+ _Populated by `/review` after forge execution completes._
115
+
116
+ ---
117
+
118
+ ## Files to Create/Modify
119
+
120
+ ```
121
+ plugin/references/design-template.md (CREATE)
122
+ plugin/skills/brainstorm/SKILL.md (MODIFY)
123
+ .claude/skills/brainstorm/ (DELETE)
124
+ ```
package/.gitattributes CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
2
  # Use bd merge for beads JSONL files
3
- .beads/issues.jsonl merge=beads
3
+ .genie/issues.jsonl merge=beads
package/AGENTS.md CHANGED
@@ -12,6 +12,41 @@ bd close <id> # Complete work
12
12
  bd sync # Sync with git
13
13
  ```
14
14
 
15
+ ## Co-Orchestration Mode
16
+
17
+ When working as a **spawned worker** via `term work`, you are part of a multi-agent system:
18
+
19
+ 1. **You are bound to a specific issue** - Focus ONLY on that task
20
+ 2. **Your state is tracked** - The orchestrator sees your status (working/idle/permission/etc.)
21
+ 3. **You work in an isolated worktree** - Your changes don't affect other workers
22
+ 4. **Beads syncs automatically** - The daemon handles commits
23
+
24
+ ### CLI Improvement Rule (CRITICAL)
25
+
26
+ **DO NOT implement CLI improvements directly.** When you identify an opportunity to improve genie-cli:
27
+
28
+ 1. Create an issue: `bd create "CLI: <improvement>" --label cli-improvement`
29
+ 2. Continue with your assigned task
30
+ 3. A dedicated `genie-cli-improver` worker will handle CLI changes
31
+
32
+ This ensures:
33
+ - Your current task stays focused
34
+ - CLI changes are isolated and reviewable
35
+ - No scope creep in your work
36
+
37
+ ### Worker Lifecycle
38
+
39
+ ```
40
+ term work bd-X → You start → Work on task → Signal completion → term close bd-X
41
+ ```
42
+
43
+ When done with your task:
44
+ 1. Commit your changes
45
+ 2. Inform the orchestrator you're done (just say "Done" or similar)
46
+ 3. The orchestrator will run `term close bd-X` to clean up
47
+
48
+ See `docs/CO-ORCHESTRATION-GUIDE.md` for the full orchestration workflow.
49
+
15
50
  ## Landing the Plane (Session Completion)
16
51
 
17
52
  **When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
package/README.md CHANGED
@@ -217,9 +217,11 @@ term
217
217
  ├── rm <name> Remove session (--keep-worktree)
218
218
  ├── read <session> Read output (-n, --grep, --json, -f)
219
219
  ├── exec <session> <cmd> Run command (async)
220
- ├── send <session> <keys> Send keystrokes
220
+ ├── send <session> <keys> Send keys with Enter (--no-enter for raw)
221
221
  ├── split <session> <h|v> Split pane (-d, -w)
222
- ├── status <session> Check state (--command <id>, --json)
222
+ ├── info <session> Session info (--json)
223
+ ├── watch <session> Watch events in real-time
224
+ ├── run <session> <msg> Fire-and-forget with auto-approve
223
225
  ├── window
224
226
  │ ├── new <session> <name>
225
227
  │ ├── ls <session> (--json)
@@ -227,6 +229,9 @@ term
227
229
  ├── pane
228
230
  │ ├── ls <session> (--json)
229
231
  │ └── rm <pane-id>
232
+ ├── orc
233
+ │ ├── start <session> Start Claude with monitoring
234
+ │ └── status <session> Claude state (idle/busy/permission)
230
235
  └── hook
231
236
  ├── set <event> <cmd>
232
237
  ├── list
@@ -422,8 +427,8 @@ term ls --json
422
427
  term read khal-tests --json
423
428
  # → {"session":"khal-tests","lines":["$ npm test","PASS src/app.test.ts"]}
424
429
 
425
- # Check status
426
- term status khal-tests --json
430
+ # Check session info
431
+ term info khal-tests --json
427
432
  # → {"exists":true,"windows":1,"panes":1}
428
433
  ```
429
434
 
@@ -456,7 +461,7 @@ term exec project-work "npm test" # runs in active pane
456
461
 
457
462
  Check if a command finished:
458
463
  ```bash
459
- term status my-session --json
464
+ term info my-session --json
460
465
  ```
461
466
 
462
467
  Look for shell prompt in output to detect completion:
package/bun.lock CHANGED
@@ -13,11 +13,64 @@
13
13
  "devDependencies": {
14
14
  "@types/bun": "^1.1.0",
15
15
  "@types/node": "^20.10.5",
16
+ "esbuild": "^0.27.2",
16
17
  "typescript": "^5.3.3",
17
18
  },
18
19
  },
19
20
  },
20
21
  "packages": {
22
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
23
+
24
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
25
+
26
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.2", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
27
+
28
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.27.2", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
29
+
30
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
31
+
32
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
33
+
34
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
35
+
36
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
37
+
38
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.2", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
39
+
40
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
41
+
42
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
43
+
44
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
45
+
46
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
47
+
48
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
49
+
50
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
51
+
52
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
53
+
54
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
55
+
56
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
57
+
58
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.2", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
59
+
60
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
61
+
62
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
63
+
64
+ "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
65
+
66
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
67
+
68
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
69
+
70
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
71
+
72
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
73
+
21
74
  "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="],
22
75
 
23
76
  "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="],
@@ -72,6 +125,8 @@
72
125
 
73
126
  "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
74
127
 
128
+ "esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
129
+
75
130
  "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="],
76
131
 
77
132
  "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
package/dist/claudio.js CHANGED
@@ -27,7 +27,7 @@ Expecting one of '${E.join("', '")}'`);let B=`${D}Help`;return this.on(B,($)=>{l
27
27
  `)$+=S3(q)}}return $};w3.exports=(D,F,E)=>{return String(D).normalize().replace(/\r\n/g,`
28
28
  `).split(`
29
29
  `).map((B)=>oF(B,F,E)).join(`
30
- `)}});var f3=Z((c5,T3)=>{var tF=GD("stream");class P3 extends tF{#E=null;constructor(D={}){super(D);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=D.replace,this._prompt=D.prompt||null,this._hadControl=!1}#F(D,F){if(this._dest)return this._dest[D];if(this._src)return this._src[D];return F}#D(D,...F){if(typeof this._dest?.[D]==="function")this._dest[D](...F);if(typeof this._src?.[D]==="function")this._src[D](...F)}get isTTY(){if(this.#E!==null)return this.#E;return this.#F("isTTY",!1)}set isTTY(D){this.#E=D}get rows(){return this.#F("rows")}get columns(){return this.#F("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(D){this._src=D}pipe(D,F){return this._dest=D,super.pipe(D,F)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(D){if(this.muted){if(!this.replace)return!0;if(D.match(/^\u001b/)){if(D.indexOf(this._prompt)===0)D=D.slice(this._prompt.length),D=D.replace(/./g,this.replace),D=this._prompt+D;return this._hadControl=!0,this.emit("data",D)}else{if(this._prompt&&this._hadControl&&D.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),D=D.slice(this._prompt.length);D=D.toString().replace(/./g,this.replace)}}this.emit("data",D)}end(D){if(this.muted)if(D&&this.replace)D=D.toString().replace(/./g,this.replace);else D=null;if(D)this.emit("data",D);this.emit("end")}destroy(...D){return this.#D("destroy",...D)}destroySoon(...D){return this.#D("destroySoon",...D)}close(...D){return this.#D("close",...D)}}T3.exports=P3});var c0=zD(p0(),1),{program:h1,createCommand:g1,createArgument:m1,createOption:l1,CommanderError:p1,InvalidArgumentError:c1,InvalidOptionArgumentError:d1,Command:d0,Argument:n1,Option:i1,Help:r1}=c0.default;var n0="0.260202.1901";var D2=(D,F=[])=>D.name==="up"||F.includes("vim")&&D.name==="k"||F.includes("emacs")&&D.ctrl&&D.name==="p",H2=(D,F=[])=>D.name==="down"||F.includes("vim")&&D.name==="j"||F.includes("emacs")&&D.ctrl&&D.name==="n";var p2=(D)=>D.name==="backspace",jD=(D)=>D.name==="tab";var qD=(D)=>D.name==="enter"||D.name==="return";class c2 extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(D){super();this.cause=D?.cause}}class d2 extends Error{name="CancelPromptError";message="Prompt was canceled"}class u2 extends Error{name="ExitPromptError"}class n2 extends Error{name="HookError"}class i2 extends Error{name="ValidationError"}import{AsyncResource as UF}from"async_hooks";import{AsyncLocalStorage as RF,AsyncResource as zF}from"async_hooks";var i0=new RF;function jF(D){return{rl:D,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function r0(D,F){let E=jF(D);return i0.run(E,()=>{function B($){E.handleChange=()=>{E.index=0,$()},E.handleChange()}return F(B)})}function UD(){let D=i0.getStore();if(!D)throw new n2("[Inquirer] Hook functions can only be called from within a prompt");return D}function r2(){return UD().rl}function a2(D){let F=(...E)=>{let B=UD(),$=!1,q=B.handleChange;B.handleChange=()=>{$=!0};let C=D(...E);if($)q();return B.handleChange=q,C};return zF.bind(F)}function PD(D){let F=UD(),{index:E}=F,B={get(){return F.hooks[E]},set(q){F.hooks[E]=q},initialized:E in F.hooks},$=D(B);return F.index++,$}function a0(){UD().handleChange()}var LD={queue(D){let F=UD(),{index:E}=F;F.hooksEffect.push(()=>{F.hooksCleanup[E]?.();let B=D(r2());if(B!=null&&typeof B!=="function")throw new i2("useEffect return value must be a cleanup function or nothing.");F.hooksCleanup[E]=B})},run(){let D=UD();a2(()=>{D.hooksEffect.forEach((F)=>{F()}),D.hooksEffect.length=0})()},clearAll(){let D=UD();D.hooksCleanup.forEach((F)=>{F?.()}),D.hooksEffect.length=0,D.hooksCleanup.length=0}};function P(D){return PD((F)=>{let E=UF.bind(function(q){if(F.get()!==q)F.set(q),a0()});if(F.initialized)return[F.get(),E];let B=typeof D==="function"?D():D;return F.set(B),[B,E]})}function CD(D,F){PD((E)=>{let B=E.get();if(!Array.isArray(B)||F.some((q,C)=>!Object.is(q,B[C])))LD.queue(D);E.set(F)})}var m=zD(A2(),1);import DD from"process";function NF(){if(DD.platform!=="win32")return DD.env.TERM!=="linux";return Boolean(DD.env.WT_SESSION)||Boolean(DD.env.TERMINUS_SUBLIME)||DD.env.ConEmuTask==="{cmd::Cmder}"||DD.env.TERM_PROGRAM==="Terminus-Sublime"||DD.env.TERM_PROGRAM==="vscode"||DD.env.TERM==="xterm-256color"||DD.env.TERM==="alacritty"||DD.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var s0={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},t0={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},KF={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},OF={...s0,...t0},SF={...s0,...KF},wF=NF(),IF=wF?OF:SF,TD=IF,J5=Object.entries(t0);var e0={prefix:{idle:m.default.blue("?"),done:m.default.green(TD.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((D)=>m.default.yellow(D))},style:{answer:m.default.cyan,message:m.default.bold,error:(D)=>m.default.red(`> ${D}`),defaultAnswer:(D)=>m.default.dim(`(${D})`),help:m.default.dim,highlight:m.default.cyan,key:(D)=>m.default.cyan(m.default.bold(`<${D}>`))}};function D3(D){if(typeof D!=="object"||D===null)return!1;let F=D;while(Object.getPrototypeOf(F)!==null)F=Object.getPrototypeOf(F);return Object.getPrototypeOf(D)===F}function F3(...D){let F={};for(let E of D)for(let[B,$]of Object.entries(E)){let q=F[B];F[B]=D3(q)&&D3($)?F3(q,$):$}return F}function n(...D){let F=[e0,...D.filter((E)=>E!=null)];return F3(...F)}function XD({status:D="idle",theme:F}){let[E,B]=P(!1),[$,q]=P(0),{prefix:C,spinner:X}=n(F);if(CD(()=>{if(D==="loading"){let J,_=-1,H=setTimeout(()=>{B(!0),J=setInterval(()=>{_=_+1,q(_%X.frames.length)},X.interval)},300);return()=>{clearTimeout(H),clearInterval(J)}}else B(!1)},[D]),E)return X.frames[$];return typeof C==="string"?C:C[D==="loading"?"idle":D]??C.idle}function o2(D,F){return PD((E)=>{let B=E.get();if(!B||B.dependencies.length!==F.length||B.dependencies.some(($,q)=>$!==F[q])){let $=D();return E.set({value:$,dependencies:F}),$}return B.value})}function M2(D){return P({current:D})[0]}function QD(D){let F=M2(D);F.current=D,CD((E)=>{let B=!1,$=a2((q,C)=>{if(B)return;F.current(C,E)});return E.input.on("keypress",$),()=>{B=!0,E.input.removeListener("keypress",$)}},[])}var b3=zD(B3(),1),k3=zD(I3(),1);function B2(D,F){return D.split(`
30
+ `)}});var f3=Z((c5,T3)=>{var tF=GD("stream");class P3 extends tF{#E=null;constructor(D={}){super(D);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=D.replace,this._prompt=D.prompt||null,this._hadControl=!1}#F(D,F){if(this._dest)return this._dest[D];if(this._src)return this._src[D];return F}#D(D,...F){if(typeof this._dest?.[D]==="function")this._dest[D](...F);if(typeof this._src?.[D]==="function")this._src[D](...F)}get isTTY(){if(this.#E!==null)return this.#E;return this.#F("isTTY",!1)}set isTTY(D){this.#E=D}get rows(){return this.#F("rows")}get columns(){return this.#F("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(D){this._src=D}pipe(D,F){return this._dest=D,super.pipe(D,F)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(D){if(this.muted){if(!this.replace)return!0;if(D.match(/^\u001b/)){if(D.indexOf(this._prompt)===0)D=D.slice(this._prompt.length),D=D.replace(/./g,this.replace),D=this._prompt+D;return this._hadControl=!0,this.emit("data",D)}else{if(this._prompt&&this._hadControl&&D.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),D=D.slice(this._prompt.length);D=D.toString().replace(/./g,this.replace)}}this.emit("data",D)}end(D){if(this.muted)if(D&&this.replace)D=D.toString().replace(/./g,this.replace);else D=null;if(D)this.emit("data",D);this.emit("end")}destroy(...D){return this.#D("destroy",...D)}destroySoon(...D){return this.#D("destroySoon",...D)}close(...D){return this.#D("close",...D)}}T3.exports=P3});var c0=zD(p0(),1),{program:h1,createCommand:g1,createArgument:m1,createOption:l1,CommanderError:p1,InvalidArgumentError:c1,InvalidOptionArgumentError:d1,Command:d0,Argument:n1,Option:i1,Help:r1}=c0.default;var n0="0.260203.0135";var D2=(D,F=[])=>D.name==="up"||F.includes("vim")&&D.name==="k"||F.includes("emacs")&&D.ctrl&&D.name==="p",H2=(D,F=[])=>D.name==="down"||F.includes("vim")&&D.name==="j"||F.includes("emacs")&&D.ctrl&&D.name==="n";var p2=(D)=>D.name==="backspace",jD=(D)=>D.name==="tab";var qD=(D)=>D.name==="enter"||D.name==="return";class c2 extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(D){super();this.cause=D?.cause}}class d2 extends Error{name="CancelPromptError";message="Prompt was canceled"}class u2 extends Error{name="ExitPromptError"}class n2 extends Error{name="HookError"}class i2 extends Error{name="ValidationError"}import{AsyncResource as UF}from"async_hooks";import{AsyncLocalStorage as RF,AsyncResource as zF}from"async_hooks";var i0=new RF;function jF(D){return{rl:D,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function r0(D,F){let E=jF(D);return i0.run(E,()=>{function B($){E.handleChange=()=>{E.index=0,$()},E.handleChange()}return F(B)})}function UD(){let D=i0.getStore();if(!D)throw new n2("[Inquirer] Hook functions can only be called from within a prompt");return D}function r2(){return UD().rl}function a2(D){let F=(...E)=>{let B=UD(),$=!1,q=B.handleChange;B.handleChange=()=>{$=!0};let C=D(...E);if($)q();return B.handleChange=q,C};return zF.bind(F)}function PD(D){let F=UD(),{index:E}=F,B={get(){return F.hooks[E]},set(q){F.hooks[E]=q},initialized:E in F.hooks},$=D(B);return F.index++,$}function a0(){UD().handleChange()}var LD={queue(D){let F=UD(),{index:E}=F;F.hooksEffect.push(()=>{F.hooksCleanup[E]?.();let B=D(r2());if(B!=null&&typeof B!=="function")throw new i2("useEffect return value must be a cleanup function or nothing.");F.hooksCleanup[E]=B})},run(){let D=UD();a2(()=>{D.hooksEffect.forEach((F)=>{F()}),D.hooksEffect.length=0})()},clearAll(){let D=UD();D.hooksCleanup.forEach((F)=>{F?.()}),D.hooksEffect.length=0,D.hooksCleanup.length=0}};function P(D){return PD((F)=>{let E=UF.bind(function(q){if(F.get()!==q)F.set(q),a0()});if(F.initialized)return[F.get(),E];let B=typeof D==="function"?D():D;return F.set(B),[B,E]})}function CD(D,F){PD((E)=>{let B=E.get();if(!Array.isArray(B)||F.some((q,C)=>!Object.is(q,B[C])))LD.queue(D);E.set(F)})}var m=zD(A2(),1);import DD from"process";function NF(){if(DD.platform!=="win32")return DD.env.TERM!=="linux";return Boolean(DD.env.WT_SESSION)||Boolean(DD.env.TERMINUS_SUBLIME)||DD.env.ConEmuTask==="{cmd::Cmder}"||DD.env.TERM_PROGRAM==="Terminus-Sublime"||DD.env.TERM_PROGRAM==="vscode"||DD.env.TERM==="xterm-256color"||DD.env.TERM==="alacritty"||DD.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var s0={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},t0={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},KF={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},OF={...s0,...t0},SF={...s0,...KF},wF=NF(),IF=wF?OF:SF,TD=IF,J5=Object.entries(t0);var e0={prefix:{idle:m.default.blue("?"),done:m.default.green(TD.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((D)=>m.default.yellow(D))},style:{answer:m.default.cyan,message:m.default.bold,error:(D)=>m.default.red(`> ${D}`),defaultAnswer:(D)=>m.default.dim(`(${D})`),help:m.default.dim,highlight:m.default.cyan,key:(D)=>m.default.cyan(m.default.bold(`<${D}>`))}};function D3(D){if(typeof D!=="object"||D===null)return!1;let F=D;while(Object.getPrototypeOf(F)!==null)F=Object.getPrototypeOf(F);return Object.getPrototypeOf(D)===F}function F3(...D){let F={};for(let E of D)for(let[B,$]of Object.entries(E)){let q=F[B];F[B]=D3(q)&&D3($)?F3(q,$):$}return F}function n(...D){let F=[e0,...D.filter((E)=>E!=null)];return F3(...F)}function XD({status:D="idle",theme:F}){let[E,B]=P(!1),[$,q]=P(0),{prefix:C,spinner:X}=n(F);if(CD(()=>{if(D==="loading"){let J,_=-1,H=setTimeout(()=>{B(!0),J=setInterval(()=>{_=_+1,q(_%X.frames.length)},X.interval)},300);return()=>{clearTimeout(H),clearInterval(J)}}else B(!1)},[D]),E)return X.frames[$];return typeof C==="string"?C:C[D==="loading"?"idle":D]??C.idle}function o2(D,F){return PD((E)=>{let B=E.get();if(!B||B.dependencies.length!==F.length||B.dependencies.some(($,q)=>$!==F[q])){let $=D();return E.set({value:$,dependencies:F}),$}return B.value})}function M2(D){return P({current:D})[0]}function QD(D){let F=M2(D);F.current=D,CD((E)=>{let B=!1,$=a2((q,C)=>{if(B)return;F.current(C,E)});return E.input.on("keypress",$),()=>{B=!0,E.input.removeListener("keypress",$)}},[])}var b3=zD(B3(),1),k3=zD(I3(),1);function B2(D,F){return D.split(`
31
31
  `).flatMap((E)=>k3.default(E,F,{trim:!1,hard:!0}).split(`
32
32
  `).map((B)=>B.trimEnd())).join(`
33
33
  `)}function j2(){return b3.default({defaultWidth:80,output:r2().output})}function sF({active:D,renderedItems:F,pageSize:E,loop:B}){let $=M2({lastPointer:D,lastActive:void 0}),{lastPointer:q,lastActive:C}=$.current,X=Math.floor(E/2),Q=F.reduce((H,j)=>H+j.length,0),J=F.slice(0,D).reduce((H,j)=>H+j.length,0),_=J;if(Q>E)if(B){if(_=q,C!=null&&C<D&&D-C<E)_=Math.min(X,Math.abs(D-C)===1?Math.min(q+(F[C]?.length??0),Math.max(J,q)):q+D-C)}else{let H=F.slice(D).reduce((j,z)=>j+z.length,0);_=H<E-X?E-H:Math.min(J,X)}return $.current.lastPointer=_,$.current.lastActive=D,_}function q0({items:D,active:F,renderItem:E,pageSize:B,loop:$=!0}){let q=j2(),C=(U)=>(U%D.length+D.length)%D.length,X=D.map((U,S)=>{if(U==null)return[];return B2(E({item:U,index:S,isActive:S===F}),q).split(`