gsd-pi 2.35.0-dev.cd3b7ea → 2.36.0-dev.d612764

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 (194) hide show
  1. package/README.md +3 -1
  2. package/dist/cli.js +7 -2
  3. package/dist/resource-loader.d.ts +1 -1
  4. package/dist/resource-loader.js +13 -1
  5. package/dist/resources/extensions/async-jobs/await-tool.js +0 -2
  6. package/dist/resources/extensions/async-jobs/job-manager.js +0 -6
  7. package/dist/resources/extensions/bg-shell/output-formatter.js +1 -19
  8. package/dist/resources/extensions/bg-shell/process-manager.js +0 -4
  9. package/dist/resources/extensions/bg-shell/types.js +0 -2
  10. package/dist/resources/extensions/cmux/index.js +321 -0
  11. package/dist/resources/extensions/context7/index.js +5 -0
  12. package/dist/resources/extensions/get-secrets-from-user.js +2 -30
  13. package/dist/resources/extensions/google-search/index.js +5 -0
  14. package/dist/resources/extensions/gsd/auto-dashboard.js +334 -104
  15. package/dist/resources/extensions/gsd/auto-dispatch.js +43 -1
  16. package/dist/resources/extensions/gsd/auto-loop.js +28 -3
  17. package/dist/resources/extensions/gsd/auto-model-selection.js +15 -3
  18. package/dist/resources/extensions/gsd/auto-recovery.js +35 -0
  19. package/dist/resources/extensions/gsd/auto-start.js +35 -2
  20. package/dist/resources/extensions/gsd/auto.js +75 -4
  21. package/dist/resources/extensions/gsd/commands-cmux.js +120 -0
  22. package/dist/resources/extensions/gsd/commands-handlers.js +2 -2
  23. package/dist/resources/extensions/gsd/commands-inspect.js +10 -3
  24. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
  25. package/dist/resources/extensions/gsd/commands-rate.js +31 -0
  26. package/dist/resources/extensions/gsd/commands.js +94 -2
  27. package/dist/resources/extensions/gsd/docs/preferences-reference.md +25 -0
  28. package/dist/resources/extensions/gsd/doctor-environment.js +26 -17
  29. package/dist/resources/extensions/gsd/files.js +11 -2
  30. package/dist/resources/extensions/gsd/gitignore.js +54 -7
  31. package/dist/resources/extensions/gsd/guided-flow.js +8 -2
  32. package/dist/resources/extensions/gsd/health-widget-core.js +96 -0
  33. package/dist/resources/extensions/gsd/health-widget.js +97 -46
  34. package/dist/resources/extensions/gsd/index.js +31 -33
  35. package/dist/resources/extensions/gsd/migrate-external.js +55 -2
  36. package/dist/resources/extensions/gsd/milestone-ids.js +3 -2
  37. package/dist/resources/extensions/gsd/notifications.js +10 -1
  38. package/dist/resources/extensions/gsd/paths.js +74 -7
  39. package/dist/resources/extensions/gsd/post-unit-hooks.js +4 -1
  40. package/dist/resources/extensions/gsd/preferences-types.js +2 -0
  41. package/dist/resources/extensions/gsd/preferences-validation.js +45 -1
  42. package/dist/resources/extensions/gsd/preferences.js +15 -0
  43. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  44. package/dist/resources/extensions/gsd/prompts/research-milestone.md +4 -3
  45. package/dist/resources/extensions/gsd/prompts/research-slice.md +3 -2
  46. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  47. package/dist/resources/extensions/gsd/roadmap-mutations.js +55 -0
  48. package/dist/resources/extensions/gsd/session-lock.js +53 -2
  49. package/dist/resources/extensions/gsd/state.js +2 -1
  50. package/dist/resources/extensions/gsd/templates/plan.md +8 -0
  51. package/dist/resources/extensions/gsd/templates/preferences.md +6 -0
  52. package/dist/resources/extensions/gsd/worktree-resolver.js +12 -0
  53. package/dist/resources/extensions/remote-questions/remote-command.js +2 -22
  54. package/dist/resources/extensions/search-the-web/native-search.js +45 -4
  55. package/dist/resources/extensions/shared/mod.js +1 -1
  56. package/dist/resources/extensions/shared/sanitize.js +30 -0
  57. package/dist/resources/extensions/shared/terminal.js +5 -0
  58. package/dist/resources/extensions/subagent/index.js +186 -74
  59. package/dist/resources/skills/core-web-vitals/SKILL.md +1 -1
  60. package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +1 -1
  61. package/dist/resources/skills/github-workflows/SKILL.md +0 -2
  62. package/dist/resources/skills/web-quality-audit/SKILL.md +0 -2
  63. package/package.json +2 -1
  64. package/packages/pi-agent-core/dist/agent.d.ts +10 -2
  65. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  66. package/packages/pi-agent-core/dist/agent.js +19 -8
  67. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  68. package/packages/pi-agent-core/src/agent.ts +31 -10
  69. package/packages/pi-ai/dist/providers/openai-responses.js +1 -1
  70. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  71. package/packages/pi-ai/src/providers/openai-responses.ts +1 -1
  72. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  73. package/packages/pi-coding-agent/dist/core/agent-session.js +20 -4
  74. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  75. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  76. package/packages/pi-coding-agent/dist/core/resource-loader.js +13 -2
  77. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  78. package/packages/pi-coding-agent/package.json +1 -1
  79. package/packages/pi-coding-agent/src/core/agent-session.ts +36 -12
  80. package/packages/pi-coding-agent/src/core/resource-loader.ts +13 -2
  81. package/packages/pi-tui/dist/terminal-image.d.ts.map +1 -1
  82. package/packages/pi-tui/dist/terminal-image.js +4 -0
  83. package/packages/pi-tui/dist/terminal-image.js.map +1 -1
  84. package/packages/pi-tui/src/terminal-image.ts +5 -0
  85. package/pkg/package.json +1 -1
  86. package/src/resources/extensions/async-jobs/await-tool.ts +0 -2
  87. package/src/resources/extensions/async-jobs/job-manager.ts +0 -7
  88. package/src/resources/extensions/bg-shell/output-formatter.ts +0 -17
  89. package/src/resources/extensions/bg-shell/process-manager.ts +0 -4
  90. package/src/resources/extensions/bg-shell/types.ts +0 -12
  91. package/src/resources/extensions/cmux/index.ts +384 -0
  92. package/src/resources/extensions/context7/index.ts +7 -0
  93. package/src/resources/extensions/get-secrets-from-user.ts +2 -35
  94. package/src/resources/extensions/google-search/index.ts +7 -0
  95. package/src/resources/extensions/gsd/auto-dashboard.ts +363 -116
  96. package/src/resources/extensions/gsd/auto-dispatch.ts +49 -1
  97. package/src/resources/extensions/gsd/auto-loop.ts +64 -2
  98. package/src/resources/extensions/gsd/auto-model-selection.ts +23 -2
  99. package/src/resources/extensions/gsd/auto-recovery.ts +39 -0
  100. package/src/resources/extensions/gsd/auto-start.ts +42 -2
  101. package/src/resources/extensions/gsd/auto.ts +82 -3
  102. package/src/resources/extensions/gsd/commands-cmux.ts +143 -0
  103. package/src/resources/extensions/gsd/commands-handlers.ts +2 -2
  104. package/src/resources/extensions/gsd/commands-inspect.ts +10 -3
  105. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
  106. package/src/resources/extensions/gsd/commands-rate.ts +55 -0
  107. package/src/resources/extensions/gsd/commands.ts +97 -2
  108. package/src/resources/extensions/gsd/docs/preferences-reference.md +25 -0
  109. package/src/resources/extensions/gsd/doctor-environment.ts +26 -16
  110. package/src/resources/extensions/gsd/files.ts +12 -2
  111. package/src/resources/extensions/gsd/gitignore.ts +54 -7
  112. package/src/resources/extensions/gsd/guided-flow.ts +8 -2
  113. package/src/resources/extensions/gsd/health-widget-core.ts +129 -0
  114. package/src/resources/extensions/gsd/health-widget.ts +103 -59
  115. package/src/resources/extensions/gsd/index.ts +37 -32
  116. package/src/resources/extensions/gsd/migrate-external.ts +47 -2
  117. package/src/resources/extensions/gsd/milestone-ids.ts +3 -2
  118. package/src/resources/extensions/gsd/notifications.ts +10 -1
  119. package/src/resources/extensions/gsd/paths.ts +73 -7
  120. package/src/resources/extensions/gsd/post-unit-hooks.ts +5 -1
  121. package/src/resources/extensions/gsd/preferences-types.ts +13 -0
  122. package/src/resources/extensions/gsd/preferences-validation.ts +42 -1
  123. package/src/resources/extensions/gsd/preferences.ts +18 -1
  124. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  125. package/src/resources/extensions/gsd/prompts/research-milestone.md +4 -3
  126. package/src/resources/extensions/gsd/prompts/research-slice.md +3 -2
  127. package/src/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  128. package/src/resources/extensions/gsd/roadmap-mutations.ts +66 -0
  129. package/src/resources/extensions/gsd/session-lock.ts +59 -2
  130. package/src/resources/extensions/gsd/state.ts +2 -1
  131. package/src/resources/extensions/gsd/templates/plan.md +8 -0
  132. package/src/resources/extensions/gsd/templates/preferences.md +6 -0
  133. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +2 -0
  134. package/src/resources/extensions/gsd/tests/cmux.test.ts +98 -0
  135. package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +46 -0
  136. package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +20 -0
  137. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +214 -0
  138. package/src/resources/extensions/gsd/tests/health-widget.test.ts +158 -0
  139. package/src/resources/extensions/gsd/tests/paths.test.ts +113 -0
  140. package/src/resources/extensions/gsd/tests/preferences.test.ts +35 -2
  141. package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +26 -0
  142. package/src/resources/extensions/gsd/tests/test-utils.ts +165 -0
  143. package/src/resources/extensions/gsd/tests/validate-directory.test.ts +15 -0
  144. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +7 -0
  145. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +32 -0
  146. package/src/resources/extensions/gsd/worktree-resolver.ts +11 -0
  147. package/src/resources/extensions/remote-questions/remote-command.ts +2 -23
  148. package/src/resources/extensions/search-the-web/native-search.ts +50 -4
  149. package/src/resources/extensions/shared/mod.ts +1 -1
  150. package/src/resources/extensions/shared/sanitize.ts +36 -0
  151. package/src/resources/extensions/shared/terminal.ts +5 -0
  152. package/src/resources/extensions/subagent/index.ts +242 -91
  153. package/src/resources/skills/core-web-vitals/SKILL.md +1 -1
  154. package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +1 -1
  155. package/src/resources/skills/github-workflows/SKILL.md +0 -2
  156. package/src/resources/skills/web-quality-audit/SKILL.md +0 -2
  157. package/dist/resources/extensions/shared/wizard-ui.js +0 -478
  158. package/dist/resources/skills/swiftui/SKILL.md +0 -208
  159. package/dist/resources/skills/swiftui/references/animations.md +0 -921
  160. package/dist/resources/skills/swiftui/references/architecture.md +0 -1561
  161. package/dist/resources/skills/swiftui/references/layout-system.md +0 -1186
  162. package/dist/resources/skills/swiftui/references/navigation.md +0 -1492
  163. package/dist/resources/skills/swiftui/references/networking-async.md +0 -214
  164. package/dist/resources/skills/swiftui/references/performance.md +0 -1706
  165. package/dist/resources/skills/swiftui/references/platform-integration.md +0 -204
  166. package/dist/resources/skills/swiftui/references/state-management.md +0 -1443
  167. package/dist/resources/skills/swiftui/references/swiftdata.md +0 -297
  168. package/dist/resources/skills/swiftui/references/testing-debugging.md +0 -247
  169. package/dist/resources/skills/swiftui/references/uikit-appkit-interop.md +0 -218
  170. package/dist/resources/skills/swiftui/workflows/add-feature.md +0 -191
  171. package/dist/resources/skills/swiftui/workflows/build-new-app.md +0 -311
  172. package/dist/resources/skills/swiftui/workflows/debug-swiftui.md +0 -192
  173. package/dist/resources/skills/swiftui/workflows/optimize-performance.md +0 -197
  174. package/dist/resources/skills/swiftui/workflows/ship-app.md +0 -203
  175. package/dist/resources/skills/swiftui/workflows/write-tests.md +0 -235
  176. package/src/resources/extensions/shared/wizard-ui.ts +0 -551
  177. package/src/resources/skills/swiftui/SKILL.md +0 -208
  178. package/src/resources/skills/swiftui/references/animations.md +0 -921
  179. package/src/resources/skills/swiftui/references/architecture.md +0 -1561
  180. package/src/resources/skills/swiftui/references/layout-system.md +0 -1186
  181. package/src/resources/skills/swiftui/references/navigation.md +0 -1492
  182. package/src/resources/skills/swiftui/references/networking-async.md +0 -214
  183. package/src/resources/skills/swiftui/references/performance.md +0 -1706
  184. package/src/resources/skills/swiftui/references/platform-integration.md +0 -204
  185. package/src/resources/skills/swiftui/references/state-management.md +0 -1443
  186. package/src/resources/skills/swiftui/references/swiftdata.md +0 -297
  187. package/src/resources/skills/swiftui/references/testing-debugging.md +0 -247
  188. package/src/resources/skills/swiftui/references/uikit-appkit-interop.md +0 -218
  189. package/src/resources/skills/swiftui/workflows/add-feature.md +0 -191
  190. package/src/resources/skills/swiftui/workflows/build-new-app.md +0 -311
  191. package/src/resources/skills/swiftui/workflows/debug-swiftui.md +0 -192
  192. package/src/resources/skills/swiftui/workflows/optimize-performance.md +0 -197
  193. package/src/resources/skills/swiftui/workflows/ship-app.md +0 -203
  194. package/src/resources/skills/swiftui/workflows/write-tests.md +0 -235
