logicsrc/packages/validators/src/cli.ts
Anthony Ettinger 7cda686059
Add AgentAd ad schemas as a LogicSRC primitive (#10)
* Add AgentAd ad schemas as a LogicSRC primitive

AgentAd is a disclosed, agent-readable advertising contract for CLI tools
and AI agents. LogicSRC owns the canonical schemas; cl1s.tech is the
reference network built on them.

- packages/schemas: agentad-{ad,placement,ad-request,ad-response,
  impression,click,campaign} schemas (id under schemas.logicsrc.com) +
  ad/placement fixtures, exported from @logicsrc/schemas
- packages/validators: register the 7 agentad kinds, wire fixture
  validation, add tests (disclosure.sponsored must be true)
- docs/agentad.md: the AgentAd spec
- README: list AgentAd under v1 priorities

Validators build clean; all fixtures validate; vitest 4/4 green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Prepare @logicsrc/schemas for npm publish

Add license, repository, homepage, keywords, publishConfig (public),
and a package README covering both the logicsrc-* core schemas and the
agentad-* family.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 21:02:43 -07:00

33 lines
1 KiB
JavaScript

#!/usr/bin/env node
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { assertSchemaKind, parseDocument, validate } from "./index.js";
function main(argv: string[]) {
const [, , kindArg, fileArg] = argv;
if (!kindArg || !fileArg) {
console.error("Usage: logicsrc-validate <task|agent|run|event|plugin|agentad-ad|agentad-placement|...> <file.yaml|file.json>");
process.exitCode = 2;
return;
}
const kind = assertSchemaKind(kindArg);
const filePath = resolve(process.cwd(), fileArg);
const input = readFileSync(filePath, "utf8");
const data = parseDocument(input, filePath);
const result = validate(kind, data);
if (!result.ok) {
console.error(`Invalid LogicSRC ${kind} document: ${filePath}`);
for (const error of result.errors) {
console.error(`- ${error.instancePath || "/"} ${error.message ?? "failed validation"}`);
}
process.exitCode = 1;
return;
}
console.log(`Valid LogicSRC ${kind} document: ${filePath}`);
}
main(process.argv);