agentpacks 1.7.6 → 1.7.8

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 (133) hide show
  1. package/README.md +69 -742
  2. package/dist/api.d.ts +15 -15
  3. package/dist/api.js +2706 -2706
  4. package/dist/cli/export-cmd.js +364 -364
  5. package/dist/cli/generate.js +1409 -1409
  6. package/dist/cli/import-cmd.js +249 -249
  7. package/dist/cli/info.js +31 -31
  8. package/dist/cli/init.js +6 -6
  9. package/dist/cli/install.js +141 -141
  10. package/dist/cli/login.js +31 -31
  11. package/dist/cli/models-explain.js +514 -514
  12. package/dist/cli/pack/create.js +6 -6
  13. package/dist/cli/pack/enable.js +2 -2
  14. package/dist/cli/pack/list.js +362 -362
  15. package/dist/cli/pack/validate.js +119 -119
  16. package/dist/cli/publish.js +42 -42
  17. package/dist/cli/search.js +31 -31
  18. package/dist/core/config.js +3 -3
  19. package/dist/core/feature-merger.d.ts +5 -5
  20. package/dist/core/feature-merger.js +4 -4
  21. package/dist/core/index.d.ts +4 -4
  22. package/dist/core/index.js +633 -633
  23. package/dist/core/lockfile.js +1 -1
  24. package/dist/core/metarepo.js +3 -3
  25. package/dist/core/pack-loader.d.ts +6 -6
  26. package/dist/core/pack-loader.js +362 -362
  27. package/dist/core/profile-resolver.d.ts +1 -1
  28. package/dist/exporters/cursor-plugin.d.ts +12 -0
  29. package/dist/exporters/cursor-plugin.js +46 -46
  30. package/dist/exporters/index.d.ts +1 -1
  31. package/dist/exporters/index.js +46 -46
  32. package/dist/features/agents.js +4 -4
  33. package/dist/features/commands.js +4 -4
  34. package/dist/features/hooks.js +4 -4
  35. package/dist/features/index.d.ts +8 -8
  36. package/dist/features/index.js +350 -350
  37. package/dist/features/mcp.js +4 -4
  38. package/dist/features/models.js +4 -4
  39. package/dist/features/plugins.js +5 -5
  40. package/dist/features/rules.js +4 -4
  41. package/dist/features/skills.js +5 -5
  42. package/dist/importers/claude-code.js +6 -6
  43. package/dist/importers/cursor.js +7 -7
  44. package/dist/importers/opencode.js +7 -7
  45. package/dist/importers/rulesync.js +7 -7
  46. package/dist/index.js +2674 -2674
  47. package/dist/node/api.js +2706 -2706
  48. package/dist/node/cli/export-cmd.js +364 -364
  49. package/dist/node/cli/generate.js +1409 -1409
  50. package/dist/node/cli/import-cmd.js +249 -249
  51. package/dist/node/cli/info.js +31 -31
  52. package/dist/node/cli/init.js +6 -6
  53. package/dist/node/cli/install.js +141 -141
  54. package/dist/node/cli/login.js +31 -31
  55. package/dist/node/cli/models-explain.js +514 -514
  56. package/dist/node/cli/pack/create.js +6 -6
  57. package/dist/node/cli/pack/enable.js +2 -2
  58. package/dist/node/cli/pack/list.js +362 -362
  59. package/dist/node/cli/pack/validate.js +119 -119
  60. package/dist/node/cli/publish.js +42 -42
  61. package/dist/node/cli/search.js +31 -31
  62. package/dist/node/core/config.js +3 -3
  63. package/dist/node/core/feature-merger.js +4 -4
  64. package/dist/node/core/index.js +633 -633
  65. package/dist/node/core/lockfile.js +1 -1
  66. package/dist/node/core/metarepo.js +3 -3
  67. package/dist/node/core/pack-loader.js +362 -362
  68. package/dist/node/exporters/cursor-plugin.js +46 -46
  69. package/dist/node/exporters/index.js +46 -46
  70. package/dist/node/features/agents.js +4 -4
  71. package/dist/node/features/commands.js +4 -4
  72. package/dist/node/features/hooks.js +4 -4
  73. package/dist/node/features/index.js +350 -350
  74. package/dist/node/features/mcp.js +4 -4
  75. package/dist/node/features/models.js +4 -4
  76. package/dist/node/features/plugins.js +5 -5
  77. package/dist/node/features/rules.js +4 -4
  78. package/dist/node/features/skills.js +5 -5
  79. package/dist/node/importers/claude-code.js +6 -6
  80. package/dist/node/importers/cursor.js +7 -7
  81. package/dist/node/importers/opencode.js +7 -7
  82. package/dist/node/importers/rulesync.js +7 -7
  83. package/dist/node/index.js +2674 -2674
  84. package/dist/node/sources/git.js +2 -2
  85. package/dist/node/sources/index.js +138 -138
  86. package/dist/node/sources/local.js +1 -1
  87. package/dist/node/sources/npm.js +3 -3
  88. package/dist/node/sources/registry.js +35 -35
  89. package/dist/node/targets/additional-targets.js +43 -43
  90. package/dist/node/targets/agents-md.js +4 -4
  91. package/dist/node/targets/claude-code.js +86 -86
  92. package/dist/node/targets/codex-cli.js +6 -6
  93. package/dist/node/targets/copilot.js +46 -46
  94. package/dist/node/targets/cursor.js +68 -68
  95. package/dist/node/targets/gemini-cli.js +25 -25
  96. package/dist/node/targets/generic-md-target.js +43 -43
  97. package/dist/node/targets/index.js +911 -911
  98. package/dist/node/targets/mistral-vibe.js +46 -46
  99. package/dist/node/targets/opencode.js +68 -68
  100. package/dist/node/targets/registry.js +911 -911
  101. package/dist/node/utils/credentials.js +2 -2
  102. package/dist/node/utils/filesystem.js +4 -4
  103. package/dist/node/utils/global.js +1 -1
  104. package/dist/node/utils/tarball.js +2 -2
  105. package/dist/sources/git.js +2 -2
  106. package/dist/sources/index.d.ts +6 -6
  107. package/dist/sources/index.js +138 -138
  108. package/dist/sources/local.js +1 -1
  109. package/dist/sources/npm.d.ts +3 -0
  110. package/dist/sources/npm.js +3 -3
  111. package/dist/sources/registry.js +35 -35
  112. package/dist/targets/additional-targets.js +43 -43
  113. package/dist/targets/agents-md.js +4 -4
  114. package/dist/targets/claude-code.js +86 -86
  115. package/dist/targets/codex-cli.js +6 -6
  116. package/dist/targets/copilot.js +46 -46
  117. package/dist/targets/cursor.js +68 -68
  118. package/dist/targets/gemini-cli.js +25 -25
  119. package/dist/targets/generic-md-target.js +43 -43
  120. package/dist/targets/index.d.ts +6 -6
  121. package/dist/targets/index.js +911 -911
  122. package/dist/targets/mistral-vibe.js +46 -46
  123. package/dist/targets/opencode.js +68 -68
  124. package/dist/targets/registry.js +911 -911
  125. package/dist/utils/credentials.js +2 -2
  126. package/dist/utils/filesystem.js +4 -4
  127. package/dist/utils/global.d.ts +3 -0
  128. package/dist/utils/global.js +1 -1
  129. package/dist/utils/tarball.js +2 -2
  130. package/package.json +5 -5
  131. package/templates/pack/models.json +36 -36
  132. package/templates/pack/pack.json +8 -8
  133. package/templates/workspace/agentpacks.jsonc +24 -24
