@opengsd/gsd-core 1.6.0-rc.3 → 1.6.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 (52) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/agents/gsd-advisor-researcher.md +2 -0
  3. package/agents/gsd-ai-researcher.md +2 -0
  4. package/agents/gsd-assumptions-analyzer.md +2 -0
  5. package/agents/gsd-doc-classifier.md +2 -0
  6. package/agents/gsd-doc-synthesizer.md +2 -0
  7. package/agents/gsd-domain-researcher.md +2 -0
  8. package/agents/gsd-eval-auditor.md +6 -9
  9. package/agents/gsd-phase-researcher.md +2 -0
  10. package/agents/gsd-project-researcher.md +2 -0
  11. package/agents/gsd-research-synthesizer.md +2 -0
  12. package/agents/gsd-ui-researcher.md +2 -0
  13. package/bin/install.js +219 -5
  14. package/gemini-extension.json +1 -1
  15. package/gsd-core/bin/gsd-tools.cjs +11 -1
  16. package/gsd-core/bin/lib/capability-registry.cjs +48 -48
  17. package/gsd-core/bin/lib/command-aliases.cjs +10 -1
  18. package/gsd-core/bin/lib/decisions.cjs +27 -0
  19. package/gsd-core/bin/lib/eval-command-router.cjs +21 -0
  20. package/gsd-core/bin/lib/eval.cjs +60 -0
  21. package/gsd-core/bin/lib/frontmatter.cjs +132 -13
  22. package/gsd-core/bin/lib/init.cjs +131 -26
  23. package/gsd-core/bin/lib/io.cjs +1 -0
  24. package/gsd-core/bin/lib/phase.cjs +16 -2
  25. package/gsd-core/bin/lib/plan-scan.cjs +2 -2
  26. package/gsd-core/bin/lib/shell-command-projection.cjs +10 -0
  27. package/gsd-core/bin/lib/state.cjs +34 -8
  28. package/gsd-core/bin/lib/uat-predicate.cjs +13 -6
  29. package/gsd-core/bin/lib/verification.cjs +67 -6
  30. package/gsd-core/bin/lib/verify.cjs +8 -1
  31. package/gsd-core/bin/shared/config-defaults.manifest.json +3 -0
  32. package/gsd-core/bin/shared/config-schema.manifest.json +2 -1
  33. package/gsd-core/references/untrusted-input-boundary.md +13 -0
  34. package/gsd-core/workflows/autonomous.md +53 -46
  35. package/gsd-core/workflows/complete-milestone.md +27 -8
  36. package/gsd-core/workflows/execute-phase.md +1 -1
  37. package/gsd-core/workflows/manager.md +17 -7
  38. package/gsd-core/workflows/new-project.md +78 -12
  39. package/gsd-core/workflows/profile-user.md +6 -2
  40. package/gsd-core/workflows/progress.md +37 -4
  41. package/gsd-core/workflows/quick.md +3 -1
  42. package/gsd-core/workflows/ship.md +3 -1
  43. package/gsd-core/workflows/spec-phase.md +3 -1
  44. package/gsd-core/workflows/transition.md +14 -12
  45. package/gsd-core/workflows/ui-review.md +2 -6
  46. package/gsd-core/workflows/verify-work.md +44 -0
  47. package/hooks/dist/gsd-read-injection-scanner.js +49 -25
  48. package/hooks/gsd-read-injection-scanner.js +49 -25
  49. package/hooks/hooks.json +1 -1
  50. package/package.json +1 -1
  51. package/scripts/check-alias-drift.cjs +5 -0
  52. package/scripts/prompt-injection-scan.sh +5 -0
package/hooks/hooks.json CHANGED
@@ -31,7 +31,7 @@
31
31
  ]
32
32
  },
33
33
  {
34
- "matcher": "Read",
34
+ "matcher": "Read|WebFetch|WebSearch",
35
35
  "hooks": [
36
36
  { "type": "command", "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/gsd-read-injection-scanner.js\"", "timeout": 5 }
37
37
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengsd/gsd-core",
3
- "version": "1.6.0-rc.3",
3
+ "version": "1.6.0",
4
4
  "description": "GSD Core is a meta-prompting, context engineering, and spec-driven development system for AI coding agents.",
5
5
  "bin": {
6
6
  "gsd-core": "bin/install.js",
@@ -72,6 +72,11 @@ function main() {
72
72
  subcommands: 'ROADMAP_SUBCOMMANDS',
73
73
  routerPath: path.join(ROOT, 'gsd-core', 'bin', 'lib', 'roadmap-command-router.cjs'),
74
74
  },
75
+ {
76
+ commandAliases: 'EVAL_COMMAND_ALIASES',
77
+ subcommands: 'EVAL_SUBCOMMANDS',
78
+ routerPath: path.join(ROOT, 'gsd-core', 'bin', 'lib', 'eval-command-router.cjs'),
79
+ },
75
80
  ];
76
81
 
77
82
  for (const family of families) {
@@ -77,6 +77,7 @@ ALLOWLIST=(
77
77
  'hooks/gsd-prompt-guard.js'
78
78
  'hooks/gsd-read-injection-scanner.js'
79
79
  'tests/read-injection-scanner.security.test.cjs'
80
+ 'tests/read-injection-scanner.property.test.cjs'
80
81
  'tests/security-prompt-injection.security.test.cjs'
81
82
  'tests/list-seeds.test.cjs'
82
83
  'tests/fixtures/adversarial/security/'
@@ -85,6 +86,10 @@ ALLOWLIST=(
85
86
  # and are not attack vectors — they explain/demonstrate injection patterns.
86
87
  'TEST-EXAMPLES.md'
87
88
  'explanation/security-model.md'
89
+ # The untrusted-input boundary reference quotes injection phrases
90
+ # ("ignore previous instructions", "you are now…") as examples agents must
91
+ # NOT comply with — it is the defense, not an attack vector.
92
+ 'references/untrusted-input-boundary.md'
88
93
  # Security regression tests for input validators — fixtures must contain
89
94
  # real injection payloads to prove the validator rejects them. See
90
95
  # DEFECT.PROMPT-INJECTION-SCAN-COLLISION in CONTEXT.md.