claude-mpm 5.6.27__py3-none-any.whl → 5.6.28__py3-none-any.whl

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 (22) hide show
  1. claude_mpm/cli/commands/commander.py +6 -6
  2. claude_mpm/cli/startup.py +28 -17
  3. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/METADATA +1 -1
  4. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/RECORD +9 -22
  5. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-314.pyc +0 -0
  6. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-314.pyc +0 -0
  7. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-314.pyc +0 -0
  8. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-314.pyc +0 -0
  9. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-314.pyc +0 -0
  10. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-314.pyc +0 -0
  11. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-314.pyc +0 -0
  12. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-314.pyc +0 -0
  13. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-314.pyc +0 -0
  14. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-314.pyc +0 -0
  15. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-314.pyc +0 -0
  16. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-314.pyc +0 -0
  17. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-314.pyc +0 -0
  18. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/WHEEL +0 -0
  19. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/entry_points.txt +0 -0
  20. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/licenses/LICENSE +0 -0
  21. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  22. {claude_mpm-5.6.27.dist-info → claude_mpm-5.6.28.dist-info}/top_level.txt +0 -0
@@ -43,12 +43,12 @@ def display_commander_banner():
43
43
 
44
44
  # Commander ASCII art banner
45
45
  banner = f"""
46
- {CYAN}╭{"" * (width - 2)}╮{RESET}
47
- {CYAN}│{RESET}{BOLD} ⚡ MPM Commander {RESET}{DIM}v{version}{RESET}{" " * (width - 24 - len(version))}│
48
- {CYAN}│{RESET}{DIM} Multi-Project AI Orchestration{RESET}{" " * (width - 36)}│
49
- {CYAN}├{"" * (width - 2)}┤{RESET}
50
- {CYAN}│{RESET} {YELLOW}ALPHA{RESET} - APIs may change {" " * (width - 55)}│
51
- {CYAN}╰{"" * (width - 2)}╯{RESET}
46
+ {CYAN}╭{'' * (width - 2)}╮{RESET}
47
+ {CYAN}│{RESET}{BOLD} ⚡ MPM Commander {RESET}{DIM}v{version}{RESET}{' ' * (width - 24 - len(version))}│
48
+ {CYAN}│{RESET}{DIM} Multi-Project AI Orchestration{RESET}{' ' * (width - 36)}│
49
+ {CYAN}├{'' * (width - 2)}┤{RESET}
50
+ {CYAN}│{RESET} {YELLOW}ALPHA{RESET} - APIs may change {' ' * (width - 55)}│
51
+ {CYAN}╰{'' * (width - 2)}╯{RESET}
52
52
  """
53
53
  print(banner)
54
54
 
claude_mpm/cli/startup.py CHANGED
@@ -34,13 +34,13 @@ def sync_hooks_on_startup(quiet: bool = False) -> bool:
34
34
  installer = HookInstaller()
35
35
 
36
36
  # Show brief status (hooks sync is fast)
37
- if not quiet:
37
+ if not quiet and sys.stdout.isatty():
38
38
  print("Syncing Claude Code hooks...", end=" ", flush=True)
39
39
 
40
40
  # Reinstall hooks (force=True ensures update)
41
41
  success = installer.install_hooks(force=True)
42
42
 
43
- if not quiet:
43
+ if not quiet and sys.stdout.isatty():
44
44
  if success:
45
45
  print("✓")
46
46
  else:
@@ -49,7 +49,7 @@ def sync_hooks_on_startup(quiet: bool = False) -> bool:
49
49
  return success
50
50
 
51
51
  except Exception as e:
52
- if not quiet:
52
+ if not quiet and sys.stdout.isatty():
53
53
  print("(error)")
54
54
  # Log but don't fail startup
55
55
  from ..core.logger import get_logger
@@ -280,11 +280,13 @@ def deploy_bundled_skills():
280
280
  if deployment_result.get("deployed"):
281
281
  # Show simple feedback for deployed skills
282
282
  deployed_count = len(deployment_result["deployed"])
283
- print(f"✓ Bundled skills ready ({deployed_count} deployed)", flush=True)
283
+ if sys.stdout.isatty():
284
+ print(f"✓ Bundled skills ready ({deployed_count} deployed)", flush=True)
284
285
  logger.info(f"Skills: Deployed {deployed_count} skill(s)")
285
286
  elif not deployment_result.get("errors"):
286
287
  # No deployment needed, skills already present
287
- print("✓ Bundled skills ready", flush=True)
288
+ if sys.stdout.isatty():
289
+ print("✓ Bundled skills ready", flush=True)
288
290
 
