@agents-inc/cli 0.76.0 → 0.77.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 (144) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{chunk-Q4PJSAMP.js → chunk-32HX6UYI.js} +2 -1
  3. package/dist/chunk-32HX6UYI.js.map +1 -0
  4. package/dist/{chunk-CBJTSEI2.js → chunk-5DDHCCEB.js} +14 -4
  5. package/dist/chunk-5DDHCCEB.js.map +1 -0
  6. package/dist/{chunk-UBNHVBSV.js → chunk-7JQIMEUX.js} +3 -3
  7. package/dist/{chunk-XYZ7B5BY.js → chunk-7LBYURQR.js} +2 -2
  8. package/dist/{chunk-NWW3OJH5.js → chunk-A5JSBU65.js} +2 -2
  9. package/dist/{chunk-LO5QGAP2.js → chunk-A6XMJT2Q.js} +4 -4
  10. package/dist/{chunk-36YW5E7G.js → chunk-AQ5KP4YW.js} +4 -4
  11. package/dist/{chunk-I2SUTL7S.js → chunk-B66E255O.js} +3 -3
  12. package/dist/{chunk-IDN2OZJY.js → chunk-C22ACAL2.js} +2 -2
  13. package/dist/{chunk-7NACNRFG.js → chunk-CTZ4GEAD.js} +16 -16
  14. package/dist/chunk-CTZ4GEAD.js.map +1 -0
  15. package/dist/{chunk-PRG7PKZM.js → chunk-CY23HPDE.js} +6 -4
  16. package/dist/chunk-CY23HPDE.js.map +1 -0
  17. package/dist/{chunk-WS3TL2AO.js → chunk-CZLXZ75E.js} +67 -35
  18. package/dist/chunk-CZLXZ75E.js.map +1 -0
  19. package/dist/{chunk-7XUKTYVD.js → chunk-EO6KJI5D.js} +1038 -270
  20. package/dist/chunk-EO6KJI5D.js.map +1 -0
  21. package/dist/{chunk-JWMYAJHD.js → chunk-FSK4TQX7.js} +1236 -354
  22. package/dist/chunk-FSK4TQX7.js.map +1 -0
  23. package/dist/{chunk-WMMU5FOO.js → chunk-FUWUCKES.js} +2 -2
  24. package/dist/{chunk-WMMU5FOO.js.map → chunk-FUWUCKES.js.map} +1 -1
  25. package/dist/{chunk-AE2QHAFO.js → chunk-G3YSDQJ2.js} +40 -41
  26. package/dist/chunk-G3YSDQJ2.js.map +1 -0
  27. package/dist/{chunk-CBYRFAUN.js → chunk-HK53FRMU.js} +3 -1
  28. package/dist/chunk-HK53FRMU.js.map +1 -0
  29. package/dist/{chunk-I534EWJQ.js → chunk-IFCASC6R.js} +2 -2
  30. package/dist/{chunk-R7F5YQMI.js → chunk-J5OOAKB5.js} +2 -2
  31. package/dist/{chunk-7PZFDI46.js → chunk-KB57OPUL.js} +4 -4
  32. package/dist/{chunk-WZ5S4LGX.js → chunk-KMLJCO5H.js} +5 -5
  33. package/dist/{chunk-CCSU4R65.js → chunk-MG55NDVG.js} +2 -2
  34. package/dist/{chunk-M4ZDKHJV.js → chunk-MUCQ27HV.js} +2 -2
  35. package/dist/{chunk-O5CPXIC4.js → chunk-N4KD5PBX.js} +4 -4
  36. package/dist/{chunk-7PMFIL5L.js → chunk-PDYKGJGR.js} +3 -3
  37. package/dist/{chunk-ODVQXXEO.js → chunk-R6QNVMN5.js} +16 -42
  38. package/dist/{chunk-ODVQXXEO.js.map → chunk-R6QNVMN5.js.map} +1 -1
  39. package/dist/chunk-SGKNE6EJ.js +192 -0
  40. package/dist/chunk-SGKNE6EJ.js.map +1 -0
  41. package/dist/{chunk-KPRCP3MZ.js → chunk-U2KFFRRX.js} +2 -2
  42. package/dist/{chunk-VQV3DSHD.js → chunk-UZHD4DBD.js} +5 -5
  43. package/dist/{chunk-EEZSCHS2.js → chunk-WMTYOK4E.js} +7 -7
  44. package/dist/{chunk-6F3CZLD6.js → chunk-XA7WF3BI.js} +3 -3
  45. package/dist/{chunk-S6DKM6MJ.js → chunk-XU6N3OIS.js} +4 -4
  46. package/dist/{chunk-WN2TUP4M.js → chunk-XYPAOBBV.js} +2 -2
  47. package/dist/{chunk-CKU7FJNV.js → chunk-ZIZFTSQY.js} +3 -3
  48. package/dist/commands/build/marketplace.js +4 -4
  49. package/dist/commands/build/plugins.js +8 -8
  50. package/dist/commands/build/stack.js +8 -8
  51. package/dist/commands/compile.js +8 -8
  52. package/dist/commands/config/index.js +8 -8
  53. package/dist/commands/config/path.js +7 -7
  54. package/dist/commands/config/show.js +8 -8
  55. package/dist/commands/diff.js +7 -7
  56. package/dist/commands/doctor.js +7 -7
  57. package/dist/commands/edit.js +25 -25
  58. package/dist/commands/eject.js +7 -7
  59. package/dist/commands/import/skill.js +7 -7
  60. package/dist/commands/info.js +7 -7
  61. package/dist/commands/init.js +25 -25
  62. package/dist/commands/list.js +7 -7
  63. package/dist/commands/new/agent.js +8 -8
  64. package/dist/commands/new/marketplace.js +9 -9
  65. package/dist/commands/new/skill.js +8 -8
  66. package/dist/commands/outdated.js +7 -7
  67. package/dist/commands/search.js +9 -9
  68. package/dist/commands/uninstall.js +7 -7
  69. package/dist/commands/update.js +8 -8
  70. package/dist/commands/validate.js +7 -7
  71. package/dist/components/skill-search/skill-search.js +2 -2
  72. package/dist/components/wizard/category-grid.js +3 -3
  73. package/dist/components/wizard/category-grid.test.js +18 -19
  74. package/dist/components/wizard/category-grid.test.js.map +1 -1
  75. package/dist/components/wizard/domain-selection.js +9 -9
  76. package/dist/components/wizard/help-modal.js +2 -2
  77. package/dist/components/wizard/search-modal.js +2 -2
  78. package/dist/components/wizard/search-modal.test.js +2 -2
  79. package/dist/components/wizard/source-grid.js +4 -4
  80. package/dist/components/wizard/source-grid.test.js +13 -13
  81. package/dist/components/wizard/stack-selection.js +10 -9
  82. package/dist/components/wizard/step-agents.js +9 -9
  83. package/dist/components/wizard/step-agents.test.js +12 -12
  84. package/dist/components/wizard/step-build.js +11 -11
  85. package/dist/components/wizard/step-build.test.js +15 -13
  86. package/dist/components/wizard/step-build.test.js.map +1 -1
  87. package/dist/components/wizard/step-confirm.js +5 -5
  88. package/dist/components/wizard/step-confirm.test.js +11 -11
  89. package/dist/components/wizard/step-refine.js +2 -2
  90. package/dist/components/wizard/step-refine.test.js +2 -2
  91. package/dist/components/wizard/step-settings.js +8 -8
  92. package/dist/components/wizard/step-settings.test.js +11 -11
  93. package/dist/components/wizard/step-sources.js +11 -11
  94. package/dist/components/wizard/step-sources.test.js +14 -14
  95. package/dist/components/wizard/step-stack.js +11 -12
  96. package/dist/components/wizard/step-stack.test.js +15 -15
  97. package/dist/components/wizard/step-stack.test.js.map +1 -1
  98. package/dist/components/wizard/wizard-layout.js +10 -10
  99. package/dist/components/wizard/wizard.js +23 -23
  100. package/dist/config-exports.js +1 -1
  101. package/dist/hooks/init.js +25 -25
  102. package/dist/{loader-7RQ4G4TH.js → loader-JMOO2A7C.js} +4 -4
  103. package/dist/{source-loader-CXCIDGWV.js → source-loader-H3QLG5AE.js} +7 -7
  104. package/dist/source-manager-ZDBUHGIR.js +19 -0
  105. package/dist/stores/wizard-store.js +7 -7
  106. package/dist/stores/wizard-store.test.js +10 -10
  107. package/package.json +1 -1
  108. package/dist/chunk-7NACNRFG.js.map +0 -1
  109. package/dist/chunk-7XUKTYVD.js.map +0 -1
  110. package/dist/chunk-AE2QHAFO.js.map +0 -1
  111. package/dist/chunk-CBJTSEI2.js.map +0 -1
  112. package/dist/chunk-CBYRFAUN.js.map +0 -1
  113. package/dist/chunk-EWBNSS5Y.js +0 -113
  114. package/dist/chunk-EWBNSS5Y.js.map +0 -1
  115. package/dist/chunk-JWMYAJHD.js.map +0 -1
  116. package/dist/chunk-PRG7PKZM.js.map +0 -1
  117. package/dist/chunk-Q4PJSAMP.js.map +0 -1
  118. package/dist/chunk-WS3TL2AO.js.map +0 -1
  119. package/dist/source-manager-TPLO2DVS.js +0 -19
  120. /package/dist/{chunk-UBNHVBSV.js.map → chunk-7JQIMEUX.js.map} +0 -0
  121. /package/dist/{chunk-XYZ7B5BY.js.map → chunk-7LBYURQR.js.map} +0 -0
  122. /package/dist/{chunk-NWW3OJH5.js.map → chunk-A5JSBU65.js.map} +0 -0
  123. /package/dist/{chunk-LO5QGAP2.js.map → chunk-A6XMJT2Q.js.map} +0 -0
  124. /package/dist/{chunk-36YW5E7G.js.map → chunk-AQ5KP4YW.js.map} +0 -0
  125. /package/dist/{chunk-I2SUTL7S.js.map → chunk-B66E255O.js.map} +0 -0
  126. /package/dist/{chunk-IDN2OZJY.js.map → chunk-C22ACAL2.js.map} +0 -0
  127. /package/dist/{chunk-I534EWJQ.js.map → chunk-IFCASC6R.js.map} +0 -0
  128. /package/dist/{chunk-R7F5YQMI.js.map → chunk-J5OOAKB5.js.map} +0 -0
  129. /package/dist/{chunk-7PZFDI46.js.map → chunk-KB57OPUL.js.map} +0 -0
  130. /package/dist/{chunk-WZ5S4LGX.js.map → chunk-KMLJCO5H.js.map} +0 -0
  131. /package/dist/{chunk-CCSU4R65.js.map → chunk-MG55NDVG.js.map} +0 -0
  132. /package/dist/{chunk-M4ZDKHJV.js.map → chunk-MUCQ27HV.js.map} +0 -0
  133. /package/dist/{chunk-O5CPXIC4.js.map → chunk-N4KD5PBX.js.map} +0 -0
  134. /package/dist/{chunk-7PMFIL5L.js.map → chunk-PDYKGJGR.js.map} +0 -0
  135. /package/dist/{chunk-KPRCP3MZ.js.map → chunk-U2KFFRRX.js.map} +0 -0
  136. /package/dist/{chunk-VQV3DSHD.js.map → chunk-UZHD4DBD.js.map} +0 -0
  137. /package/dist/{chunk-EEZSCHS2.js.map → chunk-WMTYOK4E.js.map} +0 -0
  138. /package/dist/{chunk-6F3CZLD6.js.map → chunk-XA7WF3BI.js.map} +0 -0
  139. /package/dist/{chunk-S6DKM6MJ.js.map → chunk-XU6N3OIS.js.map} +0 -0
  140. /package/dist/{chunk-WN2TUP4M.js.map → chunk-XYPAOBBV.js.map} +0 -0
  141. /package/dist/{chunk-CKU7FJNV.js.map → chunk-ZIZFTSQY.js.map} +0 -0
  142. /package/dist/{loader-7RQ4G4TH.js.map → loader-JMOO2A7C.js.map} +0 -0
  143. /package/dist/{source-loader-CXCIDGWV.js.map → source-loader-H3QLG5AE.js.map} +0 -0
  144. /package/dist/{source-manager-TPLO2DVS.js.map → source-manager-ZDBUHGIR.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  loadPluginSkills,
5
5
  loadSkillsByIds,
6
6
  parseFrontmatter
7
- } from "./chunk-I534EWJQ.js";
7
+ } from "./chunk-IFCASC6R.js";
8
8
  import {
9
9
  BUILT_IN_MATRIX,
10
10
  getCategoryDomain,
@@ -14,7 +14,7 @@ import {
14
14
  matrix,
15
15
  typedEntries,
16
16
  typedKeys
17
- } from "./chunk-JWMYAJHD.js";
17
+ } from "./chunk-FSK4TQX7.js";
18
18
  import {
19
19
  SKILL_ID_PATTERN,
20
20
  agentFrontmatterValidationSchema,
@@ -53,7 +53,7 @@ import {
53
53
  warn,
54
54
  warnUnknownFields,
55
55
  writeFile
56
- } from "./chunk-WN2TUP4M.js";
56
+ } from "./chunk-XYPAOBBV.js";
57
57
  import {
58
58
  CACHE_DIR,
59
59
  CACHE_HASH_LENGTH,
@@ -94,7 +94,7 @@ import {
94
94
  defaultCategories,
95
95
  defaultRules,
96
96
  defaultStacks
97
- } from "./chunk-7XUKTYVD.js";
97
+ } from "./chunk-EO6KJI5D.js";
98
98
  import {
99
99
  init_esm_shims
100
100
  } from "./chunk-DHET7RCE.js";
