Object ArtifactValidator
-
- All Implemented Interfaces:
public class ArtifactValidatorLightweight validators for Browser4's four core artifact types.
All validation is in-process (no external tools, no LSP, no browser session). The agent can supplement with:
coding.shell: mvn compilefor plugin compilationtab.evalfor JS runtime testingcoding.shell: bash -n <file>/powershell -Command "..."for script syntax
Zero dependencies — pure string/regex analysis.
-
-
Field Summary
Fields Modifier and Type Field Description public final static ArtifactValidatorINSTANCE
-
Method Summary
Modifier and Type Method Description final ValidationResultvalidatePlugin(String baseDir)Validate a Browser4 plugin directory. final List<ValidationIssue>validatePluginJson(String content, String fileName)Validate plugin. final List<ValidationIssue>validatePomXml(String content, String fileName)Validate pom.xml content for a Browser4 plugin. final List<ValidationIssue>validateKotlinToolExecutor(String content, String fileName)Validate a Kotlin ToolExecutor file's structural consistency. final ValidationResultvalidateSkill(String content, String fileName)Validate a SKILL. final List<ValidationIssue>validateToolReferences(String content, Map<String, Set<String>> knownTools, String fileName)Cross-check domain.method(...)references in an artifact (skill body, README, scripts) against the set of tools the LLM can actually see/call.final ValidationResultvalidateJs(String content, String fileName)Validate a browser JS script's structural integrity. final ValidationResultvalidateScript(String content, String fileName)Validate a simple shell script (PS1 or Bash). -
-
Method Detail
-
validatePlugin
final ValidationResult validatePlugin(String baseDir)
Validate a Browser4 plugin directory.
- Parameters:
baseDir- plugin base directory (containing pom.xml, src/, etc.- Returns:
validation result with issues found
-
validatePluginJson
final List<ValidationIssue> validatePluginJson(String content, String fileName)
Validate plugin.json content against the real ai.platon.pulsar.skeleton.plugin.PluginManifest contract:
name+versionrequired;description,dependsOn,autoConfigurationClassesoptional.
-
validatePomXml
final List<ValidationIssue> validatePomXml(String content, String fileName)
Validate pom.xml content for a Browser4 plugin.
-
validateKotlinToolExecutor
final List<ValidationIssue> validateKotlinToolExecutor(String content, String fileName)
Validate a Kotlin ToolExecutor file's structural consistency.
-
validateSkill
final ValidationResult validateSkill(String content, String fileName)
Validate a SKILL.md file against the real ai.platon.pulsar.agentic.skills.SkillDefinitionLoader contract: YAML frontmatter with
name(must equal the directory name, kebab-case) anddescription(1..1024 chars); optionalallowed-tools.- Parameters:
fileName- should be the SKILL.md path (e.g.
-
validateToolReferences
final List<ValidationIssue> validateToolReferences(String content, Map<String, Set<String>> knownTools, String fileName)
Cross-check
domain.method(...)references in an artifact (skill body, README, scripts) against the set of tools the LLM can actually see/call.The known-tools map is assembled by the caller from:
ai.platon.pulsar.agentic.tools.specs.ToolCallSpecificationRenderer builtin domain specs
ai.platon.pulsar.agentic.tools.CustomToolRegistry registered executors (plugins etc.)
Grading (false-positive-safe):
ERROR for a domain that is definitely known but the method is not (typo in method)
WARNING for an unknown domain (may be a plugin not installed in this deployment)
- Parameters:
content- artifact text to scan (SKILL.md body, README, etc.knownTools- map of tool domain -> set of method names visible to the agentfileName- artifact path for issue attribution
-
validateJs
final ValidationResult validateJs(String content, String fileName)
Validate a browser JS script's structural integrity.
This is a static check only. For runtime validation, the agent should use
tab.evalto execute the script and check for exceptions.
-
validateScript
final ValidationResult validateScript(String content, String fileName)
Validate a simple shell script (PS1 or Bash).
-
-
-
-