yarkr-cli 1.0.2 → 1.0.3

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.
Files changed (2) hide show
  1. package/dist/yarkr.js +59 -5
  2. package/package.json +2 -2
package/dist/yarkr.js CHANGED
@@ -39519,6 +39519,25 @@ var ConnectRepoBody = external_exports.object({
39519
39519
  classification: Classification.optional(),
39520
39520
  root_path: external_exports.string().max(200).optional()
39521
39521
  });
39522
+ var AddRepoBody = external_exports.object({
39523
+ /** `owner/repo` or a github.com URL. */
39524
+ repo: external_exports.string().trim().min(3).max(300),
39525
+ /** Only index below this folder, e.g. `skills` to skip a repo's templates and examples. */
39526
+ root_path: external_exports.string().max(200).optional()
39527
+ });
39528
+ var BulkAddReposBody = external_exports.object({
39529
+ /** `owner/repo` or github.com URLs; duplicates are added once. */
39530
+ repos: external_exports.array(external_exports.string().trim().min(1).max(300)).min(1).max(100),
39531
+ /** Applied to every repo added. */
39532
+ root_path: external_exports.string().max(200).optional()
39533
+ });
39534
+ var BanRepoBody = external_exports.object({ reason: external_exports.string().trim().min(1).max(500) });
39535
+ var IndexJobQuery = external_exports.object({
39536
+ status: external_exports.enum(["active", "queued", "running", "error", "done", "all"]).default("active"),
39537
+ /** Part of the repo's `owner/repo`, any case. */
39538
+ repo: external_exports.string().trim().max(200).optional(),
39539
+ limit: external_exports.coerce.number().int().min(1).max(500).default(200)
39540
+ });
39522
39541
  var AuditQuery = external_exports.object({
39523
39542
  package: external_exports.string().optional(),
39524
39543
  /** `me`: only what you did yourself. Anyone may read their own events. */
@@ -41349,13 +41368,23 @@ async function detectAssets(input2) {
41349
41368
  const byName = /* @__PURE__ */ new Map();
41350
41369
  for (const a of found.sort((x, y) => x.path.localeCompare(y.path))) {
41351
41370
  const prev = byName.get(a.name);
41352
- if (prev)
41353
- problems.push({ path: a.path, message: `Another asset is already named "${a.name}" (${prev.path}). Rename one of them in its frontmatter.` });
41354
- else
41371
+ if (!prev)
41355
41372
  byName.set(a.name, a);
41373
+ else if (!await sameFiles(prev, a, input2.read))
41374
+ problems.push({ path: a.path, message: `Another asset is already named "${a.name}" (${prev.path}) and its files differ. Rename one of them in its frontmatter, or make the copies identical.` });
41356
41375
  }
41357
41376
  return { assets: [...byName.values()], problems };
41358
41377
  }
41378
+ async function sameFiles(a, b, read) {
41379
+ if (a.kind !== b.kind || a.files.size !== b.files.size)
41380
+ return false;
41381
+ for (const [pkgPath, repoPath] of a.files) {
41382
+ const other = b.files.get(pkgPath);
41383
+ if (other === void 0 || await read(repoPath) !== await read(other))
41384
+ return false;
41385
+ }
41386
+ return true;
41387
+ }
41359
41388
  function toolsetServers2(text, path18, problems) {
41360
41389
  let doc;
41361
41390
  try {
@@ -45040,14 +45069,39 @@ async function repoLint(dir, opts) {
45040
45069
  return { assets, findings };
45041
45070
  }
45042
45071
 
45072
+ // src/banner.ts
45073
+ var WEBSITE = "https://yarkr.com";
45074
+ var WORDMARK = [
45075
+ "\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588",
45076
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588",
45077
+ " \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588",
45078
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588",
45079
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588"
45080
+ ];
45081
+ var rgb = (r, g, b) => (s) => kleur_default.enabled ? `\x1B[38;2;${r};${g};${b}m${s}\x1B[39m` : s;
45082
+ var petrol = rgb(74, 163, 191);
45083
+ function link(url2, text = url2) {
45084
+ return kleur_default.enabled ? `\x1B]8;;${url2}\x1B\\${text}\x1B]8;;\x1B\\` : text;
45085
+ }
45086
+ function banner(version2) {
45087
+ return [
45088
+ "",
45089
+ ...WORDMARK.map((l) => ` ${petrol(l)}`),
45090
+ "",
45091
+ ` ${kleur_default.bold("yarkr")} ${kleur_default.dim(`v${version2}`)} ${kleur_default.dim("\xB7")} skills, agents and MCP toolsets for every harness`,
45092
+ ` ${petrol("\u2192")} ${kleur_default.underline(petrol(link(WEBSITE)))}`,
45093
+ ""
45094
+ ].join("\n");
45095
+ }
45096
+
45043
45097
  // src/index.ts
45044
- var VERSION = true ? "1.0.2" : "0.0.0-dev";
45098
+ var VERSION = true ? "1.0.3" : "0.0.0-dev";
45045
45099
  var act = (fn) => async (...a) => {
45046
45100
  await fn(...a);
45047
45101
  };
45048
45102
  var syncFlags = (c) => c.option("--harness <ids...>", `limit to some harnesses (${HARNESS_IDS.join(", ")})`).option("--dry-run", "show what would change; write nothing").option("--check", "exit 1 if anything is out of date (for CI)").option("--force", "overwrite files edited locally").option("--require-signatures", "refuse unsigned releases").option("-g, --global", "install into your home directory instead of this folder").addOption(new Option("--user").hideHelp()).option("--registry <url>", "registry to use (default: from .yarkrrc)");
45049
45103
  function buildProgram() {
45050
- const program2 = new Command().name("yarkr").description("Yarkr: install your org's skills, agents and MCP configs into every harness.").version(VERSION).option("-q, --quiet", "only print warnings and errors").hook("preAction", (cmd) => {
45104
+ const program2 = new Command().name("yarkr").description("Yarkr: install your org's skills, agents and MCP configs into every harness.").version(VERSION).addHelpText("before", () => banner(VERSION)).option("-q, --quiet", "only print warnings and errors").hook("preAction", (cmd) => {
45051
45105
  ui.quiet = !!cmd.opts().quiet;
45052
45106
  });
45053
45107
  program2.command("login").description("sign in in the browser and keep a token in your keychain (or ~/.yarkrrc)").option("--registry <url>").option("--token <token>", "use this token instead of the browser (or pipe it on stdin)").option("--no-browser", "print a link to open on any device, then paste the token it shows").action(act(login));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yarkr-cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Install skills, agents and MCP toolsets from Yarkr into Claude Code, Codex, opencode, Cursor and more",
5
5
  "license": "MIT",
6
6
  "homepage": "https://yarkr.com",
@@ -47,8 +47,8 @@
47
47
  "typescript": "~5.9.3",
48
48
  "vitest": "^3.2.4",
49
49
  "yaml": "^2.8.1",
50
- "@yarkr/evals": "0.1.0",
51
50
  "@yarkr/core": "0.1.0",
51
+ "@yarkr/evals": "0.1.0",
52
52
  "@yarkr/schema": "0.1.0"
53
53
  },
54
54
  "scripts": {