@@ -984,8 +984,8 @@ function loadConfigTypesDataInBackground(sourceFlag, projectDir) {
984
984
  if (!await directoryExists(claudeSrcDir)) {
985
985
  throw new Error(`${CLAUDE_SRC_DIR}/ not found \u2014 run '${CLI_BIN_NAME} init' first`);
986
986
  }
987
- const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-CXCIDGWV.js");
988
- const { loadAllAgents: loadAllAgents2 } = await import("./loader-7RQ4G4TH.js");
987
+ const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-H3QLG5AE.js");
988
+ const { loadAllAgents: loadAllAgents2 } = await import("./loader-JMOO2A7C.js");
989
989
  const sourceResult = await loadSkillsMatrixFromSource2({
990
990
  sourceFlag,
991
991
  projectDir,
@@ -1946,30 +1946,25 @@ function initializeSelectionContext(currentSelections) {
1946
1946
  const selectedSet = new Set(resolvedSelections);
1947
1947
  return { resolvedSelections, selectedSet };
1948
1948
  }
1949
- function getDependentSkills(skillId, currentSelections) {
1949
+ function getUnmetRequiredBy(skillId, currentSelections) {
1950
1950
  const fullId = resolveAlias(skillId);
1951
- const skill = matrix.skills[fullId];
1952
- if (!skill) return [];
1953
1951
  const { resolvedSelections, selectedSet } = initializeSelectionContext(currentSelections);
1954
- const dependents = [];
1952
+ if (selectedSet.has(fullId)) return void 0;
1955
1953
  for (const selectedId of resolvedSelections) {
1956
- if (selectedId === fullId) continue;
1957
1954
  const selectedSkill = matrix.skills[selectedId];
1958
1955
  if (!selectedSkill) continue;
1959
- for (const requirement of selectedSkill.requires) {
1960
- if (requirement.needsAny) {
1961
- const satisfiedReqs = requirement.skillIds.filter((reqId) => selectedSet.has(reqId));
1962
- if (satisfiedReqs.length === 1 && satisfiedReqs[0] === fullId) {
1963
- dependents.push(selectedId);
1956
+ for (const req of selectedSkill.requires) {
1957
+ if (!req.skillIds.includes(fullId)) continue;
1958
+ if (req.needsAny) {
1959
+ if (!req.skillIds.some((id) => selectedSet.has(id))) {
1960
+ return selectedSkill.displayName;
1964
1961
  }
1965
1962
  } else {
1966
- if (requirement.skillIds.includes(fullId)) {
1967
- dependents.push(selectedId);
1968
- }
1963
+ return selectedSkill.displayName;
1969
1964
  }
1970
1965
  }
1971
1966
  }
1972
- return dependents;
1967
+ return void 0;
1973
1968
  }
1974
1969
  function isDiscouraged(skillId, currentSelections) {
1975
1970
  const fullId = resolveAlias(skillId);
@@ -1992,12 +1987,25 @@ function isIncompatible(skillId, currentSelections) {
1992
1987
  const skill = matrix.skills[fullId];
1993
1988
  if (!skill) return false;
1994
1989
  const { resolvedSelections } = initializeSelectionContext(currentSelections);
1995
- for (const selectedId of resolvedSelections) {
1996
- if (skill.conflictsWith.some((c) => c.skillId === selectedId)) return true;
1997
- const selectedSkill = matrix.skills[selectedId];
1998
- if (selectedSkill?.conflictsWith.some((c) => c.skillId === fullId)) return true;
1999
- }
2000
- return false;
1990
+ return hasDirectConflict(skill, resolvedSelections) || hasUnsatisfiableRequires(skill, resolvedSelections) || isIncompatibleByFramework(skill, resolvedSelections);
1991
+ }
1992
+ function hasDirectConflict(skill, selections) {
1993
+ return selections.some(
1994
+ (selectedId) => skill.conflictsWith.some((c) => c.skillId === selectedId) || matrix.skills[selectedId]?.conflictsWith.some((c) => c.skillId === skill.id)
1995
+ );
1996
+ }
1997
+ function isDepBlockedByConflict(depId, selections) {
1998
+ const depSkill = matrix.skills[depId];
1999
+ return depSkill ? hasDirectConflict(depSkill, selections) : false;
2000
+ }
2001
+ function hasUnsatisfiableRequires(skill, selections) {
2002
+ return skill.requires.some(
2003
+ (req) => req.needsAny ? req.skillIds.every((depId) => isDepBlockedByConflict(depId, selections)) : req.skillIds.some((depId) => isDepBlockedByConflict(depId, selections))
2004
+ );
2005
+ }
2006
+ function isIncompatibleByFramework(skill, selections) {
2007
+ if (skill.compatibleWith.length === 0) return false;
2008
+ return selections.length > 0 && !selections.some((id) => skill.compatibleWith.includes(id));
2001
2009
  }
2002
2010
  function hasUnmetRequirements(skillId, currentSelections) {
2003
2011
  const fullId = resolveAlias(skillId);
@@ -2038,16 +2046,40 @@ function getIncompatibleReason(skillId, currentSelections) {
2038
2046
  const skill = matrix.skills[fullId];
2039
2047
  if (!skill) return void 0;
2040
2048
  const { resolvedSelections } = initializeSelectionContext(currentSelections);
2041
- for (const selectedId of resolvedSelections) {
2042
- const conflict = skill.conflictsWith.find((c) => c.skillId === selectedId);
2043
- if (conflict) {
2049
+ const directReason = findDirectConflictReason(skill, fullId, resolvedSelections);
2050
+ if (directReason) return directReason;
2051
+ const reqReason = findUnsatisfiableRequiresReason(skill, resolvedSelections);
2052
+ if (reqReason) return reqReason;
2053
+ if (isIncompatibleByFramework(skill, resolvedSelections)) {
2054
+ const compatLabels = skill.compatibleWith.map((id) => getLabel(getSkillById(id))).join(", ");
2055
+ return `only compatible with ${compatLabels}`;
2056
+ }
2057
+ return void 0;
2058
+ }
2059
+ function findDirectConflictReason(skill, fullId, selections) {
2060
+ for (const selectedId of selections) {
2061
+ if (skill.conflictsWith.some((c) => c.skillId === selectedId)) {
2044
2062
  return `conflicts with ${getLabel(getSkillById(selectedId))}`;
2045
2063
  }
2046
2064
  const selectedSkill = matrix.skills[selectedId];
2047
- if (selectedSkill) {
2048
- const reverseConflict = selectedSkill.conflictsWith.find((c) => c.skillId === fullId);
2049
- if (reverseConflict) {
2050
- return `conflicts with ${getLabel(selectedSkill)}`;
2065
+ if (selectedSkill?.conflictsWith.some((c) => c.skillId === fullId)) {
2066
+ return `conflicts with ${getLabel(selectedSkill)}`;
2067
+ }
2068
+ }
2069
+ return void 0;
2070
+ }
2071
+ function findUnsatisfiableRequiresReason(skill, selections) {
2072
+ for (const req of skill.requires) {
2073
+ if (req.needsAny) {
2074
+ const allBlocked = req.skillIds.every((depId) => isDepBlockedByConflict(depId, selections));
2075
+ if (allBlocked) {
2076
+ const labels = req.skillIds.map((id) => getLabel(getSkillById(id))).join(" or ");
2077
+ return `requires ${labels} (all conflict with current selection)`;
2078
+ }
2079
+ } else {
2080
+ const blockedDep = req.skillIds.find((depId) => isDepBlockedByConflict(depId, selections));
2081
+ if (blockedDep) {
2082
+ return `requires ${getLabel(getSkillById(blockedDep))} which conflicts with current selection`;
2051
2083
  }
2052
2084
  }
2053
2085
  }
@@ -5486,7 +5518,7 @@ export {
5486
5518
  fetchFromSource,
5487
5519
  fetchMarketplace,
5488
5520
  resolveAlias,
5489
- getDependentSkills,
5521
+ getUnmetRequiredBy,
5490
5522
  validateSelection,
5491
5523
  getAvailableSkills,
5492
5524
  checkMatrixHealth,
@@ -5541,4 +5573,4 @@ export {
5541
5573
  validateAllPlugins,
5542
5574
  printPluginValidationResult
5543
5575
  };
5544
- //# sourceMappingURL=chunk-WS3TL2AO.js.map
5576
+ //# sourceMappingURL=chunk-CZLXZ75E.js.map