@@ -1,235 +0,0 @@
1
- <required_reading>
2
- **Read these reference files NOW before starting:**
3
- 1. `../macos-apps/references/cli-workflow.md` - Test commands from CLI
4
- 2. `../macos-apps/references/testing-tdd.md` - TDD patterns, avoiding @main hangs
5
- 3. `references/testing-debugging.md` - SwiftUI-specific testing and debugging
6
- </required_reading>
7
-
8
- <process>
9
- ## Step 1: Identify Testing Scope
10
-
11
- **Test business logic in view models, not views:**
12
- ```swift
13
- // Testable view model
14
- @Observable
15
- final class LoginViewModel {
16
- var email = ""
17
- var password = ""
18
- var isLoading = false
19
-
20
- var isValidInput: Bool {
21
- !email.isEmpty && password.count >= 8
22
- }
23
- }
24
-
25
- // View is just presentation
26
- struct LoginView: View {
27
- let viewModel: LoginViewModel
28
- var body: some View {
29
- Form {
30
- TextField("Email", text: $viewModel.email)
31
- Button("Login") { }
32
- .disabled(!viewModel.isValidInput)
33
- }
34
- }
35
- }
36
- ```
37
-
38
- ## Step 2: Write Unit Tests
39
-
40
- **Using Swift Testing (@Test):**
41
- ```swift
42
- import Testing
43
- @testable import MyApp
44
-
45
- @Test("Email validation")
46
- func emailValidation() {
47
- let viewModel = LoginViewModel()
48
-
49
- viewModel.email = ""
50
- viewModel.password = "password123"
51
- #expect(!viewModel.isValidInput)
52
-
53
- viewModel.email = "user@example.com"
54
- #expect(viewModel.isValidInput)
55
- }
56
-
57
- @Test("Async loading")
58
- func asyncLoading() async {
59
- let mockService = MockService()
60
- let viewModel = TaskViewModel(service: mockService)
61
-
62
- await viewModel.load()
63
-
64
- #expect(!viewModel.tasks.isEmpty)
65
- }
66
- ```
67
-
68
- ## Step 3: Add Accessibility Identifiers
69
-
70
- ```swift
71
- TextField("Email", text: $email)
72
- .accessibilityIdentifier("emailField")
73
-
74
- SecureField("Password", text: $password)
75
- .accessibilityIdentifier("passwordField")
76
-
77
- Button("Login") { }
78
- .accessibilityIdentifier("loginButton")
79
- ```
80
-
81
- ## Step 4: Write UI Tests
82
-
83
- ```swift
84
- import XCTest
85
-
86
- final class LoginUITests: XCTestCase {
87
- var app: XCUIApplication!
88
-
89
- override func setUp() {
90
- continueAfterFailure = false
91
- app = XCUIApplication()
92
- app.launch()
93
- }
94
-
95
- func testLoginFlow() {
96
- let emailField = app.textFields["emailField"]
97
- let passwordField = app.secureTextFields["passwordField"]
98
- let loginButton = app.buttons["loginButton"]
99
-
100
- XCTAssertTrue(emailField.waitForExistence(timeout: 5))
101
-
102
- emailField.tap()
103
- emailField.typeText("user@example.com")
104
-
105
- passwordField.tap()
106
- passwordField.typeText("password123")
107
-
108
- XCTAssertTrue(loginButton.isEnabled)
109
- loginButton.tap()
110
-
111
- let welcomeText = app.staticTexts["welcomeMessage"]
112
- XCTAssertTrue(welcomeText.waitForExistence(timeout: 5))
113
- }
114
- }
115
- ```
116
-
117
- ## Step 5: Create Previews for Visual Testing
118
-
119
- ```swift
120
- #Preview("Empty") { LoginView(viewModel: LoginViewModel()) }
121
-
122
- #Preview("Filled") {
123
- let viewModel = LoginViewModel()
124
- viewModel.email = "user@example.com"
125
- viewModel.password = "password123"
126
- return LoginView(viewModel: viewModel)
127
- }
128
-
129
- #Preview("Error") {
130
- let viewModel = LoginViewModel()
131
- viewModel.errorMessage = "Invalid credentials"
132
- return LoginView(viewModel: viewModel)
133
- }
134
-
135
- #Preview("Dark Mode") {
136
- LoginView(viewModel: LoginViewModel())
137
- .preferredColorScheme(.dark)
138
- }
139
- ```
140
-
141
- ## Step 6: Run Tests from CLI
142
-
143
- ```bash
144
- # Run all tests with parsed output
145
- xcodebuild test -scheme AppName -destination 'platform=iOS Simulator,name=iPhone 15 Pro' 2>&1 | xcsift
146
-
147
- # Run only unit tests
148
- xcodebuild test -scheme AppName -only-testing:AppNameTests 2>&1 | xcsift
149
-
150
- # Run only UI tests
151
- xcodebuild test -scheme AppName -only-testing:AppNameUITests 2>&1 | xcsift
152
-
153
- # Run specific test class
154
- xcodebuild test -scheme AppName -only-testing:AppNameTests/LoginViewModelTests 2>&1 | xcsift
155
-
156
- # Run specific test method
157
- xcodebuild test -scheme AppName -only-testing:AppNameTests/LoginViewModelTests/testEmailValidation 2>&1 | xcsift
158
-
159
- # Generate test coverage
160
- xcodebuild test -scheme AppName -enableCodeCoverage YES -resultBundlePath TestResults.xcresult 2>&1 | xcsift
161
- xcrun xccov view --report TestResults.xcresult
162
- ```
163
-
164
- **If tests hang:** The test target likely depends on the app target with `@main`. Extract testable code to a Core framework target. See `../macos-apps/references/testing-tdd.md`.
165
-
166
- Report to user:
167
- - "Tests: X pass, Y fail"
168
- - "Coverage: Z% of lines"
169
- - If failures: "Failed tests: [list]. Investigating..."
170
- </process>
171
-
172
- <anti_patterns>
173
- ## Avoid These Mistakes
174
-
175
- **Testing view bodies:**
176
- ```swift
177
- // Wrong: can't test views directly
178
- func testView() {
179
- let view = LoginView()
180
- // Can't inspect SwiftUI view
181
- }
182
-
183
- // Right: test view model
184
- @Test func emailInput() {
185
- let viewModel = LoginViewModel()
186
- viewModel.email = "test@example.com"
187
- #expect(viewModel.email == "test@example.com")
188
- }
189
- ```
190
-
191
- **Missing accessibility identifiers:**
192
- ```swift
193
- // Wrong: using text
194
- let button = app.buttons["Login"]
195
-
196
- // Right: stable identifier
197
- let button = app.buttons["loginButton"]
198
- ```
199
-
200
- **No dependency injection:**
201
- ```swift
202
- // Wrong: can't mock
203
- @Observable
204
- class ViewModel {
205
- private let service = RealService()
206
- }
207
-
208
- // Right: injectable
209
- @Observable
210
- class ViewModel {
211
- private let service: ServiceProtocol
212
- init(service: ServiceProtocol) {
213
- self.service = service
214
- }
215
- }
216
- ```
217
-
218
- **No edge case testing:**
219
- ```swift
220
- // Test empty, invalid, error states
221
- @Test func emptyEmail() { }
222
- @Test func shortPassword() { }
223
- @Test func networkError() { }
224
- ```
225
- </anti_patterns>
226
-
227
- <success_criteria>
228
- This workflow is complete when:
229
- - [ ] Unit tests verify view model business logic
230
- - [ ] UI tests verify user flows using accessibility identifiers
231
- - [ ] All tests pass: `xcodebuild test -scheme YourApp`
232
- - [ ] Edge cases and error states have coverage
233
- - [ ] Dependencies use protocols for testability
234
- - [ ] Previews exist for major UI states
235
- </success_criteria>