@miniidealab/openlogos 0.5.9 → 0.5.10

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.
@@ -0,0 +1,16 @@
1
+ import type { OutputFormat } from '../lib/json-output.js';
2
+ export interface DetectData {
3
+ cli: {
4
+ version: string;
5
+ node_version: string;
6
+ };
7
+ project: {
8
+ name: string;
9
+ locale: string;
10
+ lifecycle: string;
11
+ description: string;
12
+ } | null;
13
+ }
14
+ export declare function collectDetectData(root: string): DetectData;
15
+ export declare function detect(format?: OutputFormat): void;
16
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAuB1D;AAED,wBAAgB,MAAM,CAAC,MAAM,GAAE,YAAqB,QAyBnD"}
@@ -0,0 +1,51 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { VERSION, makeEnvelope } from '../lib/json-output.js';
4
+ export function collectDetectData(root) {
5
+ const configPath = join(root, 'logos', 'logos.config.json');
6
+ let project = null;
7
+ if (existsSync(configPath)) {
8
+ try {
9
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
10
+ project = {
11
+ name: config.name ?? '',
12
+ locale: config.locale ?? 'en',
13
+ lifecycle: config.lifecycle ?? 'initial',
14
+ description: config.description ?? '',
15
+ };
16
+ }
17
+ catch { /* ignore malformed config */ }
18
+ }
19
+ return {
20
+ cli: {
21
+ version: VERSION,
22
+ node_version: process.version,
23
+ },
24
+ project,
25
+ };
26
+ }
27
+ export function detect(format = 'text') {
28
+ const root = process.cwd();
29
+ const data = collectDetectData(root);
30
+ if (format === 'json') {
31
+ console.log(JSON.stringify(makeEnvelope('detect', data)));
32
+ return;
33
+ }
34
+ // Human-readable output
35
+ console.log(`\nOpenLogos CLI v${data.cli.version}`);
36
+ console.log(`Node.js ${data.cli.node_version}\n`);
37
+ if (data.project) {
38
+ console.log(`📁 Project detected:`);
39
+ console.log(` Name: ${data.project.name}`);
40
+ console.log(` Locale: ${data.project.locale}`);
41
+ console.log(` Lifecycle: ${data.project.lifecycle}`);
42
+ if (data.project.description) {
43
+ console.log(` Description: ${data.project.description}`);
44
+ }
45
+ }
46
+ else {
47
+ console.log(`📁 No OpenLogos project found in current directory.`);
48
+ }
49
+ console.log('');
50
+ }
51
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgB9D,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAE5D,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,OAAO,GAAG;gBACR,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;gBACxC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,GAAG,EAAE;YACH,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,OAAO,CAAC,OAAO;SAC9B;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,SAAuB,MAAM;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;IAElD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -1,3 +1,23 @@
1
+ import type { OutputFormat } from '../lib/json-output.js';
2
+ export interface StatusData {
3
+ phases: Array<{
4
+ key: string;
5
+ label: string;
6
+ done: boolean;
7
+ files: string[];
8
+ }>;
9
+ active_proposals: Array<{
10
+ name: string;
11
+ has_proposal: boolean;
12
+ has_tasks: boolean;
13
+ delta_count: number;
14
+ }>;
15
+ current_phase: string | null;
16
+ suggestion: string;
17
+ all_done: boolean;
18
+ lifecycle: string;
19
+ }
1
20
  export declare function listFiles(dir: string): string[];
2
- export declare function status(): void;
21
+ export declare function collectStatusData(root: string): StatusData;
22
+ export declare function status(format?: OutputFormat): void;
3
23
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAaA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAY/C;AAED,wBAAgB,MAAM,SAqGrB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkB1D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9E,gBAAgB,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAY/C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAiF1D;AAED,wBAAgB,MAAM,CAAC,MAAM,GAAE,YAAqB,QAkEnD"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readdirSync, statSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { readLocale, t, PHASE_KEYS, SUGGEST_KEYS } from '../i18n.js';
4
+ import { makeEnvelope, makeErrorEnvelope } from '../lib/json-output.js';
4
5
  export function listFiles(dir) {
5
6
  if (!existsSync(dir))
6
7
  return [];
@@ -16,14 +17,8 @@ export function listFiles(dir) {
16
17
  return [];
17
18
  }
18
19
  }
