agemon 6.0.0 → 6.3.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 (171) hide show
  1. package/README.md +313 -64
  2. package/assets/skills/design/agemon-design/NOTICE.md +34 -0
  3. package/assets/skills/design/agemon-design/SKILL.md +95 -358
  4. package/assets/skills/design/agemon-design/references/actions.md +215 -0
  5. package/assets/skills/design/agemon-design/references/brief.md +13 -9
  6. package/assets/skills/design/agemon-design/references/core-rules.md +166 -0
  7. package/assets/skills/design/agemon-design/references/craft-intent.md +16 -14
  8. package/assets/skills/design/agemon-design/references/dashboard.md +1 -1
  9. package/assets/skills/design/agemon-design/references/dataviz.md +8 -8
  10. package/assets/skills/design/agemon-design/references/finish-bar.md +1 -1
  11. package/assets/skills/design/agemon-design/references/heuristics.md +56 -140
  12. package/assets/skills/design/agemon-design/references/inspiration.md +6 -6
  13. package/assets/skills/design/agemon-design/references/loops.md +9 -9
  14. package/assets/skills/design/agemon-design/references/motion.md +1 -1
  15. package/assets/skills/design/agemon-design/references/personas.md +4 -4
  16. package/assets/skills/design/{agemon-design-dashboard/SKILL.md → agemon-design/references/preset-dashboard.md} +8 -12
  17. package/assets/skills/design/{agemon-design-editorial/SKILL.md → agemon-design/references/preset-editorial.md} +5 -9
  18. package/assets/skills/design/{agemon-design-minimal/SKILL.md → agemon-design/references/preset-minimal.md} +8 -12
  19. package/assets/skills/design/agemon-design/references/principles-catalog.md +3 -3
  20. package/assets/skills/design/agemon-design/references/recipe-auth.md +3 -3
  21. package/assets/skills/design/agemon-design/references/recipe-dashboard.md +2 -2
  22. package/assets/skills/design/agemon-design/references/recipe-landing.md +9 -11
  23. package/assets/skills/design/agemon-design/references/review.md +7 -7
  24. package/assets/skills/design/agemon-design/references/routing.md +143 -0
  25. package/assets/skills/design/agemon-design/references/spec.md +8 -8
  26. package/assets/skills/design/agemon-design/references/stack.md +1 -1
  27. package/assets/skills/design/agemon-design/references/stage-assets.md +106 -0
  28. package/assets/skills/design/agemon-design/references/stage-build.md +46 -0
  29. package/assets/skills/design/agemon-design/references/stage-critique.md +34 -0
  30. package/assets/skills/design/agemon-design/references/stage-directions.md +44 -0
  31. package/assets/skills/design/agemon-design/references/stage-intake.md +34 -0
  32. package/assets/skills/design/agemon-design/references/stage-verify.md +44 -0
  33. package/assets/skills/design/agemon-design/references/state-design.md +1 -1
  34. package/assets/skills/design/agemon-design/references/tells-2026-11.md +32 -0
  35. package/assets/skills/design/agemon-design/references/themes.md +24 -20
  36. package/assets/skills/design/agemon-design/references/third-party-licenses.md +323 -0
  37. package/assets/skills/design/agemon-design/references/typography.md +11 -9
  38. package/assets/skills/design/agemon-design/scripts/audit-page.js +532 -0
  39. package/assets/skills/design/agemon-design/scripts/check-source.mjs +358 -0
  40. package/assets/skills/design/agemon-design/scripts/deal.mjs +231 -0
  41. package/assets/skills/design/agemon-design/scripts/inventory.mjs +676 -0
  42. package/assets/skills/{design/agemon-design-dashboard → essentials/web-design-guidelines}/LICENSE +1 -1
  43. package/assets/skills/essentials/web-design-guidelines/NOTICE.md +14 -0
  44. package/assets/skills/essentials/web-design-guidelines/SKILL.md +18 -0
  45. package/assets/skills/essentials/web-design-guidelines/references/guidelines.md +184 -0
  46. package/assets/skills/{design/agemon-design-minimal → essentials/writing-guidelines}/LICENSE +1 -1
  47. package/assets/skills/essentials/writing-guidelines/NOTICE.md +14 -0
  48. package/assets/skills/essentials/writing-guidelines/SKILL.md +18 -0
  49. package/assets/skills/essentials/writing-guidelines/references/guidelines.md +250 -0
  50. package/assets/skills/founder/agemon-founder-board/LICENSE +21 -0
  51. package/assets/skills/founder/agemon-founder-board/NOTICE.md +11 -0
  52. package/assets/skills/founder/agemon-founder-board/SKILL.md +111 -0
  53. package/assets/skills/founder/agemon-founder-board/lenses.md +84 -0
  54. package/assets/skills/founder/agemon-founder-brand/LICENSE +21 -0
  55. package/assets/skills/founder/agemon-founder-brand/NOTICE.md +12 -0
  56. package/assets/skills/founder/agemon-founder-brand/SKILL.md +77 -0
  57. package/assets/skills/founder/agemon-founder-cfo/LICENSE +21 -0
  58. package/assets/skills/founder/agemon-founder-cfo/NOTICE.md +12 -0
  59. package/assets/skills/founder/agemon-founder-cfo/SKILL.md +109 -0
  60. package/assets/skills/founder/agemon-founder-cfo/example.json +27 -0
  61. package/assets/skills/founder/agemon-founder-cfo/unit_economics.py +270 -0
  62. package/assets/skills/founder/agemon-founder-competitors/LICENSE +21 -0
  63. package/assets/skills/founder/agemon-founder-competitors/NOTICE.md +12 -0
  64. package/assets/skills/founder/agemon-founder-competitors/SKILL.md +84 -0
  65. package/assets/skills/founder/agemon-founder-consumer/LICENSE +21 -0
  66. package/assets/skills/founder/agemon-founder-consumer/NOTICE.md +11 -0
  67. package/assets/skills/founder/agemon-founder-consumer/SKILL.md +126 -0
  68. package/assets/skills/founder/agemon-founder-consumer/customer.example.json +34 -0
  69. package/assets/skills/founder/agemon-founder-consumer/panel.py +424 -0
  70. package/assets/skills/founder/agemon-founder-consumer/pitch.example.md +3 -0
  71. package/assets/skills/founder/agemon-founder-launch/LICENSE +21 -0
  72. package/assets/skills/founder/agemon-founder-launch/NOTICE.md +11 -0
  73. package/assets/skills/founder/agemon-founder-launch/SKILL.md +65 -0
  74. package/assets/skills/founder/agemon-founder-marketing/LICENSE +21 -0
  75. package/assets/skills/founder/agemon-founder-marketing/NOTICE.md +11 -0
  76. package/assets/skills/founder/agemon-founder-marketing/SKILL.md +80 -0
  77. package/assets/skills/founder/agemon-founder-offer/LICENSE +21 -0
  78. package/assets/skills/founder/agemon-founder-offer/NOTICE.md +11 -0
  79. package/assets/skills/founder/agemon-founder-offer/SKILL.md +75 -0
  80. package/assets/skills/founder/agemon-founder-ops/LICENSE +21 -0
  81. package/assets/skills/founder/agemon-founder-ops/NOTICE.md +12 -0
  82. package/assets/skills/founder/agemon-founder-ops/SKILL.md +77 -0
  83. package/assets/skills/founder/agemon-founder-plan/LICENSE +21 -0
  84. package/assets/skills/founder/agemon-founder-plan/NOTICE.md +11 -0
  85. package/assets/skills/founder/agemon-founder-plan/SKILL.md +88 -0
  86. package/assets/skills/founder/agemon-founder-plan/compile.py +178 -0
  87. package/assets/skills/founder/agemon-founder-pricing/LICENSE +21 -0
  88. package/assets/skills/founder/agemon-founder-pricing/NOTICE.md +12 -0
  89. package/assets/skills/founder/agemon-founder-pricing/SKILL.md +92 -0
  90. package/assets/skills/founder/agemon-founder-pricing/van_westendorp.py +172 -0
  91. package/assets/skills/{design/agemon-design-editorial → output-style/agemon-adhd}/LICENSE +1 -1
  92. package/assets/skills/output-style/agemon-adhd/NOTICE.md +13 -0
  93. package/assets/skills/output-style/agemon-adhd/SKILL.md +138 -0
  94. package/assets/skills/security/agemon-security-audit/AI-AND-LLM.md +83 -0
  95. package/assets/skills/security/agemon-security-audit/ATTACK-CLASSES.md +130 -0
  96. package/assets/skills/security/agemon-security-audit/CLIENT-SIDE.md +83 -0
  97. package/assets/skills/security/agemon-security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
  98. package/assets/skills/security/agemon-security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
  99. package/assets/skills/security/agemon-security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
  100. package/assets/skills/security/agemon-security-audit/HUNTING.md +251 -0
  101. package/assets/skills/security/agemon-security-audit/LICENSE +21 -0
  102. package/assets/skills/security/agemon-security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
  103. package/assets/skills/security/agemon-security-audit/NOTICE.md +12 -0
  104. package/assets/skills/security/agemon-security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
  105. package/assets/skills/security/agemon-security-audit/RECONNAISSANCE.md +156 -0
  106. package/assets/skills/security/agemon-security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
  107. package/assets/skills/security/agemon-security-audit/SKILL.md +192 -0
  108. package/assets/skills/security/agemon-security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
  109. package/assets/skills/security/agemon-security-audit/VALIDATION-AND-REPORTING.md +186 -0
  110. package/assets/skills/security/agemon-security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
  111. package/assets/skills/security/agemon-security-audit/report-schema.json +461 -0
  112. package/assets/skills/security/agemon-security-audit/validate-coverage-ledger.cjs +872 -0
  113. package/assets/skills/security/agemon-security-audit/validate-findings.cjs +773 -0
  114. package/assets/skills/workflow/agemon-brainstorming/LICENSE +21 -0
  115. package/assets/skills/workflow/agemon-brainstorming/NOTICE.md +14 -0
  116. package/assets/skills/workflow/agemon-brainstorming/SKILL.md +287 -0
  117. package/assets/skills/workflow/agemon-brainstorming/builder-check-prompt.md +23 -0
  118. package/assets/skills/workflow/agemon-dispatching-parallel-agents/LICENSE +21 -0
  119. package/assets/skills/workflow/agemon-dispatching-parallel-agents/NOTICE.md +13 -0
  120. package/assets/skills/workflow/agemon-dispatching-parallel-agents/SKILL.md +167 -0
  121. package/assets/skills/workflow/agemon-executing-plans/LICENSE +21 -0
  122. package/assets/skills/workflow/agemon-executing-plans/NOTICE.md +15 -0
  123. package/assets/skills/workflow/agemon-executing-plans/SKILL.md +322 -0
  124. package/assets/skills/workflow/agemon-executing-plans/scripts/task-done +55 -0
  125. package/assets/skills/workflow/agemon-executing-plans/scripts/task-start +32 -0
  126. package/assets/skills/workflow/agemon-finishing-a-development-branch/LICENSE +21 -0
  127. package/assets/skills/workflow/agemon-finishing-a-development-branch/NOTICE.md +13 -0
  128. package/assets/skills/workflow/agemon-finishing-a-development-branch/SKILL.md +225 -0
  129. package/assets/skills/workflow/agemon-subagent-driven-development/LICENSE +21 -0
  130. package/assets/skills/workflow/agemon-subagent-driven-development/NOTICE.md +15 -0
  131. package/assets/skills/workflow/agemon-subagent-driven-development/SKILL.md +339 -0
  132. package/assets/skills/workflow/agemon-subagent-driven-development/code-reviewer.md +198 -0
  133. package/assets/skills/workflow/agemon-subagent-driven-development/implementer-prompt.md +154 -0
  134. package/assets/skills/workflow/agemon-subagent-driven-development/re-review-prompt.md +116 -0
  135. package/assets/skills/workflow/agemon-subagent-driven-development/references/batching.md +11 -0
  136. package/assets/skills/workflow/agemon-subagent-driven-development/references/cannot-verify.md +10 -0
  137. package/assets/skills/workflow/agemon-subagent-driven-development/references/final-review.md +49 -0
  138. package/assets/skills/workflow/agemon-subagent-driven-development/references/fix-loop.md +77 -0
  139. package/assets/skills/workflow/agemon-subagent-driven-development/references/handling-reports.md +15 -0
  140. package/assets/skills/workflow/agemon-subagent-driven-development/references/preflight.md +26 -0
  141. package/assets/skills/workflow/agemon-subagent-driven-development/references/resuming.md +12 -0
  142. package/assets/skills/workflow/agemon-subagent-driven-development/references/role-scout.md +18 -0
  143. package/assets/skills/workflow/agemon-subagent-driven-development/references/role-worker.md +19 -0
  144. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/review-package +64 -0
  145. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-repo +54 -0
  146. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-workspace +110 -0
  147. package/assets/skills/workflow/agemon-subagent-driven-development/scripts/task-brief +108 -0
  148. package/assets/skills/workflow/agemon-subagent-driven-development/task-reviewer-prompt.md +209 -0
  149. package/assets/skills/workflow/agemon-test-driven-development/LICENSE +21 -0
  150. package/assets/skills/workflow/agemon-test-driven-development/NOTICE.md +14 -0
  151. package/assets/skills/workflow/agemon-test-driven-development/SKILL.md +330 -0
  152. package/assets/skills/workflow/agemon-test-driven-development/writing-good-tests.md +198 -0
  153. package/assets/skills/workflow/agemon-using-git-worktrees/LICENSE +21 -0
  154. package/assets/skills/workflow/agemon-using-git-worktrees/NOTICE.md +13 -0
  155. package/assets/skills/workflow/agemon-using-git-worktrees/SKILL.md +167 -0
  156. package/assets/skills/workflow/agemon-writing-plans/LICENSE +21 -0
  157. package/assets/skills/workflow/agemon-writing-plans/NOTICE.md +13 -0
  158. package/assets/skills/workflow/agemon-writing-plans/SKILL.md +204 -0
  159. package/dist/{chunk-5LATHJYU.js → chunk-ZZBF3GOV.js} +369 -944
  160. package/dist/chunk-ZZBF3GOV.js.map +1 -0
  161. package/dist/{fake-subprocess-2BETWZVZ.js → fake-subprocess-IV4ML77S.js} +3 -33
  162. package/dist/fake-subprocess-IV4ML77S.js.map +1 -0
  163. package/dist/index.js +3477 -731
  164. package/dist/index.js.map +1 -1
  165. package/package.json +8 -1
  166. package/assets/skills/design/agemon-design/references/agents.md +0 -63
  167. package/assets/skills/design/agemon-design-dashboard/NOTICE.md +0 -9
  168. package/assets/skills/design/agemon-design-editorial/NOTICE.md +0 -9
  169. package/assets/skills/design/agemon-design-minimal/NOTICE.md +0 -9
  170. package/dist/chunk-5LATHJYU.js.map +0 -1
  171. package/dist/fake-subprocess-2BETWZVZ.js.map +0 -1
