@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/session.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootspring Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the current project session context linked to bootspring.com API.
|
|
5
|
+
* This tracks which project the CLI is currently working with.
|
|
6
|
+
*
|
|
7
|
+
* @package bootspring
|
|
8
|
+
* @module core/session
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const os = require('os');
|
|
14
|
+
|
|
15
|
+
const BOOTSPRING_DIR = path.join(os.homedir(), '.bootspring');
|
|
16
|
+
const SESSION_FILE = path.join(BOOTSPRING_DIR, 'session.json');
|
|
17
|
+
const LOCAL_CONFIG_NAME = '.bootspring.json';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Ensure ~/.bootspring directory exists
|
|
21
|
+
*/
|
|
22
|
+
function ensureDir() {
|
|
23
|
+
if (!fs.existsSync(BOOTSPRING_DIR)) {
|
|
24
|
+
fs.mkdirSync(BOOTSPRING_DIR, { recursive: true, mode: 0o700 });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Get current session data
|
|
30
|
+
* @returns {object|null} Session data or null
|
|
31
|
+
*/
|
|
32
|
+
function getSession() {
|
|
33
|
+
try {
|
|
34
|
+
if (fs.existsSync(SESSION_FILE)) {
|
|
35
|
+
return JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
|
|
36
|
+
}
|
|
37
|
+
} catch {
|
|
38
|
+
// Ignore read errors
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Save session data
|
|
45
|
+
* @param {object} session - Session data
|
|
46
|
+
*/
|
|
47
|
+
function saveSession(session) {
|
|
48
|
+
ensureDir();
|
|
49
|
+
const data = {
|
|
50
|
+
...session,
|
|
51
|
+
updatedAt: new Date().toISOString()
|
|
52
|
+
};
|
|
53
|
+
fs.writeFileSync(SESSION_FILE, JSON.stringify(data, null, 2));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Clear session
|
|
58
|
+
*/
|
|
59
|
+
function clearSession() {
|
|
60
|
+
try {
|
|
61
|
+
if (fs.existsSync(SESSION_FILE)) {
|
|
62
|
+
fs.unlinkSync(SESSION_FILE);
|
|
63
|
+
}
|
|
64
|
+
} catch {
|
|
65
|
+
// Ignore delete errors
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get current project context
|
|
71
|
+
* @returns {object|null} Project context
|
|
72
|
+
*/
|
|
73
|
+
function getCurrentProject() {
|
|
74
|
+
const session = getSession();
|
|
75
|
+
return session?.project || null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Set current project context
|
|
80
|
+
* @param {object} project - Project info { id, name, slug, ... }
|
|
81
|
+
*/
|
|
82
|
+
function setCurrentProject(project) {
|
|
83
|
+
const session = getSession() || {};
|
|
84
|
+
session.project = project;
|
|
85
|
+
saveSession(session);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Get recent projects
|
|
90
|
+
* @returns {Array} Recent projects
|
|
91
|
+
*/
|
|
92
|
+
function getRecentProjects() {
|
|
93
|
+
const session = getSession();
|
|
94
|
+
return session?.recentProjects || [];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Add to recent projects
|
|
99
|
+
* @param {object} project - Project to add
|
|
100
|
+
*/
|
|
101
|
+
function addRecentProject(project) {
|
|
102
|
+
const session = getSession() || {};
|
|
103
|
+
const recent = session.recentProjects || [];
|
|
104
|
+
|
|
105
|
+
// Remove if already exists
|
|
106
|
+
const filtered = recent.filter(p => p.id !== project.id);
|
|
107
|
+
|
|
108
|
+
// Add to front
|
|
109
|
+
filtered.unshift({
|
|
110
|
+
id: project.id,
|
|
111
|
+
name: project.name,
|
|
112
|
+
slug: project.slug,
|
|
113
|
+
lastUsed: new Date().toISOString()
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Keep only last 10
|
|
117
|
+
session.recentProjects = filtered.slice(0, 10);
|
|
118
|
+
saveSession(session);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Check if a local .bootspring.json or bootspring.config.js exists in cwd or ancestors
|
|
123
|
+
* @param {string} [startDir] - Starting directory
|
|
124
|
+
* @returns {object|null} Local config or null
|
|
125
|
+
*/
|
|
126
|
+
function findLocalConfig(startDir) {
|
|
127
|
+
let dir = startDir || process.cwd();
|
|
128
|
+
|
|
129
|
+
// Walk up to 10 directories
|
|
130
|
+
for (let i = 0; i < 10; i++) {
|
|
131
|
+
// First check for .bootspring.json
|
|
132
|
+
const jsonConfigPath = path.join(dir, LOCAL_CONFIG_NAME);
|
|
133
|
+
if (fs.existsSync(jsonConfigPath)) {
|
|
134
|
+
try {
|
|
135
|
+
const config = JSON.parse(fs.readFileSync(jsonConfigPath, 'utf-8'));
|
|
136
|
+
return {
|
|
137
|
+
...config,
|
|
138
|
+
_path: jsonConfigPath,
|
|
139
|
+
_dir: dir
|
|
140
|
+
};
|
|
141
|
+
} catch {
|
|
142
|
+
// Continue to check other config files
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Also check for bootspring.config.js with projectId
|
|
147
|
+
const jsConfigPath = path.join(dir, 'bootspring.config.js');
|
|
148
|
+
if (fs.existsSync(jsConfigPath)) {
|
|
149
|
+
try {
|
|
150
|
+
// Clear require cache to get fresh config
|
|
151
|
+
delete require.cache[require.resolve(jsConfigPath)];
|
|
152
|
+
const config = require(jsConfigPath);
|
|
153
|
+
if (config.projectId) {
|
|
154
|
+
return {
|
|
155
|
+
projectId: config.projectId,
|
|
156
|
+
projectName: config.project?.name || config.name || 'Unknown',
|
|
157
|
+
projectSlug: config.project?.slug,
|
|
158
|
+
_path: jsConfigPath,
|
|
159
|
+
_dir: dir,
|
|
160
|
+
_fromJsConfig: true
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
} catch {
|
|
164
|
+
// Continue searching
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const parent = path.dirname(dir);
|
|
169
|
+
if (parent === dir) break;
|
|
170
|
+
dir = parent;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Get effective project context (local config > session)
|
|
178
|
+
* @returns {object|null} Project context
|
|
179
|
+
*/
|
|
180
|
+
function getEffectiveProject() {
|
|
181
|
+
// First check for local .bootspring.json
|
|
182
|
+
const local = findLocalConfig();
|
|
183
|
+
if (local?.projectId) {
|
|
184
|
+
return {
|
|
185
|
+
id: local.projectId,
|
|
186
|
+
name: local.projectName || 'Unknown',
|
|
187
|
+
slug: local.projectSlug,
|
|
188
|
+
source: 'local',
|
|
189
|
+
_localConfig: local
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Fall back to session
|
|
194
|
+
const sessionProject = getCurrentProject();
|
|
195
|
+
if (sessionProject) {
|
|
196
|
+
return {
|
|
197
|
+
...sessionProject,
|
|
198
|
+
source: 'session'
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Create a local .bootspring.json file
|
|
207
|
+
* @param {string} dir - Directory to create in
|
|
208
|
+
* @param {object} project - Project info
|
|
209
|
+
*/
|
|
210
|
+
function createLocalConfig(dir, project) {
|
|
211
|
+
const configPath = path.join(dir, LOCAL_CONFIG_NAME);
|
|
212
|
+
const config = {
|
|
213
|
+
projectId: project.id,
|
|
214
|
+
projectName: project.name,
|
|
215
|
+
projectSlug: project.slug,
|
|
216
|
+
createdAt: new Date().toISOString()
|
|
217
|
+
};
|
|
218
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
219
|
+
return configPath;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get full session state for display
|
|
224
|
+
* @returns {object} Session state
|
|
225
|
+
*/
|
|
226
|
+
function getSessionState() {
|
|
227
|
+
const session = getSession();
|
|
228
|
+
const effective = getEffectiveProject();
|
|
229
|
+
const local = findLocalConfig();
|
|
230
|
+
|
|
231
|
+
return {
|
|
232
|
+
hasSession: !!session,
|
|
233
|
+
project: effective,
|
|
234
|
+
source: effective?.source || null,
|
|
235
|
+
hasLocalConfig: !!local,
|
|
236
|
+
localConfigPath: local?._path,
|
|
237
|
+
recentProjects: session?.recentProjects || [],
|
|
238
|
+
lastUpdated: session?.updatedAt || null
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
module.exports = {
|
|
243
|
+
BOOTSPRING_DIR,
|
|
244
|
+
SESSION_FILE,
|
|
245
|
+
LOCAL_CONFIG_NAME,
|
|
246
|
+
ensureDir,
|
|
247
|
+
getSession,
|
|
248
|
+
saveSession,
|
|
249
|
+
clearSession,
|
|
250
|
+
getCurrentProject,
|
|
251
|
+
setCurrentProject,
|
|
252
|
+
getRecentProjects,
|
|
253
|
+
addRecentProject,
|
|
254
|
+
findLocalConfig,
|
|
255
|
+
getEffectiveProject,
|
|
256
|
+
createLocalConfig,
|
|
257
|
+
getSessionState
|
|
258
|
+
};
|