@specforge/mcp 3.0.7 → 3.1.1

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 (196) hide show
  1. package/dist/autopilot/agents/agent-runner.d.ts.map +1 -1
  2. package/dist/autopilot/agents/agent-runner.js +7 -0
  3. package/dist/autopilot/agents/agent-runner.js.map +1 -1
  4. package/dist/autopilot/api/autopilot-api-client.d.ts +5 -4
  5. package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -1
  6. package/dist/autopilot/api/autopilot-api-client.js +21 -26
  7. package/dist/autopilot/api/autopilot-api-client.js.map +1 -1
  8. package/dist/autopilot/cli/run.d.ts.map +1 -1
  9. package/dist/autopilot/cli/run.js +28 -0
  10. package/dist/autopilot/cli/run.js.map +1 -1
  11. package/dist/autopilot/core/dependency-resolver.d.ts +10 -1
  12. package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -1
  13. package/dist/autopilot/core/dependency-resolver.js +27 -1
  14. package/dist/autopilot/core/dependency-resolver.js.map +1 -1
  15. package/dist/autopilot/core/dispatcher.d.ts +26 -0
  16. package/dist/autopilot/core/dispatcher.d.ts.map +1 -1
  17. package/dist/autopilot/core/dispatcher.js +116 -6
  18. package/dist/autopilot/core/dispatcher.js.map +1 -1
  19. package/dist/autopilot/readiness/aggregation.d.ts +56 -0
  20. package/dist/autopilot/readiness/aggregation.d.ts.map +1 -0
  21. package/dist/autopilot/readiness/aggregation.js +94 -0
  22. package/dist/autopilot/readiness/aggregation.js.map +1 -0
  23. package/dist/autopilot/readiness/config.d.ts +15 -0
  24. package/dist/autopilot/readiness/config.d.ts.map +1 -0
  25. package/dist/autopilot/readiness/config.js +76 -0
  26. package/dist/autopilot/readiness/config.js.map +1 -0
  27. package/dist/autopilot/readiness/index.d.ts +16 -0
  28. package/dist/autopilot/readiness/index.d.ts.map +1 -0
  29. package/dist/autopilot/readiness/index.js +11 -0
  30. package/dist/autopilot/readiness/index.js.map +1 -0
  31. package/dist/autopilot/readiness/post-scoring.d.ts +28 -0
  32. package/dist/autopilot/readiness/post-scoring.d.ts.map +1 -0
  33. package/dist/autopilot/readiness/post-scoring.js +41 -0
  34. package/dist/autopilot/readiness/post-scoring.js.map +1 -0
  35. package/dist/autopilot/readiness/preflight.d.ts +36 -0
  36. package/dist/autopilot/readiness/preflight.d.ts.map +1 -0
  37. package/dist/autopilot/readiness/preflight.js +93 -0
  38. package/dist/autopilot/readiness/preflight.js.map +1 -0
  39. package/dist/autopilot/readiness/prompt-section.d.ts +19 -0
  40. package/dist/autopilot/readiness/prompt-section.d.ts.map +1 -0
  41. package/dist/autopilot/readiness/prompt-section.js +33 -0
  42. package/dist/autopilot/readiness/prompt-section.js.map +1 -0
  43. package/dist/autopilot/readiness/types.d.ts +25 -0
  44. package/dist/autopilot/readiness/types.d.ts.map +1 -0
  45. package/dist/autopilot/readiness/types.js +8 -0
  46. package/dist/autopilot/readiness/types.js.map +1 -0
  47. package/dist/autopilot/sync/sync-manager.d.ts.map +1 -1
  48. package/dist/autopilot/sync/sync-manager.js +2 -1
  49. package/dist/autopilot/sync/sync-manager.js.map +1 -1
  50. package/dist/autopilot/types.d.ts +28 -0
  51. package/dist/autopilot/types.d.ts.map +1 -1
  52. package/dist/autopilot/types.js.map +1 -1
  53. package/dist/cli/commands/index.d.ts +5 -0
  54. package/dist/cli/commands/index.d.ts.map +1 -1
  55. package/dist/cli/commands/index.js +5 -0
  56. package/dist/cli/commands/index.js.map +1 -1
  57. package/dist/cli/commands/init.d.ts.map +1 -1
  58. package/dist/cli/commands/init.js +184 -2
  59. package/dist/cli/commands/init.js.map +1 -1
  60. package/dist/cli/commands/init.types.d.ts +37 -0
  61. package/dist/cli/commands/init.types.d.ts.map +1 -1
  62. package/dist/cli/commands/init.types.js +18 -0
  63. package/dist/cli/commands/init.types.js.map +1 -1
  64. package/dist/cli/commands/plan.d.ts +18 -0
  65. package/dist/cli/commands/plan.d.ts.map +1 -0
  66. package/dist/cli/commands/plan.js +154 -0
  67. package/dist/cli/commands/plan.js.map +1 -0
  68. package/dist/cli/commands/plan.types.d.ts +60 -0
  69. package/dist/cli/commands/plan.types.d.ts.map +1 -0
  70. package/dist/cli/commands/plan.types.js +8 -0
  71. package/dist/cli/commands/plan.types.js.map +1 -0
  72. package/dist/cli/commands/review-implementation.d.ts +16 -0
  73. package/dist/cli/commands/review-implementation.d.ts.map +1 -0
  74. package/dist/cli/commands/review-implementation.js +226 -0
  75. package/dist/cli/commands/review-implementation.js.map +1 -0
  76. package/dist/cli/commands/review-planning.d.ts +15 -0
  77. package/dist/cli/commands/review-planning.d.ts.map +1 -0
  78. package/dist/cli/commands/review-planning.js +177 -0
  79. package/dist/cli/commands/review-planning.js.map +1 -0
  80. package/dist/cli/commands/score/display.d.ts +20 -0
  81. package/dist/cli/commands/score/display.d.ts.map +1 -0
  82. package/dist/cli/commands/score/display.js +111 -0
  83. package/dist/cli/commands/score/display.js.map +1 -0
  84. package/dist/cli/commands/score/index.d.ts +9 -0
  85. package/dist/cli/commands/score/index.d.ts.map +1 -0
  86. package/dist/cli/commands/score/index.js +12 -0
  87. package/dist/cli/commands/score/index.js.map +1 -0
  88. package/dist/cli/commands/score/score.d.ts +17 -0
  89. package/dist/cli/commands/score/score.d.ts.map +1 -0
  90. package/dist/cli/commands/score/score.js +144 -0
  91. package/dist/cli/commands/score/score.js.map +1 -0
  92. package/dist/cli/commands/score/types.d.ts +79 -0
  93. package/dist/cli/commands/score/types.d.ts.map +1 -0
  94. package/dist/cli/commands/score/types.js +51 -0
  95. package/dist/cli/commands/score/types.js.map +1 -0
  96. package/dist/cli/commands/spec-activate.d.ts +29 -0
  97. package/dist/cli/commands/spec-activate.d.ts.map +1 -0
  98. package/dist/cli/commands/spec-activate.js +155 -0
  99. package/dist/cli/commands/spec-activate.js.map +1 -0
  100. package/dist/cli/commands/spec-activate.types.d.ts +24 -0
  101. package/dist/cli/commands/spec-activate.types.d.ts.map +1 -0
  102. package/dist/cli/commands/spec-activate.types.js +8 -0
  103. package/dist/cli/commands/spec-activate.types.js.map +1 -0
  104. package/dist/cli/commands/status.d.ts.map +1 -1
  105. package/dist/cli/commands/status.js +89 -1
  106. package/dist/cli/commands/status.js.map +1 -1
  107. package/dist/cli/commands/status.types.d.ts +2 -0
  108. package/dist/cli/commands/status.types.d.ts.map +1 -1
  109. package/dist/cli/commands/status.types.js.map +1 -1
  110. package/dist/cli/config/agent-teams.types.d.ts +194 -0
  111. package/dist/cli/config/agent-teams.types.d.ts.map +1 -0
  112. package/dist/cli/config/agent-teams.types.js +36 -0
  113. package/dist/cli/config/agent-teams.types.js.map +1 -0
  114. package/dist/cli/config/index.d.ts +2 -0
  115. package/dist/cli/config/index.d.ts.map +1 -1
  116. package/dist/cli/config/index.js +2 -0
  117. package/dist/cli/config/index.js.map +1 -1
  118. package/dist/cli/config/loader.d.ts +36 -2
  119. package/dist/cli/config/loader.d.ts.map +1 -1
  120. package/dist/cli/config/loader.js +65 -0
  121. package/dist/cli/config/loader.js.map +1 -1
  122. package/dist/cli/config/validation.d.ts +69 -0
  123. package/dist/cli/config/validation.d.ts.map +1 -0
  124. package/dist/cli/config/validation.js +295 -0
  125. package/dist/cli/config/validation.js.map +1 -0
  126. package/dist/cli/config/writer.d.ts +39 -0
  127. package/dist/cli/config/writer.d.ts.map +1 -1
  128. package/dist/cli/config/writer.js +58 -0
  129. package/dist/cli/config/writer.js.map +1 -1
  130. package/dist/cli/index.d.ts.map +1 -1
  131. package/dist/cli/index.js +10 -8
  132. package/dist/cli/index.js.map +1 -1
  133. package/dist/lib/index.d.ts +3 -0
  134. package/dist/lib/index.d.ts.map +1 -1
  135. package/dist/lib/index.js +3 -0
  136. package/dist/lib/index.js.map +1 -1
  137. package/dist/lib/monorepo-detector.d.ts +31 -0
  138. package/dist/lib/monorepo-detector.d.ts.map +1 -0
  139. package/dist/lib/monorepo-detector.js +271 -0
  140. package/dist/lib/monorepo-detector.js.map +1 -0
  141. package/dist/lib/prompt-generator.d.ts +65 -0
  142. package/dist/lib/prompt-generator.d.ts.map +1 -0
  143. package/dist/lib/prompt-generator.js +174 -0
  144. package/dist/lib/prompt-generator.js.map +1 -0
  145. package/dist/lib/strategy-analyzer.d.ts +59 -0
  146. package/dist/lib/strategy-analyzer.d.ts.map +1 -0
  147. package/dist/lib/strategy-analyzer.js +137 -0
  148. package/dist/lib/strategy-analyzer.js.map +1 -0
  149. package/dist/tools/core/context-helper.d.ts +22 -0
  150. package/dist/tools/core/context-helper.d.ts.map +1 -1
  151. package/dist/tools/core/context-helper.js +37 -1
  152. package/dist/tools/core/context-helper.js.map +1 -1
  153. package/dist/tools/core/workspace-files.d.ts +49 -0
  154. package/dist/tools/core/workspace-files.d.ts.map +1 -0
  155. package/dist/tools/core/workspace-files.js +259 -0
  156. package/dist/tools/core/workspace-files.js.map +1 -0
  157. package/dist/tools/index.d.ts.map +1 -1
  158. package/dist/tools/index.js +147 -0
  159. package/dist/tools/index.js.map +1 -1
  160. package/package.json +3 -2
  161. package/src/cli/templates/agents/content/core/sfag-implementer.ts +113 -0
  162. package/src/cli/templates/agents/content/core/sfag-orchestrator.ts +107 -0
  163. package/src/cli/templates/agents/content/core/sfag-spec-creator.ts +126 -0
  164. package/src/cli/templates/agents/content/core/sfag-ticket-implementer.ts +132 -0
  165. package/src/cli/templates/agents/content/research/sfag-package-researcher.ts +153 -0
  166. package/src/cli/templates/agents/content/task-type/sfag-api-implementer.ts +132 -0
  167. package/src/cli/templates/agents/content/task-type/sfag-docs-writer.ts +183 -0
  168. package/src/cli/templates/agents/content/task-type/sfag-frontend-builder.ts +141 -0
  169. package/src/cli/templates/agents/content/task-type/sfag-infra-architect.ts +149 -0
  170. package/src/cli/templates/agents/content/task-type/sfag-schema-designer.ts +132 -0
  171. package/src/cli/templates/agents/content/task-type/sfag-test-writer.ts +171 -0
  172. package/src/cli/templates/agents/index.ts +74 -0
  173. package/src/cli/templates/commands.ts +179 -0
  174. package/src/cli/templates/content/sf-autonomous.ts +78 -0
  175. package/src/cli/templates/content/sf-blockers.ts +68 -0
  176. package/src/cli/templates/content/sf-commit.ts +78 -0
  177. package/src/cli/templates/content/sf-context.ts +64 -0
  178. package/src/cli/templates/content/sf-create-epics.ts +129 -0
  179. package/src/cli/templates/content/sf-create-spec.ts +136 -0
  180. package/src/cli/templates/content/sf-create-tickets.ts +148 -0
  181. package/src/cli/templates/content/sf-epic.ts +69 -0
  182. package/src/cli/templates/content/sf-help.ts +61 -0
  183. package/src/cli/templates/content/sf-import.ts +88 -0
  184. package/src/cli/templates/content/sf-init.ts +61 -0
  185. package/src/cli/templates/content/sf-next.ts +67 -0
  186. package/src/cli/templates/content/sf-reset.ts +78 -0
  187. package/src/cli/templates/content/sf-review.ts +67 -0
  188. package/src/cli/templates/content/sf-search.ts +64 -0
  189. package/src/cli/templates/content/sf-status.ts +67 -0
  190. package/src/cli/templates/content/sf-ticket.ts +76 -0
  191. package/src/cli/templates/content/sf-validate.ts +78 -0
  192. package/src/cli/templates/index.ts +16 -0
  193. package/src/cli/templates/skills/specforge-conventions.md +109 -0
  194. package/src/cli/templates/skills/specforge-orchestrator.md +401 -0
  195. package/src/cli/templates/skills/specforge-validator.md +122 -0
  196. package/src/cli/templates/skills/specforge-worker.md +378 -0
