gsd-pi 2.52.0-dev.585e355 → 2.52.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.
Files changed (188) hide show
  1. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +3 -3
  2. package/dist/resources/extensions/gsd/docs/preferences-reference.md +2 -2
  3. package/dist/resources/extensions/gsd/git-service.js +3 -4
  4. package/dist/resources/extensions/gsd/markdown-renderer.js +4 -5
  5. package/dist/resources/extensions/gsd/preferences-types.js +1 -1
  6. package/dist/resources/extensions/gsd/state.js +18 -13
  7. package/dist/resources/extensions/gsd/tools/complete-milestone.js +3 -4
  8. package/dist/resources/extensions/gsd/tools/complete-slice.js +3 -4
  9. package/dist/resources/extensions/gsd/tools/complete-task.js +3 -4
  10. package/dist/resources/extensions/gsd/tools/plan-milestone.js +14 -4
  11. package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -4
  12. package/dist/resources/extensions/gsd/tools/plan-task.js +14 -4
  13. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +7 -6
  14. package/dist/resources/extensions/gsd/tools/reopen-slice.js +3 -4
  15. package/dist/resources/extensions/gsd/tools/reopen-task.js +4 -5
  16. package/dist/resources/extensions/gsd/tools/replan-slice.js +6 -5
  17. package/dist/resources/extensions/shared/rtk.js +3 -5
  18. package/dist/rtk.js +1 -3
  19. package/dist/web/standalone/.next/BUILD_ID +1 -1
  20. package/dist/web/standalone/.next/app-path-routes-manifest.json +19 -19
  21. package/dist/web/standalone/.next/build-manifest.json +3 -3
  22. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  23. package/dist/web/standalone/.next/required-server-files.json +3 -3
  24. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  25. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  26. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  27. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  29. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  33. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  35. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  37. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  38. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  39. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  40. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  41. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  43. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  45. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  46. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  47. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  48. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  49. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  50. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  51. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  52. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  53. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  54. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  55. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  56. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  57. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  58. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  59. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  60. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  61. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  62. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  63. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  64. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  65. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  67. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  68. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  70. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  71. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  72. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  73. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  74. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  75. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  76. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  77. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  79. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  80. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  82. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  85. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  88. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  90. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  91. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  94. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  97. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  109. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  111. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  113. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  115. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  117. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  121. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  126. package/dist/web/standalone/.next/server/app/index.html +1 -1
  127. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  128. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  129. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  130. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  131. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  132. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  133. package/dist/web/standalone/.next/server/app/page.js +2 -2
  134. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  135. package/dist/web/standalone/.next/server/app-paths-manifest.json +19 -19
  136. package/dist/web/standalone/.next/server/chunks/2229.js +1 -1
  137. package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
  138. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  139. package/dist/web/standalone/.next/server/middleware.js +2 -2
  140. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  141. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  142. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  143. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  144. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  145. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
  146. package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
  147. package/dist/web/standalone/.next/static/chunks/app/page-fbecd1237e2d6d1f.js +1 -0
  148. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
  149. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
  150. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  151. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  152. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  153. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  154. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  155. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  156. package/dist/web/standalone/server.js +1 -1
  157. package/package.json +1 -1
  158. package/scripts/ensure-workspace-builds.cjs +8 -36
  159. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +3 -3
  160. package/src/resources/extensions/gsd/docs/preferences-reference.md +2 -2
  161. package/src/resources/extensions/gsd/git-service.ts +3 -4
  162. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -5
  163. package/src/resources/extensions/gsd/preferences-types.ts +1 -1
  164. package/src/resources/extensions/gsd/state.ts +19 -13
  165. package/src/resources/extensions/gsd/tests/git-service.test.ts +3 -36
  166. package/src/resources/extensions/gsd/tests/preferences.test.ts +1 -1
  167. package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -4
  168. package/src/resources/extensions/gsd/tools/complete-slice.ts +3 -4
  169. package/src/resources/extensions/gsd/tools/complete-task.ts +3 -4
  170. package/src/resources/extensions/gsd/tools/plan-milestone.ts +16 -4
  171. package/src/resources/extensions/gsd/tools/plan-slice.ts +16 -4
  172. package/src/resources/extensions/gsd/tools/plan-task.ts +16 -4
  173. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +7 -6
  174. package/src/resources/extensions/gsd/tools/reopen-slice.ts +3 -4
  175. package/src/resources/extensions/gsd/tools/reopen-task.ts +4 -5
  176. package/src/resources/extensions/gsd/tools/replan-slice.ts +7 -5
  177. package/src/resources/extensions/shared/rtk.ts +3 -12
  178. package/dist/resources/extensions/gsd/status-guards.js +0 -12
  179. package/dist/resources/extensions/gsd/validation.js +0 -21
  180. package/dist/web/standalone/.next/static/chunks/app/page-b950e4e384cc62b3.js +0 -1
  181. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
  182. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
  183. package/src/resources/extensions/gsd/status-guards.ts +0 -13
  184. package/src/resources/extensions/gsd/tests/status-guards.test.ts +0 -30
  185. package/src/resources/extensions/gsd/tests/validation.test.ts +0 -72
  186. package/src/resources/extensions/gsd/validation.ts +0 -23
  187. /package/dist/web/standalone/.next/static/{KTe1kB5nPLQFIIFz2OcmI → vlgS2rkXjxeKhgXhdp4lh}/_buildManifest.js +0 -0
  188. /package/dist/web/standalone/.next/static/{KTe1kB5nPLQFIIFz2OcmI → vlgS2rkXjxeKhgXhdp4lh}/_ssgManifest.js +0 -0
