@hongmaple0820/scale-engine 0.46.0 → 0.48.0

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.
Files changed (83) hide show
  1. package/README.en.md +8 -2
  2. package/README.md +9 -3
  3. package/dist/api/cli.js +977 -6096
  4. package/dist/api/cli.js.map +1 -1
  5. package/dist/api/onboard.d.ts +34 -0
  6. package/dist/api/onboard.js +192 -0
  7. package/dist/api/onboard.js.map +1 -0
  8. package/dist/api/quickstart.js +1 -0
  9. package/dist/api/quickstart.js.map +1 -1
  10. package/dist/cli/artifactCrudCommands.d.ts +67 -0
  11. package/dist/cli/artifactCrudCommands.js +182 -0
  12. package/dist/cli/artifactCrudCommands.js.map +1 -0
  13. package/dist/cli/codegraphCommands.d.ts +1 -0
  14. package/dist/cli/codegraphCommands.js +241 -0
  15. package/dist/cli/codegraphCommands.js.map +1 -0
  16. package/dist/cli/contextCommands.d.ts +1 -0
  17. package/dist/cli/contextCommands.js +415 -0
  18. package/dist/cli/contextCommands.js.map +1 -0
  19. package/dist/cli/dependencyTddCommands.d.ts +92 -0
  20. package/dist/cli/dependencyTddCommands.js +174 -0
  21. package/dist/cli/dependencyTddCommands.js.map +1 -0
  22. package/dist/cli/diagnoseHuntCommands.d.ts +135 -0
  23. package/dist/cli/diagnoseHuntCommands.js +224 -0
  24. package/dist/cli/diagnoseHuntCommands.js.map +1 -0
  25. package/dist/cli/engineBootstrap.d.ts +39 -0
  26. package/dist/cli/engineBootstrap.js +129 -0
  27. package/dist/cli/engineBootstrap.js.map +1 -0
  28. package/dist/cli/evalCommands.d.ts +1 -0
  29. package/dist/cli/evalCommands.js +262 -0
  30. package/dist/cli/evalCommands.js.map +1 -0
  31. package/dist/cli/evolveDoctorCommands.d.ts +18 -0
  32. package/dist/cli/evolveDoctorCommands.js +59 -0
  33. package/dist/cli/evolveDoctorCommands.js.map +1 -0
  34. package/dist/cli/gateInlineCommands.d.ts +43 -0
  35. package/dist/cli/gateInlineCommands.js +74 -0
  36. package/dist/cli/gateInlineCommands.js.map +1 -0
  37. package/dist/cli/initConfigCommands.d.ts +138 -0
  38. package/dist/cli/initConfigCommands.js +602 -0
  39. package/dist/cli/initConfigCommands.js.map +1 -0
  40. package/dist/cli/metaGovernanceCommands.d.ts +11 -0
  41. package/dist/cli/metaGovernanceCommands.js +55 -0
  42. package/dist/cli/metaGovernanceCommands.js.map +1 -0
  43. package/dist/cli/onboardCommands.d.ts +22 -0
  44. package/dist/cli/onboardCommands.js +42 -0
  45. package/dist/cli/onboardCommands.js.map +1 -0
  46. package/dist/cli/runtimeSkillCommands.d.ts +6 -0
  47. package/dist/cli/runtimeSkillCommands.js +1515 -0
  48. package/dist/cli/runtimeSkillCommands.js.map +1 -0
  49. package/dist/cli/sessionCommands.d.ts +17 -0
  50. package/dist/cli/sessionCommands.js +38 -0
  51. package/dist/cli/sessionCommands.js.map +1 -0
  52. package/dist/cli/toolAgentCommands.d.ts +3 -0
  53. package/dist/cli/toolAgentCommands.js +441 -0
  54. package/dist/cli/toolAgentCommands.js.map +1 -0
  55. package/dist/cli/transitionCommands.d.ts +62 -0
  56. package/dist/cli/transitionCommands.js +174 -0
  57. package/dist/cli/transitionCommands.js.map +1 -0
  58. package/dist/cli/upgradeAssetsCommands.d.ts +44 -0
  59. package/dist/cli/upgradeAssetsCommands.js +933 -0
  60. package/dist/cli/upgradeAssetsCommands.js.map +1 -0
  61. package/dist/cli/workflowEvidenceCommands.d.ts +34 -0
  62. package/dist/cli/workflowEvidenceCommands.js +130 -0
  63. package/dist/cli/workflowEvidenceCommands.js.map +1 -0
  64. package/dist/skills/ExternalSkills.js +4 -0
  65. package/dist/skills/ExternalSkills.js.map +1 -1
  66. package/dist/skills/SkillInstaller.js +4 -0
  67. package/dist/skills/SkillInstaller.js.map +1 -1
  68. package/dist/version.d.ts +1 -1
  69. package/dist/version.js +1 -1
  70. package/dist/workflow/GateCatalog.d.ts +2 -1
  71. package/dist/workflow/GateCatalog.js +6 -2
  72. package/dist/workflow/GateCatalog.js.map +1 -1
  73. package/dist/workflow/UpgradeManager.d.ts +25 -0
  74. package/dist/workflow/UpgradeManager.js +81 -0
  75. package/dist/workflow/UpgradeManager.js.map +1 -1
  76. package/dist/workflow/gates/EnhancedGates.js +49 -4
  77. package/dist/workflow/gates/EnhancedGates.js.map +1 -1
  78. package/dist/workflow/gates/MetaGovernanceGates.js +42 -5
  79. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
  80. package/docs/guides/FAST_COMMIT_GUIDE.md +136 -0
  81. package/docs/guides/LEARNING_PATH.md +237 -0
  82. package/docs/guides/UPGRADE_AUTOMATION.md +199 -0
  83. package/package.json +2 -1