@@ -5,13 +5,13 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  import {
6
6
  existsSync,
7
7
  mkdirSync,
8
- readFileSync,
9
- writeFileSync,
10
8
  readdirSync,
9
+ readFileSync,
11
10
  rmSync,
12
- statSync
11
+ statSync,
12
+ writeFileSync
13
13
  } from "fs";
14
- import { dirname, relative, join } from "path";
14
+ import { dirname, join, relative } from "path";
15
15
  var GENERATED_HEADER_MD = "<!-- Generated by agentpacks. DO NOT EDIT. -->";
16
16
  var GENERATED_HEADER_JSON = "// Generated by agentpacks. DO NOT EDIT.";
17
17
  var GENERATED_HEADER_JS = "// Generated by agentpacks. DO NOT EDIT.";
@@ -129,16 +129,54 @@ function serializeFrontmatter(data, content) {
129
129
  return matter.stringify(content, filtered);
130
130
  }
131
131
 
132
+ // src/features/hooks.ts
133
+ import { join as join2 } from "path";
134
+ var TARGET_OVERRIDE_KEYS = ["cursor", "claudecode", "opencode"];
135
+ function parseHooks(packDir, packName) {
136
+ const hooksPath = join2(packDir, "hooks", "hooks.json");
137
+ const raw = readJsonOrNull(hooksPath);
138
+ if (!raw)
139
+ return null;
140
+ const shared = raw.hooks ?? {};
141
+ const targetOverrides = {};
142
+ for (const key of TARGET_OVERRIDE_KEYS) {
143
+ const override = raw[key];
144
+ if (override && typeof override === "object" && "hooks" in override && override.hooks) {
145
+ targetOverrides[key] = override.hooks;
146
+ }
147
+ }
148
+ return {
149
+ packName,
150
+ sourcePath: hooksPath,
151
+ version: raw.version,
152
+ shared,
153
+ targetOverrides
154
+ };
155
+ }
156
+ function resolveHooksForTarget(hooks, targetId) {
157
+ const merged = {};
158
+ for (const [event, entries] of Object.entries(hooks.shared)) {
159
+ merged[event] = [...entries];
160
+ }
161
+ const overrides = hooks.targetOverrides[targetId];
162
+ if (overrides) {
163
+ for (const [event, entries] of Object.entries(overrides)) {
164
+ merged[event] = [...merged[event] ?? [], ...entries];
165
+ }
166
+ }
167
+ return merged;
168
+ }
169
+
132
170
  // src/features/skills.ts
