@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/agent.js
CHANGED
|
@@ -7,6 +7,55 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
const utils = require('../core/utils');
|
|
10
|
+
const telemetry = require('../core/telemetry');
|
|
11
|
+
const tierEnforcement = require('../core/tier-enforcement');
|
|
12
|
+
const api = require('../core/api-client');
|
|
13
|
+
const auth = require('../core/auth');
|
|
14
|
+
|
|
15
|
+
// Re-export AGENT_TIERS from tier-enforcement for compatibility
|
|
16
|
+
const { AGENT_TIERS, checkAgentAccess: canAccessAgent } = tierEnforcement;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Track agent invocation via telemetry
|
|
20
|
+
*/
|
|
21
|
+
function trackAgentInvocation(agentId, topic = null) {
|
|
22
|
+
try {
|
|
23
|
+
telemetry.emitEvent('agent.invoked', {
|
|
24
|
+
agent: agentId,
|
|
25
|
+
topic: topic ? topic.substring(0, 100) : null, // Truncate for privacy
|
|
26
|
+
timestamp: new Date().toISOString()
|
|
27
|
+
});
|
|
28
|
+
} catch {
|
|
29
|
+
// Telemetry should never break the command
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Fetch agent context from API (thin client model)
|
|
35
|
+
* Agent context is not bundled locally - must be fetched from API
|
|
36
|
+
* @param {string} agentId - Agent ID
|
|
37
|
+
* @returns {Promise<{context: string, name: string}|null>}
|
|
38
|
+
*/
|
|
39
|
+
async function fetchAgentContext(agentId) {
|
|
40
|
+
if (!auth.isAuthenticated()) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
try {
|
|
45
|
+
const response = await api.getAgentContext(agentId);
|
|
46
|
+
return response;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
if (error.status === 403) {
|
|
49
|
+
// Tier not sufficient - will be handled by canAccessAgent
|
|
50
|
+
return { error: 'upgrade_required', requiredTier: error.requiredTier };
|
|
51
|
+
}
|
|
52
|
+
if (error.status === 401) {
|
|
53
|
+
return { error: 'auth_required' };
|
|
54
|
+
}
|
|
55
|
+
// Network error or other issue
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
10
59
|
|
|
11
60
|
// Agent definitions - these will be loaded from agents/profiles/ in production
|
|
12
61
|
const AGENTS = {
|
|
@@ -237,6 +286,38 @@ const AGENTS = {
|
|
|
237
286
|
description: 'Specializes in authentication, Clerk, NextAuth, and session management',
|
|
238
287
|
expertise: ['Clerk', 'NextAuth', 'OAuth', 'JWT', 'Session Management', 'RBAC'],
|
|
239
288
|
triggers: ['auth', 'authentication', 'login', 'session', 'oauth', 'clerk', 'nextauth']
|
|
289
|
+
},
|
|
290
|
+
// Content Agents
|
|
291
|
+
'content-expert': {
|
|
292
|
+
name: 'Content Expert',
|
|
293
|
+
category: 'Content',
|
|
294
|
+
description: 'Expert in technical writing, documentation, blogs, marketing copy, and content strategy',
|
|
295
|
+
expertise: ['Technical Writing', 'Documentation', 'Blog Posts', 'Release Notes', 'README', 'API Docs', 'SEO', 'Content Strategy'],
|
|
296
|
+
triggers: ['content', 'writing', 'documentation', 'docs', 'blog', 'readme', 'changelog', 'copy', 'article', 'marketing']
|
|
297
|
+
},
|
|
298
|
+
// Product Agents
|
|
299
|
+
'product-expert': {
|
|
300
|
+
name: 'Product Expert',
|
|
301
|
+
category: 'Product',
|
|
302
|
+
description: 'Expert in product management, roadmapping, feature prioritization, and user research',
|
|
303
|
+
expertise: ['Product Strategy', 'Roadmapping', 'Feature Prioritization', 'User Research', 'PRDs', 'OKRs', 'Metrics', 'Product-Market Fit'],
|
|
304
|
+
triggers: ['product', 'roadmap', 'feature', 'prioritization', 'prd', 'requirements', 'user research', 'okr', 'metrics', 'backlog']
|
|
305
|
+
},
|
|
306
|
+
// Mobile Agents
|
|
307
|
+
'mobile-expert': {
|
|
308
|
+
name: 'Mobile Expert',
|
|
309
|
+
category: 'Mobile',
|
|
310
|
+
description: 'Expert in mobile development with React Native, Flutter, iOS, and Android',
|
|
311
|
+
expertise: ['React Native', 'Flutter', 'iOS', 'Android', 'Mobile Architecture', 'App Store', 'Push Notifications', 'Offline-First'],
|
|
312
|
+
triggers: ['mobile', 'react native', 'flutter', 'ios', 'android', 'app', 'native', 'swift', 'kotlin', 'expo']
|
|
313
|
+
},
|
|
314
|
+
// Infrastructure Agents
|
|
315
|
+
'infrastructure-expert': {
|
|
316
|
+
name: 'Infrastructure Expert',
|
|
317
|
+
category: 'DevOps',
|
|
318
|
+
description: 'Expert in cloud infrastructure, Terraform, Kubernetes, and DevOps practices',
|
|
319
|
+
expertise: ['AWS', 'GCP', 'Azure', 'Terraform', 'Kubernetes', 'Docker', 'CI/CD', 'Infrastructure-as-Code', 'Cloud Architecture'],
|
|
320
|
+
triggers: ['infrastructure', 'cloud', 'aws', 'gcp', 'terraform', 'kubernetes', 'k8s', 'docker', 'devops', 'iac']
|
|
240
321
|
}
|
|
241
322
|
};
|
|
242
323
|
|
|
@@ -244,9 +325,12 @@ const AGENTS = {
|
|
|
244
325
|
* List all available agents
|
|
245
326
|
*/
|
|
246
327
|
function listAgents() {
|
|
328
|
+
const userTier = tierEnforcement.getTier();
|
|
329
|
+
|
|
247
330
|
console.log(`
|
|
248
331
|
${utils.COLORS.cyan}${utils.COLORS.bold}⚡ Bootspring Agents${utils.COLORS.reset}
|
|
249
332
|
${utils.COLORS.dim}Specialized AI expertise on demand${utils.COLORS.reset}
|
|
333
|
+
${utils.COLORS.dim}Your tier: ${userTier}${utils.COLORS.reset}
|
|
250
334
|
`);
|
|
251
335
|
|
|
252
336
|
// Group by category
|
|
@@ -258,16 +342,31 @@ ${utils.COLORS.dim}Specialized AI expertise on demand${utils.COLORS.reset}
|
|
|
258
342
|
categories[agent.category].push({ id, ...agent });
|
|
259
343
|
}
|
|
260
344
|
|
|
345
|
+
let accessibleCount = 0;
|
|
346
|
+
let lockedCount = 0;
|
|
347
|
+
|
|
261
348
|
for (const [category, agents] of Object.entries(categories)) {
|
|
262
349
|
console.log(`${utils.COLORS.bold}${category}${utils.COLORS.reset}`);
|
|
263
350
|
for (const agent of agents) {
|
|
264
|
-
|
|
351
|
+
const access = canAccessAgent(agent.id);
|
|
352
|
+
const tierBadge = AGENT_TIERS[agent.id]
|
|
353
|
+
? ` ${utils.COLORS.yellow}[${AGENT_TIERS[agent.id]}]${utils.COLORS.reset}`
|
|
354
|
+
: '';
|
|
355
|
+
const lockIcon = access.allowed ? '' : ` ${utils.COLORS.red}🔒${utils.COLORS.reset}`;
|
|
356
|
+
|
|
357
|
+
if (access.allowed) {
|
|
358
|
+
accessibleCount++;
|
|
359
|
+
} else {
|
|
360
|
+
lockedCount++;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
console.log(` ${utils.COLORS.cyan}${agent.id}${utils.COLORS.reset}${tierBadge}${lockIcon}`);
|
|
265
364
|
console.log(` ${utils.COLORS.dim}${agent.description}${utils.COLORS.reset}`);
|
|
266
365
|
}
|
|
267
366
|
console.log();
|
|
268
367
|
}
|
|
269
368
|
|
|
270
|
-
utils.print.dim(`${
|
|
369
|
+
utils.print.dim(`${accessibleCount} agents available, ${lockedCount} locked`);
|
|
271
370
|
utils.print.dim('Use "bootspring agent show <name>" for details');
|
|
272
371
|
}
|
|
273
372
|
|
|
@@ -304,7 +403,7 @@ ${utils.COLORS.bold}Usage${utils.COLORS.reset}
|
|
|
304
403
|
/**
|
|
305
404
|
* Invoke an agent
|
|
306
405
|
*/
|
|
307
|
-
function invokeAgent(agentId,
|
|
406
|
+
async function invokeAgent(agentId, args) {
|
|
308
407
|
const agent = AGENTS[agentId];
|
|
309
408
|
|
|
310
409
|
if (!agent) {
|
|
@@ -313,29 +412,102 @@ function invokeAgent(agentId, _args) {
|
|
|
313
412
|
return;
|
|
314
413
|
}
|
|
315
414
|
|
|
415
|
+
// Check authentication first
|
|
416
|
+
if (!auth.isAuthenticated()) {
|
|
417
|
+
console.log(`
|
|
418
|
+
${utils.COLORS.yellow}${utils.COLORS.bold}⚡ ${agent.name}${utils.COLORS.reset}
|
|
419
|
+
${utils.COLORS.red}Authentication required${utils.COLORS.reset}
|
|
420
|
+
|
|
421
|
+
${utils.COLORS.dim}Agent context is served from the API. Please log in:${utils.COLORS.reset}
|
|
422
|
+
${utils.COLORS.cyan}bootspring auth login${utils.COLORS.reset}
|
|
423
|
+
`);
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Check tier access (client-side check for UX, server enforces)
|
|
428
|
+
const access = canAccessAgent(agentId);
|
|
429
|
+
if (!access.allowed) {
|
|
430
|
+
console.log(`
|
|
431
|
+
${utils.COLORS.yellow}${utils.COLORS.bold}⚡ ${agent.name}${utils.COLORS.reset}
|
|
432
|
+
${utils.COLORS.red}This agent requires ${access.requiredTier} tier or higher.${utils.COLORS.reset}
|
|
433
|
+
`);
|
|
434
|
+
console.log(tierEnforcement.getUpgradePrompt(agent.name, access.requiredTier));
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
const isMCP = utils.isMCPContext();
|
|
439
|
+
const parsedArgs = utils.parseArgs(args);
|
|
440
|
+
const topic = parsedArgs.topic || args.filter(a => !a.startsWith('--')).join(' ');
|
|
441
|
+
|
|
442
|
+
// Track agent invocation
|
|
443
|
+
trackAgentInvocation(agentId, topic);
|
|
444
|
+
|
|
316
445
|
console.log(`
|
|
317
446
|
${utils.COLORS.cyan}${utils.COLORS.bold}⚡ ${agent.name}${utils.COLORS.reset}
|
|
318
447
|
${utils.COLORS.dim}${agent.description}${utils.COLORS.reset}
|
|
448
|
+
`);
|
|
449
|
+
|
|
450
|
+
// Fetch agent context from API (thin client - no local content)
|
|
451
|
+
const spinner = utils.createSpinner('Loading agent context...');
|
|
452
|
+
spinner.start();
|
|
453
|
+
|
|
454
|
+
const contextResult = await fetchAgentContext(agentId);
|
|
455
|
+
|
|
456
|
+
if (!contextResult) {
|
|
457
|
+
spinner.fail('Failed to load agent context');
|
|
458
|
+
console.log(`${utils.COLORS.dim}Check your internet connection and try again.${utils.COLORS.reset}`);
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
if (contextResult.error === 'upgrade_required') {
|
|
463
|
+
spinner.fail('Upgrade required');
|
|
464
|
+
console.log(tierEnforcement.getUpgradePrompt(agent.name, contextResult.requiredTier || 'pro'));
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
if (contextResult.error === 'auth_required') {
|
|
469
|
+
spinner.fail('Authentication required');
|
|
470
|
+
console.log(`${utils.COLORS.dim}Run: bootspring auth login${utils.COLORS.reset}`);
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
spinner.succeed('Agent context loaded');
|
|
475
|
+
|
|
476
|
+
// In MCP mode, output the context for the AI to use
|
|
477
|
+
if (isMCP) {
|
|
478
|
+
console.log(`\n${utils.COLORS.bold}Agent Context:${utils.COLORS.reset}\n`);
|
|
479
|
+
console.log(contextResult.context);
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
319
482
|
|
|
320
|
-
|
|
483
|
+
// CLI mode - show context and guidance
|
|
484
|
+
console.log(`\n${utils.COLORS.bold}Agent Context:${utils.COLORS.reset}`);
|
|
485
|
+
console.log(`${utils.COLORS.dim}─────────────────────────────────────${utils.COLORS.reset}`);
|
|
321
486
|
|
|
322
|
-
|
|
323
|
-
|
|
487
|
+
// Show truncated context in CLI mode
|
|
488
|
+
const contextLines = contextResult.context.split('\n');
|
|
489
|
+
const previewLines = contextLines.slice(0, 20);
|
|
490
|
+
console.log(previewLines.join('\n'));
|
|
324
491
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
492
|
+
if (contextLines.length > 20) {
|
|
493
|
+
console.log(`\n${utils.COLORS.dim}... (${contextLines.length - 20} more lines)${utils.COLORS.reset}`);
|
|
494
|
+
}
|
|
328
495
|
|
|
329
|
-
|
|
496
|
+
console.log(`${utils.COLORS.dim}─────────────────────────────────────${utils.COLORS.reset}`);
|
|
330
497
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
498
|
+
if (topic) {
|
|
499
|
+
console.log(`\n${utils.COLORS.bold}Your topic:${utils.COLORS.reset} "${topic}"
|
|
500
|
+
${utils.COLORS.dim}Use this context with your AI assistant for the topic above.${utils.COLORS.reset}
|
|
501
|
+
`);
|
|
502
|
+
}
|
|
334
503
|
|
|
335
|
-
|
|
336
|
-
|
|
504
|
+
console.log(`
|
|
505
|
+
${utils.COLORS.bold}Usage:${utils.COLORS.reset}
|
|
506
|
+
Copy the context above and use it with your AI assistant.
|
|
337
507
|
|
|
338
|
-
${utils.COLORS.
|
|
508
|
+
${utils.COLORS.yellow}${utils.COLORS.bold}Enhanced Mode${utils.COLORS.reset}
|
|
509
|
+
${utils.COLORS.dim}With MCP integration, agents activate automatically.${utils.COLORS.reset}
|
|
510
|
+
${utils.COLORS.cyan}bootspring mcp start${utils.COLORS.reset}
|
|
339
511
|
`);
|
|
340
512
|
}
|
|
341
513
|
|
|
@@ -427,7 +599,7 @@ async function run(args) {
|
|
|
427
599
|
utils.print.dim('Usage: bootspring agent invoke <name> --topic "your question"');
|
|
428
600
|
return;
|
|
429
601
|
}
|
|
430
|
-
invokeAgent(subargs[0], subargs.slice(1));
|
|
602
|
+
await invokeAgent(subargs[0], subargs.slice(1));
|
|
431
603
|
break;
|
|
432
604
|
|
|
433
605
|
case 'search':
|