compose-agentsmd 3.0.0 → 3.1.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/README.md CHANGED
@@ -85,6 +85,8 @@ Remote sources are cached under `~/.agentsmd/cache/<owner>/<repo>/<ref>/`. Use `
85
85
  - `--ruleset-name <name>`: override the ruleset filename (default: `agent-ruleset.json`)
86
86
  - `--refresh`: refresh cached remote rules
87
87
  - `--clear-cache`: remove cached remote rules and exit
88
+ - `--version` / `-V`: show version and exit
89
+ - `--verbose` / `-v`: show verbose diagnostics
88
90
  - `edit-rules`: prepare or locate a writable rules workspace
89
91
  - `apply-rules`: push workspace changes (if GitHub source) and regenerate rules with refresh
90
92
 
@@ -9,6 +9,7 @@ const DEFAULT_OUTPUT = "AGENTS.md";
9
9
  const DEFAULT_CACHE_ROOT = path.join(os.homedir(), ".agentsmd", "cache");
10
10
  const DEFAULT_WORKSPACE_ROOT = path.join(os.homedir(), ".agentsmd", "workspace");
11
11
  const RULESET_SCHEMA_PATH = new URL("../agent-ruleset.schema.json", import.meta.url);
12
+ const PACKAGE_JSON_PATH = new URL("../package.json", import.meta.url);
12
13
  const TOOL_RULES_PATH = new URL("../tools/tool-rules.md", import.meta.url);
13
14
  const USAGE_PATH = new URL("../tools/usage.txt", import.meta.url);
14
15
  const parseArgs = (argv) => {
@@ -24,6 +25,14 @@ const parseArgs = (argv) => {
24
25
  args.help = true;
25
26
  continue;
26
27
  }
28
+ if (arg === "--version" || arg === "-V") {
29
+ args.version = true;
30
+ continue;
31
+ }
32
+ if (arg === "--verbose" || arg === "-v") {
33
+ args.verbose = true;
34
+ continue;
35
+ }
27
36
  if (arg === "--root") {
28
37
  const value = remaining[i + 1];
29
38
  if (!value) {
@@ -67,6 +76,8 @@ const normalizeTrailingWhitespace = (content) => content.replace(/\s+$/u, "");
67
76
  const normalizePath = (filePath) => filePath.replace(/\\/g, "/");
68
77
  const isNonEmptyString = (value) => typeof value === "string" && value.trim() !== "";
69
78
  const usage = normalizeTrailingWhitespace(fs.readFileSync(USAGE_PATH, "utf8"));
79
+ const packageJson = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf8"));
80
+ const getVersion = () => packageJson.version ?? "unknown";
70
81
  const rulesetSchema = JSON.parse(fs.readFileSync(RULESET_SCHEMA_PATH, "utf8"));
71
82
  const TOOL_RULES = normalizeTrailingWhitespace(fs.readFileSync(TOOL_RULES_PATH, "utf8"));
72
83
  const ajv = new Ajv({ allErrors: true, strict: false });
@@ -400,6 +411,10 @@ const ensureSingleRuleset = (rulesetFiles, rootDir, rulesetName) => {
400
411
  };
401
412
  const main = () => {
402
413
  const args = parseArgs(process.argv.slice(2));
414
+ if (args.version) {
415
+ process.stdout.write(`${getVersion()}\n`);
416
+ return;
417
+ }
403
418
  if (args.help) {
404
419
  process.stdout.write(`${usage}\n`);
405
420
  return;
@@ -413,6 +428,15 @@ const main = () => {
413
428
  const rulesetName = args.rulesetName || DEFAULT_RULESET_NAME;
414
429
  const rulesetFiles = getRulesetFiles(rootDir, args.ruleset, rulesetName);
415
430
  const command = args.command ?? "compose";
431
+ const logVerbose = (message) => {
432
+ if (args.verbose) {
433
+ process.stdout.write(`${message}\n`);
434
+ }
435
+ };
436
+ logVerbose("Verbose:");
437
+ logVerbose(`- Root: ${rootDir}`);
438
+ logVerbose(`- Ruleset name: ${rulesetName}`);
439
+ logVerbose(`- Ruleset files:\n${rulesetFiles.map((file) => ` - ${normalizePath(path.relative(rootDir, file))}`).join("\n")}`);
416
440
  if (command === "edit-rules") {
417
441
  const rulesetPath = ensureSingleRuleset(rulesetFiles, rootDir, rulesetName);
418
442
  const rulesetDir = path.dirname(rulesetPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "compose-agentsmd",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "CLI tools for composing per-project AGENTS.md files from modular rule sets",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,4 +1,5 @@
1
1
  # Tool Rules (compose-agentsmd)
2
2
  - Before starting any work, run `compose-agentsmd` from the project root.
3
3
  - To update shared rules, run `compose-agentsmd edit-rules`, edit the workspace rules, then run `compose-agentsmd apply-rules`.
4
- - Do not edit `AGENTS.md` directly; update the source rules and regenerate.
4
+ - Do not edit `AGENTS.md` directly; update the source rules and regenerate.
5
+ - When updating rules, include a detailed summary of what changed (added/removed/modified items) in the final response.
package/tools/usage.txt CHANGED
@@ -1,6 +1,9 @@
1
- Usage: compose-agentsmd [edit-rules|apply-rules] [--root <path>] [--ruleset <path>] [--ruleset-name <name>] [--refresh] [--clear-cache]
1
+ Usage: compose-agentsmd [edit-rules|apply-rules] [--root <path>] [--ruleset <path>] [--ruleset-name <name>] [--refresh] [--clear-cache] [--version|-V] [--verbose|-v] [--help|-h]
2
2
 
3
3
  Options:
4
+ --help, -h Show help and exit
5
+ --version, -V Show version and exit
6
+ --verbose, -v Show verbose diagnostics
4
7
  --root <path> Project root directory (default: current working directory)
5
8
  --ruleset <path> Only compose a single ruleset file
6
9
  --ruleset-name <name> Ruleset filename in the project root (default: agent-ruleset.json)