289
291
  if deployment_result.get("errors"):
290
292
  logger.warning(
@@ -318,7 +320,8 @@ def discover_and_link_runtime_skills():
318
320
 
319
321
  discover_skills()
320
322
  # Show simple success feedback
321
- print("✓ Runtime skills linked", flush=True)
323
+ if sys.stdout.isatty():
324
+ print("✓ Runtime skills linked", flush=True)
322
325
  except Exception as e:
323
326
  # Import logger here to avoid circular imports
324
327
  from ..core.logger import get_logger
@@ -373,7 +376,8 @@ def deploy_output_style_on_startup():
373
376
 
374
377
  if all_up_to_date:
375
378
  # Show feedback that output styles are ready
376
- print("✓ Output styles ready", flush=True)
379
+ if sys.stdout.isatty():
380
+ print("✓ Output styles ready", flush=True)
377
381
  return
378
382
 
379
383
  # Deploy all styles using the manager
@@ -383,7 +387,8 @@ def deploy_output_style_on_startup():
383
387
  deployed_count = sum(1 for success in results.values() if success)
384
388
 
385
389
  if deployed_count > 0:
386
- print(f"✓ Output styles deployed ({deployed_count} styles)", flush=True)
390
+ if sys.stdout.isatty():
391
+ print(f"✓ Output styles deployed ({deployed_count} styles)", flush=True)
387
392
  else:
388
393
  # Deployment failed - log but don't fail startup
389
394
  from ..core.logger import get_logger
@@ -1290,9 +1295,11 @@ def verify_and_show_pm_skills():
1290
1295
  if result.verified:
1291
1296
  # Show verified status with count
1292
1297
  total_required = len(REQUIRED_PM_SKILLS)
1293
- print(
1294
- f"✓ PM skills: {total_required}/{total_required} verified", flush=True
1295
- )
1298
+ if sys.stdout.isatty():
1299
+ print(
1300
+ f"✓ PM skills: {total_required}/{total_required} verified",
1301
+ flush=True,
1302
+ )
1296
1303
  else:
1297
1304
  # Show warning with details
1298
1305
  missing_count = len(result.missing_skills)
@@ -1311,13 +1318,15 @@ def verify_and_show_pm_skills():
1311
1318
  if "Auto-repaired" in result.message:
1312
1319
  # Auto-repair succeeded
1313
1320
  total_required = len(REQUIRED_PM_SKILLS)
1314
- print(
1315
- f"✓ PM skills: {total_required}/{total_required} verified (auto-repaired)",
1316
- flush=True,
1317
- )
1321
+ if sys.stdout.isatty():
1322
+ print(
1323
+ f"✓ PM skills: {total_required}/{total_required} verified (auto-repaired)",
1324
+ flush=True,
1325
+ )
1318
1326
  else:
1319
1327
  # Auto-repair failed or not attempted
1320
- print(f"⚠ PM skills: {status}", flush=True)
1328
+ if sys.stdout.isatty():
1329
+ print(f"⚠ PM skills: {status}", flush=True)
1321
1330
 
1322
1331
  # Log warnings for debugging
1323
1332
  from ..core.logger import get_logger
@@ -1516,7 +1525,9 @@ def check_mcp_auto_configuration():
1516
1525
  from ..services.mcp_gateway.auto_configure import check_and_configure_mcp
1517
1526
 
1518
1527
  # Show progress feedback - this operation can take 10+ seconds
1519
- print("Checking MCP configuration...", end="", flush=True)
1528
+ # Only show progress message in TTY mode to avoid interfering with Claude Code's status display
1529
+ if sys.stdout.isatty():
1530
+ print("Checking MCP configuration...", end="", flush=True)
1520
1531
 
1521
1532
  # This function handles all the logic:
1522
1533
  # - Checks if already configured
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 5.6.27
3
+ Version: 5.6.28
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -42,7 +42,7 @@ claude_mpm/cli/chrome_devtools_installer.py,sha256=efA_ZX1iR3oaJi3222079BQw6DEG8
42
42
  claude_mpm/cli/executor.py,sha256=eerqDVszBfTm8N2FgreLr-132Jb9BVZGNrrukvb_b-I,15106
43
43
  claude_mpm/cli/helpers.py,sha256=CypEhw0tbNH6_GzVTaQdi4w7ThCWO43Ep92YbJzPR4I,3638
44
44
  claude_mpm/cli/parser.py,sha256=Vqx9n-6Xo1uNhXR4rThmgWpZXTr0nOtkgDf3oMS9b0g,5855
45
- claude_mpm/cli/startup.py,sha256=5puAtNOSACBrs1HUs5Hn9mW_sLPrvu63S2s3j_Shw78,67593
45
+ claude_mpm/cli/startup.py,sha256=4nKyk0UqVSBsiF-gnk7TnYn3pebB146c79xffo75bhA,68170
46
46
  claude_mpm/cli/startup_display.py,sha256=KI4GZ0uVoK7FXeK5jsS4JAyaKaKf5rCkY3h5tNeEY7M,17209
47
47
  claude_mpm/cli/startup_logging.py,sha256=wHokzcCA0AJPxAqFrpY5PMOBh1iOhdhgP1gY1OvD0gY,29392
48
48
  claude_mpm/cli/utils.py,sha256=5e3v-ow1gd-5nlad9OWCsL-3SRJcPjBJ9HS3zygwkiQ,8988
@@ -61,7 +61,7 @@ claude_mpm/cli/commands/auto_configure.py,sha256=0Suzil6O0SBNeHUCwHOkt2q7gfuXRTy
61
61
  claude_mpm/cli/commands/autotodos.py,sha256=mm2R6dIfHOjAMCgFkjfjBzdFQ-ou19b_R3Lo0Vi8vCI,19428
62
62
  claude_mpm/cli/commands/cleanup.py,sha256=RQikOGLuLFWXzjeoHArdr5FA4Pf7tSK9w2NXL4vCrok,19769
63
63
  claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=JR8crvgrz7Sa6d-SI-gKywok5S9rwc_DzDVk_h85sVs,4467
64
- claude_mpm/cli/commands/commander.py,sha256=iZ8DCb3bxdWKuIGRlDu24ERdKPyYaWYro2MpwKGtKJU,7243
64
+ claude_mpm/cli/commands/commander.py,sha256=jumK9ctW50WL-YPzQYxkBUhmS0phwmxcxcXPYg_P4Xk,7243
65
65
  claude_mpm/cli/commands/config.py,sha256=2M9VUPYcQkBUCIyyB-v1qTL3xYvao9YI2l_JGBUDauA,23374
66
66
  claude_mpm/cli/commands/configure.py,sha256=VUokhUcV90GzEEivV3xNmfQHogM94mdDadW3S4mp83M,136509
67
67
  claude_mpm/cli/commands/configure_agent_display.py,sha256=oSvUhR861o_Pyqmop4ACAQNjwL02-Rf6TMqFvmQNh24,10575
@@ -437,21 +437,13 @@ claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=fj_d9N7aytLELomdphLLw
437
437
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=2dyDOK9u-N4KcqWF7qq2T17bkps0grbs8MeWBRSC8vE,16323
438
438
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
439
439
  claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc,sha256=EGpgXqhPM0iRRZtCqHaLVQ6wDH42OH_M7Gt5GiFLyro,346
440
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-314.pyc,sha256=tBzcQ_3WxkmgPTQAPd7uKgFGtz-Yb6r2hEgF9Y_Flwc,319
441
440
  claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc,sha256=7YbusOM2EaL4NqIuNsLTJRCRJWRxo0DhVLXm9ZVFc7Y,20829
442
- claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-314.pyc,sha256=vo_mPXj0KTtBz2_SAU4NZ7TEWPfgBZtLeXD3CMAvJ3M,21381
443
441
  claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc,sha256=SQX5iiP9bQZkLL-cj_2tlGH7lpAzarO0mYal7btj3tc,3521
444
442
  claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc,sha256=72KlsOUX_pQDIl36j7sQukPRarsLIsjINtzsBIpxCtw,45568
445
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-314.pyc,sha256=zoDVrDzFnxGtDHqH20seS7KhA-9rmtFqttD-sqINBQI,43516
446
443
  claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=vhJjvAMTdDWkB_qWaWr_PeDb4I8-h7UymR1wDVHeyYM,30789
447
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-314.pyc,sha256=RVz6WvW-sD7kLbh6S5a96WarpPvZv4_qfFMR5SN8WUo,30603
448
- claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-314.pyc,sha256=Mlynkrh8uwlSOTCEH0LYbDM0gxqJmaCL9Gb5DIt_rJ4,38836
449
444
  claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc,sha256=Xu_hwOf9AG0mZthl5gcDcVv68FiSo5KgZ6lDxdZXCfU,11185
450
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-314.pyc,sha256=oJhMGouqaFI1u3NZryHoRh6ucfPKHPe8GufcsPzi89o,11081
451
445
  claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc,sha256=qJ5xY8yYwo8ZO7P-Gem_GK4VZdqyNeYvs8ANvC45jnw,16228
452
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-314.pyc,sha256=yu70SIPNsdECY8l_P971JPFuUPXqD4HmjuuGMU-nSAU,15820
453
446
  claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc,sha256=ZjcNfNY5Ht6FhalPeh7M7OzMffcey5iF4AVjDDg9kak,10694
454
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-314.pyc,sha256=ck8ifVIoVPaMVVRcMgvsM8RfIHnQbwGBUVs25A-yQBw,10771
455
447
  claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=OIYOKsUNw1BHYawOCp-KFK5kmQKuj92cCqCEPO0nwo0,585
456
448
  claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=shpoCLJpM9qoCDMUuUhk6L9WEKdzLB_OsPtwtDyJMdk,10197
457
449
  claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=rdwUhK7DoPqDSRGPHW1uiaE8McsnmggvCQGZ2x_vX-o,7583
@@ -459,15 +451,10 @@ claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM
459
451
  claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=PcEpAzwEnZRjw6JnbtbekDRdhIoaKql5VhhZJCEPNt4,10899
460
452
  claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=unHGeU6PJxc00_3xnLyyZHeLa47x98knxn6cl-i8ALA,15040
461
453
  claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc,sha256=xBfLBSqnpcKfcQBWfh7xUm454g1lq1LvbO7SxGvcOPc,644
462
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-314.pyc,sha256=nZDxNz67tIFwbZNRqyCRX8cSi0v3JKCZS5U5FhwwApA,562
463
454
  claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc,sha256=SydGEQ9oUWs161Ro4ULHfnPB0wiZgiB7V628B3V6N2U,9613
464
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-314.pyc,sha256=PjdPDUyUQWm0FqYRdG2knPoZDSKS0g1vk-BDAXfzCi8,9627
465
455
  claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc,sha256=Yy_REAUhJCiFjOhxeDb4v0qyEvEbUtCmXD9PAz40dhw,5321
466
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-314.pyc,sha256=Xy9iNAtQMfXC_eW9rvumG9rFqK5t-QlLPmUahlqza_I,5341
467
456
  claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc,sha256=P-Au2P5H0enEeKm7sP1eQv-SU6AAnCqjjOE5jhXcrgs,12352
468
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-314.pyc,sha256=2QqT8edjLqG8-9q446zpLJ347lzkgvJxPJG-A8u_HAU,13101
469
457
  claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc,sha256=4SfbElFMcQK07Frewl9mQ0eB5yCqZUe-CGfGYNUUMh0,14931
470
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-314.pyc,sha256=o6Dc1-yyZjUdVh_JWZmEIvVt0qG0R1-aLhr7XTt-oX0,15104
471
458
  claude_mpm/hooks/failure_learning/__init__.py,sha256=iJ80AKFHiT8DjIH2a72DQVJvL6nAFrizNA2yTKwZ4rw,1805
472
459
  claude_mpm/hooks/failure_learning/failure_detection_hook.py,sha256=KENoB5N-dBm5hb0SxeIZtCvNKbmG2BKHOJSrSO-3Z_I,7500
473
460
  claude_mpm/hooks/failure_learning/fix_detection_hook.py,sha256=XUk1bnBVLdfhQ9AMQSvGsTSeFQsKsVud2wbWX-Jjor8,7164
@@ -1115,10 +1102,10 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
1115
1102
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
1116
1103
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
1117
1104
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
1118
- claude_mpm-5.6.27.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1119
- claude_mpm-5.6.27.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1120
- claude_mpm-5.6.27.dist-info/METADATA,sha256=tp_yg68-FI9dl6nmX6GvV2TGMyIOxsXcKDcGtz56JHI,15245
1121
- claude_mpm-5.6.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1122
- claude_mpm-5.6.27.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
1123
- claude_mpm-5.6.27.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1124
- claude_mpm-5.6.27.dist-info/RECORD,,
1105
+ claude_mpm-5.6.28.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1106
+ claude_mpm-5.6.28.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1107
+ claude_mpm-5.6.28.dist-info/METADATA,sha256=JzT-L4XXLLq178jBDKVl_FQWba3AkLocGB5qDL9RIWw,15245
1108
+ claude_mpm-5.6.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1109
+ claude_mpm-5.6.28.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
1110
+ claude_mpm-5.6.28.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1111
+ claude_mpm-5.6.28.dist-info/RECORD,,