@iservu-inc/adf-cli 0.17.0 → 0.17.5

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.
@@ -18,78 +18,48 @@ async function generatePRP(answers, outputPath) {
18
18
  ### What We're Building
19
19
  ${answers['prp-1'] || 'Not provided'}
20
20
 
21
- ### Primary User Action
21
+ ### Problem & Primary User Action
22
22
  ${answers['prp-2'] || 'Not provided'}
23
23
 
24
- ### Problem Being Solved
25
- ${answers['prp-3'] || 'Not provided'}
26
-
27
24
  ### Success Criteria
28
- ${answers['prp-4'] || 'Not provided'}
25
+ ${answers['prp-3'] || 'Not provided'}
29
26
 
30
27
  ---
31
28
 
32
- ## 2. Business Justification
29
+ ## 2. Business Context
33
30
 
34
- ### Value to Users
35
- ${answers['prp-5'] || 'Not provided'}
36
-
37
- ### Cost of NOT Building
38
- ${answers['prp-6'] || 'Not provided'}
39
-
40
- ### Usage Pattern
41
- ${answers['prp-7'] || 'Not provided'}
31
+ ### Value & Usage Pattern
32
+ ${answers['prp-4'] || 'Not provided'}
42
33
 
43
34
  ---
44
35
 
45
36
  ## 3. Contextual Intelligence
46
37
 
47
- ### Technology Stack
48
- ${answers['prp-8'] || 'Not provided'}
49
-
50
- ### Files & Directories
51
- ${answers['prp-9'] || 'Not provided'}
52
-
53
- ### Libraries & Packages
54
- ${answers['prp-10'] || 'Not provided'}
55
-
56
- ### Code Patterns to Follow
57
- ${answers['prp-11'] || 'Not provided'}
38
+ ### Technology Stack & Libraries
39
+ ${answers['prp-5'] || 'Not provided'}
58
40
 
59
- ### Documentation References
60
- ${answers['prp-12'] || 'Not provided'}
41
+ ### Patterns, Conventions & Documentation
42
+ ${answers['prp-6'] || 'Not provided'}
61
43
 
62
44
  ---
63
45
 
64
46
  ## 4. Implementation Blueprint
65
47
 
66
48
  ### Implementation Steps
67
- ${answers['prp-13'] || 'Not provided'}
68
-
69
- ### Data Model
70
- ${answers['prp-14'] || 'Not provided'}
49
+ ${answers['prp-7'] || 'Not provided'}
71
50
 
72
- ### API Design
73
- ${answers['prp-15'] || 'Not provided'}
51
+ ### Data Model & API Design
52
+ ${answers['prp-8'] || 'Not provided'}
74
53
 
75
54
  ### Edge Cases & Error Handling
76
- ${answers['prp-16'] || 'Not provided'}
77
-
78
- ### Technical Approach
79
- ${answers['prp-17'] || 'Not provided'}
55
+ ${answers['prp-9'] || 'Not provided'}
80
56
 
81
57
  ---
82
58
 
83
59
  ## 5. Validation
84
60
 
85
- ### Manual Testing Steps
86
- ${answers['prp-18'] || 'Not provided'}
87
-
88
- ### Automated Tests Required
89
- ${answers['prp-19'] || 'Not provided'}
90
-
91
- ### Definition of Done
92
- ${answers['prp-20'] || 'Not provided'}
61
+ ### Testing Strategy & Definition of Done
62
+ ${answers['prp-10'] || 'Not provided'}
93
63
 
94
64
  ---
95
65
 
@@ -98,13 +68,13 @@ ${answers['prp-20'] || 'Not provided'}
98
68
  **Implement the above feature following this blueprint:**
99
69
 
100
70
  1. Start with the implementation steps in Section 4
101
- 2. Reference the code patterns and documentation in Section 3
71
+ 2. Reference the patterns and documentation in Section 3
102
72
  3. Implement the data model and API design as specified
103
73
  4. Handle all edge cases listed
104
74
  5. Write tests as specified in Section 5
105
75
  6. Validate against the Definition of Done
106
76
 
107
- **Success Criteria:** ${answers['prp-4'] || 'See Section 1'}
77
+ **Success Criteria:** ${answers['prp-3'] || 'See Section 1'}
108
78
  `;
109
79
 
110
80
  await fs.writeFile(path.join(outputPath, 'prp.md'), prp, 'utf-8');
@@ -116,23 +86,14 @@ async function generateBalanced(answers, outputPath) {
116
86
 
117
87
  **Generated:** ${new Date().toISOString()}
118
88
 
119
- ## Code Quality Standards
120
- ${answers['bal-21'] || 'Not provided'}
121
-
122
- ## Testing Requirements
123
- ${answers['bal-22'] || 'Not provided'}
89
+ ## Code Quality & Documentation Standards
90
+ ${answers['bal-11'] || 'Not provided'}
124
91
 
125
- ## Documentation Standards
126
- ${answers['bal-23'] || 'Not provided'}
127
-
128
- ## UX/Accessibility Principles
129
- ${answers['bal-24'] || 'Not provided'}
92
+ ## Security & Accessibility Requirements
93
+ ${answers['bal-12'] || 'Not provided'}
130
94
 
131
- ## Security Standards
132
- ${answers['bal-25'] || 'Not provided'}
133
-
134
- ## Decision-Making Guidelines
135
- ${answers['bal-26'] || 'Not provided'}
95
+ ## Testing Requirements & Coverage Targets
96
+ ${answers['bal-13'] || 'Not provided'}
136
97
  `;
137
98
 
138
99
  // Specification
@@ -147,61 +108,40 @@ ${answers['bal-26'] || 'Not provided'}
147
108
  ### Goal
148
109
  ${answers['prp-1'] || 'Not provided'}
149
110
 
150
- ### Problem
151
- ${answers['prp-3'] || 'Not provided'}
111
+ ### Problem & Primary Action
112
+ ${answers['prp-2'] || 'Not provided'}
152
113
 
153
114
  ### Success Criteria
154
- ${answers['prp-4'] || 'Not provided'}
115
+ ${answers['prp-3'] || 'Not provided'}
155
116
 
156
117
  ---
157
118
 
158
119
  ## Features & Requirements
159
120
 
160
121
  ### All Features with Priorities
161
- ${answers['bal-27'] || 'Not provided'}
122
+ ${answers['bal-14'] || 'Not provided'}
162
123
 
163
- ### Feature Behaviors
164
- ${answers['bal-28'] || 'Not provided'}
124
+ ### Feature Behaviors & User Workflow
125
+ ${answers['bal-15'] || 'Not provided'}
165
126
 
166
127
  ### Out of Scope
167
- ${answers['bal-29'] || 'Not provided'}
168
-
169
- ### Integration Requirements
170
- ${answers['bal-30'] || 'Not provided'}
128
+ ${answers['bal-16'] || 'Not provided'}
171
129
 
172
- ### User Workflow
173
- ${answers['bal-31'] || 'Not provided'}
174
-
175
- ### Edge Cases
176
- ${answers['bal-32'] || 'Not provided'}
130
+ ### Integration Requirements & Third-Party Services
131
+ ${answers['bal-17'] || 'Not provided'}
177
132
 
178
133
  ### UI/UX Specifications
179
- ${answers['bal-33'] || 'Not provided'}
180
-
181
- ### Assumptions
182
- ${answers['bal-34'] || 'Not provided'}
183
-
184
- ### Open Questions
185
- ${answers['bal-35'] || 'Not provided'}
134
+ ${answers['bal-18'] || 'Not provided'}
186
135
 
187
136
  ---
188
137
 
189
138
  ## Technical Context
190
139
 
191
- ### Technology Stack
192
- ${answers['prp-8'] || 'Not provided'}
193
-
194
- ### Files & Directories
195
- ${answers['prp-9'] || 'Not provided'}
196
-
197
- ### Dependencies
198
- ${answers['prp-10'] || 'Not provided'}
199
-
200
- ### Code Patterns
201
- ${answers['prp-11'] || 'Not provided'}
140
+ ### Technology Stack & Libraries
141
+ ${answers['prp-5'] || 'Not provided'}
202
142
 
203
- ### Documentation
204
- ${answers['prp-12'] || 'Not provided'}
143
+ ### Patterns, Conventions & Documentation
144
+ ${answers['prp-6'] || 'Not provided'}
205
145
  `;
206
146
 
207
147
  // Technical Plan
@@ -213,48 +153,30 @@ ${answers['prp-12'] || 'Not provided'}
213
153
 
214
154
  ## Architecture
215
155
 
216
- ### Technology Choice Justification
217
- ${answers['bal-36'] || 'Not provided'}
218
-
219
156
  ### Architectural Pattern
220
- ${answers['bal-37'] || 'Not provided'}
221
-
222
- ### Database Design
223
- ${answers['bal-38'] || 'Not provided'}
224
-
225
- ### API Design
226
- ${answers['bal-39'] || 'Not provided'}
157
+ ${answers['bal-19'] || 'Not provided'}
227
158
 
228
159
  ### Authentication/Authorization
229
- ${answers['bal-40'] || 'Not provided'}
230
-
231
- ### Third-Party Services
232
- ${answers['bal-41'] || 'Not provided'}
160
+ ${answers['bal-20'] || 'Not provided'}
233
161
 
234
- ### Deployment Architecture
235
- ${answers['bal-42'] || 'Not provided'}
162
+ ### Deployment Architecture & CI/CD
163
+ ${answers['bal-21'] || 'Not provided'}
236
164
 
237
- ### Performance Strategy
238
- ${answers['bal-43'] || 'Not provided'}
165
+ ### Performance & Caching Strategy
166
+ ${answers['bal-22'] || 'Not provided'}
239
167
 
240
168
  ---
241
169
 
242
170
  ## Implementation Details
243
171
 
244
172
  ### Steps
245
- ${answers['prp-13'] || 'Not provided'}
246
-
247
- ### Data Model
248
- ${answers['prp-14'] || 'Not provided'}
249
-
250
- ### API Endpoints
251
- ${answers['prp-15'] || 'Not provided'}
173
+ ${answers['prp-7'] || 'Not provided'}
252
174
 
253
- ### Error Handling
254
- ${answers['prp-16'] || 'Not provided'}
175
+ ### Data Model & API Design
176
+ ${answers['prp-8'] || 'Not provided'}
255
177
 
256
- ### Technical Approach
257
- ${answers['prp-17'] || 'Not provided'}
178
+ ### Edge Cases & Error Handling
179
+ ${answers['prp-9'] || 'Not provided'}
258
180
  `;
259
181
 
260
182
  // Tasks
@@ -267,35 +189,20 @@ ${answers['prp-17'] || 'Not provided'}
267
189
  ## Task Breakdown
268
190
 
269
191
  ### All Tasks (Dependency Order)
270
- ${answers['bal-44'] || 'Not provided'}
271
-
272
- ### Critical Path
273
- ${answers['bal-45'] || 'Not provided'}
274
-
275
- ### Parallel Tasks
276
- ${answers['bal-46'] || 'Not provided'}
277
-
278
- ### Milestones
279
- ${answers['bal-47'] || 'Not provided'}
280
-
281
- ### Testing Strategy
282
- ${answers['bal-48'] || 'Not provided'}
192
+ ${answers['bal-23'] || 'Not provided'}
283
193
 
284
- ### Effort Estimates
285
- ${answers['bal-49'] || 'Not provided'}
194
+ ### Key Milestones & Critical Path
195
+ ${answers['bal-24'] || 'Not provided'}
286
196
 
287
197
  ---
288
198
 
289
199
  ## Validation
290
200
 
291
- ### Manual Testing
292
- ${answers['prp-18'] || 'Not provided'}
293
-
294
- ### Automated Tests
295
- ${answers['prp-19'] || 'Not provided'}
201
+ ### Testing Strategy & Definition of Done
202
+ ${answers['prp-10'] || 'Not provided'}
296
203
 
297
204
  ### Project Definition of Done
298
- ${answers['bal-50'] || 'Not provided'}
205
+ ${answers['bal-25'] || 'Not provided'}
299
206
  `;
300
207
 
301
208
  await fs.writeFile(path.join(outputPath, 'constitution.md'), constitution, 'utf-8');
@@ -207,6 +207,22 @@ class ProgressTracker {
207
207
  await this.appendToLog(`\n---\n\n## Session Completed\n**Finished:** ${this.progress.completedAt}\n**Total Questions Answered:** ${this.progress.totalQuestionsAnswered}\n`);
208
208
  }
209
209
 
210
+ async reopen() {
211
+ this.progress.status = 'in-progress';
212
+ this.progress.canResume = true;
213
+ this.progress.completedAt = null;
214
+
215
+ // Reset block-tracking counters to avoid duplicates when interviewer
216
+ // replays blocks (it pushes to completedBlocks and increments cumulatively)
217
+ this.progress.completedBlocks = [];
218
+ this.progress.skippedBlocks = [];
219
+ this.progress.totalQuestionsAnswered = 0;
220
+ this.progress.currentBlock = 0;
221
+
222
+ await this.save();
223
+ await this.appendToLog(`\n---\n\n## Session Reopened\n**Reopened:** ${new Date().toISOString()}\n`);
224
+ }
225
+
210
226
  async save() {
211
227
  await fs.writeJson(this.progressFile, this.progress, { spaces: 2 });
212
228
  }