@thallylabs/cli 0.6.0 → 0.8.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/index.js +58 -2
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -13,7 +13,8 @@ var COMMANDS = [
|
|
|
13
13
|
{ name: "translate", summary: "Translate content into a locale", usage: "thally translate --locale <code>" },
|
|
14
14
|
{ name: "mcp", summary: "Start the Model Context Protocol server (stdio)", usage: "thally mcp" },
|
|
15
15
|
{ name: "agent", summary: "Draft docs from a task (PR, diff, or instruction) as a reviewed PR", usage: 'thally agent "<instruction>" [--diff <ref>] [--from-pr <url>] [--context-file <path>] [--dry-run] [--pr]' },
|
|
16
|
-
{ name: "track", summary: "Track product repos \u2014 their merged PRs become docs PRs", usage: "thally track <add|list|test|setup> [owner/repo] [--branch <base>] [--paths <globs>] [--pr <n>]" }
|
|
16
|
+
{ name: "track", summary: "Track product repos \u2014 their merged PRs become docs PRs", usage: "thally track <add|list|test|setup> [owner/repo] [--branch <base>] [--paths <globs>] [--pr <n>]" },
|
|
17
|
+
{ name: "starter", summary: "Review or apply an immutable starter runtime update", usage: "thally starter update [--apply]" }
|
|
17
18
|
];
|
|
18
19
|
function parseArgs(argv) {
|
|
19
20
|
const command = argv[0] && !argv[0].startsWith("-") ? argv[0] : void 0;
|
|
@@ -49,8 +50,9 @@ function parseArgs(argv) {
|
|
|
49
50
|
function helpText() {
|
|
50
51
|
const lines = [];
|
|
51
52
|
lines.push("");
|
|
52
|
-
lines.push(" thally \u2014
|
|
53
|
+
lines.push(" thally \u2014 keep customer-facing knowledge in sync with product changes");
|
|
53
54
|
lines.push("");
|
|
55
|
+
lines.push(" Connect product evidence, prepare reviewable updates, and publish one trusted source.");
|
|
54
56
|
lines.push(" You author content/, docs.json, and snippets/.");
|
|
55
57
|
lines.push(" The framework (Next.js) is a hidden runtime \u2014 you never touch src/app/.");
|
|
56
58
|
lines.push("");
|
|
@@ -6450,6 +6452,57 @@ async function runTrackCommand(args) {
|
|
|
6450
6452
|
return sub ? 1 : 0;
|
|
6451
6453
|
}
|
|
6452
6454
|
|
|
6455
|
+
// src/commands/starter.ts
|
|
6456
|
+
import {
|
|
6457
|
+
updateStarterProject
|
|
6458
|
+
} from "create-thally-docs/starter-update";
|
|
6459
|
+
function formatPaths(label, paths) {
|
|
6460
|
+
if (paths.length === 0) return [];
|
|
6461
|
+
return [` ${label}:`, ...paths.map((path5) => ` - ${path5}`)];
|
|
6462
|
+
}
|
|
6463
|
+
function formatStarterUpdateResult(result) {
|
|
6464
|
+
if (result.isUpToDate) {
|
|
6465
|
+
return `
|
|
6466
|
+
Starter release ${result.targetRelease.starterVersion} is already current.
|
|
6467
|
+
|
|
6468
|
+
`;
|
|
6469
|
+
}
|
|
6470
|
+
const lines = [
|
|
6471
|
+
"",
|
|
6472
|
+
` Starter ${result.previousRelease.starterVersion} \u2192 ${result.targetRelease.starterVersion}`,
|
|
6473
|
+
` ${result.plan.copyPaths.length} copy/update \xB7 ${result.plan.deletePaths.length} delete \xB7 ${result.plan.conflictPaths.length} conflict \xB7 ${result.plan.manualReviewPaths.length} manual review`,
|
|
6474
|
+
"",
|
|
6475
|
+
...formatPaths("Copy/update", result.plan.copyPaths),
|
|
6476
|
+
...formatPaths("Delete", result.plan.deletePaths),
|
|
6477
|
+
...formatPaths("Conflicts", result.plan.conflictPaths),
|
|
6478
|
+
...formatPaths("Manual review", result.plan.manualReviewPaths),
|
|
6479
|
+
""
|
|
6480
|
+
];
|
|
6481
|
+
if (result.applied) {
|
|
6482
|
+
lines.push(" Starter update applied and provenance advanced.", "");
|
|
6483
|
+
} else if (result.plan.conflictPaths.length > 0) {
|
|
6484
|
+
lines.push(" Dry run only. Resolve conflicts before applying.", "");
|
|
6485
|
+
} else {
|
|
6486
|
+
lines.push(' Dry run only. Review the plan, then run "thally starter update --apply".', "");
|
|
6487
|
+
}
|
|
6488
|
+
return lines.join("\n");
|
|
6489
|
+
}
|
|
6490
|
+
async function runStarterCommand(args) {
|
|
6491
|
+
const subcommand = args.positionals[0];
|
|
6492
|
+
if (subcommand !== "update" || args.hasFlag("--help", "-h")) {
|
|
6493
|
+
process.stdout.write("\n Usage: thally starter update [--apply]\n\n");
|
|
6494
|
+
return subcommand && subcommand !== "update" ? 1 : 0;
|
|
6495
|
+
}
|
|
6496
|
+
const apply = args.hasFlag("--apply");
|
|
6497
|
+
const result = await updateStarterProject({
|
|
6498
|
+
targetDir: process.cwd(),
|
|
6499
|
+
apply,
|
|
6500
|
+
confirmed: apply
|
|
6501
|
+
});
|
|
6502
|
+
process.stdout.write(formatStarterUpdateResult(result));
|
|
6503
|
+
return result.plan.conflictPaths.length > 0 ? 1 : 0;
|
|
6504
|
+
}
|
|
6505
|
+
|
|
6453
6506
|
// src/index.ts
|
|
6454
6507
|
var [major] = process.versions.node.split(".").map(Number);
|
|
6455
6508
|
if (major < 18) {
|
|
@@ -6504,6 +6557,9 @@ async function main() {
|
|
|
6504
6557
|
case "track":
|
|
6505
6558
|
requireProject();
|
|
6506
6559
|
return runTrackCommand(args);
|
|
6560
|
+
case "starter":
|
|
6561
|
+
requireProject();
|
|
6562
|
+
return runStarterCommand(args);
|
|
6507
6563
|
default:
|
|
6508
6564
|
process.stderr.write(`
|
|
6509
6565
|
Unknown command: ${args.command}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thallylabs/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "The
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "The Thally CLI for authoring knowledge surfaces, tracing product changes, and keeping documentation checked.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=18"
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
27
|
-
"@thallylabs/mcp": "0.
|
|
28
|
-
"create-thally-docs": "0.
|
|
27
|
+
"@thallylabs/mcp": "0.10.0",
|
|
28
|
+
"create-thally-docs": "0.10.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@thallylabs/agent": "*",
|