cullit 1.9.2 → 1.10.1
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 +26 -12
- package/dist/index.js +11 -10
- package/package.json +9 -5
package/README.md
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
# cullit CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Public CLI installer for Cullit's local, template-based workflow.
|
|
4
4
|
|
|
5
|
-
`cullit`
|
|
5
|
+
The `cullit` package on npm is intentionally limited to the free local surface:
|
|
6
|
+
|
|
7
|
+
- local git collection
|
|
8
|
+
- template generation with `--provider none`
|
|
9
|
+
- stdout and file publishing
|
|
10
|
+
- config, status, and tag helpers
|
|
11
|
+
|
|
12
|
+
Installing from npm does not grant paid access by itself. Licensed AI providers, Jira/Linear enrichment, premium publishers, dashboard workflows, and other paid surfaces are delivered through Cullit-hosted or private licensed distributions.
|
|
6
13
|
|
|
7
14
|
## Install
|
|
8
15
|
|
|
9
16
|
```bash
|
|
10
|
-
# one-off
|
|
11
|
-
npx cullit generate --from v1.0.0 --to v1.1.0
|
|
17
|
+
# one-off free local run
|
|
18
|
+
npx cullit generate --from v1.0.0 --to v1.1.0 --provider none
|
|
12
19
|
|
|
13
|
-
# global
|
|
20
|
+
# global install
|
|
14
21
|
npm install -g cullit
|
|
15
22
|
|
|
16
23
|
# dev dependency
|
|
@@ -23,19 +30,26 @@ npm install -D cullit
|
|
|
23
30
|
# initialize .cullit.yml
|
|
24
31
|
cullit init
|
|
25
32
|
|
|
26
|
-
# generate between refs
|
|
27
|
-
cullit generate --from v1.0.0 --to v1.1.0
|
|
33
|
+
# generate between refs with the built-in template engine
|
|
34
|
+
cullit generate --from v1.0.0 --to v1.1.0 --provider none
|
|
28
35
|
|
|
29
|
-
# autodetect last two tags
|
|
30
|
-
cullit generate
|
|
36
|
+
# autodetect the last two tags
|
|
37
|
+
cullit generate --provider none
|
|
31
38
|
|
|
32
|
-
#
|
|
33
|
-
cullit generate --from HEAD~10 --provider none
|
|
39
|
+
# write release notes to a file
|
|
40
|
+
cullit generate --from HEAD~10 --provider none --format markdown --dry-run
|
|
34
41
|
|
|
35
42
|
# select a named template profile from .cullit.yml
|
|
36
|
-
cullit generate --from v1.8.0 --template customer-facing
|
|
43
|
+
cullit generate --from v1.8.0 --provider none --template customer-facing
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
## Licensing
|
|
47
|
+
|
|
48
|
+
- Public npm package: free local/template workflow only
|
|
49
|
+
- Paid tiers (Pro, Team, Enterprise): delivered through the private package `@cullit/licensed`
|
|
50
|
+
- `CULLIT_API_KEY`: used by licensed hosted/private Cullit surfaces
|
|
51
|
+
- Need Pro or Team access: https://cullit.io/pricing
|
|
52
|
+
|
|
39
53
|
## Common Flags
|
|
40
54
|
|
|
41
55
|
- `--from <ref>` source git ref / tag / query
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
|
-
import { runPipeline, VERSION, createLogger, analyzeReleaseReadiness, resolveLicense, AI_PROVIDERS, AUDIENCES, TONES, SOURCE_TYPES, OUTPUT_FORMATS } from "@cullit/core";
|
|
4
|
+
import { runPipeline, VERSION, createLogger, analyzeReleaseReadiness, resolveLicense, reportUsage, AI_PROVIDERS, AUDIENCES, TONES, SOURCE_TYPES, OUTPUT_FORMATS } from "@cullit/core";
|
|
5
5
|
import { loadConfig } from "@cullit/config";
|
|
6
6
|
import { getRecentTags } from "@cullit/core";
|
|
7
7
|
import { writeFileSync, readFileSync, existsSync } from "fs";
|
|
@@ -38,7 +38,7 @@ var HELP = `
|
|
|
38
38
|
$ cullit <command> [options]
|
|
39
39
|
|
|
40
40
|
COMMANDS
|
|
41
|
-
generate Generate release notes from git
|
|
41
|
+
generate Generate release notes from git or licensed sources
|
|
42
42
|
status Release readiness check \u2014 should you release?
|
|
43
43
|
init Create a .cullit.yml config file
|
|
44
44
|
tags List recent tags in the current repo
|
|
@@ -57,14 +57,13 @@ var HELP = `
|
|
|
57
57
|
--verbose Show detailed output
|
|
58
58
|
--quiet Suppress all output except errors
|
|
59
59
|
|
|
60
|
+
NOTES
|
|
61
|
+
Public npm package: local git + template mode + stdout/file
|
|
62
|
+
Licensed/private Cullit surfaces add AI, enrichments, and premium publishers
|
|
63
|
+
|
|
60
64
|
EXAMPLES
|
|
61
65
|
$ cullit generate --from v1.0.0 --to v1.1.0
|
|
62
|
-
$ cullit generate --from HEAD~10 --provider gemini
|
|
63
|
-
$ cullit generate --from HEAD~5 --provider ollama --model llama3.1
|
|
64
66
|
$ cullit generate --from HEAD~5 --provider none # no AI key needed
|
|
65
|
-
$ cullit generate --source jira --from "project = PROJ" --provider anthropic
|
|
66
|
-
$ cullit generate --source linear --from "team:ENG" --provider openai
|
|
67
|
-
$ cullit generate --source gitlab --from v1.0.0 --to v1.1.0
|
|
68
67
|
$ cullit generate --from v1.2.0 --template customer-facing
|
|
69
68
|
$ cullit generate --from HEAD~5 --tone edgy --format html-edgy
|
|
70
69
|
$ cullit init
|
|
@@ -209,7 +208,9 @@ async function runGenerate(from, to, opts) {
|
|
|
209
208
|
logger.info(`\xBB License: ${tierLabel}`);
|
|
210
209
|
}
|
|
211
210
|
try {
|
|
212
|
-
|
|
211
|
+
await runPipeline(from, to, config, { format, dryRun, logger, templateProfile });
|
|
212
|
+
reportUsage(from).catch(() => {
|
|
213
|
+
});
|
|
213
214
|
if (logLevel !== "quiet") {
|
|
214
215
|
try {
|
|
215
216
|
const advisory = analyzeReleaseReadiness();
|
|
@@ -296,7 +297,7 @@ async function interactiveInit() {
|
|
|
296
297
|
const VALID_TONES = TONES;
|
|
297
298
|
const VALID_ENRICHMENTS = ["jira", "linear", "both", "none"];
|
|
298
299
|
console.log("\n Cullit \u2014 Project Setup\n");
|
|
299
|
-
const provider = await ask(rl, " AI provider (anthropic/openai/gemini/ollama/openclaw/none) [
|
|
300
|
+
const provider = await ask(rl, " AI provider (anthropic/openai/gemini/ollama/openclaw/none) [none]: ") || "none";
|
|
300
301
|
if (!VALID_PROVIDERS.includes(provider)) {
|
|
301
302
|
console.error(`
|
|
302
303
|
\u2717 Invalid provider: ${provider}. Must be one of: ${VALID_PROVIDERS.join(", ")}`);
|
|
@@ -317,7 +318,7 @@ async function interactiveInit() {
|
|
|
317
318
|
rl.close();
|
|
318
319
|
process.exit(1);
|
|
319
320
|
}
|
|
320
|
-
const tone = await ask(rl, " Tone (professional/casual/terse) [professional]: ") || "professional";
|
|
321
|
+
const tone = await ask(rl, " Tone (professional/casual/terse/edgy/hype/snarky) [professional]: ") || "professional";
|
|
321
322
|
if (!VALID_TONES.includes(tone)) {
|
|
322
323
|
console.error(`
|
|
323
324
|
\u2717 Invalid tone: ${tone}. Must be one of: ${VALID_TONES.join(", ")}`);
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cullit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Public Cullit CLI for local, template-based release notes. Licensed AI and integrations are delivered separately.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Cullit <matt@cullit.io>",
|
|
8
8
|
"repository": {
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"devops",
|
|
19
19
|
"automation"
|
|
20
20
|
],
|
|
21
|
+
"homepage": "https://cullit.io",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/mttaylor/cullit/issues"
|
|
24
|
+
},
|
|
21
25
|
"bin": {
|
|
22
26
|
"cullit": "./dist/index.js"
|
|
23
27
|
},
|
|
@@ -27,11 +31,11 @@
|
|
|
27
31
|
"README.md"
|
|
28
32
|
],
|
|
29
33
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
34
|
+
"node": ">=22"
|
|
31
35
|
},
|
|
32
36
|
"dependencies": {
|
|
33
|
-
"@cullit/
|
|
34
|
-
"@cullit/
|
|
37
|
+
"@cullit/config": "1.10.1",
|
|
38
|
+
"@cullit/core": "1.10.1"
|
|
35
39
|
},
|
|
36
40
|
"scripts": {
|
|
37
41
|
"build": "tsup src/index.ts --format esm --clean",
|