agents-inc 0.170.2 → 0.172.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.
Files changed (91) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/{chunk-PSUTNOQ2.js → chunk-255DGUCH.js} +2 -2
  3. package/dist/chunk-33JICQD5.js +196 -0
  4. package/dist/chunk-33JICQD5.js.map +1 -0
  5. package/dist/{chunk-3ED3KHHD.js → chunk-3R3LHA4Q.js} +2 -2
  6. package/dist/{chunk-YXKTY5WM.js → chunk-5MGRHS2G.js} +94 -58
  7. package/dist/chunk-5MGRHS2G.js.map +1 -0
  8. package/dist/{chunk-PLFANHRZ.js → chunk-5PPB6HT6.js} +2 -2
  9. package/dist/{chunk-66AEVERM.js → chunk-6CRA46YO.js} +14 -14
  10. package/dist/{chunk-ELV5WDS3.js → chunk-6LUTY35Q.js} +25 -14
  11. package/dist/chunk-6LUTY35Q.js.map +1 -0
  12. package/dist/{chunk-AUNRHWH4.js → chunk-7OG635DK.js} +26 -4
  13. package/dist/chunk-7OG635DK.js.map +1 -0
  14. package/dist/{chunk-GEMW5RQ2.js → chunk-7ZOWSCAO.js} +29 -102
  15. package/dist/chunk-7ZOWSCAO.js.map +1 -0
  16. package/dist/{chunk-YGDWHDOY.js → chunk-A3ZAXL5T.js} +4 -5
  17. package/dist/{chunk-YGDWHDOY.js.map → chunk-A3ZAXL5T.js.map} +1 -1
  18. package/dist/chunk-G7NUK3BF.js +253 -0
  19. package/dist/chunk-G7NUK3BF.js.map +1 -0
  20. package/dist/{chunk-THO7LO5B.js → chunk-KCLBLK3F.js} +3 -3
  21. package/dist/{chunk-2YA4DDRM.js → chunk-LUKDDHSI.js} +8 -6
  22. package/dist/{chunk-2YA4DDRM.js.map → chunk-LUKDDHSI.js.map} +1 -1
  23. package/dist/{chunk-OCAVW6N5.js → chunk-MBIOZ5LW.js} +12 -3
  24. package/dist/{chunk-OCAVW6N5.js.map → chunk-MBIOZ5LW.js.map} +1 -1
  25. package/dist/{chunk-7C3PFRBU.js → chunk-MHAQWMNJ.js} +35 -5
  26. package/dist/{chunk-7C3PFRBU.js.map → chunk-MHAQWMNJ.js.map} +1 -1
  27. package/dist/{chunk-HACRR422.js → chunk-MOL2J5HS.js} +2 -2
  28. package/dist/{chunk-BBDGYJHX.js → chunk-N33AKFLR.js} +2 -2
  29. package/dist/{chunk-5BNX73OU.js → chunk-NISWBQNS.js} +52 -31
  30. package/dist/chunk-NISWBQNS.js.map +1 -0
  31. package/dist/{chunk-GAKVZNTX.js → chunk-VILFCMRN.js} +420 -316
  32. package/dist/chunk-VILFCMRN.js.map +1 -0
  33. package/dist/{chunk-IWY5IR4F.js → chunk-Y23MP2OC.js} +8 -8
  34. package/dist/commands/build/marketplace.js +16 -14
  35. package/dist/commands/build/marketplace.js.map +1 -1
  36. package/dist/commands/build/plugins.js +6 -6
  37. package/dist/commands/compile.js +12 -12
  38. package/dist/commands/doctor.js +64 -81
  39. package/dist/commands/doctor.js.map +1 -1
  40. package/dist/commands/edit.js +150 -152
  41. package/dist/commands/edit.js.map +1 -1
  42. package/dist/commands/eject.js +10 -10
  43. package/dist/commands/init.js +19 -16
  44. package/dist/commands/list.js +14 -17
  45. package/dist/commands/list.js.map +1 -1
  46. package/dist/commands/new/marketplace.js +4 -4
  47. package/dist/commands/search.js +15 -13
  48. package/dist/commands/search.js.map +1 -1
  49. package/dist/commands/share.js +11 -11
  50. package/dist/commands/uninstall.js +109 -98
  51. package/dist/commands/uninstall.js.map +1 -1
  52. package/dist/commands/update.js +6 -6
  53. package/dist/components/common/scroll-affordance.js +2 -2
  54. package/dist/components/common/select-list.js +2 -2
  55. package/dist/components/common/skill-agent-summary.js +3 -4
  56. package/dist/components/common/summary-panel.js +11 -146
  57. package/dist/components/common/summary-panel.js.map +1 -1
  58. package/dist/hooks/init.js +22 -19
  59. package/dist/hooks/init.js.map +1 -1
  60. package/dist/load-agent-defs-54VIKN4T.js +14 -0
  61. package/dist/{recompile-project-agents-I33KQJFB.js → recompile-project-agents-5A44NJRD.js} +8 -8
  62. package/dist/{source-loader-TTJVW2ER.js → source-loader-LQNRI5UZ.js} +4 -4
  63. package/dist/src/agents/tester/web-tester/playbook.md +1 -1
  64. package/package.json +1 -1
  65. package/src/agents/tester/web-tester/playbook.md +1 -1
  66. package/dist/chunk-5BNX73OU.js.map +0 -1
  67. package/dist/chunk-AUNRHWH4.js.map +0 -1
  68. package/dist/chunk-ELV5WDS3.js.map +0 -1
  69. package/dist/chunk-GAKVZNTX.js.map +0 -1
  70. package/dist/chunk-GEMW5RQ2.js.map +0 -1
  71. package/dist/chunk-O4LN3HFI.js +0 -69
  72. package/dist/chunk-O4LN3HFI.js.map +0 -1
  73. package/dist/chunk-PMUZR4XO.js +0 -108
  74. package/dist/chunk-PMUZR4XO.js.map +0 -1
  75. package/dist/chunk-RIK45Q4I.js +0 -103
  76. package/dist/chunk-RIK45Q4I.js.map +0 -1
  77. package/dist/chunk-YXKTY5WM.js.map +0 -1
  78. package/dist/components/common/removal-plan-confirm.js +0 -10
  79. package/dist/load-agent-defs-6QUUMGHK.js +0 -14
  80. package/dist/source-loader-TTJVW2ER.js.map +0 -1
  81. /package/dist/{chunk-PSUTNOQ2.js.map → chunk-255DGUCH.js.map} +0 -0
  82. /package/dist/{chunk-3ED3KHHD.js.map → chunk-3R3LHA4Q.js.map} +0 -0
  83. /package/dist/{chunk-PLFANHRZ.js.map → chunk-5PPB6HT6.js.map} +0 -0
  84. /package/dist/{chunk-66AEVERM.js.map → chunk-6CRA46YO.js.map} +0 -0
  85. /package/dist/{chunk-THO7LO5B.js.map → chunk-KCLBLK3F.js.map} +0 -0
  86. /package/dist/{chunk-HACRR422.js.map → chunk-MOL2J5HS.js.map} +0 -0
  87. /package/dist/{chunk-BBDGYJHX.js.map → chunk-N33AKFLR.js.map} +0 -0
  88. /package/dist/{chunk-IWY5IR4F.js.map → chunk-Y23MP2OC.js.map} +0 -0
  89. /package/dist/{components/common/removal-plan-confirm.js.map → load-agent-defs-54VIKN4T.js.map} +0 -0
  90. /package/dist/{recompile-project-agents-I33KQJFB.js.map → recompile-project-agents-5A44NJRD.js.map} +0 -0
  91. /package/dist/{load-agent-defs-6QUUMGHK.js.map → source-loader-LQNRI5UZ.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  hostAt,
7
7
  loadInstalledConfig,
8
8
  refuseUnofferedPlacements
9
- } from "./chunk-GAKVZNTX.js";
9
+ } from "./chunk-VILFCMRN.js";
10
10
 
