diff --git a/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.ps1 b/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.ps1 index 11306376e..afe49dfea 100644 --- a/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.ps1 +++ b/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.ps1 @@ -227,6 +227,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -277,6 +288,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.py b/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.py index 77348fc5a..151f43f75 100644 --- a/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.py +++ b/.claude/skills/db-cfe-admin/scripts/db-cfe-admin.py @@ -68,6 +68,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -208,6 +219,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-create/scripts/db-create.ps1 b/.claude/skills/db-create/scripts/db-create.ps1 index 7e8386fc0..ba8a975f9 100644 --- a/.claude/skills/db-create/scripts/db-create.ps1 +++ b/.claude/skills/db-create/scripts/db-create.ps1 @@ -88,6 +88,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -138,6 +149,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-create/scripts/db-create.py b/.claude/skills/db-create/scripts/db-create.py index 7e3066f43..69a8fe495 100644 --- a/.claude/skills/db-create/scripts/db-create.py +++ b/.claude/skills/db-create/scripts/db-create.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 b/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 index f11640c54..453e0b454 100644 --- a/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 +++ b/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 @@ -104,6 +104,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -154,6 +165,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-dump-cf/scripts/db-dump-cf.py b/.claude/skills/db-dump-cf/scripts/db-dump-cf.py index f4539b78f..1bcb57620 100644 --- a/.claude/skills/db-dump-cf/scripts/db-dump-cf.py +++ b/.claude/skills/db-dump-cf/scripts/db-dump-cf.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-dump-dt/scripts/db-dump-dt.ps1 b/.claude/skills/db-dump-dt/scripts/db-dump-dt.ps1 index 7195c6ec5..077ecf770 100644 --- a/.claude/skills/db-dump-dt/scripts/db-dump-dt.ps1 +++ b/.claude/skills/db-dump-dt/scripts/db-dump-dt.ps1 @@ -88,6 +88,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -138,6 +149,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-dump-dt/scripts/db-dump-dt.py b/.claude/skills/db-dump-dt/scripts/db-dump-dt.py index 7f83398e9..0380e4d32 100644 --- a/.claude/skills/db-dump-dt/scripts/db-dump-dt.py +++ b/.claude/skills/db-dump-dt/scripts/db-dump-dt.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 b/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 index 564658609..b93819098 100644 --- a/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 +++ b/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 @@ -225,6 +225,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -275,6 +286,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-dump-xml/scripts/db-dump-xml.py b/.claude/skills/db-dump-xml/scripts/db-dump-xml.py index 7be3f0e06..a20e3e3e6 100644 --- a/.claude/skills/db-dump-xml/scripts/db-dump-xml.py +++ b/.claude/skills/db-dump-xml/scripts/db-dump-xml.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -207,6 +218,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 b/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 index 54995a824..a61e56347 100644 --- a/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 +++ b/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 @@ -121,6 +121,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -171,6 +182,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-load-cf/scripts/db-load-cf.py b/.claude/skills/db-load-cf/scripts/db-load-cf.py index 60a3dfc6a..a299026a5 100644 --- a/.claude/skills/db-load-cf/scripts/db-load-cf.py +++ b/.claude/skills/db-load-cf/scripts/db-load-cf.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-load-dt/scripts/db-load-dt.ps1 b/.claude/skills/db-load-dt/scripts/db-load-dt.ps1 index 8549e811f..bbbbf735f 100644 --- a/.claude/skills/db-load-dt/scripts/db-load-dt.ps1 +++ b/.claude/skills/db-load-dt/scripts/db-load-dt.ps1 @@ -118,6 +118,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -168,6 +179,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-load-dt/scripts/db-load-dt.py b/.claude/skills/db-load-dt/scripts/db-load-dt.py index eb08a67d8..a85a45f36 100644 --- a/.claude/skills/db-load-dt/scripts/db-load-dt.py +++ b/.claude/skills/db-load-dt/scripts/db-load-dt.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-load-git/scripts/db-load-git.ps1 b/.claude/skills/db-load-git/scripts/db-load-git.ps1 index ddb68099a..fdddbf35a 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.ps1 +++ b/.claude/skills/db-load-git/scripts/db-load-git.ps1 @@ -260,6 +260,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -310,6 +321,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-load-git/scripts/db-load-git.py b/.claude/skills/db-load-git/scripts/db-load-git.py index 0fecea7e5..64e2bc4fb 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.py +++ b/.claude/skills/db-load-git/scripts/db-load-git.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -228,6 +239,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 index da5e26963..da0c35283 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 @@ -273,6 +273,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -323,6 +334,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.py b/.claude/skills/db-load-xml/scripts/db-load-xml.py index e1d6f5d02..69801cd6b 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.py +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -228,6 +239,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-repo/scripts/db-repo.ps1 b/.claude/skills/db-repo/scripts/db-repo.ps1 index 4a81f6c19..5c22ee75c 100644 --- a/.claude/skills/db-repo/scripts/db-repo.ps1 +++ b/.claude/skills/db-repo/scripts/db-repo.ps1 @@ -244,6 +244,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' @@ -404,6 +412,17 @@ $script:V8OwnedKeys = @( '/ConfigurationRepositoryOptimizeData', '/ConfigurationRepositoryClearCache', '/ConfigurationRepositoryClearLocalCache', '/ConfigurationRepositoryClearGlobalCache' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @() $script:V8SecretKeys = @('/P', '/UC', '/WSP', '/AWSP', '/ConfigurationRepositoryP', '-Pwd') $script:IbcmdSecretKeys = @() diff --git a/.claude/skills/db-repo/scripts/db-repo.py b/.claude/skills/db-repo/scripts/db-repo.py index d57eb90f8..1e891a902 100644 --- a/.claude/skills/db-repo/scripts/db-repo.py +++ b/.claude/skills/db-repo/scripts/db-repo.py @@ -37,6 +37,17 @@ V8_OWNED_KEYS = [ "/ConfigurationRepositoryOptimizeData", "/ConfigurationRepositoryClearCache", "/ConfigurationRepositoryClearLocalCache", "/ConfigurationRepositoryClearGlobalCache", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [] V8_SECRET_KEYS = ["/P", "/UC", "/WSP", "/AWSP", "/ConfigurationRepositoryP", "-Pwd"] IBCMD_SECRET_KEYS = [] @@ -134,6 +145,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-run/scripts/db-run.ps1 b/.claude/skills/db-run/scripts/db-run.ps1 index ae6c0bbfe..340979d85 100644 --- a/.claude/skills/db-run/scripts/db-run.ps1 +++ b/.claude/skills/db-run/scripts/db-run.ps1 @@ -107,6 +107,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -157,6 +168,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-run/scripts/db-run.py b/.claude/skills/db-run/scripts/db-run.py index 7dd2eef6a..24cc86d54 100644 --- a/.claude/skills/db-run/scripts/db-run.py +++ b/.claude/skills/db-run/scripts/db-run.py @@ -64,6 +64,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -119,6 +130,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/db-update/scripts/db-update.ps1 b/.claude/skills/db-update/scripts/db-update.ps1 index dfca6effd..2c92bf42c 100644 --- a/.claude/skills/db-update/scripts/db-update.ps1 +++ b/.claude/skills/db-update/scripts/db-update.ps1 @@ -237,6 +237,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -287,6 +298,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/db-update/scripts/db-update.py b/.claude/skills/db-update/scripts/db-update.py index dbc9e6efe..a49196b3c 100644 --- a/.claude/skills/db-update/scripts/db-update.py +++ b/.claude/skills/db-update/scripts/db-update.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -207,6 +218,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/epf-build/scripts/epf-build.ps1 b/.claude/skills/epf-build/scripts/epf-build.ps1 index de27ac40e..597682861 100644 --- a/.claude/skills/epf-build/scripts/epf-build.ps1 +++ b/.claude/skills/epf-build/scripts/epf-build.ps1 @@ -98,6 +98,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -148,6 +159,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/epf-build/scripts/epf-build.py b/.claude/skills/epf-build/scripts/epf-build.py index cc5d23d87..709b23138 100644 --- a/.claude/skills/epf-build/scripts/epf-build.py +++ b/.claude/skills/epf-build/scripts/epf-build.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/epf-build/scripts/stub-db-create.ps1 b/.claude/skills/epf-build/scripts/stub-db-create.ps1 index a5e240ae5..06dd8c571 100644 --- a/.claude/skills/epf-build/scripts/stub-db-create.ps1 +++ b/.claude/skills/epf-build/scripts/stub-db-create.ps1 @@ -49,6 +49,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -99,6 +110,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/epf-build/scripts/stub-db-create.py b/.claude/skills/epf-build/scripts/stub-db-create.py index e4eb0ed0d..54af25564 100644 --- a/.claude/skills/epf-build/scripts/stub-db-create.py +++ b/.claude/skills/epf-build/scripts/stub-db-create.py @@ -114,6 +114,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -170,6 +181,15 @@ def assert_extra_args(extra, engine, hints): file=sys.stderr, ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + file=sys.stderr, + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/.claude/skills/epf-dump/scripts/epf-dump.ps1 b/.claude/skills/epf-dump/scripts/epf-dump.ps1 index aec11697d..63ba0e577 100644 --- a/.claude/skills/epf-dump/scripts/epf-dump.ps1 +++ b/.claude/skills/epf-dump/scripts/epf-dump.ps1 @@ -98,6 +98,17 @@ $script:V8OwnedKeys = @( '/DumpConfigToFiles', '/LoadConfigFromFiles', '/UpdateDBCfg', '/DumpExternalDataProcessorOrReportToFiles', '/LoadExternalDataProcessorOrReportFromFiles' ) +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +$script:V8BatchKeys = @( + '/CheckConfig', '/CheckModules', '/CheckCanApplyConfigurationExtensions', + '/DumpDBCfgList', '/DeleteCfg', '/UpdateCfg', '/CompareCfg', '/MergeCfg', + '/ManageCfgSupport', '/RollbackCfg', '/ConvertFiles' +) + $script:IbcmdOwnedKeys = @( '--db-path', '--data', '--out', '--file', '--load', '--restore', '--import', '--export', '--apply', '--force', '--create-database', @@ -148,6 +159,14 @@ function Assert-ExtraArgs { Write-Host "Error: '$tok' is a positional token — pass values as --key=value ($paramName cannot extend the ibcmd command)" -ForegroundColor Red exit 1 } + if ($Engine -ne 'ibcmd') { + foreach ($b in $script:V8BatchKeys) { + if (Test-ArgKeyMatch $tok $b) { + Write-Host "Error: $b is a batch command; passed via $paramName it would replace the skill's own operation (a command line runs only its last batch command)" -ForegroundColor Red + exit 1 + } + } + } foreach ($k in $owned) { if (Test-ArgKeyMatch $tok $k) { $hint = '' diff --git a/.claude/skills/epf-dump/scripts/epf-dump.py b/.claude/skills/epf-dump/scripts/epf-dump.py index f24de2437..b7a4d745b 100644 --- a/.claude/skills/epf-dump/scripts/epf-dump.py +++ b/.claude/skills/epf-dump/scripts/epf-dump.py @@ -67,6 +67,17 @@ V8_OWNED_KEYS = [ "/DumpConfigToFiles", "/LoadConfigFromFiles", "/UpdateDBCfg", "/DumpExternalDataProcessorOrReportToFiles", "/LoadExternalDataProcessorOrReportFromFiles", ] +# Пакетные команды платформы. В одной командной строке DESIGNER выполняет ТОЛЬКО ПОСЛЕДНЮЮ, +# остальные молча отбрасывает (проверено на 8.3.24: /LoadConfigFromFiles вместе с +# /CheckCanApplyConfigurationExtensions завершились кодом 0 с пустым логом, и загрузка НЕ +# состоялась). Такая команда в дополнительных аргументах подменяет собой операцию навыка, а навык +# отчитывается успехом. Дополнительные аргументы — это опции, а не режимы. +V8_BATCH_KEYS = [ + "/CheckConfig", "/CheckModules", "/CheckCanApplyConfigurationExtensions", + "/DumpDBCfgList", "/DeleteCfg", "/UpdateCfg", "/CompareCfg", "/MergeCfg", + "/ManageCfgSupport", "/RollbackCfg", "/ConvertFiles", +] + IBCMD_OWNED_KEYS = [ "--db-path", "--data", "--out", "--file", "--load", "--restore", "--import", "--export", "--apply", "--force", "--create-database", @@ -122,6 +133,14 @@ def assert_extra_args(extra, engine, hints): f"({param} cannot extend the ibcmd command)", ) sys.exit(1) + if engine != "ibcmd": + for b in V8_BATCH_KEYS: + if arg_key_match(tok, b): + print( + f"Error: {b} is a batch command; passed via {param} it would replace " + f"the skill's own operation (a command line runs only its last batch command)", + ) + sys.exit(1) for k in owned: if arg_key_match(tok, k): hint = f" (use {hints[k]})" if hints and k in hints else "" diff --git a/tests/skills/cases/db-load-xml/error-batch-command-in-extra-args.json b/tests/skills/cases/db-load-xml/error-batch-command-in-extra-args.json new file mode 100644 index 000000000..20fb1b8ad --- /dev/null +++ b/tests/skills/cases/db-load-xml/error-batch-command-in-extra-args.json @@ -0,0 +1,22 @@ +{ + "name": "Пакетная команда в -AdditionalV8Arguments отбивается: она подменила бы саму загрузку", + "fakePlatform": { + "log": "" + }, + "args_extra": [ + "-V8Path", + "{fakePlatform}", + "-InfoBasePath", + "{workDir}/ib", + "-ConfigDir", + "{workDir}/src", + "-AdditionalV8Arguments", + "/CheckCanApplyConfigurationExtensions" + ], + "expectError": true, + "expect": { + "stdoutContains": "is a batch command", + "stdoutNotContains": "Load completed successfully" + }, + "noSnapshot": "негативный кейс — навык отказывает до вызова платформы" +}