@girardmedia/bootspring 1.2.0 → 2.0.3
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/README.md +107 -14
- package/bin/bootspring.js +166 -27
- package/cli/agent.js +189 -17
- package/cli/analyze.js +499 -0
- package/cli/audit.js +557 -0
- package/cli/auth.js +495 -38
- package/cli/billing.js +302 -0
- package/cli/build.js +695 -0
- package/cli/business.js +109 -26
- package/cli/checkpoint-utils.js +168 -0
- package/cli/checkpoint.js +639 -0
- package/cli/cloud-sync.js +447 -0
- package/cli/content.js +198 -0
- package/cli/context.js +1 -1
- package/cli/deploy.js +543 -0
- package/cli/fundraise.js +112 -50
- package/cli/github-cmd.js +435 -0
- package/cli/health.js +477 -0
- package/cli/init.js +84 -13
- package/cli/legal.js +107 -95
- package/cli/log.js +2 -2
- package/cli/loop.js +976 -73
- package/cli/manager.js +711 -0
- package/cli/metrics.js +480 -0
- package/cli/monitor.js +812 -0
- package/cli/onboard.js +521 -0
- package/cli/orchestrator.js +12 -24
- package/cli/prd.js +594 -0
- package/cli/preseed-start.js +1483 -0
- package/cli/preseed.js +2302 -0
- package/cli/project.js +436 -0
- package/cli/quality.js +233 -0
- package/cli/security.js +913 -0
- package/cli/seed.js +1441 -5
- package/cli/skill.js +273 -211
- package/cli/suggest.js +989 -0
- package/cli/switch.js +453 -0
- package/cli/visualize.js +527 -0
- package/cli/watch.js +769 -0
- package/cli/workspace.js +607 -0
- package/core/analyze-workflow.js +1134 -0
- package/core/api-client.js +535 -22
- package/core/audit-workflow.js +1350 -0
- package/core/build-orchestrator.js +480 -0
- package/core/build-state.js +577 -0
- package/core/checkpoint-engine.js +408 -0
- package/core/config.js +1109 -26
- package/core/context-loader.js +21 -1
- package/core/deploy-workflow.js +836 -0
- package/core/entitlements.js +93 -22
- package/core/github-sync.js +610 -0
- package/core/index.js +8 -1
- package/core/ingest.js +1111 -0
- package/core/metrics-engine.js +768 -0
- package/core/onboard-workflow.js +1007 -0
- package/core/preseed-workflow.js +934 -0
- package/core/preseed.js +1617 -0
- package/core/project-context.js +325 -0
- package/core/project-state.js +694 -0
- package/core/r2-sync.js +583 -0
- package/core/scaffold.js +525 -7
- package/core/session.js +258 -0
- package/core/task-extractor.js +758 -0
- package/core/telemetry.js +28 -6
- package/core/tier-enforcement.js +737 -0
- package/core/utils.js +38 -14
- package/generators/questionnaire.js +15 -12
- package/generators/sections/ai.js +7 -7
- package/generators/sections/content.js +300 -0
- package/generators/sections/index.js +3 -0
- package/generators/sections/plugins.js +7 -6
- package/generators/templates/build-planning.template.js +596 -0
- package/generators/templates/content.template.js +819 -0
- package/generators/templates/index.js +2 -1
- package/hooks/git-autopilot.js +1250 -0
- package/hooks/index.js +9 -0
- package/intelligence/agent-collab.js +2057 -0
- package/intelligence/auto-suggest.js +634 -0
- package/intelligence/content-gen.js +1589 -0
- package/intelligence/cross-project.js +1647 -0
- package/intelligence/index.js +184 -0
- package/intelligence/learning/insights.json +517 -7
- package/intelligence/learning/pattern-learner.js +1008 -14
- package/intelligence/memory/decision-tracker.js +1431 -31
- package/intelligence/memory/decisions.jsonl +0 -0
- package/intelligence/orchestrator.js +2896 -1
- package/intelligence/prd.js +92 -1
- package/intelligence/recommendation-weights.json +14 -2
- package/intelligence/recommendations.js +463 -9
- package/intelligence/workflow-composer.js +1451 -0
- package/marketplace/index.d.ts +324 -0
- package/marketplace/index.js +1921 -0
- package/mcp/contracts/mcp-contract.v1.json +342 -4
- package/mcp/registry.js +680 -3
- package/mcp/response-formatter.js +23 -0
- package/mcp/tools/assist-tool.js +78 -4
- package/mcp/tools/autopilot-tool.js +408 -0
- package/mcp/tools/content-tool.js +571 -0
- package/mcp/tools/dashboard-tool.js +251 -5
- package/mcp/tools/mvp-tool.js +344 -0
- package/mcp/tools/plugin-tool.js +23 -1
- package/mcp/tools/prd-tool.js +579 -0
- package/mcp/tools/seed-tool.js +447 -0
- package/mcp/tools/skill-tool.js +43 -14
- package/mcp/tools/suggest-tool.js +147 -0
- package/package.json +15 -6
- package/agents/README.md +0 -93
- package/agents/ai-integration-expert/context.md +0 -386
- package/agents/api-expert/context.md +0 -416
- package/agents/architecture-expert/context.md +0 -454
- package/agents/auth-expert/context.md +0 -399
- package/agents/backend-expert/context.md +0 -483
- package/agents/business-strategy-expert/context.md +0 -180
- package/agents/code-review-expert/context.md +0 -365
- package/agents/competitive-analysis-expert/context.md +0 -239
- package/agents/data-modeling-expert/context.md +0 -352
- package/agents/database-expert/context.md +0 -250
- package/agents/devops-expert/context.md +0 -446
- package/agents/email-expert/context.md +0 -379
- package/agents/financial-expert/context.md +0 -213
- package/agents/frontend-expert/context.md +0 -364
- package/agents/fundraising-expert/context.md +0 -257
- package/agents/growth-expert/context.md +0 -249
- package/agents/index.js +0 -140
- package/agents/investor-relations-expert/context.md +0 -266
- package/agents/legal-expert/context.md +0 -284
- package/agents/marketing-expert/context.md +0 -236
- package/agents/monitoring-expert/context.md +0 -362
- package/agents/operations-expert/context.md +0 -279
- package/agents/partnerships-expert/context.md +0 -286
- package/agents/payment-expert/context.md +0 -340
- package/agents/performance-expert/context.md +0 -377
- package/agents/private-equity-expert/context.md +0 -246
- package/agents/railway-expert/context.md +0 -284
- package/agents/research-expert/context.md +0 -245
- package/agents/sales-expert/context.md +0 -241
- package/agents/security-expert/context.md +0 -343
- package/agents/testing-expert/context.md +0 -414
- package/agents/ui-ux-expert/context.md +0 -448
- package/agents/vercel-expert/context.md +0 -426
- package/skills/index.js +0 -787
- package/skills/patterns/README.md +0 -163
- package/skills/patterns/ai/agents.md +0 -281
- package/skills/patterns/ai/claude.md +0 -138
- package/skills/patterns/ai/embeddings.md +0 -150
- package/skills/patterns/ai/rag.md +0 -266
- package/skills/patterns/ai/streaming.md +0 -170
- package/skills/patterns/ai/structured-output.md +0 -162
- package/skills/patterns/ai/tools.md +0 -154
- package/skills/patterns/analytics/tracking.md +0 -220
- package/skills/patterns/api/errors.md +0 -296
- package/skills/patterns/api/graphql.md +0 -440
- package/skills/patterns/api/middleware.md +0 -279
- package/skills/patterns/api/openapi.md +0 -285
- package/skills/patterns/api/rate-limiting.md +0 -231
- package/skills/patterns/api/route-handler.md +0 -217
- package/skills/patterns/api/server-action.md +0 -249
- package/skills/patterns/api/versioning.md +0 -443
- package/skills/patterns/api/webhooks.md +0 -247
- package/skills/patterns/auth/clerk.md +0 -132
- package/skills/patterns/auth/mfa.md +0 -313
- package/skills/patterns/auth/nextauth.md +0 -140
- package/skills/patterns/auth/oauth.md +0 -237
- package/skills/patterns/auth/rbac.md +0 -152
- package/skills/patterns/auth/session-management.md +0 -367
- package/skills/patterns/auth/session.md +0 -120
- package/skills/patterns/database/audit.md +0 -177
- package/skills/patterns/database/migrations.md +0 -177
- package/skills/patterns/database/pagination.md +0 -230
- package/skills/patterns/database/pooling.md +0 -357
- package/skills/patterns/database/prisma.md +0 -180
- package/skills/patterns/database/relations.md +0 -187
- package/skills/patterns/database/seeding.md +0 -246
- package/skills/patterns/database/soft-delete.md +0 -153
- package/skills/patterns/database/transactions.md +0 -162
- package/skills/patterns/deployment/ci-cd.md +0 -231
- package/skills/patterns/deployment/docker.md +0 -188
- package/skills/patterns/deployment/monitoring.md +0 -387
- package/skills/patterns/deployment/vercel.md +0 -160
- package/skills/patterns/email/resend.md +0 -143
- package/skills/patterns/email/templates.md +0 -245
- package/skills/patterns/email/transactional.md +0 -503
- package/skills/patterns/email/verification.md +0 -176
- package/skills/patterns/files/download.md +0 -243
- package/skills/patterns/files/upload.md +0 -239
- package/skills/patterns/i18n/nextintl.md +0 -188
- package/skills/patterns/logging/structured.md +0 -292
- package/skills/patterns/notifications/email-queue.md +0 -248
- package/skills/patterns/notifications/push.md +0 -279
- package/skills/patterns/payments/checkout.md +0 -303
- package/skills/patterns/payments/invoices.md +0 -287
- package/skills/patterns/payments/portal.md +0 -245
- package/skills/patterns/payments/stripe.md +0 -272
- package/skills/patterns/payments/subscriptions.md +0 -300
- package/skills/patterns/payments/usage.md +0 -279
- package/skills/patterns/performance/caching.md +0 -276
- package/skills/patterns/performance/code-splitting.md +0 -233
- package/skills/patterns/performance/edge.md +0 -254
- package/skills/patterns/performance/isr.md +0 -266
- package/skills/patterns/performance/lazy-loading.md +0 -281
- package/skills/patterns/realtime/sse.md +0 -327
- package/skills/patterns/realtime/websockets.md +0 -336
- package/skills/patterns/search/filtering.md +0 -329
- package/skills/patterns/search/fulltext.md +0 -260
- package/skills/patterns/security/audit-logging.md +0 -444
- package/skills/patterns/security/csrf.md +0 -234
- package/skills/patterns/security/headers.md +0 -252
- package/skills/patterns/security/sanitization.md +0 -258
- package/skills/patterns/security/secrets.md +0 -261
- package/skills/patterns/security/validation.md +0 -268
- package/skills/patterns/security/xss.md +0 -229
- package/skills/patterns/seo/metadata.md +0 -252
- package/skills/patterns/state/context.md +0 -349
- package/skills/patterns/state/react-query.md +0 -313
- package/skills/patterns/state/url-state.md +0 -482
- package/skills/patterns/state/zustand.md +0 -262
- package/skills/patterns/testing/api.md +0 -259
- package/skills/patterns/testing/component.md +0 -233
- package/skills/patterns/testing/coverage.md +0 -207
- package/skills/patterns/testing/fixtures.md +0 -225
- package/skills/patterns/testing/integration.md +0 -436
- package/skills/patterns/testing/mocking.md +0 -177
- package/skills/patterns/testing/playwright.md +0 -162
- package/skills/patterns/testing/snapshot.md +0 -175
- package/skills/patterns/testing/vitest.md +0 -307
- package/skills/patterns/ui/accordions.md +0 -395
- package/skills/patterns/ui/cards.md +0 -299
- package/skills/patterns/ui/dropdowns.md +0 -476
- package/skills/patterns/ui/empty-states.md +0 -320
- package/skills/patterns/ui/forms.md +0 -405
- package/skills/patterns/ui/inputs.md +0 -319
- package/skills/patterns/ui/layouts.md +0 -282
- package/skills/patterns/ui/loading.md +0 -291
- package/skills/patterns/ui/modals.md +0 -338
- package/skills/patterns/ui/navigation.md +0 -374
- package/skills/patterns/ui/tables.md +0 -407
- package/skills/patterns/ui/toasts.md +0 -300
- package/skills/patterns/ui/tooltips.md +0 -396
- package/skills/patterns/utils/dates.md +0 -435
- package/skills/patterns/utils/errors.md +0 -451
- package/skills/patterns/utils/formatting.md +0 -345
- package/skills/patterns/utils/validation.md +0 -434
- package/templates/bootspring.config.js +0 -83
- package/templates/business/business-model-canvas.md +0 -246
- package/templates/business/business-plan.md +0 -266
- package/templates/business/competitive-analysis.md +0 -312
- package/templates/fundraising/data-room-checklist.md +0 -300
- package/templates/fundraising/investor-research.md +0 -243
- package/templates/fundraising/pitch-deck-outline.md +0 -253
- package/templates/legal/gdpr-checklist.md +0 -339
- package/templates/legal/privacy-policy.md +0 -285
- package/templates/legal/terms-of-service.md +0 -222
- package/templates/mcp.json +0 -9
package/core/entitlements.js
CHANGED
|
@@ -5,9 +5,22 @@
|
|
|
5
5
|
|
|
6
6
|
const LOCAL_MODE = 'local';
|
|
7
7
|
const SERVER_MODE = 'server';
|
|
8
|
-
const PRO_TIERS = new Set(['pro', 'team', 'enterprise']);
|
|
9
8
|
const policies = require('./policies');
|
|
10
9
|
|
|
10
|
+
// Use tier-enforcement for tier checking (lazy-loaded to avoid circular dependency)
|
|
11
|
+
let _tierEnforcement = null;
|
|
12
|
+
function getTierEnforcement() {
|
|
13
|
+
if (!_tierEnforcement) {
|
|
14
|
+
_tierEnforcement = require('./tier-enforcement');
|
|
15
|
+
}
|
|
16
|
+
return _tierEnforcement;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Check if tier meets pro requirement
|
|
20
|
+
function isProTier(tier) {
|
|
21
|
+
return getTierEnforcement().meetsTierRequirement('pro', tier);
|
|
22
|
+
}
|
|
23
|
+
|
|
11
24
|
function parseBoolean(value) {
|
|
12
25
|
if (typeof value === 'boolean') return value;
|
|
13
26
|
if (value === null || value === undefined) return false;
|
|
@@ -53,50 +66,108 @@ function isExternalSkill(skillId) {
|
|
|
53
66
|
return String(skillId || '').startsWith('external/');
|
|
54
67
|
}
|
|
55
68
|
|
|
69
|
+
function isPremiumPattern(skillTier) {
|
|
70
|
+
const tier = String(skillTier || 'free').toLowerCase();
|
|
71
|
+
return tier === 'pro' || tier === 'premium';
|
|
72
|
+
}
|
|
73
|
+
|
|
56
74
|
function checkSkillAccess(skillId, options = {}) {
|
|
57
75
|
const context = resolveAccessContext(options);
|
|
76
|
+
const skillTier = options.skillTier;
|
|
77
|
+
|
|
78
|
+
// External skills
|
|
79
|
+
if (isExternalSkill(skillId)) {
|
|
80
|
+
const policy = policies.getPolicyProfile(context.policyProfile, options);
|
|
81
|
+
if (!policy.allowExternalSkills) {
|
|
82
|
+
return {
|
|
83
|
+
allowed: false,
|
|
84
|
+
code: 'external_policy_blocked',
|
|
85
|
+
reason: `External skills are blocked by ${policy.id} policy profile.`,
|
|
86
|
+
context
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (context.mode !== SERVER_MODE) {
|
|
91
|
+
return {
|
|
92
|
+
allowed: true,
|
|
93
|
+
code: 'external_local_mode',
|
|
94
|
+
reason: 'External skills are enabled in local mode.',
|
|
95
|
+
context
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (context.entitled || isProTier(context.tier)) {
|
|
100
|
+
return {
|
|
101
|
+
allowed: true,
|
|
102
|
+
code: 'external_entitled',
|
|
103
|
+
reason: 'External skill access granted.',
|
|
104
|
+
context
|
|
105
|
+
};
|
|
106
|
+
}
|
|
58
107
|
|
|
59
|
-
if (!isExternalSkill(skillId)) {
|
|
60
108
|
return {
|
|
61
|
-
allowed:
|
|
62
|
-
code: '
|
|
63
|
-
reason: '
|
|
109
|
+
allowed: false,
|
|
110
|
+
code: 'external_subscription_required',
|
|
111
|
+
reason: 'External skills require entitlement in server mode. Set BOOTSPRING_SKILLS_ENTITLED=true or use tier=pro/team/enterprise.',
|
|
64
112
|
context
|
|
65
113
|
};
|
|
66
114
|
}
|
|
67
115
|
|
|
68
|
-
|
|
69
|
-
if (
|
|
116
|
+
// Local mode - all patterns accessible for development
|
|
117
|
+
if (context.mode !== SERVER_MODE) {
|
|
118
|
+
if (isPremiumPattern(skillTier)) {
|
|
119
|
+
return {
|
|
120
|
+
allowed: true,
|
|
121
|
+
code: 'premium_local_mode',
|
|
122
|
+
reason: 'Premium patterns are enabled in local mode.',
|
|
123
|
+
context
|
|
124
|
+
};
|
|
125
|
+
}
|
|
70
126
|
return {
|
|
71
|
-
allowed:
|
|
72
|
-
code: '
|
|
73
|
-
reason:
|
|
127
|
+
allowed: true,
|
|
128
|
+
code: 'free_local_mode',
|
|
129
|
+
reason: 'Patterns are enabled in local mode.',
|
|
74
130
|
context
|
|
75
131
|
};
|
|
76
132
|
}
|
|
77
133
|
|
|
78
|
-
|
|
134
|
+
// Server mode - all patterns require authentication
|
|
135
|
+
// Check if user has any entitlement (authenticated)
|
|
136
|
+
const isAuthenticated = context.entitled || context.tier !== 'free' || isProTier(context.tier);
|
|
137
|
+
|
|
138
|
+
if (!isAuthenticated) {
|
|
139
|
+
// Unauthenticated in server mode - block all patterns
|
|
79
140
|
return {
|
|
80
|
-
allowed:
|
|
81
|
-
code: '
|
|
82
|
-
reason: '
|
|
141
|
+
allowed: false,
|
|
142
|
+
code: 'authentication_required',
|
|
143
|
+
reason: 'Patterns require authentication in server mode. Sign in at bootspring.com or use BOOTSPRING_SKILLS_ENTITLED=true for development.',
|
|
83
144
|
context
|
|
84
145
|
};
|
|
85
146
|
}
|
|
86
147
|
|
|
87
|
-
|
|
148
|
+
// Authenticated - check tier for premium patterns
|
|
149
|
+
if (isPremiumPattern(skillTier)) {
|
|
150
|
+
if (isProTier(context.tier)) {
|
|
151
|
+
return {
|
|
152
|
+
allowed: true,
|
|
153
|
+
code: 'premium_entitled',
|
|
154
|
+
reason: 'Premium pattern access granted.',
|
|
155
|
+
context
|
|
156
|
+
};
|
|
157
|
+
}
|
|
88
158
|
return {
|
|
89
|
-
allowed:
|
|
90
|
-
code: '
|
|
91
|
-
reason: '
|
|
159
|
+
allowed: false,
|
|
160
|
+
code: 'premium_subscription_required',
|
|
161
|
+
reason: 'Premium pattern requires Pro subscription. Upgrade at bootspring.com/pricing.',
|
|
92
162
|
context
|
|
93
163
|
};
|
|
94
164
|
}
|
|
95
165
|
|
|
166
|
+
// Authenticated free tier user accessing free pattern
|
|
96
167
|
return {
|
|
97
|
-
allowed:
|
|
98
|
-
code: '
|
|
99
|
-
reason: '
|
|
168
|
+
allowed: true,
|
|
169
|
+
code: 'free_entitled',
|
|
170
|
+
reason: 'Free tier pattern access granted.',
|
|
100
171
|
context
|
|
101
172
|
};
|
|
102
173
|
}
|
|
@@ -157,7 +228,7 @@ function checkWorkflowAccess(workflow, options = {}) {
|
|
|
157
228
|
};
|
|
158
229
|
}
|
|
159
230
|
|
|
160
|
-
if (context.entitled ||
|
|
231
|
+
if (context.entitled || isProTier(context.tier)) {
|
|
161
232
|
return {
|
|
162
233
|
allowed: true,
|
|
163
234
|
code: 'workflow_entitled',
|