@@ -0,0 +1,415 @@
1
+ // SCALE Engine — Context Commands
2
+ // Extracted from src/api/cli.ts (lines 441–829)
3
+ import { defineCommand } from 'citty';
4
+ import { join, resolve } from 'node:path';
5
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
6
+ import { writeContextGovernanceTemplates, analyzeContextGovernance, renderContextGrillPrompt, } from '../workflow/ContextGovernance.js';
7
+ import { appendContextGrillArtifact } from '../workflow/TaskArtifactScaffolder.js';
8
+ import { buildContextPack, doctorContextBudget, scanContextBudget, writeContextBudgetReport, } from '../context/ContextBudget.js';
9
+ import { resolvePromptCachePolicy } from '../routing/PromptCachePolicy.js';
10
+ import { ProjectAnatomy } from '../context/ProjectAnatomy.js';
11
+ import { WorkflowArtifactWriter } from '../workflow/WorkflowArtifactWriter.js';
12
+ import { removeWorkflowOpenTask } from '../workflow/WorkflowOpenTasks.js';
13
+ import { getEngine, SCALE_DIR, PROJECT_DIR, isTruthyFlag, resolveScaleDirForProject, ensureDir, } from './engineBootstrap.js';
14
+ // ---------------------------------------------------------------------------
15
+ // Helpers
16
+ // ---------------------------------------------------------------------------
17
+ function parseCommaList(value) {
18
+ const raw = String(value ?? '').trim();
19
+ if (!raw)
20
+ return [];
21
+ return raw.split(',').map(item => item.trim()).filter(Boolean);
22
+ }
23
+ function parsePositiveIntArg(value, name) {
24
+ if (value === undefined || value === null || value === '')
25
+ return undefined;
26
+ const parsed = Number.parseInt(String(value), 10);
27
+ if (Number.isNaN(parsed) || parsed <= 0) {
28
+ throw new Error(`${name} must be a positive integer.`);
29
+ }
30
+ return parsed;
31
+ }
32
+ function formatContextSummary(ctx) {
33
+ const lines = [];
34
+ if (ctx.artifacts.length === 0) {
35
+ lines.push('No active artifacts for this session.');
36
+ }
37
+ else {
38
+ lines.push(`Active artifacts: ${ctx.artifacts.length}`);
39
+ for (const a of ctx.artifacts) {
40
+ const blocked = a.blockingReasons.length > 0 ? ' [BLOCKED]' : '';
41
+ lines.push(` ${a.artifactId} (${a.artifactType}): ${a.currentStatus}${blocked}`);
42
+ }
43
+ }
44
+ if (ctx.recommendations.length > 0) {
45
+ lines.push('Recommendations:');
46
+ for (const r of ctx.recommendations) {
47
+ lines.push(` ${r}`);
48
+ }
49
+ }
50
+ return lines.join('\n');
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // Sub-commands
54
+ // ---------------------------------------------------------------------------
55
+ const contextBuild = defineCommand({
56
+ meta: { name: 'build', description: 'Build context for current task' },
57
+ args: {
58
+ 'session-id': { type: 'string', required: true },
59
+ 'artifact-id': { type: 'string' },
60
+ role: { type: 'string' },
61
+ },
62
+ async run({ args }) {
63
+ const { ctx } = getEngine();
64
+ const result = await ctx.build({
65
+ sessionId: args['session-id'],
66
+ roleId: args.role,
67
+ currentArtifactId: args['artifact-id'],
68
+ });
69
+ console.log(JSON.stringify(result, null, 2));
70
+ },
71
+ });
72
+ const contextStatus = defineCommand({
73
+ meta: { name: 'status', description: 'Show session context status' },
74
+ args: {
75
+ 'session-id': { type: 'string', required: true },
76
+ },
77
+ async run({ args }) {
78
+ const { ctx, roleGate } = getEngine();
79
+ const status = await ctx.getStatus(args['session-id'], roleGate);
80
+ console.log(JSON.stringify(status, null, 2));
81
+ },
82
+ });
83
+ const contextInject = defineCommand({
84
+ meta: { name: 'inject', description: 'Inject FSM context for SessionStart hook' },
85
+ args: {
86
+ 'session-id': { type: 'string', required: true },
87
+ },
88
+ async run({ args }) {
89
+ const { eventBus, kb, fsmAgentBridge } = getEngine();
90
+ // Get FSM context for all session artifacts
91
+ const fsmContext = await fsmAgentBridge.getSessionContext(args['session-id'], eventBus);
92
+ // Recall relevant lessons based on artifact types
93
+ const artifactTypes = fsmContext.artifacts.map(a => a.artifactType);
94
+ if (artifactTypes.length > 0) {
95
+ const lessons = await kb.recall({ type: 'lesson', limit: 5 });
96
+ fsmContext.recalledLessons = lessons.map(l => `${l.id}: ${l.title} (${l.tags.join(',')})`);
97
+ }
98
+ // Output formatted context for Agent to read
99
+ const output = {
100
+ sessionId: fsmContext.sessionId,
101
+ generatedAt: fsmContext.generatedAt,
102
+ artifacts: fsmContext.artifacts.map(a => ({
103
+ id: a.artifactId,
104
+ type: a.artifactType,
105
+ status: a.currentStatus,
106
+ allowedActions: a.allowedTransitions,
107
+ blocked: a.blockingReasons.length > 0 ? a.blockingReasons : null,
108
+ })),
109
+ lessons: fsmContext.recalledLessons,
110
+ recommendations: fsmContext.recommendations,
111
+ // Human-readable summary
112
+ summary: formatContextSummary(fsmContext),
113
+ };
114
+ console.log(JSON.stringify(output, null, 2));
115
+ },
116
+ });
117
+ const contextGlossary = defineCommand({
118
+ meta: { name: 'glossary', description: 'Show project domain glossary (借鉴 mattpocock/skills CONTEXT.md)' },
119
+ args: {
120
+ json: { type: 'boolean', default: false, description: 'JSON output' },
121
+ },
122
+ run({ args }) {
123
+ const glossaryPath = join(SCALE_DIR, 'GLOSSARY.md');
124
+ if (!existsSync(glossaryPath)) {
125
+ if (args.json)
126
+ console.log(JSON.stringify({ ok: false, message: 'GLOSSARY.md not found in SCALE_DIR. Run scale init to generate it.' }));
127
+ else
128
+ console.log('GLOSSARY.md not found. Run scale init to generate it.');
129
+ return;
130
+ }
131
+ const content = readFileSync(glossaryPath, 'utf-8');
132
+ // Parse terms: **Term**: definition
133
+ const termMatch = /\*\*(\w[^*]+)\*\*\s*:\s*(.+)/g;
134
+ const terms = {};
135
+ let m;
136
+ while ((m = termMatch.exec(content)) !== null) {
137
+ terms[m[1].trim()] = m[2].trim().replace(/_Avoid_/, 'Avoid:');
138
+ }
139
+ // Parse relationships
140
+ const relSection = content.split('## Relationships')[1]?.split('## ')[0] ?? '';
141
+ const relationships = relSection.split('\n').filter((l) => l.trim().startsWith('- ')).map((l) => l.replace(/^- /, '').trim());
142
+ if (args.json) {
143
+ console.log(JSON.stringify({ ok: true, terms, relationships, count: Object.keys(terms).length }));
144
+ }
145
+ else {
146
+ console.log('=== SCALE Engine Domain Glossary ===\n');
147
+ console.log(`Terms (${Object.keys(terms).length}):\n`);
148
+ for (const [term, def] of Object.entries(terms)) {
149
+ console.log(` **${term}**: ${def}`);
150
+ }
151
+ if (relationships.length > 0) {
152
+ console.log(`\nRelationships (${relationships.length}):`);
153
+ for (const rel of relationships) {
154
+ console.log(` - ${rel}`);
155
+ }
156
+ }
157
+ }
158
+ },
159
+ });
160
+ const contextInit = defineCommand({
161
+ meta: { name: 'init', description: 'Create CONTEXT.md and CONTEXT-MAP.md starter templates' },
162
+ args: {
163
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
164
+ name: { type: 'string', description: 'Project display name' },
165
+ force: { type: 'boolean', default: false, description: 'Overwrite existing templates' },
166
+ json: { type: 'boolean', default: false },
167
+ },
168
+ run({ args }) {
169
+ const result = writeContextGovernanceTemplates({
170
+ projectDir: resolve(String(args.dir ?? PROJECT_DIR)),
171
+ projectName: args.name ? String(args.name) : undefined,
172
+ force: isTruthyFlag(args.force),
173
+ });
174
+ if (args.json) {
175
+ console.log(JSON.stringify(result, null, 2));
176
+ return;
177
+ }
178
+ console.log('\nSCALE Context Templates');
179
+ for (const file of result.created)
180
+ console.log(` [CREATED] ${file}`);
181
+ for (const file of result.skipped)
182
+ console.log(` [SKIPPED] ${file}`);
183
+ },
184
+ });
185
+ const contextGrill = defineCommand({
186
+ meta: { name: 'grill', description: 'Check project context docs and generate request-specific grill questions' },
187
+ args: {
188
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
189
+ 'task-id': { type: 'string', description: 'Task id for workflow state and artifact linkage' },
190
+ task: { type: 'string', required: true, description: 'Task or requirement description' },
191
+ files: { type: 'string', description: 'Comma-separated changed or target files' },
192
+ 'artifact-dir': { type: 'string', description: 'Task artifact directory where explore.md should be updated' },
193
+ write: { type: 'boolean', default: false, description: 'Append context grill output to the task explore artifact' },
194
+ json: { type: 'boolean', default: false },
195
+ },
196
+ run({ args }) {
197
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
198
+ const taskId = String(args['task-id'] ?? `context-${Date.now()}`);
199
+ const changedFiles = parseCommaList(args.files);
200
+ const report = analyzeContextGovernance({
201
+ projectDir,
202
+ request: String(args.task ?? ''),
203
+ changedFiles,
204
+ });
205
+ const artifactPath = isTruthyFlag(args.write)
206
+ ? appendContextGrillArtifact({
207
+ projectDir,
208
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']) : undefined,
209
+ report,
210
+ }) ?? undefined
211
+ : undefined;
212
+ if (args['task-id'] || artifactPath) {
213
+ const writer = new WorkflowArtifactWriter(SCALE_DIR);
214
+ const current = writer.readCurrentState();
215
+ const currentOpenTasks = current?.taskId === taskId ? current.openTasks : [];
216
+ writer.updateCurrentState({
217
+ taskId,
218
+ phase: 'explore',
219
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']).replace(/\\/g, '/') : undefined,
220
+ exploredFiles: changedFiles,
221
+ fileCount: changedFiles.length,
222
+ mainContradiction: report.findings[0]?.message ?? 'context governance ready',
223
+ openTasks: removeWorkflowOpenTask(currentOpenTasks, 'context-grill'),
224
+ });
225
+ }
226
+ if (args.json) {
227
+ console.log(JSON.stringify({ ...report, artifactPath }, null, 2));
228
+ return;
229
+ }
230
+ console.log(renderContextGrillPrompt(report));
231
+ if (artifactPath)
232
+ console.log(`\nArtifact: ${artifactPath}`);
233
+ },
234
+ });
235
+ const contextBudget = defineCommand({
236
+ meta: { name: 'budget', description: 'Report Always/on-demand/evidence/archive/generated context token cost' },
237
+ args: {
238
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
239
+ 'max-always': { type: 'string', description: 'Maximum Always-loaded estimated tokens' },
240
+ 'max-task': { type: 'string', description: 'Maximum task context estimated tokens' },
241
+ provider: { type: 'string', default: 'generic', description: 'Model provider for prompt cache policy: anthropic, openai, or generic' },
242
+ write: { type: 'boolean', default: false, description: 'Write .scale/context-budget.json' },
243
+ json: { type: 'boolean', default: false },
244
+ },
245
+ run({ args }) {
246
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
247
+ const scaleDir = resolveScaleDirForProject(projectDir);
248
+ const report = scanContextBudget({
249
+ projectDir,
250
+ scaleDir,
251
+ maxAlwaysTokens: parsePositiveIntArg(args['max-always'], '--max-always'),
252
+ maxTaskTokens: parsePositiveIntArg(args['max-task'], '--max-task'),
253
+ });
254
+ const promptCache = resolvePromptCachePolicy({
255
+ provider: String(args.provider ?? 'generic'),
256
+ entries: report.entries,
257
+ });
258
+ const path = isTruthyFlag(args.write) ? writeContextBudgetReport(report) : undefined;
259
+ if (args.json) {
260
+ console.log(JSON.stringify({ ...report, promptCache, path }, null, 2));
261
+ return;
262
+ }
263
+ console.log('SCALE Context Budget');
264
+ console.log(` Project: ${report.projectDir}`);
265
+ console.log(` Total: ${report.summary.totalTokens} estimated tokens across ${report.summary.totalFiles} files`);
266
+ console.log(` Always: ${report.summary.alwaysTokens}/${report.thresholds.maxAlwaysTokens}`);
267
+ for (const [category, summary] of Object.entries(report.summary.byCategory)) {
268
+ console.log(` ${category}: ${summary.tokens} tokens in ${summary.files} files`);
269
+ }
270
+ console.log(` Prompt cache provider: ${promptCache.provider}`);
271
+ console.log(` Prompt cache strategy: ${promptCache.strategy}${promptCache.supported ? '' : ' (usage ledger only)'}`);
272
+ console.log(` Cache eligible: ${promptCache.cacheEligibleTokens} tokens across ${promptCache.cacheEligiblePaths.length} paths`);
273
+ for (const recommendation of report.recommendations)
274
+ console.log(` recommendation: ${recommendation}`);
275
+ if (path)
276
+ console.log(` wrote: ${path}`);
277
+ },
278
+ });
279
+ const contextPack = defineCommand({
280
+ meta: { name: 'pack', description: 'Build a lazy-loaded context pack for a task' },
281
+ args: {
282
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
283
+ task: { type: 'string', required: true, description: 'Current task or question' },
284
+ 'task-id': { type: 'string', description: 'Task id' },
285
+ level: { type: 'string', default: 'M', description: 'Task level: S, M, L, or CRITICAL' },
286
+ files: { type: 'string', description: 'Comma-separated files or modules in scope' },
287
+ budget: { type: 'string', description: 'Maximum estimated tokens for the context pack' },
288
+ json: { type: 'boolean', default: false },
289
+ },
290
+ run({ args }) {
291
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
292
+ const scaleDir = resolveScaleDirForProject(projectDir);
293
+ const pack = buildContextPack({
294
+ projectDir,
295
+ scaleDir,
296
+ task: String(args.task),
297
+ taskId: args['task-id'] ? String(args['task-id']) : undefined,
298
+ level: String(args.level ?? 'M'),
299
+ files: parseCommaList(args.files),
300
+ budget: parsePositiveIntArg(args.budget, '--budget'),
301
+ });
302
+ if (args.json) {
303
+ console.log(JSON.stringify(pack, null, 2));
304
+ return;
305
+ }
306
+ console.log('SCALE Context Pack');
307
+ console.log(` Task: ${pack.task.task}`);
308
+ console.log(` Budget: ${pack.totalEstimatedTokens}/${pack.task.budget}`);
309
+ for (const section of pack.sections) {
310
+ console.log(` [${section.included ? 'IN' : 'OUT'}] ${section.id}: ${section.estimatedTokens} tokens`);
311
+ }
312
+ },
313
+ });
314
+ const contextDoctor = defineCommand({
315
+ meta: { name: 'doctor', description: 'Check context budget thresholds and generated-artifact loading risk' },
316
+ args: {
317
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
318
+ 'max-always': { type: 'string', description: 'Maximum Always-loaded estimated tokens' },
319
+ 'max-task': { type: 'string', description: 'Maximum task context estimated tokens' },
320
+ task: { type: 'string', description: 'Task text for a representative lazy context pack probe' },
321
+ level: { type: 'string', default: 'M', description: 'Task level for the context pack probe' },
322
+ files: { type: 'string', description: 'Comma-separated scoped files for the context pack probe' },
323
+ json: { type: 'boolean', default: false },
324
+ },
325
+ run({ args }) {
326
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
327
+ const scaleDir = resolveScaleDirForProject(projectDir);
328
+ const report = doctorContextBudget({
329
+ projectDir,
330
+ scaleDir,
331
+ maxAlwaysTokens: parsePositiveIntArg(args['max-always'], '--max-always'),
332
+ maxTaskTokens: parsePositiveIntArg(args['max-task'], '--max-task'),
333
+ task: args.task ? String(args.task) : undefined,
334
+ level: String(args.level ?? 'M'),
335
+ files: parseCommaList(args.files),
336
+ });
337
+ if (args.json) {
338
+ console.log(JSON.stringify(report, null, 2));
339
+ if (!report.ok)
340
+ process.exitCode = 1;
341
+ return;
342
+ }
343
+ console.log(`SCALE Context Doctor: ${report.ok ? 'OK' : 'FAILED'}`);
344
+ for (const check of report.checks) {
345
+ console.log(` [${check.status.toUpperCase()}] ${check.name}: ${check.message}`);
346
+ }
347
+ if (!report.ok)
348
+ process.exitCode = 1;
349
+ },
350
+ });
351
+ const contextAnatomy = defineCommand({
352
+ meta: { name: 'anatomy', description: 'Scan the project and generate .scale/anatomy.md for file-map context' },
353
+ args: {
354
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
355
+ 'max-files': { type: 'string', description: 'Maximum files to include; defaults to 500' },
356
+ exclude: { type: 'string', description: 'Comma-separated directory names to exclude' },
357
+ write: { type: 'boolean', default: false, description: 'Write .scale/anatomy.md' },
358
+ json: { type: 'boolean', default: false },
359
+ },
360
+ run({ args }) {
361
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
362
+ const scaleDir = resolveScaleDirForProject(projectDir);
363
+ const maxFiles = parsePositiveIntArg(args['max-files'], '--max-files');
364
+ const excludePatterns = parseCommaList(args.exclude);
365
+ const anatomy = new ProjectAnatomy();
366
+ const sections = anatomy.scan(projectDir, {
367
+ maxFiles,
368
+ excludePatterns: excludePatterns.length > 0 ? excludePatterns : undefined,
369
+ });
370
+ const content = anatomy.serialize(sections);
371
+ const summary = [...sections.values()].reduce((acc, entries) => {
372
+ acc.files += entries.length;
373
+ acc.tokens += entries.reduce((sum, entry) => sum + entry.tokens, 0);
374
+ return acc;
375
+ }, { files: 0, tokens: 0 });
376
+ const outputPath = join(scaleDir, 'anatomy.md');
377
+ if (isTruthyFlag(args.write)) {
378
+ ensureDir(scaleDir);
379
+ writeFileSync(outputPath, content, 'utf-8');
380
+ }
381
+ if (args.json) {
382
+ console.log(JSON.stringify({
383
+ ok: true,
384
+ projectDir,
385
+ outputPath: isTruthyFlag(args.write) ? outputPath : undefined,
386
+ summary,
387
+ }, null, 2));
388
+ return;
389
+ }
390
+ console.log('SCALE Project Anatomy');
391
+ console.log(` Files: ${summary.files}`);
392
+ console.log(` Estimated tokens: ${summary.tokens}`);
393
+ if (isTruthyFlag(args.write))
394
+ console.log(` Wrote: ${outputPath}`);
395
+ },
396
+ });
397
+ // ---------------------------------------------------------------------------
398
+ // Exported parent command
399
+ // ---------------------------------------------------------------------------
400
+ export const contextCommand = defineCommand({
401
+ meta: { name: 'context', description: 'Context assembly' },
402
+ subCommands: {
403
+ build: contextBuild,
404
+ status: contextStatus,
405
+ inject: contextInject,
406
+ glossary: contextGlossary,
407
+ init: contextInit,
408
+ grill: contextGrill,
409
+ budget: contextBudget,
410
+ pack: contextPack,
411
+ doctor: contextDoctor,
412
+ anatomy: contextAnatomy,
413
+ },
414
+ });
415
+ //# sourceMappingURL=contextCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCommands.js","sourceRoot":"","sources":["../../src/cli/contextCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export declare const dependencyAuditCommand: import("citty").CommandDef<{
2
+ dir: {
3
+ type: "string";
4
+ default: string;
5
+ description: string;
6
+ };
7
+ mode: {
8
+ type: "string";
9
+ description: string;
10
+ };
11
+ 'changed-packages': {
12
+ type: "string";
13
+ description: string;
14
+ };
15
+ json: {
16
+ type: "boolean";
17
+ default: false;
18
+ };
19
+ }>;
20
+ export declare const dependencyCommand: import("citty").CommandDef<import("citty").ArgsDef>;
21
+ export declare const tddSliceCommand: import("citty").CommandDef<{
22
+ 'task-id': {
23
+ type: "string";
24
+ required: true;
25
+ };
26
+ behavior: {
27
+ type: "string";
28
+ required: true;
29
+ };
30
+ 'public-interface': {
31
+ type: "string";
32
+ required: true;
33
+ };
34
+ 'failing-test': {
35
+ type: "string";
36
+ required: true;
37
+ };
38
+ 'test-file': {
39
+ type: "string";
40
+ required: true;
41
+ };
42
+ 'impl-files': {
43
+ type: "string";
44
+ required: true;
45
+ };
46
+ 'red-exit-code': {
47
+ type: "string";
48
+ description: string;
49
+ };
50
+ 'red-summary': {
51
+ type: "string";
52
+ description: string;
53
+ };
54
+ 'green-exit-code': {
55
+ type: "string";
56
+ description: string;
57
+ };
58
+ 'green-summary': {
59
+ type: "string";
60
+ description: string;
61
+ };
62
+ 'refactor-exit-code': {
63
+ type: "string";
64
+ description: string;
65
+ };
66
+ 'refactor-summary': {
67
+ type: "string";
68
+ description: string;
69
+ };
70
+ 'artifact-dir': {
71
+ type: "string";
72
+ description: string;
73
+ };
74
+ write: {
75
+ type: "boolean";
76
+ default: false;
77
+ description: string;
78
+ };
79
+ json: {
80
+ type: "boolean";
81
+ default: false;
82
+ };
83
+ }>;
84
+ export declare const tddCommand: import("citty").CommandDef<import("citty").ArgsDef>;
85
+ export declare const statsCommand: import("citty").CommandDef<{}>;
86
+ export declare const metricsListCommand: import("citty").CommandDef<{
87
+ json: {
88
+ type: "boolean";
89
+ default: false;
90
+ };
91
+ }>;
92
+ export declare const metricsCommand: import("citty").CommandDef<import("citty").ArgsDef>;