get-shit-done-cc 1.10.0-experimental.0 → 1.10.0
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 +16 -17
- package/agents/gsd-executor.md +375 -37
- package/agents/gsd-planner.md +108 -15
- package/bin/install.js +163 -238
- package/commands/gsd/help.md +0 -43
- package/commands/gsd/new-project.md +8 -94
- package/commands/gsd/plan-phase.md +5 -35
- package/get-shit-done/references/verification-patterns.md +1 -1
- package/get-shit-done/templates/phase-prompt.md +4 -4
- package/get-shit-done/templates/state.md +0 -37
- package/get-shit-done/workflows/execute-phase.md +1 -44
- package/get-shit-done/workflows/execute-plan.md +856 -34
- package/hooks/dist/gsd-statusline.js +9 -6
- package/package.json +7 -10
- package/agents/design-specialist.md +0 -222
- package/commands/gsd/autopilot.md +0 -518
- package/commands/gsd/checkpoints.md +0 -229
- package/commands/gsd/design-system.md +0 -70
- package/commands/gsd/discuss-design.md +0 -77
- package/commands/gsd/extend.md +0 -80
- package/get-shit-done/references/ccr-integration.md +0 -468
- package/get-shit-done/references/checkpoint-execution.md +0 -369
- package/get-shit-done/references/checkpoint-types.md +0 -728
- package/get-shit-done/references/deviation-rules.md +0 -215
- package/get-shit-done/references/framework-patterns.md +0 -543
- package/get-shit-done/references/ui-principles.md +0 -258
- package/get-shit-done/skills/gsd-extend/SKILL.md +0 -154
- package/get-shit-done/skills/gsd-extend/references/agent-structure.md +0 -305
- package/get-shit-done/skills/gsd-extend/references/extension-anatomy.md +0 -123
- package/get-shit-done/skills/gsd-extend/references/reference-structure.md +0 -408
- package/get-shit-done/skills/gsd-extend/references/template-structure.md +0 -370
- package/get-shit-done/skills/gsd-extend/references/validation-rules.md +0 -140
- package/get-shit-done/skills/gsd-extend/references/workflow-structure.md +0 -253
- package/get-shit-done/skills/gsd-extend/templates/agent-template.md +0 -234
- package/get-shit-done/skills/gsd-extend/templates/reference-template.md +0 -239
- package/get-shit-done/skills/gsd-extend/templates/workflow-template.md +0 -169
- package/get-shit-done/skills/gsd-extend/workflows/create-approach.md +0 -332
- package/get-shit-done/skills/gsd-extend/workflows/list-extensions.md +0 -133
- package/get-shit-done/skills/gsd-extend/workflows/remove-extension.md +0 -93
- package/get-shit-done/skills/gsd-extend/workflows/validate-extension.md +0 -184
- package/get-shit-done/templates/autopilot-script-simple.sh +0 -181
- package/get-shit-done/templates/autopilot-script.sh +0 -1142
- package/get-shit-done/templates/autopilot-script.sh.backup +0 -1142
- package/get-shit-done/templates/design-system.md +0 -238
- package/get-shit-done/templates/phase-design.md +0 -205
- package/get-shit-done/templates/phase-models-template.json +0 -71
- package/get-shit-done/tui/App.tsx +0 -169
- package/get-shit-done/tui/README.md +0 -107
- package/get-shit-done/tui/build.js +0 -37
- package/get-shit-done/tui/components/ActivityFeed.tsx +0 -126
- package/get-shit-done/tui/components/PhaseCard.tsx +0 -86
- package/get-shit-done/tui/components/StatsBar.tsx +0 -147
- package/get-shit-done/tui/dist/index.js +0 -387
- package/get-shit-done/tui/index.tsx +0 -12
- package/get-shit-done/tui/package-lock.json +0 -1074
- package/get-shit-done/tui/package.json +0 -22
- package/get-shit-done/tui/utils/pipeReader.ts +0 -129
- package/get-shit-done/workflows/design-system.md +0 -245
- package/get-shit-done/workflows/discuss-design.md +0 -330
- package/get-shit-done/workflows/execute-plan-auth.md +0 -122
- package/get-shit-done/workflows/execute-plan-checkpoints.md +0 -541
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: design-system-template
|
|
3
|
-
description: Template for project-wide design system documentation
|
|
4
|
-
used_by:
|
|
5
|
-
- design-system
|
|
6
|
-
placeholders:
|
|
7
|
-
- project_name
|
|
8
|
-
- aesthetic_summary
|
|
9
|
-
- color_palette
|
|
10
|
-
- typography
|
|
11
|
-
- spacing
|
|
12
|
-
- components
|
|
13
|
-
- patterns
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
<template>
|
|
17
|
-
|
|
18
|
-
# Design System
|
|
19
|
-
|
|
20
|
-
**Project:** {project_name}
|
|
21
|
-
**Framework:** {framework}
|
|
22
|
-
**Created:** {date}
|
|
23
|
-
|
|
24
|
-
## Aesthetic Direction
|
|
25
|
-
|
|
26
|
-
{aesthetic_summary}
|
|
27
|
-
|
|
28
|
-
{?inspiration}
|
|
29
|
-
### Visual References
|
|
30
|
-
|
|
31
|
-
{inspiration_description}
|
|
32
|
-
|
|
33
|
-
{/inspiration}
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Color Palette
|
|
38
|
-
|
|
39
|
-
### Brand Colors
|
|
40
|
-
|
|
41
|
-
| Name | Value | Usage |
|
|
42
|
-
|------|-------|-------|
|
|
43
|
-
{brand_colors}
|
|
44
|
-
|
|
45
|
-
### Semantic Colors
|
|
46
|
-
|
|
47
|
-
| Purpose | Light Mode | Dark Mode |
|
|
48
|
-
|---------|------------|-----------|
|
|
49
|
-
| Success | {success_light} | {success_dark} |
|
|
50
|
-
| Warning | {warning_light} | {warning_dark} |
|
|
51
|
-
| Error | {error_light} | {error_dark} |
|
|
52
|
-
| Info | {info_light} | {info_dark} |
|
|
53
|
-
|
|
54
|
-
### Neutral Scale
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
{neutral_scale}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Typography
|
|
63
|
-
|
|
64
|
-
### Font Stack
|
|
65
|
-
|
|
66
|
-
**Primary:** {font_primary}
|
|
67
|
-
**Monospace:** {font_mono}
|
|
68
|
-
|
|
69
|
-
### Type Scale
|
|
70
|
-
|
|
71
|
-
| Name | Size | Weight | Line Height | Usage |
|
|
72
|
-
|------|------|--------|-------------|-------|
|
|
73
|
-
{type_scale}
|
|
74
|
-
|
|
75
|
-
### Text Styles
|
|
76
|
-
|
|
77
|
-
{text_styles}
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Spacing
|
|
82
|
-
|
|
83
|
-
### Base Unit
|
|
84
|
-
|
|
85
|
-
{spacing_base}
|
|
86
|
-
|
|
87
|
-
### Scale
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
{spacing_scale}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Common Spacing Patterns
|
|
94
|
-
|
|
95
|
-
| Context | Value |
|
|
96
|
-
|---------|-------|
|
|
97
|
-
{spacing_patterns}
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Components
|
|
102
|
-
|
|
103
|
-
### Buttons
|
|
104
|
-
|
|
105
|
-
{button_specs}
|
|
106
|
-
|
|
107
|
-
### Inputs
|
|
108
|
-
|
|
109
|
-
{input_specs}
|
|
110
|
-
|
|
111
|
-
### Cards
|
|
112
|
-
|
|
113
|
-
{card_specs}
|
|
114
|
-
|
|
115
|
-
{?additional_components}
|
|
116
|
-
### Additional Components
|
|
117
|
-
|
|
118
|
-
{additional_components}
|
|
119
|
-
{/additional_components}
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Layout
|
|
124
|
-
|
|
125
|
-
### Breakpoints
|
|
126
|
-
|
|
127
|
-
| Name | Width | Usage |
|
|
128
|
-
|------|-------|-------|
|
|
129
|
-
{breakpoints}
|
|
130
|
-
|
|
131
|
-
### Grid
|
|
132
|
-
|
|
133
|
-
{grid_specs}
|
|
134
|
-
|
|
135
|
-
### Content Width
|
|
136
|
-
|
|
137
|
-
{content_width}
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Interaction
|
|
142
|
-
|
|
143
|
-
### Transitions
|
|
144
|
-
|
|
145
|
-
| Type | Duration | Easing |
|
|
146
|
-
|------|----------|--------|
|
|
147
|
-
{transitions}
|
|
148
|
-
|
|
149
|
-
### Feedback Patterns
|
|
150
|
-
|
|
151
|
-
{feedback_patterns}
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## Accessibility
|
|
156
|
-
|
|
157
|
-
### Contrast Requirements
|
|
158
|
-
|
|
159
|
-
{contrast_requirements}
|
|
160
|
-
|
|
161
|
-
### Focus States
|
|
162
|
-
|
|
163
|
-
{focus_states}
|
|
164
|
-
|
|
165
|
-
### Touch Targets
|
|
166
|
-
|
|
167
|
-
{touch_targets}
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Implementation Notes
|
|
172
|
-
|
|
173
|
-
{implementation_notes}
|
|
174
|
-
|
|
175
|
-
</template>
|
|
176
|
-
|
|
177
|
-
<guidelines>
|
|
178
|
-
|
|
179
|
-
## Filling This Template
|
|
180
|
-
|
|
181
|
-
**{aesthetic_summary}:** 2-3 sentences describing the overall visual direction. Examples:
|
|
182
|
-
- "Clean and minimal with generous whitespace. Emphasis on typography over decoration. Subtle shadows for depth."
|
|
183
|
-
- "Bold and energetic with high contrast. Geometric shapes and strong color accents. Modern and confident."
|
|
184
|
-
|
|
185
|
-
**{brand_colors}:** Table rows with color name, hex value, and where it's used. Example:
|
|
186
|
-
```
|
|
187
|
-
| Primary | #2563EB | Buttons, links, key actions |
|
|
188
|
-
| Primary Light | #3B82F6 | Hover states, backgrounds |
|
|
189
|
-
| Accent | #8B5CF6 | Highlights, tags, badges |
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**{type_scale}:** Table rows for each heading level and body text. Example:
|
|
193
|
-
```
|
|
194
|
-
| H1 | 40px | Bold | 1.2 | Page titles |
|
|
195
|
-
| H2 | 32px | Bold | 1.25 | Section headers |
|
|
196
|
-
| Body | 16px | Regular | 1.5 | Paragraphs |
|
|
197
|
-
| Small | 14px | Regular | 1.4 | Captions, labels |
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**{button_specs}:** Describe button variants with sizes, colors, states. Include code-ready values.
|
|
201
|
-
|
|
202
|
-
**{spacing_scale}:** List spacing values. Example:
|
|
203
|
-
```
|
|
204
|
-
4px - xs - Tight spacing, inline elements
|
|
205
|
-
8px - sm - Related items, compact layouts
|
|
206
|
-
16px - md - Standard padding, gaps
|
|
207
|
-
24px - lg - Section spacing
|
|
208
|
-
32px - xl - Major section breaks
|
|
209
|
-
48px - 2xl - Page-level spacing
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
</guidelines>
|
|
213
|
-
|
|
214
|
-
<examples>
|
|
215
|
-
|
|
216
|
-
## Good Example
|
|
217
|
-
|
|
218
|
-
```markdown
|
|
219
|
-
## Aesthetic Direction
|
|
220
|
-
|
|
221
|
-
Professional and trustworthy with a modern edge. Clean layouts with purposeful whitespace. Subtle depth through soft shadows. Typography-driven hierarchy—minimal decorative elements.
|
|
222
|
-
|
|
223
|
-
### Visual References
|
|
224
|
-
|
|
225
|
-
Inspired by Linear, Stripe, and Notion. Combines Linear's clean aesthetic with Stripe's attention to detail.
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Bad Example
|
|
229
|
-
|
|
230
|
-
```markdown
|
|
231
|
-
## Aesthetic Direction
|
|
232
|
-
|
|
233
|
-
Nice looking design.
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
The bad example is too vague to guide implementation decisions.
|
|
237
|
-
|
|
238
|
-
</examples>
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: phase-design-template
|
|
3
|
-
description: Template for phase-specific UI design documentation
|
|
4
|
-
used_by:
|
|
5
|
-
- discuss-design
|
|
6
|
-
placeholders:
|
|
7
|
-
- phase_number
|
|
8
|
-
- phase_name
|
|
9
|
-
- components
|
|
10
|
-
- layouts
|
|
11
|
-
- interactions
|
|
12
|
-
- mockup_files
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<template>
|
|
16
|
-
|
|
17
|
-
# Phase {phase_number}: {phase_name} - Design
|
|
18
|
-
|
|
19
|
-
**Created:** {date}
|
|
20
|
-
**Design System:** @.planning/DESIGN-SYSTEM.md
|
|
21
|
-
|
|
22
|
-
## Overview
|
|
23
|
-
|
|
24
|
-
{design_overview}
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Components
|
|
29
|
-
|
|
30
|
-
{?new_components}
|
|
31
|
-
### New Components
|
|
32
|
-
|
|
33
|
-
| Component | Purpose | States |
|
|
34
|
-
|-----------|---------|--------|
|
|
35
|
-
{new_components}
|
|
36
|
-
|
|
37
|
-
{/new_components}
|
|
38
|
-
|
|
39
|
-
{?modified_components}
|
|
40
|
-
### Modified Components
|
|
41
|
-
|
|
42
|
-
| Component | Changes | Reason |
|
|
43
|
-
|-----------|---------|--------|
|
|
44
|
-
{modified_components}
|
|
45
|
-
|
|
46
|
-
{/modified_components}
|
|
47
|
-
|
|
48
|
-
### Component Specifications
|
|
49
|
-
|
|
50
|
-
{component_specs}
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Layouts
|
|
55
|
-
|
|
56
|
-
### Screen/Page Layouts
|
|
57
|
-
|
|
58
|
-
{layout_descriptions}
|
|
59
|
-
|
|
60
|
-
### Responsive Behavior
|
|
61
|
-
|
|
62
|
-
| Breakpoint | Layout Changes |
|
|
63
|
-
|------------|----------------|
|
|
64
|
-
{responsive_changes}
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Interactions
|
|
69
|
-
|
|
70
|
-
### User Flows
|
|
71
|
-
|
|
72
|
-
{user_flows}
|
|
73
|
-
|
|
74
|
-
### States & Transitions
|
|
75
|
-
|
|
76
|
-
{state_transitions}
|
|
77
|
-
|
|
78
|
-
### Loading States
|
|
79
|
-
|
|
80
|
-
{loading_states}
|
|
81
|
-
|
|
82
|
-
### Error States
|
|
83
|
-
|
|
84
|
-
{error_states}
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Mockups
|
|
89
|
-
|
|
90
|
-
| File | Description | Status |
|
|
91
|
-
|------|-------------|--------|
|
|
92
|
-
{mockup_files}
|
|
93
|
-
|
|
94
|
-
### Running Mockups
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
{mockup_run_command}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Design Decisions
|
|
103
|
-
|
|
104
|
-
| Decision | Rationale |
|
|
105
|
-
|----------|-----------|
|
|
106
|
-
{design_decisions}
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Implementation Notes
|
|
111
|
-
|
|
112
|
-
{implementation_notes}
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## Checklist
|
|
117
|
-
|
|
118
|
-
- [ ] All new components specified
|
|
119
|
-
- [ ] States defined for each component
|
|
120
|
-
- [ ] Responsive behavior documented
|
|
121
|
-
- [ ] Mockups reviewed and approved
|
|
122
|
-
- [ ] Follows design system
|
|
123
|
-
- [ ] Accessibility considered
|
|
124
|
-
|
|
125
|
-
</template>
|
|
126
|
-
|
|
127
|
-
<guidelines>
|
|
128
|
-
|
|
129
|
-
## Filling This Template
|
|
130
|
-
|
|
131
|
-
**{design_overview}:** 2-3 sentences summarizing what UI this phase introduces or changes.
|
|
132
|
-
|
|
133
|
-
**{new_components}:** Table of components created in this phase:
|
|
134
|
-
```
|
|
135
|
-
| PostCard | Displays a social media post | default, loading, error, empty |
|
|
136
|
-
| LikeButton | Heart animation on like | idle, hovering, liked, animating |
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
**{component_specs}:** Detailed specs for each component. Include:
|
|
140
|
-
- Visual description
|
|
141
|
-
- Props/parameters
|
|
142
|
-
- Variants
|
|
143
|
-
- All states with visual differences
|
|
144
|
-
- Accessibility requirements
|
|
145
|
-
|
|
146
|
-
**{layout_descriptions}:** Describe how screens are structured. Include:
|
|
147
|
-
- Grid/flex layout approach
|
|
148
|
-
- Content ordering
|
|
149
|
-
- Key regions (header, main, sidebar, etc.)
|
|
150
|
-
|
|
151
|
-
**{user_flows}:** Describe interaction sequences:
|
|
152
|
-
```
|
|
153
|
-
1. User sees post in feed
|
|
154
|
-
2. Hovers over like button → heart outline highlights
|
|
155
|
-
3. Clicks like → heart fills with animation
|
|
156
|
-
4. Like count increments
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
**{mockup_files}:** List of mockup files created:
|
|
160
|
-
```
|
|
161
|
-
| mockups/PostCard.tsx | Post card component preview | ✓ Approved |
|
|
162
|
-
| mockups/Feed.tsx | Full feed layout | ✓ Approved |
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
</guidelines>
|
|
166
|
-
|
|
167
|
-
<examples>
|
|
168
|
-
|
|
169
|
-
## Good Component Spec
|
|
170
|
-
|
|
171
|
-
```markdown
|
|
172
|
-
### PostCard
|
|
173
|
-
|
|
174
|
-
**Purpose:** Displays a single post in the feed with author info, content, and engagement actions.
|
|
175
|
-
|
|
176
|
-
**Structure:**
|
|
177
|
-
- Header: Avatar (40px), Author name, Timestamp
|
|
178
|
-
- Content: Text (max 280 chars), optional media
|
|
179
|
-
- Footer: Like, Comment, Share actions with counts
|
|
180
|
-
|
|
181
|
-
**Variants:**
|
|
182
|
-
- `default` - Standard post display
|
|
183
|
-
- `compact` - Reduced padding for dense feeds
|
|
184
|
-
- `featured` - Highlighted border for promoted content
|
|
185
|
-
|
|
186
|
-
**States:**
|
|
187
|
-
- Loading: Skeleton with pulsing animation
|
|
188
|
-
- Error: "Failed to load" with retry button
|
|
189
|
-
- Empty media: Placeholder with broken image icon
|
|
190
|
-
|
|
191
|
-
**Accessibility:**
|
|
192
|
-
- Author name is a link with focus ring
|
|
193
|
-
- Action buttons have aria-labels with counts
|
|
194
|
-
- Media has alt text from post data
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Bad Component Spec
|
|
198
|
-
|
|
199
|
-
```markdown
|
|
200
|
-
### PostCard
|
|
201
|
-
|
|
202
|
-
A card for posts. Has a like button.
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
</examples>
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"description": "Per-phase model configuration for GSD Autopilot",
|
|
3
|
-
"default_model": "claude-3-5-sonnet-latest",
|
|
4
|
-
"phases": {
|
|
5
|
-
"1": {
|
|
6
|
-
"model": "claude-3-5-sonnet-latest",
|
|
7
|
-
"reasoning": "Initial setup and architecture - Sonnet is cost-effective for routine tasks"
|
|
8
|
-
},
|
|
9
|
-
"2": {
|
|
10
|
-
"model": "claude-3-5-opus-latest",
|
|
11
|
-
"reasoning": "Complex implementation requiring deep reasoning"
|
|
12
|
-
},
|
|
13
|
-
"3": {
|
|
14
|
-
"model": "claude-3-5-sonnet-latest",
|
|
15
|
-
"reasoning": "Standard development work"
|
|
16
|
-
},
|
|
17
|
-
"gaps": {
|
|
18
|
-
"model": "claude-3-5-sonnet-latest",
|
|
19
|
-
"reasoning": "Gap closure typically involves straightforward fixes"
|
|
20
|
-
},
|
|
21
|
-
"continuation": {
|
|
22
|
-
"model": "claude-3-5-sonnet-latest",
|
|
23
|
-
"reasoning": "Checkpoint continuations need context but not deep reasoning"
|
|
24
|
-
},
|
|
25
|
-
"verification": {
|
|
26
|
-
"model": "claude-3-5-sonnet-latest",
|
|
27
|
-
"reasoning": "Verification is systematic testing, not complex reasoning"
|
|
28
|
-
},
|
|
29
|
-
"milestone_complete": {
|
|
30
|
-
"model": "claude-3-5-sonnet-latest",
|
|
31
|
-
"reasoning": "Completion task is straightforward"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
"provider_routing": {
|
|
35
|
-
"claude-3-5-sonnet-latest": {
|
|
36
|
-
"provider": "anthropic",
|
|
37
|
-
"base_url": "https://api.anthropic.com"
|
|
38
|
-
},
|
|
39
|
-
"claude-3-5-opus-latest": {
|
|
40
|
-
"provider": "anthropic",
|
|
41
|
-
"base_url": "https://api.anthropic.com"
|
|
42
|
-
},
|
|
43
|
-
"glm-4.7": {
|
|
44
|
-
"provider": "z-ai",
|
|
45
|
-
"base_url": "https://open.bigmodel.cn/api/paas/v4/",
|
|
46
|
-
"auth_header": "Authorization"
|
|
47
|
-
},
|
|
48
|
-
"gpt-4o": {
|
|
49
|
-
"provider": "openai",
|
|
50
|
-
"base_url": "https://api.openai.com/v1"
|
|
51
|
-
},
|
|
52
|
-
"deepseek-reasoner": {
|
|
53
|
-
"provider": "openrouter",
|
|
54
|
-
"model_name": "deepseek/deepseek-reasoner",
|
|
55
|
-
"base_url": "https://openrouter.ai/api/v1/chat/completions"
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
"cost_optimization": {
|
|
59
|
-
"enabled": true,
|
|
60
|
-
"auto_downgrade_on_budget": {
|
|
61
|
-
"threshold_percent": 80,
|
|
62
|
-
"fallback_model": "claude-3-5-haiku-latest"
|
|
63
|
-
},
|
|
64
|
-
"task_type_routing": {
|
|
65
|
-
"research": "claude-3-5-sonnet-latest",
|
|
66
|
-
"planning": "claude-3-5-haiku-latest",
|
|
67
|
-
"coding": "claude-3-5-sonnet-latest",
|
|
68
|
-
"verification": "claude-3-5-haiku-latest"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect, useMemo } from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { PhaseCard } from './components/PhaseCard.js';
|
|
4
|
-
import { ActivityFeed } from './components/ActivityFeed.js';
|
|
5
|
-
import { StatsBar } from './components/StatsBar.js';
|
|
6
|
-
import { ActivityPipeReader, ActivityMessage } from './utils/pipeReader.js';
|
|
7
|
-
|
|
8
|
-
interface Stage {
|
|
9
|
-
name: string;
|
|
10
|
-
elapsed: string;
|
|
11
|
-
completed: boolean;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const App: React.FC = () => {
|
|
15
|
-
const [activities, setActivities] = useState<Array<ActivityMessage & { detail: string }>>([]);
|
|
16
|
-
const [currentStage, setCurrentStage] = useState<{
|
|
17
|
-
stage: string;
|
|
18
|
-
stageDesc: string;
|
|
19
|
-
elapsed: string;
|
|
20
|
-
} | null>(null);
|
|
21
|
-
const [completedStages, setCompletedStages] = useState<Array<{ name: string; elapsed: string }>>([]);
|
|
22
|
-
const [currentPhase, setCurrentPhase] = useState<string>('1');
|
|
23
|
-
const [phaseName, setPhaseName] = useState<string>('Initializing...');
|
|
24
|
-
const [totalPhases] = useState<number>(3);
|
|
25
|
-
const [completedPhases, setCompletedPhases] = useState<number>(0);
|
|
26
|
-
const [startTime] = useState<Date>(new Date());
|
|
27
|
-
const [tokens, setTokens] = useState<number>(0);
|
|
28
|
-
const [cost, setCost] = useState<string>('0.00');
|
|
29
|
-
const [budget] = useState<{ used: number; limit: number } | undefined>(undefined);
|
|
30
|
-
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
const pipePath = process.env.GSD_ACTIVITY_PIPE || '.planning/logs/activity.pipe';
|
|
33
|
-
const reader = new ActivityPipeReader(pipePath);
|
|
34
|
-
|
|
35
|
-
reader.onMessage((msg) => {
|
|
36
|
-
setActivities((prev) => [...prev, msg]);
|
|
37
|
-
|
|
38
|
-
// Handle stage messages
|
|
39
|
-
if (msg.type === 'stage') {
|
|
40
|
-
const [stageType, ...descParts] = msg.detail.split(':');
|
|
41
|
-
const description = descParts.join(':');
|
|
42
|
-
|
|
43
|
-
// Add to completed stages
|
|
44
|
-
if (currentStage && currentStage.stage !== stageType) {
|
|
45
|
-
setCompletedStages((prev) => [
|
|
46
|
-
...prev,
|
|
47
|
-
{ name: currentStage.stage, elapsed: currentStage.elapsed },
|
|
48
|
-
]);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
setCurrentStage({
|
|
52
|
-
stage: stageType,
|
|
53
|
-
stageDesc: description,
|
|
54
|
-
elapsed: '0:00',
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Handle file messages
|
|
59
|
-
if (msg.type === 'file') {
|
|
60
|
-
// Already added to activities
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Handle commit messages
|
|
64
|
-
if (msg.type === 'commit') {
|
|
65
|
-
// Already added to activities
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
reader.start();
|
|
70
|
-
|
|
71
|
-
return () => {
|
|
72
|
-
// Cleanup handled by pipe reader
|
|
73
|
-
};
|
|
74
|
-
}, []);
|
|
75
|
-
|
|
76
|
-
// Calculate elapsed time
|
|
77
|
-
const elapsedTime = useMemo(() => {
|
|
78
|
-
const diff = Math.floor((Date.now() - startTime.getTime()) / 1000);
|
|
79
|
-
const hrs = Math.floor(diff / 3600);
|
|
80
|
-
const mins = Math.floor((diff % 3600) / 60);
|
|
81
|
-
const secs = diff % 60;
|
|
82
|
-
|
|
83
|
-
if (hrs > 0) {
|
|
84
|
-
return `${hrs}h ${mins}m ${secs}s`;
|
|
85
|
-
} else if (mins > 0) {
|
|
86
|
-
return `${mins}m ${secs}s`;
|
|
87
|
-
} else {
|
|
88
|
-
return `${secs}s`;
|
|
89
|
-
}
|
|
90
|
-
}, [startTime]);
|
|
91
|
-
|
|
92
|
-
// Build stages array
|
|
93
|
-
const stages: Stage[] = useMemo(() => {
|
|
94
|
-
const stages: Stage[] = [
|
|
95
|
-
...completedStages.map((s) => ({ ...s, completed: true })),
|
|
96
|
-
];
|
|
97
|
-
|
|
98
|
-
if (currentStage) {
|
|
99
|
-
stages.push({
|
|
100
|
-
name: currentStage.stage,
|
|
101
|
-
elapsed: currentStage.elapsed,
|
|
102
|
-
completed: false,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return stages;
|
|
107
|
-
}, [completedStages, currentStage]);
|
|
108
|
-
|
|
109
|
-
// Calculate progress
|
|
110
|
-
const progress = useMemo(() => {
|
|
111
|
-
if (stages.length === 0) return 0;
|
|
112
|
-
const completed = stages.filter((s) => s.completed).length;
|
|
113
|
-
return (completed / (stages.length + 3)) * 100; // +3 for planned future stages
|
|
114
|
-
}, [stages]);
|
|
115
|
-
|
|
116
|
-
return (
|
|
117
|
-
<Box flexDirection="column" padding={1}>
|
|
118
|
-
<Box justifyContent="center" marginBottom={1}>
|
|
119
|
-
<Text bold color="cyan">
|
|
120
|
-
╔═══╗ ╔╗ ╔╗ ╔══╗
|
|
121
|
-
║╔══╝ ║║ ║║ ║╔╗║
|
|
122
|
-
║╚══╗ ║║ ║║ ║╚╝║
|
|
123
|
-
║╔══╝ ║║ ║║ ║╔╗║
|
|
124
|
-
║╚══╗ ║╚══╗║╚══╗ ║╚╝║
|
|
125
|
-
╚═══╝ ╚═══╝╚═══╝ ╚══╝
|
|
126
|
-
</Text>
|
|
127
|
-
</Box>
|
|
128
|
-
|
|
129
|
-
<Text bold color="cyan">
|
|
130
|
-
GET SHIT DONE - AUTOPILOT
|
|
131
|
-
</Text>
|
|
132
|
-
|
|
133
|
-
<Box marginY={1}>
|
|
134
|
-
<Text dimColor>
|
|
135
|
-
{'─'.repeat(60)}
|
|
136
|
-
</Text>
|
|
137
|
-
</Box>
|
|
138
|
-
|
|
139
|
-
<Box flexDirection="row" gap={1} flexGrow={1}>
|
|
140
|
-
<Box flexDirection="column" flexGrow={1}>
|
|
141
|
-
<PhaseCard
|
|
142
|
-
phase={currentPhase}
|
|
143
|
-
phaseName={phaseName}
|
|
144
|
-
totalPhases={totalPhases}
|
|
145
|
-
currentPhaseIndex={completedPhases}
|
|
146
|
-
stages={stages}
|
|
147
|
-
description={currentStage?.stageDesc}
|
|
148
|
-
progress={progress}
|
|
149
|
-
/>
|
|
150
|
-
</Box>
|
|
151
|
-
|
|
152
|
-
<Box flexDirection="column" flexGrow={1}>
|
|
153
|
-
<ActivityFeed activities={activities} />
|
|
154
|
-
</Box>
|
|
155
|
-
</Box>
|
|
156
|
-
|
|
157
|
-
<StatsBar
|
|
158
|
-
totalPhases={totalPhases}
|
|
159
|
-
completedPhases={completedPhases}
|
|
160
|
-
elapsedTime={elapsedTime}
|
|
161
|
-
tokens={tokens}
|
|
162
|
-
cost={cost}
|
|
163
|
-
budget={budget}
|
|
164
|
-
/>
|
|
165
|
-
</Box>
|
|
166
|
-
);
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
export default App;
|