@girardmedia/bootspring 2.0.34 → 2.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/preseed.js CHANGED
@@ -786,7 +786,9 @@ AI will analyze your files and extract relevant information for each preseed doc
786
786
  * Generate VISION.md
787
787
  */
788
788
  generateVision() {
789
- const { identity, problem, solution } = this.config;
789
+ const identity = this.config.identity || {};
790
+ const problem = this.config.problem || {};
791
+ const solution = this.config.solution || {};
790
792
  const sections = [];
791
793
  const context = this.getContextForDocument('vision');
792
794
  const isDeepAnalysis = this.config._meta && this.config._meta.source === 'from-codebase-deep';
@@ -983,7 +985,8 @@ AI will analyze your files and extract relevant information for each preseed doc
983
985
  * Generate AUDIENCE.md
984
986
  */
985
987
  generateAudience() {
986
- const { identity, audience } = this.config;
988
+ const identity = this.config.identity || {};
989
+ const audience = this.config.audience || {};
987
990
  const sections = [];
988
991
  const context = this.getContextForDocument('audience');
989
992
 
@@ -1089,7 +1092,8 @@ AI will analyze your files and extract relevant information for each preseed doc
1089
1092
  * Generate MARKET.md
1090
1093
  */
1091
1094
  generateMarket() {
1092
- const { identity, market } = this.config;
1095
+ const identity = this.config.identity || {};
1096
+ const market = this.config.market || {};
1093
1097
  const sections = [];
1094
1098
  const context = this.getContextForDocument('market');
1095
1099
 
@@ -1175,7 +1179,8 @@ AI will analyze your files and extract relevant information for each preseed doc
1175
1179
  * Generate COMPETITORS.md
1176
1180
  */
1177
1181
  generateCompetitors() {
1178
- const { identity, competitors } = this.config;
1182
+ const identity = this.config.identity || {};
1183
+ const competitors = this.config.competitors || {};
1179
1184
  const sections = [];
1180
1185
  const context = this.getContextForDocument('competitors');
1181
1186
 
@@ -1295,7 +1300,8 @@ AI will analyze your files and extract relevant information for each preseed doc
1295
1300
  * Generate BUSINESS_MODEL.md
1296
1301
  */
1297
1302
  generateBusinessModel() {
1298
- const { identity, business } = this.config;
1303
+ const identity = this.config.identity || {};
1304
+ const business = this.config.business || {};
1299
1305
  const sections = [];
1300
1306
  const context = this.getContextForDocument('business-model');
1301
1307
 
@@ -1408,7 +1414,10 @@ AI will analyze your files and extract relevant information for each preseed doc
1408
1414
  * Generate PRD.md
1409
1415
  */
1410
1416
  generatePRD() {
1411
- const { identity, solution, product, audience } = this.config;
1417
+ const identity = this.config.identity || {};
1418
+ const solution = this.config.solution || {};
1419
+ const product = this.config.product || {};
1420
+ const audience = this.config.audience || {};
1412
1421
  const sections = [];
1413
1422
  const context = this.getContextForDocument('prd');
1414
1423
  const isDeepAnalysis = this.config._meta && this.config._meta.source === 'from-codebase-deep';
@@ -1643,29 +1652,33 @@ AI will analyze your files and extract relevant information for each preseed doc
1643
1652
  * Generate executive summary from analysis data
1644
1653
  */
1645
1654
  _generateExecutiveSummary(identity, solution, featureDetails, userJourneys) {
1646
- const featureCount = featureDetails.length;
1647
- const journeyCount = userJourneys.length;
1655
+ const features = featureDetails || [];
1656
+ const journeys = userJourneys || [];
1657
+ const featureCount = features.length;
1658
+ const journeyCount = journeys.length;
1648
1659
 
1649
- let summary = `${identity.name} is a ${(identity.category || 'software').toLowerCase()} application`;
1660
+ const id = identity || {};
1661
+ let summary = `${id.name || 'This application'} is a ${(id.category || 'software').toLowerCase()} application`;
1650
1662
 
1651
- if (identity.tagline) {
1652
- summary += ` that ${identity.tagline.toLowerCase().replace(/\.$/, '')}`;
1663
+ if (id.tagline) {
1664
+ summary += ` that ${id.tagline.toLowerCase().replace(/\.$/, '')}`;
1653
1665
  }
1654
1666
 
1655
1667
  summary += '.';
1656
1668
 
1657
1669
  if (featureCount > 0) {
1658
- const mainFeatures = featureDetails.slice(0, 3).map(f => (f.name || '').toLowerCase()).join(', ');
1670
+ const mainFeatures = features.slice(0, 3).map(f => (f.name || '').toLowerCase()).join(', ');
1659
1671
  summary += ` The application provides ${featureCount} core features including ${mainFeatures}.`;
1660
1672
  }
1661
1673
 
1662
1674
  if (journeyCount > 0) {
1663
- const mainJourneys = userJourneys.slice(0, 2).map(j => (j.name || '').toLowerCase()).join(' and ');
1675
+ const mainJourneys = journeys.slice(0, 2).map(j => (j.name || '').toLowerCase()).join(' and ');
1664
1676
  summary += ` Key user workflows include ${mainJourneys}.`;
1665
1677
  }
1666
1678
 
1667
- if (solution.coreCapabilities && solution.coreCapabilities.length > 0) {
1668
- summary += ` ${solution.coreCapabilities[0]}.`;
1679
+ const sol = solution || {};
1680
+ if (sol.coreCapabilities && sol.coreCapabilities.length > 0) {
1681
+ summary += ` ${sol.coreCapabilities[0]}.`;
1669
1682
  }
1670
1683
 
1671
1684
  return summary;
@@ -1677,8 +1690,9 @@ AI will analyze your files and extract relevant information for each preseed doc
1677
1690
  _generateProductVisionNarrative(identity, featureDetails) {
1678
1691
  if (!featureDetails || featureDetails.length === 0) return '';
1679
1692
 
1693
+ const id = identity || {};
1680
1694
  const mainFeature = featureDetails[0];
1681
- let vision = `${identity.name} aims to ${(mainFeature.purpose || '').toLowerCase()}`;
1695
+ let vision = `${id.name || 'This application'} aims to ${(mainFeature.purpose || '').toLowerCase()}`;
1682
1696
 
1683
1697
  if (featureDetails.length > 1) {
1684
1698
  const otherFeatures = featureDetails.slice(1, 3).map(f => (f.purpose || '').toLowerCase().split(' ').slice(0, 5).join(' ')).join(', ');
@@ -1694,7 +1708,9 @@ AI will analyze your files and extract relevant information for each preseed doc
1694
1708
  * Generate TECHNICAL_SPEC.md
1695
1709
  */
1696
1710
  generateTechnicalSpec() {
1697
- const { identity, technical, product } = this.config;
1711
+ const identity = this.config.identity || {};
1712
+ const technical = this.config.technical || {};
1713
+ const product = this.config.product || {};
1698
1714
  const sections = [];
1699
1715
  const context = this.getContextForDocument('technical-spec');
1700
1716
 
@@ -1865,7 +1881,9 @@ AI will analyze your files and extract relevant information for each preseed doc
1865
1881
  * Generate ROADMAP.md
1866
1882
  */
1867
1883
  generateRoadmap() {
1868
- const { identity, roadmap, product } = this.config;
1884
+ const identity = this.config.identity || {};
1885
+ const roadmap = this.config.roadmap || {};
1886
+ const product = this.config.product || {};
1869
1887
  const sections = [];
1870
1888
  const context = this.getContextForDocument('roadmap');
1871
1889
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "contractVersion": "v1",
3
3
  "packageName": "@girardmedia/bootspring",
4
- "packageVersion": "2.0.34",
4
+ "packageVersion": "2.0.35",
5
5
  "tools": [
6
6
  {
7
7
  "name": "bootspring_assist",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@girardmedia/bootspring",
3
- "version": "2.0.34",
3
+ "version": "2.0.35",
4
4
  "description": "Development scaffolding with intelligence - AI-powered context, agents, and workflows for any MCP-compatible assistant",
5
5
  "keywords": [
6
6
  "ai",