11
11
  // src/cli/lib/hosts/configured-placements.ts
12
12
  async function unofferablePlacementsFound(cwd) {
@@ -36,4 +36,4 @@ async function configuredSkillsAt(root) {
36
36
  export {
37
37
  unofferablePlacementsFound
38
38
  };
39
- //# sourceMappingURL=chunk-HACRR422.js.map
39
+ //# sourceMappingURL=chunk-MOL2J5HS.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SCROLL_VIEWPORT
4
- } from "./chunk-7C3PFRBU.js";
4
+ } from "./chunk-MHAQWMNJ.js";
5
5
 
6
6
  // src/cli/components/common/scroll-affordance.tsx
7
7
  import { Box, Text } from "ink";
@@ -21,4 +21,4 @@ var ScrollAffordance = ({ hiddenAbove, hiddenBelow }) => {
21
21
  export {
22
22
  ScrollAffordance
23
23
  };
24
- //# sourceMappingURL=chunk-BBDGYJHX.js.map
24
+ //# sourceMappingURL=chunk-N33AKFLR.js.map
@@ -1,36 +1,43 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  listAgentMdFiles
4
- } from "./chunk-2YA4DDRM.js";
4
+ } from "./chunk-LUKDDHSI.js";
5
5
  import {
6
6
  agentCodec,
7
7
  agentFrontmatterValidationSchema,
8
8
  agentPluginName,
9
+ clearEarlierBuild,
10
+ computeShippedHash,
9
11
  computeStringHash,
10
12
  copy,
11
- determinePluginVersion,
12
13
  directoryExists,
13
- ensureDir,
14
14
  extractFrontmatter,
15
15
  formatZodIssues,
16
16
  generateAgentPluginManifest,
17
17
  getErrorMessage,
18
18
  getPluginAgentsDir,
19
19
  getPluginManifestPath,
20
+ holdsContentNoBuildMade,
21
+ isPathWithin,
20
22
  log,
23
+ readEarlierBuild,
21
24
  readFile,
22
25
  verbose,
26
+ versionAfterRebuild,
23
27
  warn,
24
28
  writeContentHash,
25
29
  writePluginManifest
26
- } from "./chunk-GAKVZNTX.js";
30
+ } from "./chunk-VILFCMRN.js";
27
31
  import {
28
32
  plural
29
- } from "./chunk-AUNRHWH4.js";
33
+ } from "./chunk-7OG635DK.js";
30
34
  import {
35
+ DEFAULT_VERSION,
31
36
  DIRS,
37
+ PLUGIN_MANIFEST_DIR,
38
+ PLUGIN_MANIFEST_FILE,
32
39
  PROJECT_ROOT
33
- } from "./chunk-7C3PFRBU.js";
40
+ } from "./chunk-MHAQWMNJ.js";
34
41
 
