Docs menuLocal Resolution
Local Resolution Guide
A Logos vocabulary is a local map from compact intent references to allowed contexts, required parameters, required proofs, and handler names. The beta SDK keeps this map inside the runtime that is about to act.
Resolution Principle
The platform can help publish and review vocabularies later, but execution should not fetch new meaning at the moment of action. Register vocabularies at startup, freeze published versions, and only dispatch after local verification passes.
Vocabulary Shape
The SDK compiles readable .logos files into this canonical structure. Intent ids are compact; handler names stay local.
canonical vocabulary
typescripttype Vocabulary = {
version: string;
intents: {
id: number;
name: string;
code?: string;
riskLevel: 1 | 2 | 3 | 4 | 5;
allowedContexts?: string[];
parameterKeys?: string[];
requiredProofs?: string[];
handler: string;
}[];
};Register at Startup
Register the vocabulary before the agent, gateway, or API worker accepts protected actions. Unknown versions and duplicate ids fail closed.
compile and register
typescriptimport { compileLogos, LogosLexicon } from "@silentauth/logos-lexicon";
const { vocabulary } = compileLogos(`
vocabulary silentauth.infra.v1
intent CSIV_INFRA_001 infra.deploy {
risk: 4
context: ci_cd
params: service, environment, commit
proofs: maintainer_approval
handler: deployments.release
}
`);
const lexicon = new LogosLexicon();
lexicon.registerVocabulary(vocabulary);cli helpers
bashlogos compile examples/infra-deploy.logos --out infra.vocabulary.json logos types examples/infra-deploy.logos --out infra.helpers.ts
Dispatch Local Handlers
Logos returns a handler name only after signature, expiry, vocabulary, context, parameter, and proof checks pass. Your application still owns the actual execution.
local handler dispatch
typescriptconst handlers = {
"deployments.release": async (params) => {
await deploy(params.service, params.environment, params.commit);
}
};
const checked = await lexicon.verifyAndResolve(signed, {
secret: process.env.LOGOS_HS256_SECRET!,
resolution: {
context: "ci_cd",
satisfiedProofs: ["maintainer_approval"]
}
});
if (!checked.ok) throw new Error(checked.reason);
await handlers[checked.resolved.handler](checked.token.params);Versioning Rules
Freeze published meaning
Do not change what CSIV_INFRA_001 means after clients receive it. Publish a new vocabulary version instead.
Keep secrets out of vocabularies
Vocabularies describe intent and handlers. Signing secrets stay in the server or gateway key store.
Proof names are inputs
VINAC-FM, QR, NFC, or human approval appear as satisfiedProofs. Logos does not collect proof by itself.
Handlers are local
A handler string should resolve inside your runtime. The token never carries executable code.