@@ -96,23 +96,14 @@ export function resolveRtkBinaryPath(options: ResolveRtkBinaryPathOptions = {}):
96
96
  return resolveSystemRtkPath(options.pathValue ?? getPathValue(env), platform);
97
97
  }
98
98
 
99
- interface RewriteCommandOptions {
100
- binaryPath?: string;
101
- env?: NodeJS.ProcessEnv;
102
- spawnSyncImpl?: typeof spawnSync;
103
- }
104
-
105
- export function rewriteCommandWithRtk(command: string, options: RewriteCommandOptions = {}): string {
106
- const env = options.env ?? process.env;
107
-
99
+ export function rewriteCommandWithRtk(command: string, env: NodeJS.ProcessEnv = process.env): string {
108
100
  if (!command.trim()) return command;
109
101
  if (!isRtkEnabled(env)) return command;
110
102
 
111
- const binaryPath = options.binaryPath ?? resolveRtkBinaryPath({ env });
103
+ const binaryPath = resolveRtkBinaryPath({ env });
112
104
  if (!binaryPath) return command;
113
105
 
114
- const run = options.spawnSyncImpl ?? spawnSync;
115
- const result = run(binaryPath, ["rewrite", command], {
106
+ const result = spawnSync(binaryPath, ["rewrite", command], {
116
107
  encoding: "utf-8",
117
108
  env: buildRtkEnv(env),
118
109
  stdio: ["ignore", "pipe", "ignore"],
@@ -1,12 +0,0 @@
1
- /**
2
- * Status predicates for GSD state-machine guards.
3
- *
4
- * The DB stores status as free-form strings. Two values indicate
5
- * "closed": "complete" (canonical) and "done" (legacy / alias).
6
- * Every inline `status === "complete" || status === "done"` should
7
- * use isClosedStatus() instead.
8
- */
9
- /** Returns true when a milestone, slice, or task status indicates closure. */
10
- export function isClosedStatus(status) {
11
- return status === "complete" || status === "done";
12
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Shared input-validation primitives for GSD tool handlers.
3
- */
4
- /** Type guard: value is a string with at least one non-whitespace character. */
5
- export function isNonEmptyString(value) {
6
- return typeof value === "string" && value.trim().length > 0;
7
- }
8
- /**
9
- * Validate that `value` is an array of non-empty strings.
10
- * Throws with a message referencing `field` on failure.
11
- * Returns the validated array (narrowed to string[]).
12
- */
13
- export function validateStringArray(value, field) {
14
- if (!Array.isArray(value)) {
15
- throw new Error(`${field} must be an array`);
16
- }
17
- if (value.some((item) => !isNonEmptyString(item))) {
18
- throw new Error(`${field} must contain only non-empty strings`);
19
- }
20
- return value;
21
- }
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{2600:(e,t,n)=>{Promise.resolve().then(n.bind(n,66919))},5214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=n(17828)},17828:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,n(64054).createAsyncLocalStorage)()},21957:(e,t,n)=>{"use strict";function r({moduleIds:e}){return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),n(95155),n(47650),n(5214),n(2451),n(53887)},37206:(e,t,n)=>{"use strict";n.d(t,{default:()=>u.a});var r=n(75707),u=n.n(r)},41112:(e,t,n)=>{"use strict";function r({reason:e,children:t}){return t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),n(1980)},64054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return i}};for(var r in n)Object.defineProperty(t,r,{enumerable:!0,get:n[r]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class l{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let o="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return o?new o:new l}function s(e){return o?o.bind(e):l.bind(e)}function i(){return o?o.snapshot():function(e,...t){return e(...t)}}},66919:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(95155);let u=(0,n(37206).default)(()=>Promise.all([n.e(1838),n.e(6079),n.e(4986),n.e(2008),n.e(4024)]).then(n.bind(n,4024)).then(e=>e.GSDAppShell),{loadableGenerated:{webpack:()=>[4024]},ssr:!1,loading:()=>(0,r.jsx)("div",{className:"flex h-screen items-center justify-center bg-background text-sm text-muted-foreground",children:"Loading workspace…"})});function l(){return(0,r.jsx)(u,{})}},68635:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let r=n(95155),u=n(12115),l=n(41112);function o(e){return{default:e&&"default"in e?e.default:e}}n(21957);let a={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},s=function(e){let t={...a,...e},n=(0,u.lazy)(()=>t.loader().then(o)),s=t.loading;function i(e){let o=s?(0,r.jsx)(s,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,i=a?u.Suspense:u.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:[null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(i,{...a?{fallback:o}:{},children:c})}return i.displayName="LoadableComponent",i}},75707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let r=n(73623)._(n(68635));function u(e,t){let n={};"function"==typeof e&&(n.loader=e);let u={...n,...t};return(0,r.default)({...u,modules:u.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=2600)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7358],{19393:()=>{},55548:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,27123,23)),Promise.resolve().then(n.t.bind(n,61304,23)),Promise.resolve().then(n.t.bind(n,78616,23)),Promise.resolve().then(n.t.bind(n,64777,23)),Promise.resolve().then(n.t.bind(n,57121,23)),Promise.resolve().then(n.t.bind(n,74581,23)),Promise.resolve().then(n.t.bind(n,90484,23)),Promise.resolve().then(n.bind(n,86869))}},e=>{var s=s=>e(e.s=s);e.O(0,[8441,3794],()=>(s(83861),s(55548))),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9337],{43946:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,27123,23))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=43946)),_N_E=e.O()}]);
@@ -1,13 +0,0 @@
1
- /**
2
- * Status predicates for GSD state-machine guards.
3
- *
4
- * The DB stores status as free-form strings. Two values indicate
5
- * "closed": "complete" (canonical) and "done" (legacy / alias).
6
- * Every inline `status === "complete" || status === "done"` should
7
- * use isClosedStatus() instead.
8
- */
9
-
10
- /** Returns true when a milestone, slice, or task status indicates closure. */
11
- export function isClosedStatus(status: string): boolean {
12
- return status === "complete" || status === "done";
13
- }
@@ -1,30 +0,0 @@
1
- // GSD — status-guards unit tests
2
-
3
- import test from 'node:test';
4
- import assert from 'node:assert/strict';
5
-
6
- import { isClosedStatus } from '../status-guards.ts';
7
-
8
- test('isClosedStatus: "complete" returns true', () => {
9
- assert.equal(isClosedStatus('complete'), true);
10
- });
11
-
12
- test('isClosedStatus: "done" returns true', () => {
13
- assert.equal(isClosedStatus('done'), true);
14
- });
15
-
16
- test('isClosedStatus: "pending" returns false', () => {
17
- assert.equal(isClosedStatus('pending'), false);
18
- });
19
-
20
- test('isClosedStatus: "in_progress" returns false', () => {
21
- assert.equal(isClosedStatus('in_progress'), false);
22
- });
23
-
24
- test('isClosedStatus: "active" returns false', () => {
25
- assert.equal(isClosedStatus('active'), false);
26
- });
27
-
28
- test('isClosedStatus: "" (empty string) returns false', () => {
29
- assert.equal(isClosedStatus(''), false);
30
- });
@@ -1,72 +0,0 @@
1
- // GSD — validation unit tests
2
-
3
- import test from 'node:test';
4
- import assert from 'node:assert/strict';
5
-
6
- import { isNonEmptyString, validateStringArray } from '../validation.ts';
7
-
8
- // ─── isNonEmptyString ────────────────────────────────────────────────────────
9
-
10
- test('isNonEmptyString: "hello" returns true', () => {
11
- assert.equal(isNonEmptyString('hello'), true);
12
- });
13
-
14
- test('isNonEmptyString: " " (whitespace only) returns false', () => {
15
- assert.equal(isNonEmptyString(' '), false);
16
- });
17
-
18
- test('isNonEmptyString: "" (empty string) returns false', () => {
19
- assert.equal(isNonEmptyString(''), false);
20
- });
21
-
22
- test('isNonEmptyString: null returns false', () => {
23
- assert.equal(isNonEmptyString(null), false);
24
- });
25
-
26
- test('isNonEmptyString: undefined returns false', () => {
27
- assert.equal(isNonEmptyString(undefined), false);
28
- });
29
-
30
- test('isNonEmptyString: 42 (number) returns false', () => {
31
- assert.equal(isNonEmptyString(42), false);
32
- });
33
-
34
- // ─── validateStringArray ─────────────────────────────────────────────────────
35
-
36
- test('validateStringArray: ["a", "b"] returns ["a", "b"]', () => {
37
- assert.deepEqual(validateStringArray(['a', 'b'], 'items'), ['a', 'b']);
38
- });
39
-
40
- test('validateStringArray: [] (empty array) returns []', () => {
41
- assert.deepEqual(validateStringArray([], 'items'), []);
42
- });
43
-
44
- test('validateStringArray: "not an array" throws with "must be an array"', () => {
45
- assert.throws(
46
- () => validateStringArray('not an array', 'items'),
47
- (err: Error) => {
48
- assert.ok(err.message.includes('must be an array'));
49
- return true;
50
- },
51
- );
52
- });
53
-
54
- test('validateStringArray: ["a", 42] throws with "must contain only non-empty strings"', () => {
55
- assert.throws(
56
- () => validateStringArray(['a', 42], 'items'),
57
- (err: Error) => {
58
- assert.ok(err.message.includes('must contain only non-empty strings'));
59
- return true;
60
- },
61
- );
62
- });
63
-
64
- test('validateStringArray: ["a", ""] throws with "must contain only non-empty strings"', () => {
65
- assert.throws(
66
- () => validateStringArray(['a', ''], 'items'),
67
- (err: Error) => {
68
- assert.ok(err.message.includes('must contain only non-empty strings'));
69
- return true;
70
- },
71
- );
72
- });
@@ -1,23 +0,0 @@
1
- /**
2
- * Shared input-validation primitives for GSD tool handlers.
3
- */
4
-
5
- /** Type guard: value is a string with at least one non-whitespace character. */
6
- export function isNonEmptyString(value: unknown): value is string {
7
- return typeof value === "string" && value.trim().length > 0;
8
- }
9
-
10
- /**
11
- * Validate that `value` is an array of non-empty strings.
12
- * Throws with a message referencing `field` on failure.
13
- * Returns the validated array (narrowed to string[]).
14
- */
15
- export function validateStringArray(value: unknown, field: string): string[] {
16
- if (!Array.isArray(value)) {
17
- throw new Error(`${field} must be an array`);
18
- }
19
- if (value.some((item) => !isNonEmptyString(item))) {
20
- throw new Error(`${field} must contain only non-empty strings`);
21
- }
22
- return value;
23
- }