@@ -4,19 +4,14 @@ import {
4
4
  CLAUDE_SKILLS_DIRECTORY,
5
5
  CODE_REVIEW_GRAPH_PACKAGE_SPEC,
6
6
  CODE_REVIEW_GRAPH_VERSION,
7
- ESSENTIALS_SKILLS_COMMIT,
8
- FAKE_PINNED_SKILL_MANIFEST_FILE,
9
7
  SKILLS_CLI_PATH_IN_TOOLS_DIR,
10
8
  SKILLS_LOCK_FILE,
11
- SKILL_GROUPS,
12
- fakePinnedSkillManifest,
13
9
  isLeftOutBySkillsCli,
14
10
  isPlainSkillName,
15
11
  resolveHomeDirectory,
16
12
  resolveStateRoot,
17
- sha256Hex,
18
- skillPathInRepository
19
- } from "./chunk-5LATHJYU.js";
13
+ sha256Hex
14
+ } from "./chunk-ZZBF3GOV.js";
20
15
 
21
16
  // src/core/fake-subprocess.ts
22
17
  import {
@@ -305,24 +300,6 @@ function buildFakeSkillsCliResponse(args, cwd) {
305
300
  stderr: ""
306
301
  };
307
302
  }
308
- function writeFakePinnedSkills(sourceDirectory) {
309
- const commit = basename(sourceDirectory);
310
- for (const entry of SKILL_GROUPS.flatMap((group) => group.skills)) {
311
- if (entry.pinnedRepository?.commit !== commit) {
312
- continue;
313
- }
314
- const skillDirectory = join(
315
- sourceDirectory,
316
- skillPathInRepository(entry.skillName)
317
- );
318
- mkdirSync(skillDirectory, { recursive: true });
319
- writeFileSync(
320
- join(skillDirectory, FAKE_PINNED_SKILL_MANIFEST_FILE),
321
- fakePinnedSkillManifest(entry.skillName),
322
- "utf8"
323
- );
324
- }
325
- }
326
303
  function fakePipxHome() {
327
304
  return join(resolveHomeDirectory(), ".agemon", "fake-pipx");
328
305
  }