133
- import { readFileSync as readFileSync2, existsSync as existsSync2 } from "fs";
134
- import { basename, join as join2 } from "path";
171
+ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
172
+ import { basename, join as join3 } from "path";
135
173
  var SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
136
174
  var SKILL_NAME_MAX_LENGTH = 64;
137
175
  function parseSkills(skillsDir, packName) {
138
176
  const dirs = listDirs(skillsDir);
139
177
  const skills = [];
140
178
  for (const dir of dirs) {
141
- const skillMd = join2(dir, "SKILL.md");
179
+ const skillMd = join3(dir, "SKILL.md");
142
180
  if (existsSync2(skillMd)) {
143
181
  skills.push(parseSkillFile(skillMd, dir, packName));
144
182
  }
@@ -219,47 +257,9 @@ function skillMatchesTarget(skill, targetId) {
219
257
  return Array.isArray(targets) && targets.includes(targetId);
220
258
  }
221
259
 
222
- // src/features/hooks.ts
223
- import { join as join3 } from "path";
224
- var TARGET_OVERRIDE_KEYS = ["cursor", "claudecode", "opencode"];
225
- function parseHooks(packDir, packName) {
226
- const hooksPath = join3(packDir, "hooks", "hooks.json");
227
- const raw = readJsonOrNull(hooksPath);
228
- if (!raw)
229
- return null;
230
- const shared = raw.hooks ?? {};
231
- const targetOverrides = {};
232
- for (const key of TARGET_OVERRIDE_KEYS) {
233
- const override = raw[key];
234
- if (override && typeof override === "object" && "hooks" in override && override.hooks) {
235
- targetOverrides[key] = override.hooks;
236
- }
237
- }
238
- return {
239
- packName,
240
- sourcePath: hooksPath,
241
- version: raw.version,
242
- shared,
243
- targetOverrides
244
- };
245
- }
246
- function resolveHooksForTarget(hooks, targetId) {
247
- const merged = {};
248
- for (const [event, entries] of Object.entries(hooks.shared)) {
249
- merged[event] = [...entries];
250
- }
251
- const overrides = hooks.targetOverrides[targetId];
252
- if (overrides) {
253
- for (const [event, entries] of Object.entries(overrides)) {
254
- merged[event] = [...merged[event] ?? [], ...entries];
255
- }
256
- }
257
- return merged;
258
- }
259
-
260
260
  // src/exporters/cursor-plugin.ts
261
- import { resolve, join as join4 } from "path";
262
261
  import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2 } from "fs";
262
+ import { join as join4, resolve } from "path";
263
263
  function exportCursorPlugin(pack, outputDir) {
264
264
  const filesWritten = [];
265
265
  const pluginName = normalizeCursorPluginName(pack.manifest.name);
@@ -5,13 +5,13 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  import {
6
6
  existsSync,
7
7
  mkdirSync,
8
- readFileSync,
9
- writeFileSync,
10
8
  readdirSync,
9
+ readFileSync,
11
10
  rmSync,
12
- statSync
11
+ statSync,
12
+ writeFileSync
13
13
  } from "fs";
14
- import { dirname, relative, join } from "path";
14
+ import { dirname, join, relative } from "path";
15
15
  var GENERATED_HEADER_MD = "<!-- Generated by agentpacks. DO NOT EDIT. -->";
16
16
  var GENERATED_HEADER_JSON = "// Generated by agentpacks. DO NOT EDIT.";
17
17
  var GENERATED_HEADER_JS = "// Generated by agentpacks. DO NOT EDIT.";
@@ -129,16 +129,54 @@ function serializeFrontmatter(data, content) {
129
129
  return matter.stringify(content, filtered);
130
130
  }
131
131
 
132
+ // src/features/hooks.ts
133
+ import { join as join2 } from "path";
134
+ var TARGET_OVERRIDE_KEYS = ["cursor", "claudecode", "opencode"];
135
+ function parseHooks(packDir, packName) {
136
+ const hooksPath = join2(packDir, "hooks", "hooks.json");
137
+ const raw = readJsonOrNull(hooksPath);
138
+ if (!raw)
139
+ return null;
140
+ const shared = raw.hooks ?? {};
141
+ const targetOverrides = {};
142
+ for (const key of TARGET_OVERRIDE_KEYS) {
143
+ const override = raw[key];
144
+ if (override && typeof override === "object" && "hooks" in override && override.hooks) {
145
+ targetOverrides[key] = override.hooks;
146
+ }
147
+ }
148
+ return {
149
+ packName,
150
+ sourcePath: hooksPath,
151
+ version: raw.version,
152
+ shared,
153
+ targetOverrides
154
+ };
155
+ }
156
+ function resolveHooksForTarget(hooks, targetId) {
157
+ const merged = {};
158
+ for (const [event, entries] of Object.entries(hooks.shared)) {
159
+ merged[event] = [...entries];
160
+ }
161
+ const overrides = hooks.targetOverrides[targetId];
162
+ if (overrides) {
163
+ for (const [event, entries] of Object.entries(overrides)) {
164
+ merged[event] = [...merged[event] ?? [], ...entries];
165
+ }
166
+ }
167
+ return merged;
168
+ }
169
+
132
170
  // src/features/skills.ts
133
- import { readFileSync as readFileSync2, existsSync as existsSync2 } from "fs";
134
- import { basename, join as join2 } from "path";
171
+ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
172
+ import { basename, join as join3 } from "path";
135
173
  var SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
136
174
  var SKILL_NAME_MAX_LENGTH = 64;
137
175
  function parseSkills(skillsDir, packName) {
138
176
  const dirs = listDirs(skillsDir);
139
177
  const skills = [];
140
178
  for (const dir of dirs) {
141
- const skillMd = join2(dir, "SKILL.md");
179
+ const skillMd = join3(dir, "SKILL.md");
142
180
  if (existsSync2(skillMd)) {
143
181
  skills.push(parseSkillFile(skillMd, dir, packName));
144
182
  }
@@ -219,47 +257,9 @@ function skillMatchesTarget(skill, targetId) {
219
257
  return Array.isArray(targets) && targets.includes(targetId);
220
258
  }
221
259
 
222
- // src/features/hooks.ts
223
- import { join as join3 } from "path";
224
- var TARGET_OVERRIDE_KEYS = ["cursor", "claudecode", "opencode"];
225
- function parseHooks(packDir, packName) {
226
- const hooksPath = join3(packDir, "hooks", "hooks.json");
227
- const raw = readJsonOrNull(hooksPath);
228
- if (!raw)
229
- return null;
230
- const shared = raw.hooks ?? {};
231
- const targetOverrides = {};
232
- for (const key of TARGET_OVERRIDE_KEYS) {
233
- const override = raw[key];
234
- if (override && typeof override === "object" && "hooks" in override && override.hooks) {
235
- targetOverrides[key] = override.hooks;
236
- }
237
- }
238
- return {
239
- packName,
240
- sourcePath: hooksPath,
241
- version: raw.version,
242
- shared,
243
- targetOverrides
244
- };
245
- }
246
- function resolveHooksForTarget(hooks, targetId) {
247
- const merged = {};
248
- for (const [event, entries] of Object.entries(hooks.shared)) {
249
- merged[event] = [...entries];
250
- }
251
- const overrides = hooks.targetOverrides[targetId];
252
- if (overrides) {
253
- for (const [event, entries] of Object.entries(overrides)) {
254
- merged[event] = [...merged[event] ?? [], ...entries];
255
- }
256
- }
257
- return merged;
258
- }
259
-
260
260
  // src/exporters/cursor-plugin.ts
261
- import { resolve, join as join4 } from "path";
262
261
  import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2 } from "fs";
262
+ import { join as join4, resolve } from "path";
263
263
  function exportCursorPlugin(pack, outputDir) {
264
264
  const filesWritten = [];
265
265
  const pluginName = normalizeCursorPluginName(pack.manifest.name);
@@ -5,13 +5,13 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  import {
6
6
  existsSync,
7
7
  mkdirSync,
8
- readFileSync,
9
- writeFileSync,
10
8
  readdirSync,
9
+ readFileSync,
11
10
  rmSync,
12
- statSync
11
+ statSync,
12
+ writeFileSync
13
13
  } from "fs";
14
- import { dirname, relative, join } from "path";
14
+ import { dirname, join, relative } from "path";
15
15
  var GENERATED_HEADER_MD = "<!-- Generated by agentpacks. DO NOT EDIT. -->";
16
16
  var GENERATED_HEADER_JSON = "// Generated by agentpacks. DO NOT EDIT.";
17
17
  var GENERATED_HEADER_JS = "// Generated by agentpacks. DO NOT EDIT.";
@@ -5,13 +5,13 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  import {
6
6
  existsSync,
7
7
  mkdirSync,
8
- readFileSync,
9
- writeFileSync,
10
8
  readdirSync,
9
+ readFileSync,
11
10
  rmSync,
12
- statSync
11
+ statSync,
12
+ writeFileSync
13
13
  } from "fs";
14
- import { dirname, relative, join } from "path";
14
+ import { dirname, join, relative } from "path";
15
15
  var GENERATED_HEADER_MD = "<!-- Generated by agentpacks. DO NOT EDIT. -->";
16
16
  var GENERATED_HEADER_JSON = "// Generated by agentpacks. DO NOT EDIT.";
17
17
  var GENERATED_HEADER_JS = "// Generated by agentpacks. DO NOT EDIT.";
@@ -5,13 +5,13 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  import {
6
6
  existsSync,
7
7
  mkdirSync,
8
- readFileSync,
9
- writeFileSync,
10
8
  readdirSync,
9
+ readFileSync,
11
10
  rmSync,
12
- statSync
11
+ statSync,
12
+ writeFileSync
13
13
  } from "fs";
14
- import { dirname, relative, join } from "path";
14
+ import { dirname, join, relative } from "path";
15
15
  var GENERATED_HEADER_MD = "<!-- Generated by agentpacks. DO NOT EDIT. -->";
16
16
  var GENERATED_HEADER_JSON = "// Generated by agentpacks. DO NOT EDIT.";
17
17
  var GENERATED_HEADER_JS = "// Generated by agentpacks. DO NOT EDIT.";