35
42
  // src/cli/lib/agents/agent-fetcher.ts
36
43
  import path from "path";
@@ -65,39 +72,53 @@ function parseAgentFrontmatter(content) {
65
72
  frontmatter: { name: result.data.name, description: result.data.description }
66
73
  };
67
74
  }
68
- async function compileAgentPlugin(options) {
69
- const { agentPath, outputDir } = options;
70
- const fileName = path2.basename(agentPath);
75
+ async function assertClearable(pluginDir, agentPath) {
76
+ const agent = `Agent '${path2.basename(agentPath)}'`;
77
+ const file = `File: ${agentPath}`;
78
+ if (isPathWithin(agentPath, pluginDir)) {
79
+ throw new Error(
80
+ `${agent} would be built into ${pluginDir}, which holds its own source, so building it would overwrite that source. Build into an output directory outside the agents directory. ${file}`
81
+ );
82
+ }
83
+ if (await holdsContentNoBuildMade(pluginDir)) {
84
+ throw new Error(
85
+ `${agent} would be built into ${pluginDir}, which holds no ${path2.join(PLUGIN_MANIFEST_DIR, PLUGIN_MANIFEST_FILE)} and is not empty, so no earlier build made it and a rebuild would delete what it holds. Move its contents out, or build into another output directory. ${file}`
86
+ );
87
+ }
88
+ }
89
+ async function readAgentToBuild(agentPath) {
71
90
  const content = await readFile(agentPath);
72
91
  const parsed = parseAgentFrontmatter(content);
73
92
  if (!parsed.ok) {
74
93
  throw new Error(
75
- `Agent '${fileName}' has invalid or missing YAML frontmatter: ${parsed.reason}. File: ${agentPath}`
94
+ `Agent '${path2.basename(agentPath)}' has invalid or missing YAML frontmatter: ${parsed.reason}. File: ${agentPath}`
76
95
  );
77
96
  }
78
- const agentName = parsed.frontmatter.name;
79
- verbose(`Compiling agent plugin: ${agentName} from ${agentPath}`);
97
+ return { content, frontmatter: parsed.frontmatter };
98
+ }
99
+ async function copyAgentInto(pluginDir, agentPath, agentName) {
100
+ const pluginAgentFile = `${agentName}${agentCodec("claude").extension}`;
101
+ await copy(agentPath, path2.join(getPluginAgentsDir(pluginDir), pluginAgentFile));
102
+ verbose(` Copied agent ${path2.basename(agentPath)} -> agents/${pluginAgentFile}`);
103
+ }
104
+ async function compileAgentPlugin(options) {
105
+ const { agentPath, outputDir } = options;
106
+ const { content, frontmatter } = await readAgentToBuild(agentPath);
107
+ const agentName = frontmatter.name;
80
108
  const pluginDir = path2.join(outputDir, agentPluginName(agentName));
81
- const agentsDir = getPluginAgentsDir(pluginDir);
82
- await ensureDir(pluginDir);
83
- await ensureDir(agentsDir);
84
- const newHash = computeStringHash(content);
85
- const { version, contentHash } = await determinePluginVersion(
86
- newHash,
87
- pluginDir,
88
- getPluginManifestPath
109
+ await assertClearable(pluginDir, agentPath);
110
+ verbose(`Compiling agent plugin: ${agentName} from ${agentPath}`);
111
+ const manifestAt = (version) => generateAgentPluginManifest({ agentName, description: frontmatter.description, version });
112
+ const earlierBuild = await readEarlierBuild(pluginDir, getPluginManifestPath);
113
+ await clearEarlierBuild(pluginDir);
114
+ await writePluginManifest(pluginDir, manifestAt(earlierBuild?.version ?? DEFAULT_VERSION));
115
+ await writeContentHash(pluginDir, computeStringHash(content), getPluginManifestPath);
116
+ await copyAgentInto(pluginDir, agentPath, agentName);
117
+ const manifest = manifestAt(
118
+ versionAfterRebuild(earlierBuild, await computeShippedHash(pluginDir))
89
119
  );
90
- const manifest = generateAgentPluginManifest({
91
- agentName,
92
- description: parsed.frontmatter.description,
93
- version
94
- });
95
120
  await writePluginManifest(pluginDir, manifest);
96
- await writeContentHash(pluginDir, contentHash, getPluginManifestPath);
97
- verbose(` Wrote plugin.json for ${agentName} (v${version})`);
98
- const pluginAgentFile = `${agentName}${agentCodec("claude").extension}`;
99
- await copy(agentPath, path2.join(agentsDir, pluginAgentFile));
100
- verbose(` Copied agent ${fileName} -> agents/${pluginAgentFile}`);
121
+ verbose(` Wrote plugin.json for ${agentName} (v${manifest.version})`);
101
122
  return {
102
123
  pluginPath: pluginDir,
103
124
  manifest,
@@ -136,4 +157,4 @@ export {
136
157
  compileAllAgentPlugins,
137
158
  printAgentCompilationSummary
138
159
  };
139
- //# sourceMappingURL=chunk-5BNX73OU.js.map
160
+ //# sourceMappingURL=chunk-NISWBQNS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/lib/agents/agent-fetcher.ts","../src/cli/lib/agents/agent-plugin-compiler.ts"],"sourcesContent":["import path from \"path\";\nimport { directoryExists } from \"../../utils/fs\";\nimport { verbose } from \"../../utils/logger\";\nimport { PROJECT_ROOT, DIRS } from \"../../consts\";\nimport type { AgentSourcePaths } from \"../../types\";\n\nexport async function getLocalAgentDefinitions(): Promise<AgentSourcePaths> {\n const agentsDir = path.join(PROJECT_ROOT, DIRS.agents);\n\n if (!(await directoryExists(agentsDir))) {\n throw new Error(\n `Agent partials not found at '${agentsDir}'. Ensure the CLI is properly installed.`,\n );\n }\n\n verbose(`Agent partials loaded from CLI: ${agentsDir}`);\n\n return {\n agentsDir,\n sourcePath: PROJECT_ROOT,\n };\n}\n","import path from \"path\";\nimport { getErrorMessage } from \"../../utils/errors\";\nimport { readFile, copy, isPathWithin } from \"../../utils/fs\";\nimport { log, verbose, warn } from \"../../utils/logger\";\nimport {\n agentPluginName,\n clearEarlierBuild,\n generateAgentPluginManifest,\n getPluginAgentsDir,\n holdsContentNoBuildMade,\n writePluginManifest,\n getPluginManifestPath,\n} from \"../plugins\";\nimport { listAgentMdFiles } from \"./list-compiled-agents\";\nimport { agentCodec } from \"../installation/install-layout\";\nimport {\n computeShippedHash,\n computeStringHash,\n readEarlierBuild,\n versionAfterRebuild,\n writeContentHash,\n} from \"../versioning\";\nimport { extractFrontmatter } from \"../../utils/frontmatter\";\nimport { plural } from \"../../utils/string\";\nimport { DEFAULT_VERSION, PLUGIN_MANIFEST_DIR, PLUGIN_MANIFEST_FILE } from \"../../consts\";\nimport type { AgentFrontmatter, PluginManifest } from \"../../types\";\nimport { agentFrontmatterValidationSchema, formatZodIssues } from \"../schemas\";\n\ntype AgentPluginOptions = {\n agentPath: string;\n outputDir: string;\n};\n\ntype CompiledAgentPlugin = {\n pluginPath: string;\n manifest: PluginManifest;\n agentName: string;\n};\n\n/** Carries the reason out, so the throw in `compileAgentPlugin` names what actually went wrong. */\ntype AgentFrontmatterParse =\n | { ok: true; frontmatter: Pick<AgentFrontmatter, \"name\" | \"description\"> }\n | { ok: false; reason: string };\n\nconst NO_FRONTMATTER_REASON = \"no YAML frontmatter block\";\n\nfunction parseAgentFrontmatter(content: string): AgentFrontmatterParse {\n const raw = extractFrontmatter(content);\n if (!raw) {\n return { ok: false, reason: NO_FRONTMATTER_REASON };\n }\n\n const result = agentFrontmatterValidationSchema.safeParse(raw);\n if (!result.success) {\n return { ok: false, reason: formatZodIssues(result.error.issues) };\n }\n\n return {\n ok: true,\n frontmatter: { name: result.data.name, description: result.data.description },\n };\n}\n\n/**\n * A plugin's folder is cleared before each build, so it must not hold the agent's own source, nor\n * files no build made. The name needs no check: the frontmatter schema holds it to kebab-case.\n */\nasync function assertClearable(pluginDir: string, agentPath: string): Promise<void> {\n const agent = `Agent '${path.basename(agentPath)}'`;\n const file = `File: ${agentPath}`;\n\n if (isPathWithin(agentPath, pluginDir)) {\n throw new Error(\n `${agent} would be built into ${pluginDir}, which holds its own source, so building it would overwrite that source. Build into an output directory outside the agents directory. ${file}`,\n );\n }\n if (await holdsContentNoBuildMade(pluginDir)) {\n throw new Error(\n `${agent} would be built into ${pluginDir}, which holds no ${path.join(PLUGIN_MANIFEST_DIR, PLUGIN_MANIFEST_FILE)} and is not empty, so no earlier build made it and a rebuild would delete what it holds. Move its contents out, or build into another output directory. ${file}`,\n );\n }\n}\n\n/** A plugin is built from the agent's frontmatter, so one that is absent or invalid refuses. */\nasync function readAgentToBuild(\n agentPath: string,\n): Promise<{ content: string; frontmatter: Pick<AgentFrontmatter, \"name\" | \"description\"> }> {\n const content = await readFile(agentPath);\n const parsed = parseAgentFrontmatter(content);\n\n if (!parsed.ok) {\n throw new Error(\n `Agent '${path.basename(agentPath)}' has invalid or missing YAML frontmatter: ${parsed.reason}. ` +\n `File: ${agentPath}`,\n );\n }\n\n return { content, frontmatter: parsed.frontmatter };\n}\n\nasync function copyAgentInto(\n pluginDir: string,\n agentPath: string,\n agentName: string,\n): Promise<void> {\n const pluginAgentFile = `${agentName}${agentCodec(\"claude\").extension}`;\n await copy(agentPath, path.join(getPluginAgentsDir(pluginDir), pluginAgentFile));\n verbose(` Copied agent ${path.basename(agentPath)} -> agents/${pluginAgentFile}`);\n}\n\nasync function compileAgentPlugin(options: AgentPluginOptions): Promise<CompiledAgentPlugin> {\n const { agentPath, outputDir } = options;\n const { content, frontmatter } = await readAgentToBuild(agentPath);\n\n const agentName = frontmatter.name;\n const pluginDir = path.join(outputDir, agentPluginName(agentName));\n await assertClearable(pluginDir, agentPath);\n\n verbose(`Compiling agent plugin: ${agentName} from ${agentPath}`);\n\n const manifestAt = (version: string): PluginManifest =>\n generateAgentPluginManifest({ agentName, description: frontmatter.description, version });\n\n // Read before the clear: what the earlier build shipped decides whether the version moves.\n const earlierBuild = await readEarlierBuild(pluginDir, getPluginManifestPath);\n await clearEarlierBuild(pluginDir);\n\n // At the earlier build's version, so the version alone cannot set the two builds apart; and\n // first, so a build that stops halfway leaves a folder the next build may clear.\n await writePluginManifest(pluginDir, manifestAt(earlierBuild?.version ?? DEFAULT_VERSION));\n\n // Nothing reads it back. Every plugin built so far ships it, so dropping it would bump them all.\n await writeContentHash(pluginDir, computeStringHash(content), getPluginManifestPath);\n\n await copyAgentInto(pluginDir, agentPath, agentName);\n\n const manifest = manifestAt(\n versionAfterRebuild(earlierBuild, await computeShippedHash(pluginDir)),\n );\n await writePluginManifest(pluginDir, manifest);\n verbose(` Wrote plugin.json for ${agentName} (v${manifest.version})`);\n\n return {\n pluginPath: pluginDir,\n manifest,\n agentName,\n };\n}\n\nexport async function compileAllAgentPlugins(\n agentsDir: string,\n outputDir: string,\n): Promise<CompiledAgentPlugin[]> {\n const results: CompiledAgentPlugin[] = [];\n\n const agentMdFiles = await listAgentMdFiles(agentsDir);\n\n for (const agentFile of agentMdFiles) {\n const agentPath = path.join(agentsDir, agentFile);\n\n try {\n const result = await compileAgentPlugin({\n agentPath,\n outputDir,\n });\n results.push(result);\n log(` [OK] ${agentPluginName(result.agentName)}`);\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n warn(`Failed to compile agent from '${agentFile}': ${errorMessage}`);\n }\n }\n\n return results;\n}\n\nexport function printAgentCompilationSummary(results: CompiledAgentPlugin[]): void {\n log(`\\nCompiled ${plural(results.length, \"agent plugin\")}:`);\n for (const result of results) {\n log(` - ${agentPluginName(result.agentName)} (v${result.manifest.version})`);\n }\n}\n"],"mappings":"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","names":["path","path"]}