@codluv/versionguard 0.4.0 → 0.6.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.
- package/dist/calver.d.ts +1 -0
- package/dist/calver.d.ts.map +1 -1
- package/dist/changelog.d.ts +52 -0
- package/dist/changelog.d.ts.map +1 -1
- package/dist/chunks/{index-B3R60bYJ.js → index-DeZAx4Le.js} +535 -52
- package/dist/chunks/index-DeZAx4Le.js.map +1 -0
- package/dist/ckm/engine.d.ts +92 -0
- package/dist/ckm/engine.d.ts.map +1 -0
- package/dist/ckm/index.d.ts +32 -0
- package/dist/ckm/index.d.ts.map +1 -0
- package/dist/ckm/types.d.ts +168 -0
- package/dist/ckm/types.d.ts.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +140 -17
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/fix/index.d.ts.map +1 -1
- package/dist/hooks.d.ts +14 -7
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -33
- package/dist/init-wizard.d.ts +25 -0
- package/dist/init-wizard.d.ts.map +1 -1
- package/dist/project-root.d.ts +74 -0
- package/dist/project-root.d.ts.map +1 -0
- package/dist/scheme-rules.d.ts +32 -0
- package/dist/scheme-rules.d.ts.map +1 -0
- package/dist/semver.d.ts +9 -2
- package/dist/semver.d.ts.map +1 -1
- package/dist/tag/index.d.ts +1 -1
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/types.d.ts +58 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunks/index-B3R60bYJ.js.map +0 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CKM engine — auto-generates topic index from a ckm.json manifest.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This module is designed to be reusable across any CLI tool that
|
|
6
|
+
* generates a `ckm.json` via forge-ts. It requires zero manual
|
|
7
|
+
* topic mapping — topics are derived from the CKM structure itself.
|
|
8
|
+
*
|
|
9
|
+
* ## How topics are derived
|
|
10
|
+
*
|
|
11
|
+
* 1. Each `*Config` concept becomes a topic (e.g., `CalVerConfig` → `calver`)
|
|
12
|
+
* 2. Config schema entries are grouped by their key prefix
|
|
13
|
+
* 3. Operations are linked to topics by keyword matching on their description
|
|
14
|
+
* 4. Constraints are linked by their `enforcedBy` field
|
|
15
|
+
*
|
|
16
|
+
* ## Integration pattern
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { createCkmEngine } from './ckm/engine';
|
|
20
|
+
* import ckmRaw from '../docs/ckm.json?raw';
|
|
21
|
+
*
|
|
22
|
+
* const engine = createCkmEngine(JSON.parse(ckmRaw));
|
|
23
|
+
* console.log(engine.getTopicIndex());
|
|
24
|
+
* console.log(JSON.stringify(engine.getTopicJson('calver')));
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @packageDocumentation
|
|
28
|
+
*/
|
|
29
|
+
import type { CkmManifest, CkmTopic } from './types';
|
|
30
|
+
/**
|
|
31
|
+
* The CKM engine — provides topic derivation, filtering, and output formatting.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* Instantiate via {@link createCkmEngine}. All topic data is derived
|
|
35
|
+
* from the CKM manifest at construction time with zero configuration.
|
|
36
|
+
*
|
|
37
|
+
* @public
|
|
38
|
+
* @since 0.4.0
|
|
39
|
+
*/
|
|
40
|
+
export interface CkmEngine {
|
|
41
|
+
/** All auto-derived topics. */
|
|
42
|
+
readonly topics: CkmTopic[];
|
|
43
|
+
/**
|
|
44
|
+
* Returns a formatted topic index for terminal display.
|
|
45
|
+
*
|
|
46
|
+
* @param toolName - CLI tool name for the usage line.
|
|
47
|
+
* @returns Formatted string.
|
|
48
|
+
*/
|
|
49
|
+
getTopicIndex(toolName?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Returns human-readable content for a topic.
|
|
52
|
+
*
|
|
53
|
+
* @param topicName - Topic slug.
|
|
54
|
+
* @returns Formatted content, or null if not found.
|
|
55
|
+
*/
|
|
56
|
+
getTopicContent(topicName: string): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Returns CKM-filtered JSON for a topic (machine-readable).
|
|
59
|
+
*
|
|
60
|
+
* @param topicName - Topic slug, or undefined for full index.
|
|
61
|
+
* @returns JSON-serializable object.
|
|
62
|
+
*/
|
|
63
|
+
getTopicJson(topicName?: string): object;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the raw CKM manifest.
|
|
66
|
+
*/
|
|
67
|
+
getManifest(): CkmManifest;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Creates a CKM engine from a parsed manifest.
|
|
71
|
+
*
|
|
72
|
+
* @remarks
|
|
73
|
+
* This is the main entry point for the reusable CKM module.
|
|
74
|
+
* Pass the parsed contents of `ckm.json` and get back an engine
|
|
75
|
+
* that auto-derives topics and provides formatted output.
|
|
76
|
+
*
|
|
77
|
+
* @param manifest - Parsed CKM manifest (from forge-ts `ckm.json`).
|
|
78
|
+
* @returns A configured CKM engine.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { createCkmEngine } from './ckm/engine';
|
|
83
|
+
*
|
|
84
|
+
* const engine = createCkmEngine(manifest);
|
|
85
|
+
* console.log(engine.getTopicIndex('mytool'));
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @public
|
|
89
|
+
* @since 0.4.0
|
|
90
|
+
*/
|
|
91
|
+
export declare function createCkmEngine(manifest: CkmManifest): CkmEngine;
|
|
92
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/ckm/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAkB,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA6CrE;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAE5B;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAElD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;OAEG;IACH,WAAW,IAAI,WAAW,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAUhE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CKM (Codebase Knowledge Manifest) module.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Reusable module for any CLI tool that generates `ckm.json` via forge-ts.
|
|
6
|
+
* Provides auto-derived topics, machine-readable JSON output, and
|
|
7
|
+
* human-readable terminal formatting — all with zero manual configuration.
|
|
8
|
+
*
|
|
9
|
+
* ## Quick start
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { createCkmEngine } from './ckm';
|
|
13
|
+
* import ckmRaw from '../docs/ckm.json?raw';
|
|
14
|
+
*
|
|
15
|
+
* const engine = createCkmEngine(JSON.parse(ckmRaw));
|
|
16
|
+
*
|
|
17
|
+
* // Terminal: topic index
|
|
18
|
+
* console.log(engine.getTopicIndex('mytool'));
|
|
19
|
+
*
|
|
20
|
+
* // Terminal: specific topic
|
|
21
|
+
* console.log(engine.getTopicContent('calver'));
|
|
22
|
+
*
|
|
23
|
+
* // JSON: for LLM agents
|
|
24
|
+
* console.log(JSON.stringify(engine.getTopicJson('calver'), null, 2));
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @packageDocumentation
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export { type CkmEngine, createCkmEngine } from './engine';
|
|
31
|
+
export type { CkmConcept, CkmConfigEntry, CkmConstraint, CkmInput, CkmManifest, CkmOperation, CkmProperty, CkmTopic, CkmWorkflow, } from './types';
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ckm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CKM (Codebase Knowledge Manifest) type definitions.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* These types describe the structure of a `ckm.json` file generated
|
|
6
|
+
* by forge-ts. Any CLI tool can consume this format to provide
|
|
7
|
+
* machine-readable help, auto-generated topic indexes, and
|
|
8
|
+
* LLM-consumable operational knowledge.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A domain concept extracted from an exported interface or type.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
* @since 0.4.0
|
|
17
|
+
*/
|
|
18
|
+
export interface CkmConcept {
|
|
19
|
+
/** Unique concept identifier (e.g., `'concept-CalVerConfig'`). */
|
|
20
|
+
id: string;
|
|
21
|
+
/** Interface or type name (e.g., `'CalVerConfig'`). */
|
|
22
|
+
name: string;
|
|
23
|
+
/** One-line description from TSDoc summary. */
|
|
24
|
+
what: string;
|
|
25
|
+
/** Properties of the interface, if applicable. */
|
|
26
|
+
properties?: CkmProperty[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A property within a concept.
|
|
30
|
+
*
|
|
31
|
+
* @public
|
|
32
|
+
* @since 0.4.0
|
|
33
|
+
*/
|
|
34
|
+
export interface CkmProperty {
|
|
35
|
+
/** Property name. */
|
|
36
|
+
name: string;
|
|
37
|
+
/** TypeScript type annotation. */
|
|
38
|
+
type: string;
|
|
39
|
+
/** Description from TSDoc. */
|
|
40
|
+
description: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A user-facing operation extracted from an exported function.
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
* @since 0.4.0
|
|
47
|
+
*/
|
|
48
|
+
export interface CkmOperation {
|
|
49
|
+
/** Unique operation identifier (e.g., `'op-validate'`). */
|
|
50
|
+
id: string;
|
|
51
|
+
/** Function name (e.g., `'validate'`). */
|
|
52
|
+
name: string;
|
|
53
|
+
/** One-line description from TSDoc summary. */
|
|
54
|
+
what: string;
|
|
55
|
+
/** Function parameters. */
|
|
56
|
+
inputs?: CkmInput[];
|
|
57
|
+
/** Return value description. */
|
|
58
|
+
outputs?: {
|
|
59
|
+
text: string;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A function parameter within an operation.
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
* @since 0.4.0
|
|
67
|
+
*/
|
|
68
|
+
export interface CkmInput {
|
|
69
|
+
/** Parameter name. */
|
|
70
|
+
name: string;
|
|
71
|
+
/** TypeScript type annotation. */
|
|
72
|
+
type: string;
|
|
73
|
+
/** Whether the parameter is required. */
|
|
74
|
+
required: boolean;
|
|
75
|
+
/** Description from TSDoc `@param` tag. */
|
|
76
|
+
description: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A constraint enforced by the tool.
|
|
80
|
+
*
|
|
81
|
+
* @public
|
|
82
|
+
* @since 0.4.0
|
|
83
|
+
*/
|
|
84
|
+
export interface CkmConstraint {
|
|
85
|
+
/** Unique constraint identifier. */
|
|
86
|
+
id: string;
|
|
87
|
+
/** The rule being enforced. */
|
|
88
|
+
rule: string;
|
|
89
|
+
/** Function or module that enforces it. */
|
|
90
|
+
enforcedBy: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A multi-step workflow for a common goal.
|
|
94
|
+
*
|
|
95
|
+
* @public
|
|
96
|
+
* @since 0.4.0
|
|
97
|
+
*/
|
|
98
|
+
export interface CkmWorkflow {
|
|
99
|
+
/** Unique workflow identifier. */
|
|
100
|
+
id: string;
|
|
101
|
+
/** What the workflow achieves. */
|
|
102
|
+
goal: string;
|
|
103
|
+
/** Ordered steps. */
|
|
104
|
+
steps: {
|
|
105
|
+
command?: string;
|
|
106
|
+
manual?: string;
|
|
107
|
+
note?: string;
|
|
108
|
+
}[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A config schema entry with type, description, and default.
|
|
112
|
+
*
|
|
113
|
+
* @public
|
|
114
|
+
* @since 0.4.0
|
|
115
|
+
*/
|
|
116
|
+
export interface CkmConfigEntry {
|
|
117
|
+
/** Dotted key path (e.g., `'CalVerConfig.format'`). */
|
|
118
|
+
key: string;
|
|
119
|
+
/** TypeScript type. */
|
|
120
|
+
type: string;
|
|
121
|
+
/** Description from TSDoc. */
|
|
122
|
+
description: string;
|
|
123
|
+
/** Default value if specified via `@defaultValue`. */
|
|
124
|
+
default?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The complete Codebase Knowledge Manifest.
|
|
128
|
+
*
|
|
129
|
+
* @remarks
|
|
130
|
+
* Generated by `forge-ts build` from TSDoc annotations.
|
|
131
|
+
* Consumed by CLI tools for structured help output.
|
|
132
|
+
*
|
|
133
|
+
* @public
|
|
134
|
+
* @since 0.4.0
|
|
135
|
+
*/
|
|
136
|
+
export interface CkmManifest {
|
|
137
|
+
/** Domain concepts (interfaces, types). */
|
|
138
|
+
concepts: CkmConcept[];
|
|
139
|
+
/** User-facing operations (exported functions). */
|
|
140
|
+
operations: CkmOperation[];
|
|
141
|
+
/** Enforced rules. */
|
|
142
|
+
constraints: CkmConstraint[];
|
|
143
|
+
/** Multi-step workflows. */
|
|
144
|
+
workflows: CkmWorkflow[];
|
|
145
|
+
/** Configuration schema entries. */
|
|
146
|
+
configSchema: CkmConfigEntry[];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* An auto-generated topic derived from CKM data.
|
|
150
|
+
*
|
|
151
|
+
* @public
|
|
152
|
+
* @since 0.4.0
|
|
153
|
+
*/
|
|
154
|
+
export interface CkmTopic {
|
|
155
|
+
/** Topic slug used as CLI argument (e.g., `'calver'`). */
|
|
156
|
+
name: string;
|
|
157
|
+
/** One-line summary. */
|
|
158
|
+
summary: string;
|
|
159
|
+
/** Related concept names from the CKM. */
|
|
160
|
+
concepts: CkmConcept[];
|
|
161
|
+
/** Related operations from the CKM. */
|
|
162
|
+
operations: CkmOperation[];
|
|
163
|
+
/** Related config entries from the CKM. */
|
|
164
|
+
configSchema: CkmConfigEntry[];
|
|
165
|
+
/** Related constraints from the CKM. */
|
|
166
|
+
constraints: CkmConstraint[];
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ckm/types.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA2jBvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAM,EAAiB,EAC7B,OAAO,GAAE,MAAwB,GAChC,OAAO,CAWT"}
|