@@ -9,7 +9,9 @@
9
9
  */
10
10
  import fs from 'node:fs';
11
11
  import { CONFIG_DEFAULTS, CONFIG_ENV_VARS, } from './types.js';
12
+ import { AGENT_TEAMS_DEFAULTS, MONOREPO_DEFAULTS, } from './agent-teams.types.js';
12
13
  import { getGlobalConfigPath, findProjectConfigPath, } from './paths.js';
14
+ import { validateSpecforgeJson, formatValidationErrors, } from './validation.js';
13
15
  /**
14
16
  * Load global configuration from ~/.specforge/config.json
15
17
  *
@@ -77,6 +79,12 @@ export function loadProjectConfig() {
77
79
  console.warn(`Warning: ${configPath} is not a valid config object`);
78
80
  return null;
79
81
  }
82
+ // Validate Agent Teams config sections
83
+ const validation = validateSpecforgeJson(parsed);
84
+ if (!validation.valid) {
85
+ const lines = formatValidationErrors(validation.errors);
86
+ console.warn(`Warning: Invalid config in ${configPath}:\n${lines.join('\n')}`);
87
+ }
80
88
  return parsed;
81
89
  }
82
90
  catch (error) {
@@ -234,4 +242,61 @@ export function getSpecificationId() {
234
242
  const config = resolveConfig();
235
243
  return config.specificationId;
236
244
  }
245
+ // ---------------------------------------------------------------------------
246
+ // Agent Teams config helpers
247
+ // ---------------------------------------------------------------------------
248
+ /**
249
+ * Get Agent Teams config with defaults merged.
250
+ *
251
+ * Always returns a fully-resolved config object — never null.
252
+ * Partial configs are merged with defaults via spread operator.
253
+ *
254
+ * @param config - Parsed project config (or null for all defaults)
255
+ * @returns Resolved Agent Teams config with all defaults applied
256
+ */
257
+ export function getAgentTeamsConfig(config) {
258
+ const partial = config?.agentTeams;
259
+ return {
260
+ enabled: partial?.enabled ?? AGENT_TEAMS_DEFAULTS.enabled,
261
+ strategy: partial?.strategy ?? AGENT_TEAMS_DEFAULTS.strategy,
262
+ maxParallelTeams: partial?.maxParallelTeams ?? AGENT_TEAMS_DEFAULTS.maxParallelTeams,
263
+ maxTokensPerWorker: partial?.maxTokensPerWorker ?? AGENT_TEAMS_DEFAULTS.maxTokensPerWorker,
264
+ branchPrefix: partial?.branchPrefix ?? AGENT_TEAMS_DEFAULTS.branchPrefix,
265
+ branchPattern: partial?.branchPattern ?? AGENT_TEAMS_DEFAULTS.branchPattern,
266
+ autoValidate: partial?.autoValidate ?? AGENT_TEAMS_DEFAULTS.autoValidate,
267
+ timeoutMinutes: partial?.timeoutMinutes ?? AGENT_TEAMS_DEFAULTS.timeoutMinutes,
268
+ escalationPolicy: partial?.escalationPolicy ?? AGENT_TEAMS_DEFAULTS.escalationPolicy,
269
+ ...(partial?.validationCommands ? { validationCommands: partial.validationCommands } : {}),
270
+ };
271
+ }
272
+ /**
273
+ * Get the active specification from config.
274
+ *
275
+ * @param config - Parsed project config
276
+ * @returns ActiveSpecification if set, null otherwise
277
+ */
278
+ export function getActiveSpecification(config) {
279
+ return config?.activeSpecification ?? null;
280
+ }
281
+ /**
282
+ * Get monorepo config with defaults merged.
283
+ *
284
+ * Returns null if the monorepo section is not present at all.
285
+ * If present (even partially), merges with defaults.
286
+ *
287
+ * @param config - Parsed project config
288
+ * @returns MonorepoConfig with defaults applied, or null if section absent
289
+ */
290
+ export function getMonorepoConfig(config) {
291
+ const partial = config?.monorepo;
292
+ if (!partial) {
293
+ return null;
294
+ }
295
+ return {
296
+ detected: partial.detected ?? MONOREPO_DEFAULTS.detected,
297
+ tool: partial.tool ?? MONOREPO_DEFAULTS.tool,
298
+ workspaces: partial.workspaces ?? [...MONOREPO_DEFAULTS.workspaces],
299
+ rootDir: partial.rootDir ?? MONOREPO_DEFAULTS.rootDir,
300
+ };
301
+ }
237
302
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/cli/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAML,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,YAAY,UAAU,+BAA+B,CAAC,CAAC;YACpE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4EAA4E;QAC5E,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,4BAA4B,UAAU,iBAAiB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAE3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,YAAY,UAAU,+BAA+B,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAuB,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,4BAA4B,UAAU,iBAAiB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAE1C,2BAA2B;IAC3B,MAAM,OAAO,GAAkB;QAC7B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI;QACrB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,KAAK,EAAE,eAAe,CAAC,KAAK;QAC5B,OAAO;KACR,CAAC;IAEF,gCAAgC;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAE,CAAC;QACxD,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;IACzB,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAE,CAAC;IAC1D,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IAE/D,mDAAmD;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;QAC5B,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;IACzB,CAAC;SAAM,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC7B,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,uCAAuC;IACvC,IAAI,aAAa,EAAE,SAAS,EAAE,CAAC;QAC7B,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;QAC7C,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAChC,CAAC;SAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACzC,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC;QACnD,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,IAAI,aAAa,EAAE,eAAe,EAAE,CAAC;QACnC,QAAQ,CAAC,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;QACzD,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,8CAA8C;IAC9C,IAAI,aAAa,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;QAChD,QAAQ,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IACzD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,iBAAiB,EAAE,KAAK,IAAI,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/cli/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Config Schema Validation
3
+ *
4
+ * Validates the extended .specforge.json configuration schema.
5
+ * Each section is validated independently — absent sections are
6
+ * considered valid (all sections are optional).
7
+ *
8
+ * Uses manual validation (no external libs) to match existing patterns.
9
+ */
10
+ /**
11
+ * A single validation error with field path and expected values.
12
+ */
13
+ export interface ValidationError {
14
+ /** Dot-separated field path (e.g., "agentTeams.strategy") */
15
+ field: string;
16
+ /** Human-readable error message including expected values */
17
+ message: string;
18
+ /** The actual value that failed validation */
19
+ value: unknown;
20
+ }
21
+ /**
22
+ * Result of a validation operation.
23
+ */
24
+ export interface ValidationResult {
25
+ /** Whether all validations passed */
26
+ valid: boolean;
27
+ /** List of validation errors (empty when valid) */
28
+ errors: ValidationError[];
29
+ }
30
+ /**
31
+ * Validate the `agentTeams` config section.
32
+ *
33
+ * Returns valid:true if the section is absent/undefined.
34
+ * Only validates fields that are present (all are optional).
35
+ */
36
+ export declare function validateAgentTeamsConfig(config: unknown): ValidationResult;
37
+ /**
38
+ * Validate the `activeSpecification` config section.
39
+ *
40
+ * Returns valid:true if the section is absent/undefined.
41
+ * When present, `id`, `title`, and `activatedAt` are required.
42
+ */
43
+ export declare function validateActiveSpecification(config: unknown): ValidationResult;
44
+ /**
45
+ * Validate the `monorepo` config section.
46
+ *
47
+ * Returns valid:true if the section is absent/undefined.
48
+ * Validates tool enum, workspaces array structure, and path formats.
49
+ */
50
+ export declare function validateMonorepoConfig(config: unknown): ValidationResult;
51
+ /**
52
+ * Validate the entire .specforge.json config for Agent Teams sections.
53
+ *
54
+ * Orchestrates sub-validators and aggregates all errors.
55
+ * Only validates the new Agent Teams sections — existing ProjectConfig
56
+ * fields are validated elsewhere.
57
+ *
58
+ * @param config - Raw parsed JSON object from .specforge.json
59
+ * @returns Combined validation result from all sections
60
+ */
61
+ export declare function validateSpecforgeJson(config: unknown): ValidationResult;
62
+ /**
63
+ * Format validation errors into human-readable lines.
64
+ *
65
+ * @param errors - Array of validation errors
66
+ * @returns Formatted error strings, one per line
67
+ */
68
+ export declare function formatValidationErrors(errors: ValidationError[]): string[];
69
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/cli/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,mDAAmD;IACnD,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AA6DD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CA2E1E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CA0C7E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAkExE;AAMD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAiBvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAK1E"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Config Schema Validation
3
+ *
4
+ * Validates the extended .specforge.json configuration schema.
5
+ * Each section is validated independently — absent sections are
6
+ * considered valid (all sections are optional).
7
+ *
8
+ * Uses manual validation (no external libs) to match existing patterns.
9
+ */
10
+ // ---------------------------------------------------------------------------
11
+ // Allowed values (from design doc)
12
+ // ---------------------------------------------------------------------------
13
+ const ALLOWED_STRATEGIES = ['auto', 'single', 'parallel', 'phased'];
14
+ const ALLOWED_ESCALATION_POLICIES = ['pause', 'skip', 'ask'];
15
+ const ALLOWED_MONOREPO_TOOLS = ['turborepo', 'nx', 'lerna', 'pnpm', 'npm'];
16
+ // ---------------------------------------------------------------------------
17
+ // Helpers
18
+ // ---------------------------------------------------------------------------
19
+ function err(field, message, value) {
20
+ return { field, message, value };
21
+ }
22
+ function isObject(v) {
23
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
24
+ }
25
+ function oneOf(field, value, allowed) {
26
+ if (typeof value !== 'string' || !allowed.includes(value)) {
27
+ return err(field, `Must be one of: ${allowed.join(', ')}`, value);
28
+ }
29
+ return null;
30
+ }
31
+ function numberInRange(field, value, min, max) {
32
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < min || value > max) {
33
+ return err(field, `Must be a number between ${min} and ${max}`, value);
34
+ }
35
+ return null;
36
+ }
37
+ function mustBeBoolean(field, value) {
38
+ if (typeof value !== 'boolean') {
39
+ return err(field, 'Must be a boolean', value);
40
+ }
41
+ return null;
42
+ }
43
+ function mustBeString(field, value) {
44
+ if (typeof value !== 'string') {
45
+ return err(field, 'Must be a string', value);
46
+ }
47
+ return null;
48
+ }
49
+ function mustBeNonEmptyString(field, value) {
50
+ if (typeof value !== 'string' || value.trim().length === 0) {
51
+ return err(field, 'Must be a non-empty string', value);
52
+ }
53
+ return null;
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Section validators
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Validate the `agentTeams` config section.
60
+ *
61
+ * Returns valid:true if the section is absent/undefined.
62
+ * Only validates fields that are present (all are optional).
63
+ */
64
+ export function validateAgentTeamsConfig(config) {
65
+ if (config === undefined || config === null) {
66
+ return { valid: true, errors: [] };
67
+ }
68
+ const errors = [];
69
+ const prefix = 'agentTeams';
70
+ if (!isObject(config)) {
71
+ return { valid: false, errors: [err(prefix, 'Must be an object', config)] };
72
+ }
73
+ if ('enabled' in config && config.enabled !== undefined) {
74
+ const e = mustBeBoolean(`${prefix}.enabled`, config.enabled);
75
+ if (e)
76
+ errors.push(e);
77
+ }
78
+ if ('strategy' in config && config.strategy !== undefined) {
79
+ const e = oneOf(`${prefix}.strategy`, config.strategy, ALLOWED_STRATEGIES);
80
+ if (e)
81
+ errors.push(e);
82
+ }
83
+ if ('maxParallelTeams' in config && config.maxParallelTeams !== undefined) {
84
+ const e = numberInRange(`${prefix}.maxParallelTeams`, config.maxParallelTeams, 1, 10);
85
+ if (e)
86
+ errors.push(e);
87
+ }
88
+ if ('maxTokensPerWorker' in config && config.maxTokensPerWorker !== undefined) {
89
+ const e = numberInRange(`${prefix}.maxTokensPerWorker`, config.maxTokensPerWorker, 10000, 200000);
90
+ if (e)
91
+ errors.push(e);
92
+ }
93
+ if ('branchPrefix' in config && config.branchPrefix !== undefined) {
94
+ const e = mustBeString(`${prefix}.branchPrefix`, config.branchPrefix);
95
+ if (e)
96
+ errors.push(e);
97
+ }
98
+ if ('branchPattern' in config && config.branchPattern !== undefined) {
99
+ const strErr = mustBeString(`${prefix}.branchPattern`, config.branchPattern);
100
+ if (strErr) {
101
+ errors.push(strErr);
102
+ }
103
+ else if (typeof config.branchPattern === 'string' && !config.branchPattern.includes('{prefix}')) {
104
+ errors.push(err(`${prefix}.branchPattern`, 'Must contain {prefix} placeholder', config.branchPattern));
105
+ }
106
+ }
107
+ if ('autoValidate' in config && config.autoValidate !== undefined) {
108
+ const e = mustBeBoolean(`${prefix}.autoValidate`, config.autoValidate);
109
+ if (e)
110
+ errors.push(e);
111
+ }
112
+ if ('validationCommands' in config && config.validationCommands !== undefined) {
113
+ if (!isObject(config.validationCommands)) {
114
+ errors.push(err(`${prefix}.validationCommands`, 'Must be an object', config.validationCommands));
115
+ }
116
+ else {
117
+ for (const key of ['test', 'lint', 'typeCheck', 'build']) {
118
+ if (key in config.validationCommands && config.validationCommands[key] !== undefined) {
119
+ const e = mustBeString(`${prefix}.validationCommands.${key}`, config.validationCommands[key]);
120
+ if (e)
121
+ errors.push(e);
122
+ }
123
+ }
124
+ }
125
+ }
126
+ if ('timeoutMinutes' in config && config.timeoutMinutes !== undefined) {
127
+ const e = numberInRange(`${prefix}.timeoutMinutes`, config.timeoutMinutes, 5, 60);
128
+ if (e)
129
+ errors.push(e);
130
+ }
131
+ if ('escalationPolicy' in config && config.escalationPolicy !== undefined) {
132
+ const e = oneOf(`${prefix}.escalationPolicy`, config.escalationPolicy, ALLOWED_ESCALATION_POLICIES);
133
+ if (e)
134
+ errors.push(e);
135
+ }
136
+ return { valid: errors.length === 0, errors };
137
+ }
138
+ /**
139
+ * Validate the `activeSpecification` config section.
140
+ *
141
+ * Returns valid:true if the section is absent/undefined.
142
+ * When present, `id`, `title`, and `activatedAt` are required.
143
+ */
144
+ export function validateActiveSpecification(config) {
145
+ if (config === undefined || config === null) {
146
+ return { valid: true, errors: [] };
147
+ }
148
+ const errors = [];
149
+ const prefix = 'activeSpecification';
150
+ if (!isObject(config)) {
151
+ return { valid: false, errors: [err(prefix, 'Must be an object', config)] };
152
+ }
153
+ // id — required, non-empty string
154
+ if (!('id' in config) || config.id === undefined) {
155
+ errors.push(err(`${prefix}.id`, 'Required field is missing', undefined));
156
+ }
157
+ else {
158
+ const e = mustBeNonEmptyString(`${prefix}.id`, config.id);
159
+ if (e)
160
+ errors.push(e);
161
+ }
162
+ // title — required, non-empty string, max 200 chars
163
+ if (!('title' in config) || config.title === undefined) {
164
+ errors.push(err(`${prefix}.title`, 'Required field is missing', undefined));
165
+ }
166
+ else {
167
+ const e = mustBeNonEmptyString(`${prefix}.title`, config.title);
168
+ if (e) {
169
+ errors.push(e);
170
+ }
171
+ else if (typeof config.title === 'string' && config.title.length > 200) {
172
+ errors.push(err(`${prefix}.title`, 'Must be at most 200 characters', config.title));
173
+ }
174
+ }
175
+ // activatedAt — required, valid ISO 8601
176
+ if (!('activatedAt' in config) || config.activatedAt === undefined) {
177
+ errors.push(err(`${prefix}.activatedAt`, 'Required field is missing', undefined));
178
+ }
179
+ else if (typeof config.activatedAt !== 'string') {
180
+ errors.push(err(`${prefix}.activatedAt`, 'Must be a string', config.activatedAt));
181
+ }
182
+ else if (isNaN(Date.parse(config.activatedAt))) {
183
+ errors.push(err(`${prefix}.activatedAt`, 'Must be a valid ISO 8601 date string', config.activatedAt));
184
+ }
185
+ return { valid: errors.length === 0, errors };
186
+ }
187
+ /**
188
+ * Validate the `monorepo` config section.
189
+ *
190
+ * Returns valid:true if the section is absent/undefined.
191
+ * Validates tool enum, workspaces array structure, and path formats.
192
+ */
193
+ export function validateMonorepoConfig(config) {
194
+ if (config === undefined || config === null) {
195
+ return { valid: true, errors: [] };
196
+ }
197
+ const errors = [];
198
+ const prefix = 'monorepo';
199
+ if (!isObject(config)) {
200
+ return { valid: false, errors: [err(prefix, 'Must be an object', config)] };
201
+ }
202
+ if ('detected' in config && config.detected !== undefined) {
203
+ const e = mustBeBoolean(`${prefix}.detected`, config.detected);
204
+ if (e)
205
+ errors.push(e);
206
+ }
207
+ if ('tool' in config && config.tool !== undefined && config.tool !== null) {
208
+ const e = oneOf(`${prefix}.tool`, config.tool, ALLOWED_MONOREPO_TOOLS);
209
+ if (e)
210
+ errors.push(e);
211
+ }
212
+ if ('rootDir' in config && config.rootDir !== undefined) {
213
+ const e = mustBeString(`${prefix}.rootDir`, config.rootDir);
214
+ if (e)
215
+ errors.push(e);
216
+ }
217
+ if ('workspaces' in config && config.workspaces !== undefined) {
218
+ if (!Array.isArray(config.workspaces)) {
219
+ errors.push(err(`${prefix}.workspaces`, 'Must be an array', config.workspaces));
220
+ }
221
+ else {
222
+ for (let i = 0; i < config.workspaces.length; i++) {
223
+ const entry = config.workspaces[i];
224
+ const entryPrefix = `${prefix}.workspaces[${i}]`;
225
+ if (!isObject(entry)) {
226
+ errors.push(err(entryPrefix, 'Must be an object with name, path, and dependencies', entry));
227
+ continue;
228
+ }
229
+ if (!('name' in entry) || typeof entry.name !== 'string' || entry.name.trim().length === 0) {
230
+ errors.push(err(`${entryPrefix}.name`, 'Must be a non-empty string', entry.name));
231
+ }
232
+ if (!('path' in entry) || typeof entry.path !== 'string') {
233
+ errors.push(err(`${entryPrefix}.path`, 'Must be a string', entry.path));
234
+ }
235
+ else if (entry.path.startsWith('/')) {
236
+ errors.push(err(`${entryPrefix}.path`, 'Must be a relative path (no leading /)', entry.path));
237
+ }
238
+ if ('dependencies' in entry && entry.dependencies !== undefined) {
239
+ if (!Array.isArray(entry.dependencies)) {
240
+ errors.push(err(`${entryPrefix}.dependencies`, 'Must be an array of strings', entry.dependencies));
241
+ }
242
+ else {
243
+ for (let j = 0; j < entry.dependencies.length; j++) {
244
+ if (typeof entry.dependencies[j] !== 'string') {
245
+ errors.push(err(`${entryPrefix}.dependencies[${j}]`, 'Must be a string', entry.dependencies[j]));
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ return { valid: errors.length === 0, errors };
254
+ }
255
+ // ---------------------------------------------------------------------------
256
+ // Top-level validator
257
+ // ---------------------------------------------------------------------------
258
+ /**
259
+ * Validate the entire .specforge.json config for Agent Teams sections.
260
+ *
261
+ * Orchestrates sub-validators and aggregates all errors.
262
+ * Only validates the new Agent Teams sections — existing ProjectConfig
263
+ * fields are validated elsewhere.
264
+ *
265
+ * @param config - Raw parsed JSON object from .specforge.json
266
+ * @returns Combined validation result from all sections
267
+ */
268
+ export function validateSpecforgeJson(config) {
269
+ if (config === undefined || config === null) {
270
+ return { valid: true, errors: [] };
271
+ }
272
+ if (!isObject(config)) {
273
+ return { valid: false, errors: [err('config', 'Must be an object', config)] };
274
+ }
275
+ const results = [
276
+ validateAgentTeamsConfig(config.agentTeams),
277
+ validateActiveSpecification(config.activeSpecification),
278
+ validateMonorepoConfig(config.monorepo),
279
+ ];
280
+ const errors = results.flatMap(r => r.errors);
281
+ return { valid: errors.length === 0, errors };
282
+ }
283
+ /**
284
+ * Format validation errors into human-readable lines.
285
+ *
286
+ * @param errors - Array of validation errors
287
+ * @returns Formatted error strings, one per line
288
+ */
289
+ export function formatValidationErrors(errors) {
290
+ return errors.map(e => {
291
+ const valueStr = e.value === undefined ? 'undefined' : JSON.stringify(e.value);
292
+ return ` ${e.field}: ${e.message} (got ${valueStr})`;
293
+ });
294
+ }
295
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/cli/config/validation.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * - Path validation to prevent writes outside allowed directories
11
11
  */
12
12
  import { GlobalConfig, ProjectConfig } from './types.js';
13
+ import type { ActiveSpecification, AgentTeamsConfig } from './agent-teams.types.js';
13
14
  /**
14
15
  * Ensure global config directory exists with secure permissions
15
16
  *
@@ -87,6 +88,44 @@ export declare function deleteGlobalConfigField(field: keyof GlobalConfig): void
87
88
  * ```
88
89
  */
89
90
  export declare function saveProjectConfig(config: Partial<ProjectConfig>, targetDir?: string): void;
91
+ /**
92
+ * Set the active specification in .specforge.json
93
+ *
94
+ * Updates only the `activeSpecification` section, preserving all other fields.
95
+ * Pass `null` to remove the active specification entirely.
96
+ *
97
+ * @param spec - ActiveSpecification to set, or null to clear
98
+ * @param targetDir - Directory containing .specforge.json (defaults to cwd)
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * // Set active specification
103
+ * setActiveSpecification({ id: 'spec_123', title: 'My Spec', activatedAt: new Date().toISOString() });
104
+ *
105
+ * // Clear active specification
106
+ * setActiveSpecification(null);
107
+ * ```
108
+ */
109
+ export declare function setActiveSpecification(spec: ActiveSpecification | null, targetDir?: string): void;
110
+ /**
111
+ * Update the Agent Teams configuration in .specforge.json
112
+ *
113
+ * Merges the provided partial config with the existing `agentTeams` section,
114
+ * preserving all other fields. Only the keys present in `config` are overwritten.
115
+ *
116
+ * @param config - Partial AgentTeamsConfig to merge
117
+ * @param targetDir - Directory containing .specforge.json (defaults to cwd)
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * // Enable agent teams
122
+ * setAgentTeamsConfig({ enabled: true });
123
+ *
124
+ * // Update strategy and timeout, keeping other settings
125
+ * setAgentTeamsConfig({ strategy: 'parallel', timeoutMinutes: 30 });
126
+ * ```
127
+ */
128
+ export declare function setAgentTeamsConfig(config: Partial<AgentTeamsConfig>, targetDir?: string): void;
90
129
  /**
91
130
  * MCP server configuration with optional environment variables
92
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/cli/config/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAsBpB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAgCpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,YAAY,GAAG,IAAI,CAuBvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAgCN;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,UAAU,EAAE;QACV,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAiCzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/cli/config/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAsBhC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAgCpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,YAAY,GAAG,IAAI,CAuBvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAgCN;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAaN;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAUN;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,UAAU,EAAE;QACV,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAiCzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
@@ -181,6 +181,64 @@ export function saveProjectConfig(config, targetDir) {
181
181
  `Error: ${error instanceof Error ? error.message : String(error)}`);
182
182
  }
183
183
  }
184
+ /**
185
+ * Set the active specification in .specforge.json
186
+ *
187
+ * Updates only the `activeSpecification` section, preserving all other fields.
188
+ * Pass `null` to remove the active specification entirely.
189
+ *
190
+ * @param spec - ActiveSpecification to set, or null to clear
191
+ * @param targetDir - Directory containing .specforge.json (defaults to cwd)
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * // Set active specification
196
+ * setActiveSpecification({ id: 'spec_123', title: 'My Spec', activatedAt: new Date().toISOString() });
197
+ *
198
+ * // Clear active specification
199
+ * setActiveSpecification(null);
200
+ * ```
201
+ */
202
+ export function setActiveSpecification(spec, targetDir) {
203
+ const existing = loadProjectConfig() || {};
204
+ const updated = structuredClone(existing);
205
+ if (spec === null) {
206
+ // Set to undefined (not delete) so the spread in saveProjectConfig
207
+ // overrides the existing value, and the remove-undefined loop cleans it up.
208
+ updated.activeSpecification = undefined;
209
+ }
210
+ else {
211
+ updated.activeSpecification = spec;
212
+ }
213
+ saveProjectConfig(updated, targetDir);
214
+ }
215
+ /**
216
+ * Update the Agent Teams configuration in .specforge.json
217
+ *
218
+ * Merges the provided partial config with the existing `agentTeams` section,
219
+ * preserving all other fields. Only the keys present in `config` are overwritten.
220
+ *
221
+ * @param config - Partial AgentTeamsConfig to merge
222
+ * @param targetDir - Directory containing .specforge.json (defaults to cwd)
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * // Enable agent teams
227
+ * setAgentTeamsConfig({ enabled: true });
228
+ *
229
+ * // Update strategy and timeout, keeping other settings
230
+ * setAgentTeamsConfig({ strategy: 'parallel', timeoutMinutes: 30 });
231
+ * ```
232
+ */
233
+ export function setAgentTeamsConfig(config, targetDir) {
234
+ const existing = loadProjectConfig() || {};
235
+ const updated = structuredClone(existing);
236
+ updated.agentTeams = {
237
+ ...updated.agentTeams,
238
+ ...config,
239
+ };
240
+ saveProjectConfig(updated, targetDir);
241
+ }
184
242
  /**
185
243
  * Generate MCP configuration for Claude Code integration
186
244
  *
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/cli/config/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/cli/config/writer.ts"],"names":[],"mappings":"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"}