@@ -618,13 +595,6 @@ function runFakeSubprocess(command, args, options = {}) {
618
595
  if (args[0]?.endsWith(PINNED_SKILLS_CLI_SUFFIX)) {
619
596
  return buildFakeSkillsCliResponse(args.slice(1), options.cwd);
620
597
  }
621
- if (command === "git" && args.at(-2) === "rev-parse" && args.at(-1) === "HEAD") {
622
- return { code: 0, stdout: `${ESSENTIALS_SKILLS_COMMIT}
623
- `, stderr: "" };
624
- }
625
- if (command === "git" && args.slice(-3).join(" ") === "checkout -q FETCH_HEAD" && options.cwd !== void 0) {
626
- writeFakePinnedSkills(options.cwd);
627
- }
628
598
  if (basename(command) === "npm") {
629
599
  assertNpmIgnoresProjectConfig(args);
630
600
  }
@@ -663,4 +633,4 @@ export {
663
633
  runFakeSubprocess,
664
634
  takeFakeVerifiedBinaryInstallRequests
665
635
  };
666
- //# sourceMappingURL=fake-subprocess-2BETWZVZ.js.map
636
+ //# sourceMappingURL=fake-subprocess-IV4ML77S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/fake-subprocess.ts"],"sourcesContent":["import {\n closeSync,\n cpSync,\n existsSync,\n lstatSync,\n mkdirSync,\n openSync,\n readdirSync,\n readFileSync,\n rmSync,\n statSync,\n unlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { basename, dirname, isAbsolute, join, relative } from \"node:path\";\nimport { resolveHomeDirectory } from \"../platform/home.js\";\nimport {\n AGNIX_VERSION,\n CODE_REVIEW_GRAPH_PACKAGE_SPEC,\n CODE_REVIEW_GRAPH_VERSION,\n} from \"../plugins/pins.js\";\nimport { isLeftOutBySkillsCli } from \"../plugins/skills/skill-tree.js\";\nimport { SKILLS_CLI_PATH_IN_TOOLS_DIR } from \"../plugins/skills/skills-cli.js\";\nimport {\n CANONICAL_SKILLS_DIRECTORY,\n CLAUDE_SKILLS_DIRECTORY,\n SKILLS_LOCK_FILE,\n} from \"../plugins/skills/skills-cli-targets.js\";\nimport { isPlainSkillName } from \"./config.js\";\nimport { sha256Hex } from \"./fingerprint.js\";\nimport { resolveStateRoot } from \"./state-root.js\";\nimport type { SubprocessResult } from \"./subprocess-runner.js\";\nimport type {\n VerifiedBinaryInstaller,\n VerifiedBinaryInstallRequest,\n} from \"./verified-binary-installer.js\";\n\nconst FAKE_CRG_ON_PATH = \"/fake/bin/code-review-graph\";\nconst PINNED_SKILLS_CLI_SUFFIX = `/${SKILLS_CLI_PATH_IN_TOOLS_DIR}`;\nconst FAKE_LOCK_VERSION = 1;\n\nfunction formatCommand(command: string, args: string[]): string {\n return [command, ...args].join(\" \");\n}\n\nlet fakeCrgInstalledState: boolean | null = null;\nlet fakeInstalledGlobalNpmPackageNames: Set<string> | null = null;\nlet fakeVersionedAgentBinaryNames: Set<string> | null = null;\nlet fakeUsableAgentBinaryNames: Set<string> | null = null;\nlet fakeStateSignature: string | null = null;\nlet fakeVerifiedBinaryInstallRequests: VerifiedBinaryInstallRequest[] = [];\n\nfunction buildFakeStateSignature(): string {\n return [\n process.env.AGEMON_FAKE_PREINSTALLED_CRG ?? \"\",\n process.env.AGEMON_FAKE_PREINSTALLED_NPM_PACKAGES ?? \"\",\n process.env.AGEMON_FAKE_INSTALLED_AGENTS ?? \"\",\n process.env.AGEMON_FAKE_USABLE_AGENTS ?? \"\",\n ].join(\"||\");\n}\n\nfunction fakeGlobalNpmStatePath(): string {\n return join(resolveStateRoot(), \"agemon-fake\", \"npm-global.json\");\n}\n\nfunction saveFakeGlobalNpmPackages(): void {\n if (fakeInstalledGlobalNpmPackageNames?.size === 0) {\n rmSync(fakeGlobalNpmStatePath(), { force: true });\n return;\n }\n mkdirSync(dirname(fakeGlobalNpmStatePath()), { recursive: true });\n writeFileSync(\n fakeGlobalNpmStatePath(),\n JSON.stringify([...(fakeInstalledGlobalNpmPackageNames ?? [])]),\n );\n}\n\nfunction loadSavedFakeGlobalNpmPackages(): string[] | null {\n if (!existsSync(fakeGlobalNpmStatePath())) {\n return null;\n }\n return JSON.parse(readFileSync(fakeGlobalNpmStatePath(), \"utf8\"));\n}\n\nexport function resetFakeSubprocessState(): void {\n rmSync(fakeGlobalNpmStatePath(), { force: true });\n fakeCrgInstalledState = null;\n fakeInstalledGlobalNpmPackageNames = null;\n fakeVersionedAgentBinaryNames = null;\n fakeUsableAgentBinaryNames = null;\n fakeStateSignature = null;\n fakeVerifiedBinaryInstallRequests = [];\n}\n\nexport function createFakeVerifiedBinaryInstaller(): VerifiedBinaryInstaller {\n return {\n async install(request) {\n initializeFakeStateIfNeeded();\n fakeVerifiedBinaryInstallRequests.push(request);\n fakeInstalledGlobalNpmPackageNames?.add(request.packageName);\n saveFakeGlobalNpmPackages();\n },\n async inspect(request) {\n initializeFakeStateIfNeeded();\n return fakeInstalledGlobalNpmPackageNames?.has(request.packageName)\n ? { kind: \"installed\", version: AGNIX_VERSION, differences: [] }\n : { kind: \"absent\" };\n },\n };\n}\n\nexport function takeFakeVerifiedBinaryInstallRequests(): VerifiedBinaryInstallRequest[] {\n return fakeVerifiedBinaryInstallRequests.splice(0);\n}\n\nfunction initializeFakeStateIfNeeded(): void {\n const currentStateSignature = buildFakeStateSignature();\n if (\n fakeCrgInstalledState !== null &&\n fakeStateSignature === currentStateSignature\n ) {\n return;\n }\n fakeStateSignature = currentStateSignature;\n\n fakeCrgInstalledState = process.env.AGEMON_FAKE_PREINSTALLED_CRG === \"1\";\n\n const preinstalledGlobalNpmPackages =\n process.env.AGEMON_FAKE_PREINSTALLED_NPM_PACKAGES?.split(\",\")\n .map((packageName) => packageName.trim())\n .filter((packageName) => packageName.length > 0);\n fakeInstalledGlobalNpmPackageNames = new Set(\n loadSavedFakeGlobalNpmPackages() ?? preinstalledGlobalNpmPackages ?? [],\n );\n\n const versionedAgentBinaryNames =\n process.env.AGEMON_FAKE_INSTALLED_AGENTS?.split(\",\")\n .map((binaryName) => binaryName.trim())\n .filter((binaryName) => binaryName.length > 0);\n fakeVersionedAgentBinaryNames = new Set(versionedAgentBinaryNames ?? []);\n\n const usableAgentBinaryNames = process.env.AGEMON_FAKE_USABLE_AGENTS?.split(\n \",\",\n )\n .map((binaryName) => binaryName.trim())\n .filter((binaryName) => binaryName.length > 0);\n fakeUsableAgentBinaryNames = new Set(usableAgentBinaryNames ?? []);\n}\n\nfunction readOptionValue(\n args: string[],\n optionName: string,\n): string | undefined {\n const optionIndex = args.indexOf(optionName);\n if (optionIndex < 0) {\n return undefined;\n }\n\n return args[optionIndex + 1];\n}\n\nfunction declaredSkillName(\n manifestPath: string,\n directoryName: string,\n): string {\n const nameLine = readFileSync(manifestPath, \"utf8\")\n .split(\"\\n\")\n .find((line) => line.startsWith(\"name:\"));\n return nameLine?.slice(\"name:\".length).trim() || directoryName;\n}\n\nfunction installedSkillNamesIn(skillsDirectory: string): string[] {\n if (!existsSync(skillsDirectory)) {\n return [];\n }\n return readdirSync(skillsDirectory).flatMap((directoryName) => {\n const manifestPath = join(skillsDirectory, directoryName, \"SKILL.md\");\n return existsSync(manifestPath)\n ? [declaredSkillName(manifestPath, directoryName)]\n : [];\n });\n}\n\nfunction buildFakeSkillsList(cwd: string): SubprocessResult {\n const names = new Set([\n ...installedSkillNamesIn(join(cwd, CANONICAL_SKILLS_DIRECTORY)),\n ...installedSkillNamesIn(join(cwd, CLAUDE_SKILLS_DIRECTORY)),\n ]);\n const skills = [...names].sort().map((name) => ({\n name,\n path: join(cwd, CLAUDE_SKILLS_DIRECTORY, name),\n scope: \"project\",\n agents: [\"Claude Code\"],\n }));\n\n return {\n code: 0,\n stdout: `${JSON.stringify(skills, null, 2)}\\n`,\n stderr: \"\",\n };\n}\n\nfunction removeInstalledCopy(copyPath: string): void {\n const stats = lstatSync(copyPath, { throwIfNoEntry: false });\n if (stats?.isSymbolicLink()) {\n unlinkSync(copyPath);\n } else if (stats !== undefined) {\n rmSync(copyPath, { recursive: true, force: true });\n }\n}\n\nfunction copyLikeSkillsCli(source: string, destination: string): void {\n cpSync(source, destination, {\n recursive: true,\n dereference: true,\n filter: (path) =>\n path === source || !isLeftOutBySkillsCli(basename(path), statSync(path)),\n });\n}\n\nfunction readFakeLockSkills(cwd: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(\n readFileSync(join(cwd, SKILLS_LOCK_FILE), \"utf8\"),\n );\n return parsed.version === FAKE_LOCK_VERSION && parsed.skills\n ? parsed.skills\n : {};\n } catch {\n return {};\n }\n}\n\nfunction writeFakeLockLikeSkillsCli(\n cwd: string,\n skills: Record<string, unknown>,\n): void {\n const sortedSkills = Object.fromEntries(\n Object.keys(skills)\n .sort()\n .map((name) => [name, skills[name]]),\n );\n writeFileSync(\n join(cwd, SKILLS_LOCK_FILE),\n `${JSON.stringify({ version: FAKE_LOCK_VERSION, skills: sortedSkills }, null, 2)}\\n`,\n );\n}\n\nfunction fakeLockEntry(packageSource: string, cwd: string) {\n const isLocal = existsSync(packageSource);\n const source = isLocal ? relative(cwd, packageSource) : packageSource;\n return {\n source,\n sourceType: isLocal ? \"local\" : \"github\",\n computedHash: sha256Hex(source),\n };\n}\n\nfunction refusedSkillName(skillName: string): SubprocessResult {\n return {\n code: 1,\n stdout: \"\",\n stderr: `the fake skills CLI refuses the skill name ${JSON.stringify(skillName)}`,\n };\n}\n\nfunction buildFakeSkillsAdd(args: string[], cwd: string): SubprocessResult {\n const packageSource = args[1];\n if (!packageSource) {\n return {\n code: 1,\n stdout: \"\",\n stderr: \"skills add requires a package source\",\n };\n }\n\n const skillName = readOptionValue(args, \"--skill\") ?? packageSource;\n if (!isPlainSkillName(skillName)) {\n return refusedSkillName(skillName);\n }\n const copyPath = join(cwd, CLAUDE_SKILLS_DIRECTORY, skillName);\n removeInstalledCopy(copyPath);\n mkdirSync(dirname(copyPath), { recursive: true });\n if (existsSync(packageSource)) {\n copyLikeSkillsCli(packageSource, copyPath);\n } else {\n mkdirSync(copyPath);\n writeFileSync(\n join(copyPath, \"SKILL.md\"),\n `---\\nname: ${skillName}\\n---\\n`,\n \"utf8\",\n );\n }\n writeFakeLockLikeSkillsCli(cwd, {\n ...readFakeLockSkills(cwd),\n [skillName]: fakeLockEntry(packageSource, cwd),\n });\n\n return {\n code: 0,\n stdout: `installed skill ${skillName} from ${packageSource}\\n`,\n stderr: \"\",\n };\n}\n\nfunction buildFakeSkillsRemove(args: string[], cwd: string): SubprocessResult {\n const agentName = readOptionValue(args, \"--agent\");\n const skillNames = args\n .slice(1)\n .filter(\n (arg) => arg.length > 0 && !arg.startsWith(\"-\") && arg !== agentName,\n );\n\n const unsafeName = skillNames.find(\n (skillName) => !isPlainSkillName(skillName),\n );\n if (unsafeName !== undefined) {\n return refusedSkillName(unsafeName);\n }\n for (const skillName of skillNames) {\n removeInstalledCopy(join(cwd, CLAUDE_SKILLS_DIRECTORY, skillName));\n rmSync(join(cwd, CANONICAL_SKILLS_DIRECTORY, skillName), {\n recursive: true,\n force: true,\n });\n const lockSkills = readFakeLockSkills(cwd);\n if (Object.hasOwn(lockSkills, skillName)) {\n delete lockSkills[skillName];\n writeFakeLockLikeSkillsCli(cwd, lockSkills);\n }\n }\n\n return {\n code: 0,\n stdout: `removed ${skillNames.length} skill(s)\\n`,\n stderr: \"\",\n };\n}\n\nfunction buildFakeSkillsCliResponse(\n args: string[],\n cwd: string | undefined,\n): SubprocessResult {\n const subcommand = args[0];\n const needsRepository = [\"list\", \"ls\", \"add\", \"remove\", \"rm\"].includes(\n subcommand ?? \"\",\n );\n if (needsRepository && cwd === undefined) {\n return {\n code: 1,\n stdout: \"\",\n stderr: \"the fake skills CLI needs the repository as its cwd\",\n };\n }\n if (cwd !== undefined && (subcommand === \"list\" || subcommand === \"ls\")) {\n return buildFakeSkillsList(cwd);\n }\n\n if (cwd !== undefined && subcommand === \"add\") {\n return buildFakeSkillsAdd(args, cwd);\n }\n\n if (cwd !== undefined && (subcommand === \"remove\" || subcommand === \"rm\")) {\n return buildFakeSkillsRemove(args, cwd);\n }\n\n return {\n code: 0,\n stdout: `[fake subprocess] skills ${args.join(\" \")}\\n`,\n stderr: \"\",\n };\n}\n\nexport function fakePipxHome(): string {\n return join(resolveHomeDirectory(), \".agemon\", \"fake-pipx\");\n}\n\nfunction fakeCrgVenvPath(): string {\n return join(fakePipxHome(), \"venvs\", \"code-review-graph\");\n}\n\nfunction fakeCrgStubPath(): string {\n return join(fakeCrgVenvPath(), \"bin\", \"code-review-graph\");\n}\n\nexport function fakeCodeReviewGraphOnPath(): string | undefined {\n initializeFakeStateIfNeeded();\n if (existsSync(fakeCrgStubPath())) {\n return fakeCrgStubPath();\n }\n return fakeCrgInstalledState ? FAKE_CRG_ON_PATH : undefined;\n}\n\nfunction splitPipArgs(args: string[]): string[] {\n const pipArgsFlag = args.find((arg) => arg.startsWith(\"--pip-args=\"));\n if (pipArgsFlag === undefined) {\n return [];\n }\n return [\n ...pipArgsFlag.slice(\"--pip-args=\".length).matchAll(/'([^']*)'|(\\S+)/g),\n ].map((match) => match[1] ?? match[2]);\n}\n\nfunction writeFakeCrgVenv(pipArgs: string[]): void {\n const metadataPath = join(fakeCrgVenvPath(), \"pipx_metadata.json\");\n if (existsSync(metadataPath)) {\n return;\n }\n mkdirSync(dirname(fakeCrgStubPath()), { recursive: true });\n writeFileSync(fakeCrgStubPath(), \"#!/bin/sh\\n\", { flag: \"wx\", mode: 0o755 });\n writeFileSync(join(fakeCrgVenvPath(), \"bin\", \"python\"), \"#!/bin/sh\\n\", {\n flag: \"wx\",\n mode: 0o755,\n });\n const metadata = {\n main_package: {\n package: \"code-review-graph\",\n package_version: CODE_REVIEW_GRAPH_VERSION,\n app_paths: [{ __Path__: fakeCrgStubPath(), __type__: \"Path\" }],\n pip_args: pipArgs,\n },\n pipx_metadata_version: \"0.3\",\n };\n writeFileSync(metadataPath, `${JSON.stringify(metadata, null, 2)}\\n`, {\n flag: \"wx\",\n });\n}\n\nfunction findProjectRootLikeCrg(\n cwd: string,\n repoRootOverride?: string,\n): string {\n if (repoRootOverride && existsSync(repoRootOverride)) {\n return repoRootOverride;\n }\n for (let directory = cwd; ; directory = dirname(directory)) {\n if (existsSync(join(directory, \".git\"))) {\n return directory;\n }\n if (directory === dirname(directory)) {\n return cwd;\n }\n }\n}\n\nfunction fakeGraphDatabasePath(projectRoot: string): string {\n const graphDirectory = join(projectRoot, \".code-review-graph\");\n mkdirSync(graphDirectory, { recursive: true });\n return join(graphDirectory, \"graph.db\");\n}\n\nfunction buildFakeGraph(projectRoot: string | undefined): void {\n if (projectRoot !== undefined) {\n writeFileSync(fakeGraphDatabasePath(projectRoot), \"fake graph\\n\", \"utf8\");\n }\n}\n\nfunction openFakeGraph(projectRoot: string | undefined): void {\n if (projectRoot !== undefined) {\n closeSync(openSync(fakeGraphDatabasePath(projectRoot), \"a\"));\n }\n}\n\nfunction buildFakeCrgResponse(\n command: string,\n args: string[],\n projectRoot: string | undefined,\n): SubprocessResult {\n const installed =\n fakeCrgInstalledState || (isAbsolute(command) && existsSync(command));\n if (!installed) {\n return {\n code: 1,\n stdout: \"\",\n stderr: \"code-review-graph: command not found\",\n };\n }\n\n if (args[0] === \"status\") {\n openFakeGraph(projectRoot);\n return {\n code: 0,\n stdout: \"Files: 1\\nNodes: 1\\nEdges: 1\\n\",\n stderr: \"\",\n };\n }\n\n if (args[0] === \"build\") {\n buildFakeGraph(projectRoot);\n return {\n code: 0,\n stdout: \"Graph build complete\\n\",\n stderr: \"\",\n };\n }\n\n return {\n code: 0,\n stdout: \"code-review-graph 0.0.0-fake\\n\",\n stderr: \"\",\n };\n}\n\nfunction buildFakePipxResponse(args: string[]): SubprocessResult | undefined {\n const [operation, packageName] = args;\n if (\n operation === \"install\" &&\n packageName === CODE_REVIEW_GRAPH_PACKAGE_SPEC\n ) {\n writeFakeCrgVenv(splitPipArgs(args));\n fakeCrgInstalledState = true;\n return {\n code: 0,\n stdout: \"installed package code-review-graph\\n\",\n stderr: \"\",\n };\n }\n\n if (operation === \"uninstall\" && packageName === \"code-review-graph\") {\n rmSync(fakeCrgVenvPath(), { recursive: true, force: true });\n fakeCrgInstalledState = false;\n return {\n code: 0,\n stdout: \"uninstalled package code-review-graph\\n\",\n stderr: \"\",\n };\n }\n\n return undefined;\n}\n\nfunction parseGlobalNpmPackageNames(args: string[]): string[] {\n const packageNames: string[] = [];\n\n for (let index = 1; index < args.length; index += 1) {\n const arg = args[index];\n if (!arg || arg.startsWith(\"-\")) {\n continue;\n }\n packageNames.push(arg);\n }\n\n return packageNames;\n}\n\nfunction buildFakeNpmCi(args: string[]): SubprocessResult {\n const prefix = readOptionValue(args, \"--prefix\");\n if (prefix) {\n const cliPath = join(prefix, SKILLS_CLI_PATH_IN_TOOLS_DIR);\n mkdirSync(dirname(cliPath), { recursive: true });\n writeFileSync(cliPath, \"\", \"utf8\");\n }\n return {\n code: 0,\n stdout: `[fake subprocess] npm ${args.join(\" \")}\\n`,\n stderr: \"\",\n };\n}\n\nfunction assertNpmIgnoresProjectConfig(args: string[]): void {\n const ignoresProjectConfig = args.some(\n (arg) =>\n arg === \"--global\" || arg === \"--prefix\" || arg.startsWith(\"--prefix=\"),\n );\n if (!ignoresProjectConfig) {\n throw new Error(\n `npm ${args.join(\" \")} must pass --global or --prefix, so npm never reads a .npmrc from the repository it runs in.`,\n );\n }\n}\n\nfunction buildFakeNpmResponse(args: string[]): SubprocessResult | undefined {\n const operation = args[0];\n if (!operation) {\n return undefined;\n }\n\n if (operation === \"ci\") {\n return buildFakeNpmCi(args);\n }\n\n const hasGlobalFlag = args.includes(\"-g\") || args.includes(\"--global\");\n if (operation === \"root\" && hasGlobalFlag) {\n const fakeNpmRoot = join(resolveStateRoot(), \"agemon-fake\", \"npm-root\");\n mkdirSync(fakeNpmRoot, { recursive: true });\n return { code: 0, stdout: `${fakeNpmRoot}\\n`, stderr: \"\" };\n }\n if (!hasGlobalFlag) {\n return {\n code: 0,\n stdout: `[fake subprocess] npm ${args.join(\" \")}\\n`,\n stderr: \"\",\n };\n }\n\n const packageNames = parseGlobalNpmPackageNames(args);\n\n if (operation === \"install\") {\n throw new Error(\n `npm install --global ${packageNames.join(\" \")} installs by name; agemon installs global npm packages only from a verified tarball (ctx.verifiedBinaryInstaller).`,\n );\n }\n\n if (operation === \"uninstall\") {\n for (const packageName of packageNames) {\n fakeInstalledGlobalNpmPackageNames?.delete(packageName);\n }\n saveFakeGlobalNpmPackages();\n return {\n code: 0,\n stdout: `removed ${packageNames.length} package(s) globally\\n`,\n stderr: \"\",\n };\n }\n\n return {\n code: 0,\n stdout: `[fake subprocess] npm ${args.join(\" \")}\\n`,\n stderr: \"\",\n };\n}\n\nfunction buildFakeAgnixResponse(args: string[]): SubprocessResult {\n if (!fakeInstalledGlobalNpmPackageNames?.has(\"agnix\")) {\n return {\n code: 1,\n stdout: \"\",\n stderr: \"agnix: command not found\",\n };\n }\n\n if (args[0] === \"--version\") {\n return {\n code: 0,\n stdout: \"agnix 0.0.0-fake\\n\",\n stderr: \"\",\n };\n }\n\n if (args[0] === \"lint\") {\n return {\n code: 0,\n stdout: \"agnix lint passed\\n\",\n stderr: \"\",\n };\n }\n\n return {\n code: 0,\n stdout: `[fake subprocess] agnix ${args.join(\" \")}\\n`,\n stderr: \"\",\n };\n}\n\nconst FAKE_AGENT_BINARY_NAMES: ReadonlySet<string> = new Set([\n \"claude\",\n \"gemini\",\n]);\n\nfunction buildFakeAgentVersionResponse(binaryName: string): SubprocessResult {\n if (fakeVersionedAgentBinaryNames?.has(binaryName)) {\n return {\n code: 0,\n stdout: `${binaryName} 1.0.0-fake\\n`,\n stderr: \"\",\n };\n }\n\n return {\n code: 0,\n stdout: \"unrecognized output\\n\",\n stderr: \"\",\n };\n}\n\nfunction buildFakeAgentUsabilityResponse(\n binaryName: string,\n args: string[],\n): SubprocessResult {\n if (fakeUsableAgentBinaryNames?.has(binaryName)) {\n return {\n code: 0,\n stdout: `[fake subprocess] ${binaryName} ${args.join(\" \")} ok\\n`,\n stderr: \"\",\n };\n }\n\n return {\n code: 1,\n stdout: \"\",\n stderr: `${binaryName} ${args.join(\" \")}: command failed\\n`,\n };\n}\n\nfunction buildFakeAgentResponse(\n binaryName: string,\n args: string[],\n): SubprocessResult {\n if (args[0] === \"--version\") {\n return buildFakeAgentVersionResponse(binaryName);\n }\n\n return buildFakeAgentUsabilityResponse(binaryName, args);\n}\n\nexport function runFakeSubprocess(\n command: string,\n args: string[],\n options: { cwd?: string; env?: Record<string, string> } = {},\n): SubprocessResult {\n initializeFakeStateIfNeeded();\n\n if (command === \"pipx\") {\n const pipxResponse = buildFakePipxResponse(args);\n if (pipxResponse) {\n return pipxResponse;\n }\n }\n\n if (args[0]?.endsWith(PINNED_SKILLS_CLI_SUFFIX)) {\n return buildFakeSkillsCliResponse(args.slice(1), options.cwd);\n }\n\n if (basename(command) === \"npm\") {\n assertNpmIgnoresProjectConfig(args);\n }\n if (command === \"npm\") {\n const npmResponse = buildFakeNpmResponse(args);\n if (npmResponse) {\n return npmResponse;\n }\n }\n\n if (command === \"agnix\") {\n return buildFakeAgnixResponse(args);\n }\n\n const commandBinaryName = basename(command);\n if (commandBinaryName === \"code-review-graph\") {\n return buildFakeCrgResponse(\n command,\n args,\n options.cwd &&\n findProjectRootLikeCrg(options.cwd, options.env?.CRG_REPO_ROOT),\n );\n }\n\n if (FAKE_AGENT_BINARY_NAMES.has(commandBinaryName)) {\n return buildFakeAgentResponse(commandBinaryName, args);\n }\n\n return {\n code: 0,\n stdout: `[fake subprocess] ${formatCommand(command, args)}\\n`,\n stderr: \"\",\n };\n}\n"],"mappings":"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","names":[]}