19
- export function status() {
20
- const root = process.cwd();
20
+ export function collectStatusData(root) {
21
21
  const configPath = join(root, 'logos', 'logos.config.json');
22
- if (!existsSync(configPath)) {
23
- console.error('Error: logos/logos.config.json not found.');
24
- console.error('Run `openlogos init` first to initialize the project.');
25
- process.exit(1);
26
- }
27
22
  const locale = readLocale(root);
28
23
  const phasePaths = [
29
24
  join(root, 'logos/resources/prd/1-product-requirements'),
@@ -47,18 +42,7 @@ export function status() {
47
42
  phase.files = listFiles(phase.path);
48
43
  phase.done = phase.files.length > 0;
49
44
  }
50
- console.log('\n📊 OpenLogos Project Status\n');
51
- console.log('─'.repeat(50));
52
- for (const phase of phases) {
53
- const icon = phase.done ? '✅' : '🔲';
54
- console.log(`${icon} ${phase.label}`);
55
- if (phase.done) {
56
- for (const f of phase.files) {
57
- console.log(` └─ ${f}`);
58
- }
59
- }
60
- }
61
- console.log('─'.repeat(50));
45
+ // Collect active proposals
62
46
  const changesDir = join(root, 'logos', 'changes');
63
47
  const activeProposals = [];
64
48
  if (existsSync(changesDir)) {
@@ -75,36 +59,94 @@ export function status() {
75
59
  activeProposals.push({ name: entry, hasProposal, hasTasks, deltaCount });
76
60
  }
77
61
  }
78
- if (activeProposals.length > 0) {
62
+ // Determine current phase and suggestion
63
+ const firstIncomplete = phases.find(p => !p.done);
64
+ const allDone = !firstIncomplete;
65
+ let lifecycle = 'initial';
66
+ try {
67
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
68
+ lifecycle = config.lifecycle || 'initial';
69
+ }
70
+ catch { /* ignore */ }
71
+ let suggestion;
72
+ if (allDone) {
73
+ suggestion = lifecycle === 'initial'
74
+ ? t(locale, 'launch.suggest')
75
+ : t(locale, 'status.allDoneHint').trim();
76
+ }
77
+ else {
78
+ const suggestKey = SUGGEST_KEYS[firstIncomplete.key];
79
+ suggestion = suggestKey ? t(locale, suggestKey) : t(locale, 'suggest.fallback');
80
+ }
81
+ return {
82
+ phases: phases.map(p => ({ key: p.key, label: p.label, done: p.done, files: p.files })),
83
+ active_proposals: activeProposals.map(p => ({
84
+ name: p.name,
85
+ has_proposal: p.hasProposal,
86
+ has_tasks: p.hasTasks,
87
+ delta_count: p.deltaCount,
88
+ })),
89
+ current_phase: firstIncomplete ? firstIncomplete.key : null,
90
+ suggestion,
91
+ all_done: allDone,
92
+ lifecycle,
93
+ };
94
+ }
95
+ export function status(format = 'text') {
96
+ const root = process.cwd();
97
+ const configPath = join(root, 'logos', 'logos.config.json');
98
+ if (!existsSync(configPath)) {
99
+ if (format === 'json') {
100
+ console.error(JSON.stringify(makeErrorEnvelope('status', 'PROJECT_NOT_INITIALIZED', 'logos/logos.config.json not found.')));
101
+ process.exit(1);
102
+ }
103
+ console.error('Error: logos/logos.config.json not found.');
104
+ console.error('Run `openlogos init` first to initialize the project.');
105
+ process.exit(1);
106
+ }
107
+ const data = collectStatusData(root);
108
+ if (format === 'json') {
109
+ console.log(JSON.stringify(makeEnvelope('status', data)));
110
+ return;
111
+ }
112
+ // Human-readable output (unchanged behavior)
113
+ const locale = readLocale(root);
114
+ const LINE = '─'.repeat(50);
115
+ console.log('\n📊 OpenLogos Project Status\n');
116
+ console.log(LINE);
117
+ for (const phase of data.phases) {
118
+ const icon = phase.done ? '✅' : '🔲';
119
+ console.log(`${icon} ${phase.label}`);
120
+ if (phase.done) {
121
+ for (const f of phase.files) {
122
+ console.log(` └─ ${f}`);
123
+ }
124
+ }
125
+ }
126
+ console.log(LINE);
127
+ if (data.active_proposals.length > 0) {
79
128
  console.log(`\n📝 ${t(locale, 'status.activeProposals')}`);
80
- for (const p of activeProposals) {
129
+ for (const p of data.active_proposals) {
81
130
  const parts = [
82
- p.hasProposal ? 'proposal.md ✓' : 'proposal.md ✗',
83
- p.hasTasks ? 'tasks.md ✓' : 'tasks.md ✗',
84
- `deltas: ${p.deltaCount} files`,
131
+ p.has_proposal ? 'proposal.md ✓' : 'proposal.md ✗',
132
+ p.has_tasks ? 'tasks.md ✓' : 'tasks.md ✗',
133
+ `deltas: ${p.delta_count} files`,
85
134
  ];
86
135
  console.log(` └─ ${p.name} (${parts.join(' | ')})`);
87
136
  }
88
- console.log('─'.repeat(50));
137
+ console.log(LINE);
89
138
  }
90
- const firstIncomplete = phases.find(p => !p.done);
91
- if (!firstIncomplete) {
92
- let lifecycle = 'initial';
93
- try {
94
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
95
- lifecycle = config.lifecycle || 'initial';
96
- }
97
- catch { /* ignore */ }
139
+ if (data.all_done) {
98
140
  console.log(`\n🎉 ${t(locale, 'status.allDone')}`);
99
- if (lifecycle === 'initial') {
141
+ if (data.lifecycle === 'initial') {
100
142
  console.log(` → ${t(locale, 'launch.suggest')}`);
101
143
  }
102
144
  console.log(t(locale, 'status.allDoneHint') + '\n');
103
145
  }
104
146
  else {
147
+ const firstIncomplete = data.phases.find(p => !p.done);
105
148
  console.log(`\n💡 ${t(locale, 'status.suggestNext', { label: firstIncomplete.label })}`);
106
- const suggestKey = SUGGEST_KEYS[firstIncomplete.key];
107
- console.log(` → ${suggestKey ? t(locale, suggestKey) : t(locale, 'suggest.fallback')}\n`);
149
+ console.log(` → ${data.suggestion}\n`);
108
150
  }
109
151
  }
110
152
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { OutputFormat } from '../lib/json-output.js';
1
2
  export interface TestResult {
2
3
  id: string;
3
4
  status: 'pass' | 'fail' | 'skip';
@@ -17,6 +18,49 @@ export interface AcTraceEntry {
17
18
  linkedCaseIds: string[];
18
19
  file: string;
19
20
  }
21
+ export interface VerifyData {
22
+ summary: {
23
+ defined_count: number;
24
+ ut_count: number;
25
+ st_count: number;
26
+ executed_count: number;
27
+ passed_count: number;
28
+ failed_count: number;
29
+ skipped_count: number;
30
+ uncovered_count: number;
31
+ coverage_pct: number;
32
+ pass_rate_pct: number;
33
+ };
34
+ gate: {
35
+ result: 'PASS' | 'FAIL';
36
+ reason: string | null;
37
+ };
38
+ failed_cases: Array<{
39
+ id: string;
40
+ error: string;
41
+ }>;
42
+ uncovered_cases: string[];
43
+ skipped_cases: string[];
44
+ checklist: {
45
+ total: number;
46
+ checked: number;
47
+ unchecked_items: Array<{
48
+ text: string;
49
+ file: string;
50
+ }>;
51
+ };
52
+ ac_trace: {
53
+ total: number;
54
+ passed: number;
55
+ failed_criteria: Array<{
56
+ ac_id: string;
57
+ description: string;
58
+ linked_case_ids: string[];
59
+ status: string;
60
+ }>;
61
+ };
62
+ report_path: string;
63
+ }
20
64
  export declare function parseJsonl(content: string): TestResult[];
21
65
  export declare function extractDefinedIds(root: string): {
22
66
  ids: string[];
@@ -26,5 +70,6 @@ export declare function extractDefinedIds(root: string): {
26
70
  export declare function extractChecklist(root: string): ChecklistItem[];
27
71
  export declare function extractAcTrace(root: string): AcTraceEntry[];
28
72
  export declare function generateReport(defined: string[], results: TestResult[], passed: TestResult[], failed: TestResult[], skipped: TestResult[], uncovered: string[], coveragePct: string, passRatePct: string, gateResult: 'PASS' | 'FAIL', checklist: ChecklistItem[], acTrace: AcTraceEntry[], _resultIds: Set<string>): string;
29
- export declare function verify(): void;
73
+ export declare function collectVerifyData(root: string): VerifyData;
74
+ export declare function verify(format?: OutputFormat): void;
30
75
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAaxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBnG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAgC9D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAoC3D;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,MAAM,CA4FR;AAED,wBAAgB,MAAM,SA+IrB"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readFileSync, readdirSync, writeFileSync, mkdirSync } from 'node:fs';
2
2
  import { join, dirname } from 'node:path';
3
3
  import { readLocale, t } from '../i18n.js';
4
+ import { makeEnvelope, makeErrorEnvelope } from '../lib/json-output.js';
4
5
  const DEFAULT_RESULT_PATH = 'logos/resources/verify/test-results.jsonl';
5
6
  const TEST_CASES_DIR = 'logos/resources/test';
6
7
  const REPORT_DIR = 'logos/resources/verify';
@@ -204,15 +205,8 @@ export function generateReport(defined, results, passed, failed, skipped, uncove
204
205
  }
205
206
  return md;
206
207
  }
207
- export function verify() {
208
- const root = process.cwd();
208
+ export function collectVerifyData(root) {
209
209
  const configPath = join(root, 'logos', 'logos.config.json');
210
- if (!existsSync(configPath)) {
211
- console.error('Error: logos/logos.config.json not found.');
212
- console.error('Run `openlogos init` first to initialize the project.');
213
- process.exit(1);
214
- }
215
- const locale = readLocale(root);
216
210
  let resultPath = DEFAULT_RESULT_PATH;
217
211
  try {
218
212
  const config = JSON.parse(readFileSync(configPath, 'utf-8'));
@@ -221,20 +215,9 @@ export function verify() {
221
215
  }
222
216
  }
223
217
  catch { /* use default */ }
224
- console.log(`\n🔍 ${t(locale, 'verify.title')}\n`);
225
- console.log(t(locale, 'verify.readingResults', { path: resultPath }));
226
- console.log(t(locale, 'verify.readingCases'));
227
218
  const fullResultPath = join(root, resultPath);
228
- if (!existsSync(fullResultPath)) {
229
- console.error(`\nError: ${t(locale, 'verify.noResults', { path: resultPath })}`);
230
- process.exit(1);
231
- }
232
219
  const results = parseJsonl(readFileSync(fullResultPath, 'utf-8'));
233
220
  const { ids: defined, utCount, stCount } = extractDefinedIds(root);
234
- if (defined.length === 0) {
235
- console.error(`\nError: ${t(locale, 'verify.noCases')}`);
236
- process.exit(1);
237
- }
238
221
  const resultIds = new Set(results.map(r => r.id));
239
222
  const passed = results.filter(r => r.status === 'pass');
240
223
  const failed = results.filter(r => r.status === 'fail');
@@ -242,11 +225,11 @@ export function verify() {
242
225
  const uncovered = defined.filter(id => !resultIds.has(id));
243
226
  const coveredCount = defined.filter(id => resultIds.has(id)).length;
244
227
  const coveragePct = defined.length > 0
245
- ? ((coveredCount / defined.length) * 100).toFixed(0)
246
- : '0';
228
+ ? Math.round((coveredCount / defined.length) * 100)
229
+ : 0;
247
230
  const passRatePct = results.length > 0
248
- ? ((passed.length / results.length) * 100).toFixed(0)
249
- : '0';
231
+ ? Math.round((passed.length / results.length) * 100)
232
+ : 0;
250
233
  const checklist = extractChecklist(root);
251
234
  const acTrace = extractAcTrace(root);
252
235
  const checklistUnchecked = checklist.filter(c => !c.checked);
@@ -256,74 +239,174 @@ export function verify() {
256
239
  const isPass = failed.length === 0 && uncovered.length === 0
257
240
  && checklistUnchecked.length === 0 && acFailed.length === 0;
258
241
  const gateResult = isPass ? 'PASS' : 'FAIL';
242
+ let gateReason = null;
243
+ if (!isPass) {
244
+ if (failed.length > 0)
245
+ gateReason = 'failed_cases';
246
+ else if (uncovered.length > 0)
247
+ gateReason = 'incomplete_coverage';
248
+ else if (checklistUnchecked.length > 0)
249
+ gateReason = 'checklist_incomplete';
250
+ else
251
+ gateReason = 'ac_trace_incomplete';
252
+ }
253
+ // Generate the acceptance report (side effect, same as before)
254
+ const reportPath = join(root, REPORT_DIR, 'acceptance-report.md');
255
+ mkdirSync(dirname(reportPath), { recursive: true });
256
+ writeFileSync(reportPath, generateReport(defined, results, passed, failed, skipped, uncovered, String(coveragePct), String(passRatePct), gateResult, checklist, acTrace, resultIds));
257
+ const relReportPath = 'logos/resources/verify/acceptance-report.md';
258
+ return {
259
+ summary: {
260
+ defined_count: defined.length,
261
+ ut_count: utCount,
262
+ st_count: stCount,
263
+ executed_count: results.length,
264
+ passed_count: passed.length,
265
+ failed_count: failed.length,
266
+ skipped_count: skipped.length,
267
+ uncovered_count: uncovered.length,
268
+ coverage_pct: coveragePct,
269
+ pass_rate_pct: passRatePct,
270
+ },
271
+ gate: {
272
+ result: gateResult,
273
+ reason: gateReason,
274
+ },
275
+ failed_cases: failed.map(r => ({ id: r.id, error: r.error ?? 'unknown' })),
276
+ uncovered_cases: uncovered,
277
+ skipped_cases: skipped.map(r => r.id),
278
+ checklist: {
279
+ total: checklist.length,
280
+ checked: checklist.filter(c => c.checked).length,
281
+ unchecked_items: checklistUnchecked.map(c => ({ text: c.text, file: c.file })),
282
+ },
283
+ ac_trace: {
284
+ total: acTrace.length,
285
+ passed: acTrace.length - acFailed.length,
286
+ failed_criteria: acFailed.map(ac => ({
287
+ ac_id: ac.acId,
288
+ description: ac.description,
289
+ linked_case_ids: ac.linkedCaseIds,
290
+ status: ac.linkedCaseIds.length === 0 ? 'NO_LINKED_CASES' : 'FAIL',
291
+ })),
292
+ },
293
+ report_path: relReportPath,
294
+ };
295
+ }
296
+ export function verify(format = 'text') {
297
+ const root = process.cwd();
298
+ const configPath = join(root, 'logos', 'logos.config.json');
299
+ if (!existsSync(configPath)) {
300
+ if (format === 'json') {
301
+ console.error(JSON.stringify(makeErrorEnvelope('verify', 'PROJECT_NOT_INITIALIZED', 'logos/logos.config.json not found.')));
302
+ process.exit(1);
303
+ }
304
+ console.error('Error: logos/logos.config.json not found.');
305
+ console.error('Run `openlogos init` first to initialize the project.');
306
+ process.exit(1);
307
+ }
308
+ const locale = readLocale(root);
309
+ let resultPath = DEFAULT_RESULT_PATH;
310
+ try {
311
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
312
+ if (config.verify?.result_path) {
313
+ resultPath = config.verify.result_path;
314
+ }
315
+ }
316
+ catch { /* use default */ }
317
+ const fullResultPath = join(root, resultPath);
318
+ if (!existsSync(fullResultPath)) {
319
+ if (format === 'json') {
320
+ console.error(JSON.stringify(makeErrorEnvelope('verify', 'NO_TEST_RESULTS', `No test results found at ${resultPath}.`)));
321
+ process.exit(1);
322
+ }
323
+ console.error(`\nError: ${t(locale, 'verify.noResults', { path: resultPath })}`);
324
+ process.exit(1);
325
+ }
326
+ const { ids: defined } = extractDefinedIds(root);
327
+ if (defined.length === 0) {
328
+ if (format === 'json') {
329
+ console.error(JSON.stringify(makeErrorEnvelope('verify', 'NO_TEST_CASES', 'No test case specs found in logos/resources/test/.')));
330
+ process.exit(1);
331
+ }
332
+ console.error(`\nError: ${t(locale, 'verify.noCases')}`);
333
+ process.exit(1);
334
+ }
335
+ const data = collectVerifyData(root);
336
+ if (format === 'json') {
337
+ console.log(JSON.stringify(makeEnvelope('verify', data)));
338
+ if (data.gate.result !== 'PASS') {
339
+ process.exit(1);
340
+ }
341
+ return;
342
+ }
343
+ // Human-readable output (preserving original behavior)
344
+ console.log(`\n🔍 ${t(locale, 'verify.title')}\n`);
345
+ console.log(t(locale, 'verify.readingResults', { path: resultPath }));
346
+ console.log(t(locale, 'verify.readingCases'));
347
+ const { summary, gate, failed_cases, uncovered_cases, checklist, ac_trace } = data;
259
348
  console.log(`\n${LINE}`);
260
349
  console.log(`📊 ${t(locale, 'verify.summary')}`);
261
350
  console.log(LINE);
262
- console.log(` ${t(locale, 'verify.totalDefined', { count: String(defined.length), ut: String(utCount), st: String(stCount) })}`);
263
- console.log(` ${t(locale, 'verify.totalExecuted', { count: String(results.length) })}`);
264
- console.log(` ✅ ${t(locale, 'verify.passed', { count: String(passed.length) })}`);
265
- console.log(` ❌ ${t(locale, 'verify.failed', { count: String(failed.length) })}`);
266
- console.log(` ⏭️ ${t(locale, 'verify.skipped', { count: String(skipped.length) })}`);
351
+ console.log(` ${t(locale, 'verify.totalDefined', { count: String(summary.defined_count), ut: String(summary.ut_count), st: String(summary.st_count) })}`);
352
+ console.log(` ${t(locale, 'verify.totalExecuted', { count: String(summary.executed_count) })}`);
353
+ console.log(` ✅ ${t(locale, 'verify.passed', { count: String(summary.passed_count) })}`);
354
+ console.log(` ❌ ${t(locale, 'verify.failed', { count: String(summary.failed_count) })}`);
355
+ console.log(` ⏭️ ${t(locale, 'verify.skipped', { count: String(summary.skipped_count) })}`);
267
356
  console.log(LINE);
268
- console.log(` ${t(locale, 'verify.coverage', { pct: coveragePct, covered: String(coveredCount), total: String(defined.length) })}`);
269
- console.log(` ${t(locale, 'verify.passRate', { pct: passRatePct, passed: String(passed.length), total: String(results.length) })}`);
357
+ console.log(` ${t(locale, 'verify.coverage', { pct: String(summary.coverage_pct), covered: String(summary.defined_count - summary.uncovered_count), total: String(summary.defined_count) })}`);
358
+ console.log(` ${t(locale, 'verify.passRate', { pct: String(summary.pass_rate_pct), passed: String(summary.passed_count), total: String(summary.executed_count) })}`);
270
359
  console.log(LINE);
271
- if (failed.length > 0) {
360
+ if (failed_cases.length > 0) {
272
361
  console.log(`\n❌ ${t(locale, 'verify.failedCases')}`);
273
- for (const r of failed) {
274
- console.log(` ${r.id} ${r.error ?? ''}`);
362
+ for (const r of failed_cases) {
363
+ console.log(` ${r.id} ${r.error}`);
275
364
  }
276
365
  }
277
- if (uncovered.length > 0) {
278
- console.log(`\n⚠️ ${t(locale, 'verify.uncoveredCases', { count: String(uncovered.length) })}`);
279
- for (const id of uncovered) {
366
+ if (uncovered_cases.length > 0) {
367
+ console.log(`\n⚠️ ${t(locale, 'verify.uncoveredCases', { count: String(uncovered_cases.length) })}`);
368
+ for (const id of uncovered_cases) {
280
369
  console.log(` ${id}`);
281
370
  }
282
371
  }
283
- if (checklist.length > 0) {
284
- const checked = checklist.filter(c => c.checked).length;
372
+ if (checklist.total > 0) {
285
373
  console.log(`\n📋 ${t(locale, 'verify.checklistTitle')}`);
286
- console.log(` ${t(locale, 'verify.checklistSummary', { checked: String(checked), total: String(checklist.length) })}`);
287
- if (checklistUnchecked.length > 0) {
288
- console.log(` ⚠️ ${t(locale, 'verify.checklistUnchecked', { count: String(checklistUnchecked.length) })}`);
289
- for (const item of checklistUnchecked) {
374
+ console.log(` ${t(locale, 'verify.checklistSummary', { checked: String(checklist.checked), total: String(checklist.total) })}`);
375
+ if (checklist.unchecked_items.length > 0) {
376
+ console.log(` ⚠️ ${t(locale, 'verify.checklistUnchecked', { count: String(checklist.unchecked_items.length) })}`);
377
+ for (const item of checklist.unchecked_items) {
290
378
  console.log(` - ${item.text} (${item.file})`);
291
379
  }
292
380
  }
293
381
  }
294
- if (acTrace.length > 0) {
295
- const acPassed = acTrace.length - acFailed.length;
382
+ if (ac_trace.total > 0) {
296
383
  console.log(`\n🔗 ${t(locale, 'verify.acTitle')}`);
297
- console.log(` ${t(locale, 'verify.acSummary', { passed: String(acPassed), total: String(acTrace.length) })}`);
298
- if (acFailed.length > 0) {
299
- console.log(` ⚠️ ${t(locale, 'verify.acFailed', { count: String(acFailed.length) })}`);
300
- for (const ac of acFailed) {
301
- const reason = ac.linkedCaseIds.length === 0 ? 'no linked cases' : 'case(s) not passing';
302
- console.log(` ${ac.acId}: ${ac.description} (${reason})`);
384
+ console.log(` ${t(locale, 'verify.acSummary', { passed: String(ac_trace.passed), total: String(ac_trace.total) })}`);
385
+ if (ac_trace.failed_criteria.length > 0) {
386
+ console.log(` ⚠️ ${t(locale, 'verify.acFailed', { count: String(ac_trace.failed_criteria.length) })}`);
387
+ for (const ac of ac_trace.failed_criteria) {
388
+ const reason = ac.status === 'NO_LINKED_CASES' ? 'no linked cases' : 'case(s) not passing';
389
+ console.log(` ${ac.ac_id}: ${ac.description} (${reason})`);
303
390
  }
304
391
  }
305
392
  }
306
- const reportPath = join(root, REPORT_DIR, 'acceptance-report.md');
307
- mkdirSync(dirname(reportPath), { recursive: true });
308
- writeFileSync(reportPath, generateReport(defined, results, passed, failed, skipped, uncovered, coveragePct, passRatePct, gateResult, checklist, acTrace, resultIds));
309
- if (isPass) {
393
+ if (gate.result === 'PASS') {
310
394
  console.log(`\n✅ ${t(locale, 'verify.gatePass')}`);
311
395
  }
312
- else if (failed.length > 0) {
396
+ else if (gate.reason === 'failed_cases') {
313
397
  console.log(`\n❌ ${t(locale, 'verify.gateFail')}`);
314
398
  }
315
- else if (uncovered.length > 0) {
399
+ else if (gate.reason === 'incomplete_coverage') {
316
400
  console.log(`\n❌ ${t(locale, 'verify.gateFailCoverage')}`);
317
401
  }
318
- else if (checklistUnchecked.length > 0) {
402
+ else if (gate.reason === 'checklist_incomplete') {
319
403
  console.log(`\n❌ ${t(locale, 'verify.gateFailChecklist')}`);
320
404
  }
321
405
  else {
322
406
  console.log(`\n❌ ${t(locale, 'verify.gateFailAc')}`);
323
407
  }
324
- const relReportPath = 'logos/resources/verify/acceptance-report.md';
325
- console.log(`\n📄 ${t(locale, 'verify.reportPath', { path: relReportPath })}\n`);
326
- if (!isPass) {
408
+ console.log(`\n📄 ${t(locale, 'verify.reportPath', { path: data.report_path })}\n`);
409
+ if (gate.result !== 'PASS') {
327
410
  process.exit(1);
328
411
  }
329
412
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export { VERSION } from './lib/json-output.js';
3
+ export type { OutputFormat } from './lib/json-output.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,9 @@ import { merge } from './commands/merge.js';
7
7
  import { archive } from './commands/archive.js';
8
8
  import { verify } from './commands/verify.js';
9
9
  import { launch } from './commands/launch.js';
10
+ import { detect } from './commands/detect.js';
11
+ import { VERSION, parseFormat } from './lib/json-output.js';
12
+ export { VERSION } from './lib/json-output.js';
10
13
  const HELP = `
11
14
  openlogos - CLI tool for the OpenLogos methodology
12
15
 
@@ -24,23 +27,27 @@ Commands:
24
27
  change <slug> Create a change proposal for iterative updates
25
28
  merge <slug> Generate MERGE_PROMPT.md for AI to execute delta merging
26
29
  archive <slug> Archive a completed change proposal
30
+ detect Show CLI version and project detection info
27
31
 
28
32
  Options:
29
33
  --help, -h Show this help message
30
34
  --version, -v Show version number
35
+ --format <json> Output in JSON format (supported: status, verify, detect)
31
36
 
32
37
  Examples:
33
38
  openlogos init my-saas-project
34
39
  openlogos sync
35
40
  openlogos status
41
+ openlogos status --format json
36
42
  openlogos verify
43
+ openlogos verify --format json
44
+ openlogos detect --format json
37
45
  openlogos change add-remember-me
38
46
  openlogos merge add-remember-me
39
47
  openlogos archive add-remember-me
40
48
 
41
49
  Learn more: https://openlogos.ai
42
50
  `;
43
- const VERSION = '0.5.6';
44
51
  async function main() {
45
52
  const args = process.argv.slice(2);
46
53
  if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
@@ -52,6 +59,7 @@ async function main() {
52
59
  process.exit(0);
53
60
  }
54
61
  const command = args[0];
62
+ const format = parseFormat(args);
55
63
  switch (command) {
56
64
  case 'init': {
57
65
  const initArgs = args.slice(1);
@@ -75,10 +83,10 @@ async function main() {
75
83
  sync();
76
84
  break;
77
85
  case 'status':
78
- status();
86
+ status(format);
79
87
  break;
80
88
  case 'verify':
81
- verify();
89
+ verify(format);
82
90
  break;
83
91
  case 'change':
84
92
  change(args[1]);
@@ -92,6 +100,9 @@ async function main() {
92
100
  case 'archive':
93
101
  archive(args[1]);
94
102
  break;
103
+ case 'detect':
104
+ detect(format);
105
+ break;
95
106
  default:
96
107
  console.error(`Unknown command: ${command}`);
97
108
  console.log(HELP);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { parseSqlComments, type SchemaMetadata, type TableMeta, type ColumnMeta, } from './sql-comments.js';
2
+ export { VERSION, parseFormat, makeEnvelope, makeErrorEnvelope, type OutputFormat, type JsonEnvelope, } from './json-output.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC"}
package/dist/lib/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { parseSqlComments, } from './sql-comments.js';
2
+ export { VERSION, parseFormat, makeEnvelope, makeErrorEnvelope, } from './json-output.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAIjB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAIjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,iBAAiB,GAGlB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const VERSION = "0.5.10";
2
+ export type OutputFormat = 'text' | 'json';
3
+ export declare function parseFormat(args: string[]): OutputFormat;
4
+ export interface JsonEnvelope {
5
+ command: string;
6
+ version: string;
7
+ timestamp: string;
8
+ data?: unknown;
9
+ error?: {
10
+ code: string;
11
+ message: string;
12
+ };
13
+ }
14
+ export declare function makeEnvelope(command: string, data: unknown): JsonEnvelope;
15
+ export declare function makeErrorEnvelope(command: string, code: string, message: string): JsonEnvelope;
16
+ //# sourceMappingURL=json-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAMxD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAO9F"}
@@ -0,0 +1,25 @@
1
+ export const VERSION = '0.5.10';
2
+ export function parseFormat(args) {
3
+ const idx = args.indexOf('--format');
4
+ if (idx !== -1 && args[idx + 1] === 'json') {
5
+ return 'json';
6
+ }
7
+ return 'text';
8
+ }
9
+ export function makeEnvelope(command, data) {
10
+ return {
11
+ command,
12
+ version: VERSION,
13
+ timestamp: new Date().toISOString(),
14
+ data,
15
+ };
16
+ }
17
+ export function makeErrorEnvelope(command, code, message) {
18
+ return {
19
+ command,
20
+ version: VERSION,
21
+ timestamp: new Date().toISOString(),
22
+ error: { code, message },
23
+ };
24
+ }
25
+ //# sourceMappingURL=json-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAIhC,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAa;IACzD,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAY,EAAE,OAAe;IAC9E,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KACzB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miniidealab/openlogos",
3
- "version": "0.5.9",
3
+ "version": "0.5.10",
4
4
  "description": "CLI tool for the OpenLogos software engineering methodology",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,278 @@
1
+ # CLI JSON 结构化输出规格
2
+
3
+ > 版本: 1.0.0 | 创建日期: 2026-04-13
4
+
5
+ ## 1. 概述
6
+
7
+ OpenLogos CLI 的 `status`、`verify`、`detect` 三个命令支持 `--format json` 参数,输出结构化 JSON 供外部工具(如 RunLogos)以编程方式消费。
8
+
9
+ ### 1.1 通用约定
10
+
11
+ - **触发方式**:在命令后追加 `--format json`
12
+ - **输出目标**:JSON 输出到 **stdout**;错误信息仍输出到 **stderr**
13
+ - **JSON 格式**:紧凑单行输出(无缩进),方便管道处理
14
+ - **退出码**:与人类可读模式保持一致
15
+ - **编码**:UTF-8
16
+ - **字段命名**:snake_case
17
+
18
+ ### 1.2 通用信封结构
19
+
20
+ 所有命令的 JSON 输出共享同一信封结构:
21
+
22
+ ```jsonc
23
+ {
24
+ "command": "<command-name>", // "status" | "verify" | "detect"
25
+ "version": "<cli-version>", // CLI 版本号,如 "0.5.9"
26
+ "timestamp": "<ISO-8601>", // 输出时间戳
27
+ "data": { ... } // 命令特定的数据负载
28
+ }
29
+ ```
30
+
31
+ ---
32
+
33
+ ## 2. `openlogos detect --format json`
34
+
35
+ 探测 CLI 版本和当前目录的项目信息。合并了 `--version` 的功能并扩展了项目探测能力。
36
+
37
+ ### 2.1 用法
38
+
39
+ ```bash
40
+ openlogos detect # 人类可读格式
41
+ openlogos detect --format json # JSON 格式
42
+ ```
43
+
44
+ ### 2.2 JSON Schema(data 部分)
45
+
46
+ ```jsonc
47
+ {
48
+ "cli": {
49
+ "version": "0.5.9", // CLI 版本号
50
+ "node_version": "v22.0.0" // Node.js 运行时版本
51
+ },
52
+ "project": null | { // null 表示当前目录不是 OpenLogos 项目
53
+ "name": "my-project", // 项目名
54
+ "locale": "zh", // 语言设置
55
+ "lifecycle": "active", // "initial" | "active"
56
+ "description": "项目描述" // 项目描述
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### 2.3 字段说明
62
+
63
+ | 字段 | 类型 | 必填 | 说明 |
64
+ |------|------|------|------|
65
+ | `cli.version` | string | 是 | CLI 包版本号 |
66
+ | `cli.node_version` | string | 是 | 当前 Node.js 版本(`process.version`)|
67
+ | `project` | object \| null | 是 | 若当前目录含 `logos/logos.config.json` 则返回项目信息,否则 null |
68
+ | `project.name` | string | 是 | 项目名(来自 config) |
69
+ | `project.locale` | string | 是 | 项目语言设置 |
70
+ | `project.lifecycle` | string | 是 | 项目生命周期阶段 |
71
+ | `project.description` | string | 是 | 项目描述 |
72
+
73
+ ---
74
+
75
+ ## 3. `openlogos status --format json`
76
+
77
+ ### 3.1 用法
78
+
79
+ ```bash
80
+ openlogos status # 人类可读格式
81
+ openlogos status --format json # JSON 格式
82
+ ```
83
+
84
+ ### 3.2 JSON Schema(data 部分)
85
+
86
+ ```jsonc
87
+ {
88
+ "phases": [
89
+ {
90
+ "key": "phase.1",
91
+ "label": "Phase 1 · 需求文档 (WHY)",
92
+ "done": true,
93
+ "files": ["01-requirements.md"]
94
+ },
95
+ {
96
+ "key": "phase.2",
97
+ "label": "Phase 2 · 产品设计 (WHAT)",
98
+ "done": false,
99
+ "files": []
100
+ }
101
+ // ... 所有 9 个 phase
102
+ ],
103
+ "active_proposals": [
104
+ {
105
+ "name": "add-feature",
106
+ "has_proposal": true,
107
+ "has_tasks": true,
108
+ "delta_count": 3
109
+ }
110
+ ],
111
+ "current_phase": "phase.2", // 第一个未完成 phase 的 key,若全部完成则为 null
112
+ "suggestion": "对 AI 说:「基于需求文档做产品设计」", // 建议的下一步操作
113
+ "all_done": false, // 是否所有 phase 都已完成
114
+ "lifecycle": "active" // 项目生命周期
115
+ }
116
+ ```
117
+
118
+ ### 3.3 字段说明
119
+
120
+ | 字段 | 类型 | 必填 | 说明 |
121
+ |------|------|------|------|
122
+ | `phases` | array | 是 | 所有阶段的状态列表(固定 9 个元素) |
123
+ | `phases[].key` | string | 是 | 阶段标识符(如 `phase.1`, `phase.3-2-api`) |
124
+ | `phases[].label` | string | 是 | 阶段的本地化标签 |
125
+ | `phases[].done` | boolean | 是 | 该阶段是否已完成(有文件 = true) |
126
+ | `phases[].files` | string[] | 是 | 该阶段目录下的文件列表 |
127
+ | `active_proposals` | array | 是 | 活跃变更提案列表 |
128
+ | `active_proposals[].name` | string | 是 | 提案目录名 |
129
+ | `active_proposals[].has_proposal` | boolean | 是 | 是否存在 proposal.md |
130
+ | `active_proposals[].has_tasks` | boolean | 是 | 是否存在 tasks.md |
131
+ | `active_proposals[].delta_count` | number | 是 | deltas 目录下的文件数 |
132
+ | `current_phase` | string \| null | 是 | 当前应推进的阶段 key;全部完成时为 null |
133
+ | `suggestion` | string | 是 | 建议的下一步操作(本地化文本) |
134
+ | `all_done` | boolean | 是 | 是否全部阶段已完成 |
135
+ | `lifecycle` | string | 是 | 项目生命周期(`initial` 或 `active`) |
136
+
137
+ ---
138
+
139
+ ## 4. `openlogos verify --format json`
140
+
141
+ ### 4.1 用法
142
+
143
+ ```bash
144
+ openlogos verify # 人类可读格式
145
+ openlogos verify --format json # JSON 格式
146
+ ```
147
+
148
+ ### 4.2 JSON Schema(data 部分)
149
+
150
+ ```jsonc
151
+ {
152
+ "summary": {
153
+ "defined_count": 10, // 定义的测试用例总数
154
+ "ut_count": 6, // 单元测试用例数
155
+ "st_count": 4, // 场景测试用例数
156
+ "executed_count": 10, // 已执行的测试用例数
157
+ "passed_count": 8, // 通过数
158
+ "failed_count": 1, // 失败数
159
+ "skipped_count": 1, // 跳过数
160
+ "uncovered_count": 0, // 未覆盖数
161
+ "coverage_pct": 100, // 覆盖率百分比(整数)
162
+ "pass_rate_pct": 80 // 通过率百分比(整数)
163
+ },
164
+ "gate": {
165
+ "result": "FAIL", // "PASS" | "FAIL"
166
+ "reason": "failed_cases" // 失败原因分类,见下表
167
+ },
168
+ "failed_cases": [
169
+ {
170
+ "id": "UT-S01-03",
171
+ "error": "Expected 200, got 500"
172
+ }
173
+ ],
174
+ "uncovered_cases": ["ST-S02-01"],
175
+ "skipped_cases": ["UT-S01-05"],
176
+ "checklist": {
177
+ "total": 5,
178
+ "checked": 5,
179
+ "unchecked_items": [] // 未确认的覆盖度校验项
180
+ },
181
+ "ac_trace": {
182
+ "total": 4,
183
+ "passed": 3,
184
+ "failed_criteria": [
185
+ {
186
+ "ac_id": "S01-AC-02",
187
+ "description": "异常处理",
188
+ "linked_case_ids": ["ST-S01-02"],
189
+ "status": "FAIL"
190
+ }
191
+ ]
192
+ },
193
+ "report_path": "logos/resources/verify/acceptance-report.md"
194
+ }
195
+ ```
196
+
197
+ ### 4.3 字段说明
198
+
199
+ | 字段 | 类型 | 必填 | 说明 |
200
+ |------|------|------|------|
201
+ | `summary.defined_count` | number | 是 | 规格中定义的测试用例总数 |
202
+ | `summary.ut_count` | number | 是 | 其中的 UT 数量 |
203
+ | `summary.st_count` | number | 是 | 其中的 ST 数量 |
204
+ | `summary.executed_count` | number | 是 | 实际执行的用例数 |
205
+ | `summary.passed_count` | number | 是 | 通过的用例数 |
206
+ | `summary.failed_count` | number | 是 | 失败的用例数 |
207
+ | `summary.skipped_count` | number | 是 | 跳过的用例数 |
208
+ | `summary.uncovered_count` | number | 是 | 未覆盖的用例数 |
209
+ | `summary.coverage_pct` | number | 是 | 覆盖率(0-100 整数) |
210
+ | `summary.pass_rate_pct` | number | 是 | 通过率(0-100 整数) |
211
+ | `gate.result` | string | 是 | 门禁结果:`"PASS"` 或 `"FAIL"` |
212
+ | `gate.reason` | string \| null | 是 | FAIL 时的原因分类,PASS 时为 null |
213
+ | `failed_cases` | array | 是 | 失败的测试用例列表 |
214
+ | `uncovered_cases` | string[] | 是 | 未覆盖的用例 ID 列表 |
215
+ | `skipped_cases` | string[] | 是 | 跳过的用例 ID 列表 |
216
+ | `checklist.total` | number | 是 | 覆盖度校验项总数 |
217
+ | `checklist.checked` | number | 是 | 已确认的项数 |
218
+ | `checklist.unchecked_items` | array | 是 | 未确认项列表(含 text 和 file) |
219
+ | `ac_trace.total` | number | 是 | 验收条件总数 |
220
+ | `ac_trace.passed` | number | 是 | 通过的验收条件数 |
221
+ | `ac_trace.failed_criteria` | array | 是 | 未通过的验收条件列表 |
222
+ | `report_path` | string | 是 | 生成的验收报告路径 |
223
+
224
+ ### 4.4 gate.reason 取值
225
+
226
+ | 值 | 说明 |
227
+ |----|------|
228
+ | `null` | 门禁通过 |
229
+ | `"failed_cases"` | 存在失败的测试用例 |
230
+ | `"incomplete_coverage"` | 存在未覆盖的测试用例 |
231
+ | `"checklist_incomplete"` | 设计时覆盖度校验未完全确认 |
232
+ | `"ac_trace_incomplete"` | 验收条件追溯未完全通过 |
233
+
234
+ ---
235
+
236
+ ## 5. 错误处理
237
+
238
+ 当命令因错误退出时(如项目未初始化、找不到文件等),JSON 模式下输出错误 JSON 到 **stderr** 并以非零退出码退出:
239
+
240
+ ```jsonc
241
+ {
242
+ "command": "<command-name>",
243
+ "version": "<cli-version>",
244
+ "timestamp": "<ISO-8601>",
245
+ "error": {
246
+ "code": "PROJECT_NOT_INITIALIZED",
247
+ "message": "logos/logos.config.json not found."
248
+ }
249
+ }
250
+ ```
251
+
252
+ ### 5.1 错误码
253
+
254
+ | 错误码 | 说明 |
255
+ |--------|------|
256
+ | `PROJECT_NOT_INITIALIZED` | 当前目录不是 OpenLogos 项目 |
257
+ | `NO_TEST_RESULTS` | 找不到测试结果文件 |
258
+ | `NO_TEST_CASES` | 找不到测试用例规格文件 |
259
+
260
+ ---
261
+
262
+ ## 6. 完整用法示例
263
+
264
+ ```bash
265
+ # 获取项目状态(机器可读)
266
+ openlogos status --format json | jq '.data.current_phase'
267
+
268
+ # 获取 CLI 版本和项目探测信息
269
+ openlogos detect --format json | jq '.data.cli.version'
270
+
271
+ # 获取测试验收摘要
272
+ openlogos verify --format json | jq '.data.gate.result'
273
+
274
+ # 在脚本中检查门禁结果
275
+ if openlogos verify --format json 2>/dev/null | jq -e '.data.gate.result == "PASS"' > /dev/null; then
276
+ echo "All tests passed!"
277
+ fi
278
+ ```