@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/cli/legal.js
CHANGED
|
@@ -9,11 +9,8 @@
|
|
|
9
9
|
const fs = require('fs');
|
|
10
10
|
const path = require('path');
|
|
11
11
|
const utils = require('../core/utils');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* Template directory
|
|
15
|
-
*/
|
|
16
|
-
const TEMPLATES_DIR = path.join(__dirname, '..', 'templates', 'legal');
|
|
12
|
+
const api = require('../core/api-client');
|
|
13
|
+
const auth = require('../core/auth');
|
|
17
14
|
|
|
18
15
|
/**
|
|
19
16
|
* Output directory for legal docs
|
|
@@ -72,18 +69,43 @@ function processTemplate(content, config) {
|
|
|
72
69
|
.replace(/\{\{DOMAIN\}\}/g, config.domain || 'example.com');
|
|
73
70
|
}
|
|
74
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Fetch template content from API
|
|
74
|
+
*/
|
|
75
|
+
async function fetchTemplate(templateFile) {
|
|
76
|
+
if (!auth.isAuthenticated()) {
|
|
77
|
+
return { error: 'auth_required' };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
const response = await api.getTemplate('legal', templateFile);
|
|
82
|
+
return response;
|
|
83
|
+
} catch (error) {
|
|
84
|
+
if (error.status === 401) {
|
|
85
|
+
return { error: 'auth_required' };
|
|
86
|
+
}
|
|
87
|
+
if (error.status === 403) {
|
|
88
|
+
return { error: 'upgrade_required' };
|
|
89
|
+
}
|
|
90
|
+
return { error: 'network_error', message: error.message };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
75
94
|
/**
|
|
76
95
|
* Initialize legal docs
|
|
77
96
|
*/
|
|
78
|
-
function legalInit() {
|
|
97
|
+
async function legalInit() {
|
|
79
98
|
console.log(`
|
|
80
99
|
${utils.COLORS.cyan}${utils.COLORS.bold}⚡ Legal Documents${utils.COLORS.reset}
|
|
81
|
-
${utils.COLORS.dim}Initialize legal and compliance
|
|
100
|
+
${utils.COLORS.dim}Initialize legal documents and compliance checklists${utils.COLORS.reset}
|
|
82
101
|
`);
|
|
83
102
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
103
|
+
// Check authentication
|
|
104
|
+
if (!auth.isAuthenticated()) {
|
|
105
|
+
utils.print.error('Authentication required');
|
|
106
|
+
console.log(`${utils.COLORS.dim}Run: bootspring auth login${utils.COLORS.reset}`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
87
109
|
|
|
88
110
|
const config = getProjectConfig();
|
|
89
111
|
const outputDir = path.join(process.cwd(), OUTPUT_DIR);
|
|
@@ -95,8 +117,12 @@ ${utils.COLORS.dim}Initialize legal and compliance documents${utils.COLORS.reset
|
|
|
95
117
|
|
|
96
118
|
const created = [];
|
|
97
119
|
const skipped = [];
|
|
120
|
+
const failed = [];
|
|
121
|
+
|
|
122
|
+
const spinner = utils.createSpinner('Loading templates...');
|
|
123
|
+
spinner.start();
|
|
98
124
|
|
|
99
|
-
// Create all templates
|
|
125
|
+
// Create all legal templates
|
|
100
126
|
for (const [key, template] of Object.entries(TEMPLATES)) {
|
|
101
127
|
const outputPath = path.join(outputDir, template.output);
|
|
102
128
|
|
|
@@ -105,15 +131,20 @@ ${utils.COLORS.dim}Initialize legal and compliance documents${utils.COLORS.reset
|
|
|
105
131
|
continue;
|
|
106
132
|
}
|
|
107
133
|
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
created.push(template.name);
|
|
134
|
+
const result = await fetchTemplate(template.file);
|
|
135
|
+
|
|
136
|
+
if (result.error) {
|
|
137
|
+
failed.push({ name: template.name, error: result.error });
|
|
138
|
+
continue;
|
|
114
139
|
}
|
|
140
|
+
|
|
141
|
+
const processed = processTemplate(result.content, config);
|
|
142
|
+
fs.writeFileSync(outputPath, processed);
|
|
143
|
+
created.push(template.name);
|
|
115
144
|
}
|
|
116
145
|
|
|
146
|
+
spinner.stop();
|
|
147
|
+
|
|
117
148
|
if (created.length > 0) {
|
|
118
149
|
console.log(`${utils.COLORS.bold}Created:${utils.COLORS.reset}`);
|
|
119
150
|
for (const name of created) {
|
|
@@ -130,56 +161,27 @@ ${utils.COLORS.dim}Initialize legal and compliance documents${utils.COLORS.reset
|
|
|
130
161
|
console.log();
|
|
131
162
|
}
|
|
132
163
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
## Important Disclaimer
|
|
141
|
-
|
|
142
|
-
**These templates are for informational purposes only and do not constitute legal advice.**
|
|
143
|
-
|
|
144
|
-
Before using any of these documents:
|
|
145
|
-
1. Review them carefully
|
|
146
|
-
2. Customize for your specific needs
|
|
147
|
-
3. Have them reviewed by a qualified attorney
|
|
148
|
-
4. Update them regularly as laws and your business change
|
|
149
|
-
|
|
150
|
-
## Contents
|
|
151
|
-
|
|
152
|
-
- \`TERMS_OF_SERVICE.md\` - Terms of service for your website/app
|
|
153
|
-
- \`PRIVACY_POLICY.md\` - Privacy policy with GDPR/CCPA considerations
|
|
154
|
-
- \`GDPR_CHECKLIST.md\` - GDPR compliance requirements checklist
|
|
155
|
-
|
|
156
|
-
## Next Steps
|
|
157
|
-
|
|
158
|
-
1. Edit each document for your specific business
|
|
159
|
-
2. Consult with legal counsel
|
|
160
|
-
3. Publish on your website
|
|
161
|
-
4. Link from footer/signup flows
|
|
162
|
-
5. Review and update periodically
|
|
163
|
-
|
|
164
|
-
## Resources
|
|
165
|
-
|
|
166
|
-
- [GDPR Official Text](https://gdpr-info.eu/)
|
|
167
|
-
- [CCPA Official Text](https://oag.ca.gov/privacy/ccpa)
|
|
168
|
-
- [FTC Privacy Guidelines](https://www.ftc.gov/business-guidance/privacy-security)
|
|
169
|
-
`);
|
|
164
|
+
if (failed.length > 0) {
|
|
165
|
+
console.log(`${utils.COLORS.bold}Failed:${utils.COLORS.reset}`);
|
|
166
|
+
for (const { name, error } of failed) {
|
|
167
|
+
console.log(` ${utils.COLORS.red}✗${utils.COLORS.reset} ${name} (${error})`);
|
|
168
|
+
}
|
|
169
|
+
console.log();
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
console.log(`${utils.COLORS.bold}
|
|
173
|
-
console.log(
|
|
174
|
-
|
|
175
|
-
console.log(
|
|
176
|
-
console.log(
|
|
172
|
+
console.log(`${utils.COLORS.yellow}${utils.COLORS.bold}⚠ Disclaimer${utils.COLORS.reset}`);
|
|
173
|
+
console.log(`${utils.COLORS.dim}These templates are for guidance only. Consult a lawyer for your specific needs.${utils.COLORS.reset}`);
|
|
174
|
+
|
|
175
|
+
console.log(`\n${utils.COLORS.bold}Next Steps:${utils.COLORS.reset}`);
|
|
176
|
+
console.log(' 1. Edit templates with your company information');
|
|
177
|
+
console.log(` 2. Run ${utils.COLORS.cyan}bootspring agent invoke legal-expert${utils.COLORS.reset} for guidance`);
|
|
178
|
+
console.log(' 3. Have documents reviewed by legal counsel');
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
/**
|
|
180
182
|
* Create a specific legal document
|
|
181
183
|
*/
|
|
182
|
-
function legalCreate(templateKey) {
|
|
184
|
+
async function legalCreate(templateKey) {
|
|
183
185
|
const template = TEMPLATES[templateKey];
|
|
184
186
|
|
|
185
187
|
if (!template) {
|
|
@@ -193,7 +195,12 @@ ${utils.COLORS.cyan}${utils.COLORS.bold}⚡ ${template.name}${utils.COLORS.reset
|
|
|
193
195
|
${utils.COLORS.dim}${template.description}${utils.COLORS.reset}
|
|
194
196
|
`);
|
|
195
197
|
|
|
196
|
-
|
|
198
|
+
// Check authentication
|
|
199
|
+
if (!auth.isAuthenticated()) {
|
|
200
|
+
utils.print.error('Authentication required');
|
|
201
|
+
console.log(`${utils.COLORS.dim}Run: bootspring auth login${utils.COLORS.reset}`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
197
204
|
|
|
198
205
|
const config = getProjectConfig();
|
|
199
206
|
const outputDir = path.join(process.cwd(), OUTPUT_DIR);
|
|
@@ -210,22 +217,40 @@ ${utils.COLORS.dim}${template.description}${utils.COLORS.reset}
|
|
|
210
217
|
return;
|
|
211
218
|
}
|
|
212
219
|
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
220
|
+
const spinner = utils.createSpinner('Loading template...');
|
|
221
|
+
spinner.start();
|
|
222
|
+
|
|
223
|
+
const result = await fetchTemplate(template.file);
|
|
224
|
+
|
|
225
|
+
if (result.error === 'auth_required') {
|
|
226
|
+
spinner.fail('Authentication required');
|
|
227
|
+
console.log(`${utils.COLORS.dim}Run: bootspring auth login${utils.COLORS.reset}`);
|
|
216
228
|
return;
|
|
217
229
|
}
|
|
218
230
|
|
|
219
|
-
|
|
220
|
-
|
|
231
|
+
if (result.error === 'upgrade_required') {
|
|
232
|
+
spinner.fail('Upgrade required');
|
|
233
|
+
console.log(`${utils.COLORS.dim}This template requires a Pro subscription.${utils.COLORS.reset}`);
|
|
234
|
+
console.log(`${utils.COLORS.dim}Run: bootspring billing upgrade${utils.COLORS.reset}`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (result.error) {
|
|
239
|
+
spinner.fail('Failed to load template');
|
|
240
|
+
console.log(`${utils.COLORS.dim}${result.message || 'Check your internet connection.'}${utils.COLORS.reset}`);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
spinner.succeed('Template loaded');
|
|
245
|
+
|
|
246
|
+
const processed = processTemplate(result.content, config);
|
|
221
247
|
fs.writeFileSync(outputPath, processed);
|
|
222
248
|
|
|
223
249
|
utils.print.success(`Created ${template.name}`);
|
|
224
250
|
console.log(`\nFile: ${utils.COLORS.cyan}${OUTPUT_DIR}/${template.output}${utils.COLORS.reset}`);
|
|
225
|
-
|
|
226
|
-
console.log(
|
|
227
|
-
console.log(
|
|
228
|
-
console.log(` 3. Publish on your website`);
|
|
251
|
+
|
|
252
|
+
console.log(`\n${utils.COLORS.yellow}${utils.COLORS.bold}⚠ Disclaimer${utils.COLORS.reset}`);
|
|
253
|
+
console.log(`${utils.COLORS.dim}This template is for guidance only. Consult a lawyer.${utils.COLORS.reset}`);
|
|
229
254
|
}
|
|
230
255
|
|
|
231
256
|
/**
|
|
@@ -238,7 +263,7 @@ ${utils.COLORS.cyan}${utils.COLORS.bold}⚡ Legal Documents Status${utils.COLORS
|
|
|
238
263
|
|
|
239
264
|
const outputDir = path.join(process.cwd(), OUTPUT_DIR);
|
|
240
265
|
let found = 0;
|
|
241
|
-
|
|
266
|
+
const total = Object.keys(TEMPLATES).length;
|
|
242
267
|
|
|
243
268
|
for (const [key, template] of Object.entries(TEMPLATES)) {
|
|
244
269
|
const outputPath = path.join(outputDir, template.output);
|
|
@@ -265,13 +290,6 @@ ${utils.COLORS.cyan}${utils.COLORS.bold}⚡ Legal Documents Status${utils.COLORS
|
|
|
265
290
|
console.log(`\n${utils.COLORS.bold}Create Missing:${utils.COLORS.reset}`);
|
|
266
291
|
console.log(` ${utils.COLORS.cyan}bootspring legal init${utils.COLORS.reset} - Create all documents`);
|
|
267
292
|
}
|
|
268
|
-
|
|
269
|
-
// Check for common compliance issues
|
|
270
|
-
console.log(`\n${utils.COLORS.bold}Compliance Reminders:${utils.COLORS.reset}`);
|
|
271
|
-
console.log(` ${utils.COLORS.dim}● Link Terms & Privacy from website footer${utils.COLORS.reset}`);
|
|
272
|
-
console.log(` ${utils.COLORS.dim}● Display cookie consent banner if using cookies${utils.COLORS.reset}`);
|
|
273
|
-
console.log(` ${utils.COLORS.dim}● Include opt-in checkbox on signup forms${utils.COLORS.reset}`);
|
|
274
|
-
console.log(` ${utils.COLORS.dim}● Review documents annually or when laws change${utils.COLORS.reset}`);
|
|
275
293
|
}
|
|
276
294
|
|
|
277
295
|
/**
|
|
@@ -319,8 +337,6 @@ function showHelp() {
|
|
|
319
337
|
${utils.COLORS.cyan}${utils.COLORS.bold}⚡ Bootspring Legal${utils.COLORS.reset}
|
|
320
338
|
${utils.COLORS.dim}Legal documents and compliance tools${utils.COLORS.reset}
|
|
321
339
|
|
|
322
|
-
${utils.COLORS.yellow}⚠ DISCLAIMER: Templates do not constitute legal advice.${utils.COLORS.reset}
|
|
323
|
-
|
|
324
340
|
${utils.COLORS.bold}Usage:${utils.COLORS.reset}
|
|
325
341
|
bootspring legal <command> [options]
|
|
326
342
|
|
|
@@ -338,18 +354,14 @@ ${utils.COLORS.bold}Examples:${utils.COLORS.reset}
|
|
|
338
354
|
bootspring legal privacy # Create privacy policy
|
|
339
355
|
bootspring legal gdpr # Create GDPR checklist
|
|
340
356
|
bootspring legal status # Check progress
|
|
341
|
-
|
|
342
|
-
${utils.COLORS.bold}Compliance Workflow:${utils.COLORS.reset}
|
|
343
|
-
1. ${utils.COLORS.cyan}bootspring legal init${utils.COLORS.reset} Generate templates
|
|
344
|
-
2. Review and customize each document
|
|
345
|
-
3. Work through GDPR checklist
|
|
346
|
-
4. ${utils.COLORS.yellow}Have attorney review before publishing${utils.COLORS.reset}
|
|
347
|
-
5. Link from website footer
|
|
348
|
-
6. Add cookie consent if needed
|
|
349
|
-
7. Review annually
|
|
357
|
+
bootspring legal show terms # Preview terms of service
|
|
350
358
|
|
|
351
359
|
${utils.COLORS.bold}Related Agent:${utils.COLORS.reset}
|
|
352
|
-
${utils.COLORS.cyan}legal-expert${utils.COLORS.reset}
|
|
360
|
+
${utils.COLORS.cyan}legal-expert${utils.COLORS.reset} Contracts, compliance, and legal guidance
|
|
361
|
+
|
|
362
|
+
${utils.COLORS.yellow}${utils.COLORS.bold}Disclaimer:${utils.COLORS.reset}
|
|
363
|
+
${utils.COLORS.dim}These templates are for guidance only. Always consult with a qualified
|
|
364
|
+
attorney for your specific legal needs and jurisdiction.${utils.COLORS.reset}
|
|
353
365
|
`);
|
|
354
366
|
}
|
|
355
367
|
|
|
@@ -361,20 +373,20 @@ async function run(args) {
|
|
|
361
373
|
|
|
362
374
|
switch (subcommand) {
|
|
363
375
|
case 'init':
|
|
364
|
-
legalInit();
|
|
376
|
+
await legalInit();
|
|
365
377
|
break;
|
|
366
378
|
|
|
367
379
|
case 'terms':
|
|
368
380
|
case 'tos':
|
|
369
|
-
legalCreate('terms');
|
|
381
|
+
await legalCreate('terms');
|
|
370
382
|
break;
|
|
371
383
|
|
|
372
384
|
case 'privacy':
|
|
373
|
-
legalCreate('privacy');
|
|
385
|
+
await legalCreate('privacy');
|
|
374
386
|
break;
|
|
375
387
|
|
|
376
388
|
case 'gdpr':
|
|
377
|
-
legalCreate('gdpr');
|
|
389
|
+
await legalCreate('gdpr');
|
|
378
390
|
break;
|
|
379
391
|
|
|
380
392
|
case 'status':
|
|
@@ -399,7 +411,7 @@ async function run(args) {
|
|
|
399
411
|
default:
|
|
400
412
|
// Check if it's a template name
|
|
401
413
|
if (TEMPLATES[subcommand]) {
|
|
402
|
-
legalCreate(subcommand);
|
|
414
|
+
await legalCreate(subcommand);
|
|
403
415
|
} else {
|
|
404
416
|
utils.print.error(`Unknown subcommand: ${subcommand}`);
|
|
405
417
|
showHelp();
|
package/cli/log.js
CHANGED
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* @command log
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const _path = require('path');
|
|
17
17
|
const actionRecorder = require('../core/action-recorder');
|
|
18
18
|
const utils = require('../core/utils');
|
|
19
|
-
const
|
|
19
|
+
const _config = require('../core/config');
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Run log command
|