Add context packs impact analysis and message validation

This commit is contained in:
2026-05-07 10:17:24 +08:00
parent f2d0a83705
commit 0c5254eb1b
18 changed files with 780 additions and 13 deletions

View File

@@ -12,6 +12,8 @@ $script:GspSubcommands = @(
'trace',
'flatten',
'pack',
'impact',
'message',
'graph',
'stage-check',
'help'
@@ -26,7 +28,9 @@ $script:GspFlags = @{
'index' = @('--root', '--out')
'trace' = @('--root', '--depth', '--out')
'flatten' = @('--root', '--depth', '--include-type', '--exclude-type', '--out')
'pack' = @('--root', '--depth', '--budget', '--include-type', '--exclude-type', '--out')
'pack' = @('--root', '--for', '--stage', '--depth', '--budget', '--format', '--include-type', '--exclude-type', '--out')
'impact' = @('--root', '--depth', '--format', '--out')
'message' = @('validate')
'graph' = @('--root', '--depth', '--format', '--out')
'stage-check' = @('--stage', '--root', '--out')
}
@@ -73,7 +77,11 @@ Register-ArgumentCompleter -Native -CommandName gsp -ScriptBlock {
switch ($previous) {
'--format' {
return @('json', 'mermaid', 'md', 'canvas') |
$formats = @('json', 'md', 'canvas')
if ($command -eq 'graph') {
$formats = @('json', 'mermaid', 'md', 'canvas')
}
return $formats |
Where-Object { $_ -like "$wordToComplete*" } |
ForEach-Object { New-GspCompletion $_ }
}
@@ -87,6 +95,11 @@ Register-ArgumentCompleter -Native -CommandName gsp -ScriptBlock {
Where-Object { $_ -like "$wordToComplete*" } |
ForEach-Object { New-GspCompletion $_ }
}
'--for' {
return @('design', 'implement', 'review', 'test', 'acceptance', 'handoff', 'inspect') |
Where-Object { $_ -like "$wordToComplete*" } |
ForEach-Object { New-GspCompletion $_ }
}
}
if ($command -eq 'completion') {
@@ -106,7 +119,13 @@ Register-ArgumentCompleter -Native -CommandName gsp -ScriptBlock {
ForEach-Object { New-GspCompletion $_ }
}
if (@('trace', 'flatten', 'pack', 'graph') -contains $command) {
if ($command -eq 'message') {
return @($script:GspFlags[$command]) |
Where-Object { $_ -like "$wordToComplete*" } |
ForEach-Object { New-GspCompletion $_ }
}
if (@('trace', 'flatten', 'pack', 'impact', 'graph') -contains $command) {
return Get-GspIds |
Where-Object { $_ -like "$wordToComplete*" } |
ForEach-Object { New-GspCompletion $_ }
@@ -125,11 +144,19 @@ _gsp_completion() {
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
cmd="${COMP_WORDS[1]}"
local commands="init ai-init version completion validate index trace flatten pack graph stage-check help"
local commands="init ai-init version completion validate index trace flatten pack impact message graph stage-check help"
case "$prev" in
--format) COMPREPLY=( $(compgen -W "json mermaid md canvas" -- "$cur") ); return ;;
--format)
if [[ "$cmd" == "graph" ]]; then
COMPREPLY=( $(compgen -W "json mermaid md canvas" -- "$cur") )
else
COMPREPLY=( $(compgen -W "json md canvas" -- "$cur") )
fi
return
;;
--stage) COMPREPLY=( $(compgen -W "design integrate implement bind release" -- "$cur") ); return ;;
--skill) COMPREPLY=( $(compgen -W "generic codex" -- "$cur") ); return ;;
--for) COMPREPLY=( $(compgen -W "design implement review test acceptance handoff inspect" -- "$cur") ); return ;;
esac
if [[ $COMP_CWORD -eq 1 ]]; then
COMPREPLY=( $(compgen -W "$commands" -- "$cur") )
@@ -143,7 +170,9 @@ _gsp_completion() {
validate|index) COMPREPLY=( $(compgen -W "--root --out" -- "$cur") ) ;;
trace) COMPREPLY=( $(compgen -W "--root --depth --out" -- "$cur") ) ;;
flatten) COMPREPLY=( $(compgen -W "--root --depth --include-type --exclude-type --out" -- "$cur") ) ;;
pack) COMPREPLY=( $(compgen -W "--root --depth --budget --include-type --exclude-type --out" -- "$cur") ) ;;
pack) COMPREPLY=( $(compgen -W "--root --for --stage --depth --budget --format --include-type --exclude-type --out" -- "$cur") ) ;;
impact) COMPREPLY=( $(compgen -W "--root --depth --format --out" -- "$cur") ) ;;
message) COMPREPLY=( $(compgen -W "validate" -- "$cur") ) ;;
graph) COMPREPLY=( $(compgen -W "--root --depth --format --out" -- "$cur") ) ;;
stage-check) COMPREPLY=( $(compgen -W "--stage --root --out" -- "$cur") ) ;;
completion) COMPREPLY=( $(compgen -W "powershell bash zsh fish install" -- "$cur") ) ;;
@@ -151,7 +180,7 @@ _gsp_completion() {
return
fi
case "$cmd" in
trace|flatten|pack|graph)
trace|flatten|pack|impact|graph)
local ids
ids=$(gsp index --root . 2>/dev/null | sed -n 's/.*"id": "\([^"]*\)".*/\1/p')
COMPREPLY=( $(compgen -W "$ids" -- "$cur") )
@@ -177,6 +206,8 @@ _gsp() {
'trace'
'flatten'
'pack'
'impact'
'message'
'graph'
'stage-check'
'help'
@@ -189,10 +220,12 @@ _gsp "$@"
func fishCompletionScript() string {
return `# GSP fish completion
complete -c gsp -f -n '__fish_use_subcommand' -a 'init ai-init version completion validate index trace flatten pack graph stage-check help'
complete -c gsp -f -n '__fish_use_subcommand' -a 'init ai-init version completion validate index trace flatten pack impact message graph stage-check help'
complete -c gsp -n '__fish_seen_subcommand_from graph' -l format -a 'json mermaid md canvas'
complete -c gsp -n '__fish_seen_subcommand_from pack impact' -l format -a 'json md canvas'
complete -c gsp -n '__fish_seen_subcommand_from stage-check' -l stage -a 'design integrate implement bind release'
complete -c gsp -n '__fish_seen_subcommand_from ai-init' -l skill -a 'generic codex'
complete -c gsp -n '__fish_seen_subcommand_from trace flatten pack graph' -a '(gsp index --root . 2>/dev/null | string match -r ''"id": "([^"]+)"'' | string replace -r ''.*"id": "([^"]+)".*'' ''$1'')'
complete -c gsp -n '__fish_seen_subcommand_from pack' -l for -a 'design implement review test acceptance handoff inspect'
complete -c gsp -n '__fish_seen_subcommand_from trace flatten pack impact graph' -a '(gsp index --root . 2>/dev/null | string match -r ''"id": "([^"]+)"'' | string replace -r ''.*"id": "([^"]+)".*'' ''$1'')'
`
}