multi-agents-cli 1.0.74 → 1.0.76

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.
@@ -1025,23 +1025,30 @@ const main = async () => {
1025
1025
  }
1026
1026
  }
1027
1027
 
1028
- // Contracts check
1029
-
1030
- if (CONTRACTS_REQUIRED.includes(agent) && !contracts.hasContent) {
1031
- console.log(`\n${yellow(' ℹ CONTRACTS.md is empty')} ${dim('- no shared types or DTOs defined yet.')}\n`);
1032
- const assist = await arrowConfirm('Would you like the agent to establish contracts for your app?', rl);
1033
- if (assist) {
1034
- contractsNote = 'Before implementing, identify and define the required shared contracts, types, and interfaces in CONTRACTS.md first.';
1035
- console.log(dim('\n ✓ Agent will establish contracts as the first step.\n'));
1036
- } else {
1037
- console.log(dim('\n You can define the structure here, or the agent will adapt.'));
1038
- const manual = await ask(` ${bold('Provide contract structure')} ${dim('(or press Enter to skip)')}: \n → `);
1028
+ let userSeedingContracts = false;
1029
+
1030
+ // Contracts check only for relevant agents, optional for senior devs
1031
+
1032
+ const CONTRACTS_SEED_AGENTS = ['LOGIC', 'INIT', 'API'];
1033
+ if (CONTRACTS_SEED_AGENTS.includes(agent) && !contracts.hasContent) {
1034
+ console.log(`\n${yellow(' ℹ CONTRACTS.md is empty')} ${dim('- agent will populate it as contracts are discovered.')}\n`);
1035
+ const seedIdx = await arrowSelect(
1036
+ 'Seed contracts now, or let the agent discover them?',
1037
+ [
1038
+ { label: `${dim('')} Let the agent handle it ${dim('(recommended)')}` },
1039
+ { label: `${dim('→')} Seed contracts now ${dim('(for senior devs who know their interfaces)')}` },
1040
+ ],
1041
+ rl
1042
+ );
1043
+ if (seedIdx === 1) {
1044
+ userSeedingContracts = true;
1045
+ const manual = await ask(`\n ${bold('Describe your known interfaces, types, or DTOs')} ${dim('(free text)')}: \n → `);
1039
1046
  if (manual.trim()) {
1040
- contractsNote = `Contract structure provided:\n${manual.trim()}\nUse this as the basis for CONTRACTS.md.`;
1041
- console.log(dim(' ✓ Contract structure noted.\n'));
1042
- } else {
1043
- console.log(dim(' Agent will flag type assumptions as it builds.\n'));
1047
+ contractsNote = `Contract structure provided by user before session start:\n${manual.trim()}\nBootstrap CONTRACTS.md from this before implementing anything.`;
1048
+ console.log(dim('\n ✓ Contract structure noted - agent will bootstrap CONTRACTS.md first.\n'));
1044
1049
  }
1050
+ } else {
1051
+ console.log(dim(' Agent will populate CONTRACTS.md as contracts are discovered.\n'));
1045
1052
  }
1046
1053
  }
1047
1054
 
@@ -1097,7 +1104,7 @@ const main = async () => {
1097
1104
  let skipped = [];
1098
1105
  contextSection = '';
1099
1106
 
1100
- if (AGENT_QUESTIONS[agent]) {
1107
+ if (AGENT_QUESTIONS[agent] && userSeedingContracts) {
1101
1108
  let gathering = true;
1102
1109
  while (gathering) {
1103
1110
  const result = await gatherAgentContext(agent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "multi-agents-cli",
3
- "version": "1.0.74",
3
+ "version": "1.0.76",
4
4
  "description": "Multi-agent workflow orchestration for Claude Code — isolated git worktrees, structured state tracking, autonomous task chaining",
5
5
  "keywords": [
6
6
  "claude-code",