@agent-surface/compiler 0.19.0 → 0.20.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.
- package/dist/chunk-BNIUE5RA.js +746 -0
- package/dist/chunk-BNIUE5RA.js.map +1 -0
- package/dist/compile-RPDITMVH.js +7 -0
- package/dist/compile-RPDITMVH.js.map +1 -0
- package/dist/index.js +12 -664
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/canonical.ts","../src/plugin.ts","../src/extract.ts","../src/compile.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { CapabilityContractManifest } from \"@agent-surface/core\";\n\nfunction normalize(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(normalize);\n if (typeof value !== \"object\" || value === null) return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, entry]) => entry !== undefined)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([key, entry]) => [key, normalize(entry)]),\n );\n}\n\nexport function canonicalJson(value: unknown, pretty = false): string {\n return `${JSON.stringify(normalize(value), null, pretty ? 2 : undefined)}\\n`;\n}\n\nexport function sha256(value: string | Uint8Array): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nexport function manifestPayload(\n manifest: Omit<CapabilityContractManifest, \"hash\"> | CapabilityContractManifest,\n): Omit<CapabilityContractManifest, \"hash\"> {\n const { hash: _hash, ...payload } = manifest as CapabilityContractManifest;\n return payload;\n}\n\nexport function computeManifestHash(\n manifest: Omit<CapabilityContractManifest, \"hash\"> | CapabilityContractManifest,\n): string {\n return sha256(canonicalJson(manifestPayload(manifest)));\n}\n\nexport function canonicalManifestJson(manifest: CapabilityContractManifest): string {\n return canonicalJson(manifest, true);\n}\n\nexport function verifyManifest(manifest: CapabilityContractManifest): void {\n if (computeManifestHash(manifest) !== manifest.hash) {\n throw new Error(`capability contract hash mismatch: ${manifest.hash}`);\n }\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, resolve, sep } from \"node:path\";\nimport {\n DEFAULT_LIMITS,\n parseCapabilityId,\n validateJsonSchemaDocument,\n} from \"@agent-surface/core\";\nimport type { CapabilityContractEntry, CapabilityContractManifest } from \"@agent-surface/core\";\nimport type { Plugin } from \"vite\";\nimport { canonicalJson, canonicalManifestJson, computeManifestHash, sha256, verifyManifest } from \"./canonical.js\";\nimport { extractModule } from \"./extract.js\";\n\nexport const COMPILER_VERSION = \"0.17.0\";\nexport const CONTRACT_FILE = \"agent-surface.contract.json\";\nexport const VIRTUAL_CONTRACT_ID = \"virtual:agent-surface-contract\";\nconst RESOLVED_VIRTUAL_CONTRACT_ID = `\\0${VIRTUAL_CONTRACT_ID}`;\n\n/**\n * One dependency the consumer has approved as a capability contributor.\n *\n * Keyed by package name rather than path: a path is a property of the installer\n * (pnpm store layout, hoisting, workspace links), while the name is what a\n * reviewer actually approves.\n */\nexport interface ExternalContractAllowEntry {\n /** npm package name, exactly as in its package.json. */\n package: string;\n /** sha256 of that package's contribution, as reported by a failing build. */\n digest: string;\n /**\n * Explicit sidecar path, for a contract that is not reachable from the\n * production module graph. Auto-discovered sidecars need no path.\n */\n path?: string;\n}\n\nexport interface ExternalContractPolicy {\n /**\n * Dependencies allowed to contribute capabilities. A contribution from a\n * package absent here fails the build: discovery is not authorization.\n */\n allow?: ExternalContractAllowEntry[];\n}\n\nexport interface AgentSurfaceCompilerOptions {\n target?: string;\n emit?: boolean;\n fileName?: string;\n externalContracts?: ExternalContractPolicy;\n onManifest?: (manifest: CapabilityContractManifest) => void;\n}\n\n/** A dependency's capabilities plus how they were found, before authorization. */\ninterface ExternalContribution {\n package: string;\n source: string;\n route: \"sidecar\" | \"source\";\n contractDigest: string;\n entries: CapabilityContractEntry[];\n}\n\nfunction mergeEntries(entries: CapabilityContractEntry[]): CapabilityContractEntry[] {\n const byKey = new Map<string, CapabilityContractEntry>();\n for (const entry of entries) {\n const key = `${entry.declarationId}\\0${entry.capabilityId}`;\n const current = byKey.get(key);\n if (!current) {\n byKey.set(key, { ...entry, targets: [...entry.targets] });\n continue;\n }\n if (current.contractHash !== entry.contractHash) {\n throw new Error(`contract \"${entry.declarationId}\" / \"${entry.capabilityId}\" differs across build targets`);\n }\n current.targets = [...new Set([...current.targets, ...entry.targets])].sort();\n }\n return [...byKey.values()].sort((a, b) =>\n `${a.declarationId}\\0${a.capabilityId}`.localeCompare(`${b.declarationId}\\0${b.capabilityId}`),\n );\n}\n\nfunction validateEntries(entries: readonly CapabilityContractEntry[]): void {\n for (const entry of entries) {\n if (entry.kind !== \"external\" && !parseCapabilityId(entry.capabilityId)) {\n throw new Error(`invalid compiled capability id \"${entry.capabilityId}\"`);\n }\n for (const [label, schema] of [[\"input\", entry.inputSchema], [\"output\", entry.outputSchema]] as const) {\n if (!schema) continue;\n const result = validateJsonSchemaDocument(schema, DEFAULT_LIMITS);\n if (!result.ok) {\n throw new Error(`${entry.declarationId} ${label} schema: ${result.reason}`);\n }\n }\n }\n}\n\ninterface NearestPackage {\n name: string;\n dir: string;\n packagePath: string;\n sidecar?: string;\n}\n\n/** The package.json governing a module id, with its declared sidecar if any. */\nfunction nearestPackage(id: string): NearestPackage | undefined {\n if (id.startsWith(\"\\0\") || !isAbsolute(id)) return undefined;\n let dir = dirname(id.split(\"?\")[0]!);\n while (dir !== dirname(dir)) {\n const packagePath = join(dir, \"package.json\");\n if (existsSync(packagePath)) {\n const pkg = JSON.parse(readFileSync(packagePath, \"utf8\")) as {\n name?: string;\n agentSurface?: { contract?: string };\n };\n if (!pkg.name) return undefined;\n return {\n name: pkg.name,\n dir,\n packagePath,\n ...(pkg.agentSurface?.contract ? { sidecar: resolve(dir, pkg.agentSurface.contract) } : {}),\n };\n }\n dir = dirname(dir);\n }\n return undefined;\n}\n\n/**\n * A module is first-party when it is not installed as a dependency. Vite\n * resolves to real paths, so a workspace package symlinked into node_modules\n * reads as first-party — which is correct: the authority describes one\n * deployable build, and its own workspace is part of it.\n */\nfunction isDependencyModule(id: string): boolean {\n return id.split(\"?\")[0]!.includes(`${sep}node_modules${sep}`);\n}\n\nfunction readSidecar(path: string): { manifest: CapabilityContractManifest; digest: string } {\n const bytes = readFileSync(path);\n const manifest = JSON.parse(bytes.toString(\"utf8\")) as CapabilityContractManifest;\n verifyManifest(manifest);\n return { manifest, digest: sha256(bytes) };\n}\n\n/**\n * Match each contribution against the consumer's allow list.\n *\n * Discovery is deliberately not authorization: an unapproved dependency is\n * reported with the digest to approve, so the fix is a reviewable one-line\n * addition rather than a flag that turns the check off.\n */\nfunction authorizeContributions(\n contributions: readonly ExternalContribution[],\n policy: ExternalContractPolicy | undefined,\n): CapabilityContractManifest[\"externalContracts\"] {\n const allow = new Map((policy?.allow ?? []).map((entry) => [entry.package, entry]));\n const unauthorized: string[] = [];\n const mismatched: string[] = [];\n const attributions: CapabilityContractManifest[\"externalContracts\"] = [];\n\n for (const contribution of contributions) {\n const approved = allow.get(contribution.package);\n if (!approved) {\n unauthorized.push(\n ` ${contribution.package} (${contribution.route}: ${contribution.source})\\n` +\n ` { \"package\": \"${contribution.package}\", \"digest\": \"${contribution.contractDigest}\" }`,\n );\n continue;\n }\n if (approved.digest !== contribution.contractDigest) {\n mismatched.push(\n ` ${contribution.package}: approved ${approved.digest}, this build computed ${contribution.contractDigest}`,\n );\n continue;\n }\n attributions.push({\n package: contribution.package,\n source: contribution.source,\n route: contribution.route,\n contractDigest: contribution.contractDigest,\n authorization: { mode: \"pinned\", expectedDigest: approved.digest },\n });\n }\n\n if (unauthorized.length > 0) {\n throw new Error(\n `unauthorized external capability contract(s). A dependency cannot contribute capabilities ` +\n `until the consumer approves it. Add to externalContracts.allow:\\n${unauthorized.join(\"\\n\")}`,\n );\n }\n if (mismatched.length > 0) {\n throw new Error(\n `external capability contract digest mismatch. The dependency changed what it contributes; ` +\n `review the change before updating the approved digest:\\n${mismatched.join(\"\\n\")}`,\n );\n }\n return attributions.sort((a, b) => a.package.localeCompare(b.package));\n}\n\nexport function agentSurface(options: AgentSurfaceCompilerOptions = {}): Plugin {\n const target = options.target ?? \"web-production\";\n const placeholder = `__AGENT_SURFACE_MANIFEST_HASH_${Math.random().toString(36).slice(2)}__`;\n const manifestPlaceholder = `__AGENT_SURFACE_MANIFEST_${Math.random().toString(36).slice(2)}__`;\n let root = process.cwd();\n let entries: CapabilityContractEntry[] = [];\n /** Capabilities extracted from a dependency's own source, by package. */\n let sourceEntries = new Map<string, CapabilityContractEntry[]>();\n let manifest: CapabilityContractManifest | undefined;\n\n return {\n name: \"agent-surface:compiler\",\n apply: \"build\",\n enforce: \"pre\",\n configResolved(config) {\n root = config.root;\n },\n resolveId(id) {\n return id === VIRTUAL_CONTRACT_ID ? RESOLVED_VIRTUAL_CONTRACT_ID : null;\n },\n load(id) {\n if (id !== RESOLVED_VIRTUAL_CONTRACT_ID) return null;\n return `import { createCapabilityAuthority } from \"@agent-surface/core\";\nconst manifest = ${manifestPlaceholder};\nexport { manifest };\nexport default createCapabilityAuthority(manifest);`;\n },\n buildStart() {\n entries = [];\n sourceEntries = new Map();\n manifest = undefined;\n },\n transform(code, id) {\n if (\n id.includes(\"/node_modules/@agent-surface/\") ||\n /\\/packages\\/(?:core|react|orpc|testing|webmcp|cli|compiler)\\//.test(id)\n ) {\n return null;\n }\n if (/\\buseAgentComponent\\s*\\(\\s*\\{/.test(code)) {\n throw new Error(`${id}: inline useAgentComponent registration is unsupported; bind a compiled contract`);\n }\n if (/\\b(?:useAgentAction|useAgentObservation)\\s*\\(/.test(code)) {\n throw new Error(`${id}: granular runtime capability construction is unsupported by the compiled contract`);\n }\n if (/\\bdefineAgentComponent\\s*\\(/.test(code) || /\\bregistry\\s*\\.\\s*register\\s*\\(\\s*\\{/.test(code)) {\n throw new Error(`${id}: raw capability registration bypasses the compiled exposure ceiling`);\n }\n if (\n !code.includes(\"defineAgentComponentContract\") &&\n !code.includes(\"defineAgentProcedureContract\") &&\n !code.includes(\"defineExternalAgentToolContract\")\n ) {\n return null;\n }\n const extracted = extractModule({ code, id, root, target, placeholder });\n // A dependency that calls a contract macro in its own source contributes\n // capabilities with no sidecar and no file to digest. Attribute them to\n // the owning package now, so buildEnd can put them through the same\n // authorization as a sidecar instead of admitting them silently.\n const owner = isDependencyModule(id) ? nearestPackage(id) : undefined;\n if (owner) {\n const existing = sourceEntries.get(owner.name) ?? [];\n existing.push(...extracted.entries);\n sourceEntries.set(owner.name, existing);\n } else {\n entries.push(...extracted.entries);\n }\n return extracted.code === code ? null : { code: extracted.code, map: null };\n },\n buildEnd(error) {\n if (error) return;\n const contributions: ExternalContribution[] = [];\n const seenSidecars = new Set<string>();\n\n // Sidecars declared by packages reachable from the production graph.\n for (const id of this.getModuleIds()) {\n if (!isDependencyModule(id)) continue;\n const owner = nearestPackage(id);\n if (!owner?.sidecar || seenSidecars.has(owner.sidecar)) continue;\n seenSidecars.add(owner.sidecar);\n const { manifest: external, digest } = readSidecar(owner.sidecar);\n contributions.push({\n package: owner.name,\n source: relative(root, owner.sidecar).split(sep).join(\"/\"),\n route: \"sidecar\",\n contractDigest: digest,\n entries: external.capabilities,\n });\n }\n\n // Sidecars named explicitly, for contracts outside the module graph.\n for (const allowed of options.externalContracts?.allow ?? []) {\n if (!allowed.path) continue;\n const path = isAbsolute(allowed.path) ? allowed.path : resolve(root, allowed.path);\n if (seenSidecars.has(path)) continue;\n seenSidecars.add(path);\n // The package name comes from where the file lives, not from the entry\n // that approves it — otherwise a path-pinned contract would always\n // authorize itself under whatever name the consumer happened to write.\n const owner = nearestPackage(path);\n if (owner && owner.name !== allowed.package) {\n throw new Error(\n `external contract \"${allowed.path}\" belongs to \"${owner.name}\", not the approved \"${allowed.package}\"`,\n );\n }\n const { manifest: external, digest } = readSidecar(path);\n contributions.push({\n package: owner?.name ?? allowed.package,\n source: allowed.path,\n route: \"sidecar\",\n contractDigest: digest,\n entries: external.capabilities,\n });\n }\n\n // Contract macros in a dependency's own source: no file to digest, so the\n // digest covers the canonical set of entries it actually contributed.\n for (const [name, extracted] of [...sourceEntries].sort(([a], [b]) => a.localeCompare(b))) {\n if (extracted.length === 0) continue;\n const sorted = mergeEntries(extracted);\n contributions.push({\n package: name,\n source: sorted[0]?.origin ?? name,\n route: \"source\",\n contractDigest: sha256(canonicalJson(sorted)),\n entries: sorted,\n });\n }\n\n const externalContracts = authorizeContributions(contributions, options.externalContracts);\n const externalEntries = contributions.flatMap((contribution) => contribution.entries);\n const capabilities = mergeEntries([...entries, ...externalEntries]);\n validateEntries(capabilities);\n const targets = [...new Set(capabilities.flatMap((entry) => entry.targets))].sort();\n const payload = {\n formatVersion: 5 as const,\n compilerVersion: COMPILER_VERSION,\n targets,\n capabilities,\n externalContracts,\n completeness: { status: \"proven\" as const },\n };\n manifest = { ...payload, hash: computeManifestHash(payload) };\n options.onManifest?.(manifest);\n },\n renderChunk(code) {\n if (!manifest || (!code.includes(placeholder) && !code.includes(manifestPlaceholder))) return null;\n return {\n code: code\n .replaceAll(placeholder, manifest.hash)\n .replaceAll(manifestPlaceholder, JSON.stringify(manifest)),\n map: null,\n };\n },\n generateBundle() {\n if (!manifest || options.emit === false) return;\n this.emitFile({\n type: \"asset\",\n fileName: options.fileName ?? CONTRACT_FILE,\n source: canonicalManifestJson(manifest),\n });\n },\n };\n}\n","import { posix, relative, resolve } from \"node:path\";\nimport ts from \"typescript\";\nimport type {\n CapabilityContractEntry,\n CapabilityPolicyAttachment,\n JsonSchema,\n} from \"@agent-surface/core\";\nimport { canonicalJson, sha256 } from \"./canonical.js\";\n\nconst CORE = \"@agent-surface/core\";\nconst COMPONENT_MACRO = \"defineAgentComponentContract\";\nconst PROCEDURE_MACRO = \"defineAgentProcedureContract\";\nconst EXTERNAL_MACRO = \"defineExternalAgentToolContract\";\nconst WRAPPERS = new Set([\n \"observationContract\",\n \"actionContract\",\n \"fromJsonSchema\",\n \"defineAgentComponentContract\",\n \"defineAgentProcedureContract\",\n \"defineExternalAgentToolContract\",\n]);\n\ntype Json = null | boolean | number | string | Json[] | { [key: string]: Json };\n\ninterface CompiledCapabilityToken {\n manifestHash: string;\n declarationId: string;\n capabilityId: string;\n contractHash: string;\n}\n\ninterface CompiledComponentProvenance {\n manifestHash: string;\n declarationId: string;\n capabilities: Record<string, CompiledCapabilityToken>;\n}\n\nexport interface ExtractedModule {\n code: string;\n entries: CapabilityContractEntry[];\n}\n\nfunction sourceKind(id: string): ts.ScriptKind {\n if (/\\.tsx(?:\\?|$)/.test(id)) return ts.ScriptKind.TSX;\n if (/\\.jsx(?:\\?|$)/.test(id)) return ts.ScriptKind.JSX;\n if (/\\.js(?:\\?|$)/.test(id)) return ts.ScriptKind.JS;\n return ts.ScriptKind.TS;\n}\n\nfunction unwrap(node: ts.Expression): ts.Expression {\n while (\n ts.isParenthesizedExpression(node) ||\n ts.isAsExpression(node) ||\n ts.isTypeAssertionExpression(node) ||\n ts.isSatisfiesExpression(node) ||\n ts.isNonNullExpression(node)\n ) {\n node = node.expression;\n }\n return node;\n}\n\nfunction propertyName(node: ts.PropertyName): string | undefined {\n if (ts.isIdentifier(node) || ts.isStringLiteral(node) || ts.isNumericLiteral(node)) {\n return node.text;\n }\n if (ts.isComputedPropertyName(node) && ts.isStringLiteral(unwrap(node.expression))) {\n return (unwrap(node.expression) as ts.StringLiteral).text;\n }\n return undefined;\n}\n\nfunction calleeName(node: ts.Expression): string | undefined {\n node = unwrap(node);\n if (ts.isIdentifier(node)) return node.text;\n if (ts.isPropertyAccessExpression(node)) return node.name.text;\n if (\n ts.isElementAccessExpression(node) &&\n node.argumentExpression &&\n ts.isStringLiteral(unwrap(node.argumentExpression))\n ) {\n return (unwrap(node.argumentExpression) as ts.StringLiteral).text;\n }\n return undefined;\n}\n\nfunction normalizedOrigin(root: string, id: string): string {\n const clean = id.replace(/^\\0/, \"virtual:\").split(\"?\")[0]!;\n if (clean.startsWith(\"virtual:\")) return clean;\n const path = clean.startsWith(\"/\\@fs/\") ? clean.slice(4) : clean;\n return posix.normalize(relative(root, resolve(path)).split(\"\\\\\").join(\"/\"));\n}\n\nclass StaticEvaluator {\n private readonly constants = new Map<string, ts.Expression>();\n private readonly active = new Set<string>();\n\n constructor(private readonly file: ts.SourceFile) {\n const visit = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {\n this.constants.set(node.name.text, node.initializer);\n }\n ts.forEachChild(node, visit);\n };\n visit(file);\n }\n\n evaluate(input: ts.Expression, where: string): Json {\n const node = unwrap(input);\n if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) return node.text;\n if (ts.isNumericLiteral(node)) return Number(node.text);\n if (node.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (node.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (node.kind === ts.SyntaxKind.NullKeyword) return null;\n if (ts.isPrefixUnaryExpression(node) && node.operator === ts.SyntaxKind.MinusToken) {\n const value = this.evaluate(node.operand, where);\n if (typeof value === \"number\") return -value;\n }\n if (ts.isArrayLiteralExpression(node)) {\n return node.elements.map((entry, index) => {\n if (ts.isSpreadElement(entry)) {\n const spread = this.evaluate(entry.expression, `${where}[${index}]`);\n if (!Array.isArray(spread)) throw this.failure(entry, `${where}: array spread is not static`);\n return spread;\n }\n return this.evaluate(entry as ts.Expression, `${where}[${index}]`);\n }).flat() as Json[];\n }\n if (ts.isObjectLiteralExpression(node)) {\n const result: Record<string, Json> = {};\n for (const property of node.properties) {\n if (ts.isSpreadAssignment(property)) {\n const spread = this.evaluate(property.expression, `${where} spread`);\n if (typeof spread !== \"object\" || spread === null || Array.isArray(spread)) {\n throw this.failure(property, `${where}: object spread is not static`);\n }\n Object.assign(result, spread);\n continue;\n }\n if (ts.isShorthandPropertyAssignment(property)) {\n result[property.name.text] = this.evaluate(property.name, `${where}.${property.name.text}`);\n continue;\n }\n if (!ts.isPropertyAssignment(property)) {\n throw this.failure(property, `${where}: methods/accessors are runtime code`);\n }\n const name = propertyName(property.name);\n if (name === undefined) throw this.failure(property.name, `${where}: computed key is not static`);\n result[name] = this.evaluate(property.initializer, `${where}.${name}`);\n }\n return result;\n }\n if (ts.isIdentifier(node)) {\n if (node.text === \"undefined\") throw this.failure(node, `${where}: undefined is not serializable`);\n if (node.text === \"emptyObjectSchema\") {\n return { type: \"object\", properties: {}, additionalProperties: false };\n }\n const value = this.constants.get(node.text);\n if (!value) throw this.failure(node, `${where}: imported/dynamic value \"${node.text}\" is not static`);\n if (this.active.has(node.text)) throw this.failure(node, `${where}: cyclic static value \"${node.text}\"`);\n this.active.add(node.text);\n try {\n return this.evaluate(value, where);\n } finally {\n this.active.delete(node.text);\n }\n }\n if (ts.isCallExpression(node)) {\n const name = calleeName(node.expression);\n if (name && WRAPPERS.has(name) && node.arguments[0]) {\n return this.evaluate(node.arguments[0], where);\n }\n throw this.failure(node, `${where}: call \"${name ?? \"<computed>\"}\" is not a compiler macro`);\n }\n if (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {\n const owner = this.evaluate(node.expression, where);\n const name = ts.isPropertyAccessExpression(node)\n ? node.name.text\n : node.argumentExpression && ts.isStringLiteral(unwrap(node.argumentExpression))\n ? (unwrap(node.argumentExpression) as ts.StringLiteral).text\n : undefined;\n if (name !== undefined && typeof owner === \"object\" && owner !== null && !Array.isArray(owner)) {\n const value = owner[name];\n if (value !== undefined) return value;\n }\n }\n throw this.failure(node, `${where}: expression is dynamic or non-serializable`);\n }\n\n private failure(node: ts.Node, message: string): Error {\n const position = this.file.getLineAndCharacterOfPosition(node.getStart(this.file));\n return new Error(`${this.file.fileName}:${position.line + 1}:${position.character + 1}: ${message}`);\n }\n}\n\nfunction record(value: Json, where: string): Record<string, Json> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(`${where} must be a static object`);\n }\n return value;\n}\n\nfunction string(value: Json | undefined, where: string): string {\n if (typeof value !== \"string\" || value.length === 0) throw new Error(`${where} must be a string`);\n return value;\n}\n\nfunction policies(value: Json | undefined): CapabilityPolicyAttachment[] | undefined {\n if (value === undefined) return undefined;\n if (!Array.isArray(value)) throw new Error(\"policies must be a static array\");\n return value.map((entry) => record(entry, \"policy\")) as unknown as CapabilityPolicyAttachment[];\n}\n\nfunction combine<T>(inherited: readonly T[] | undefined, local: readonly T[] | undefined): T[] | undefined {\n const values = [...(inherited ?? []), ...(local ?? [])];\n if (values.length === 0) return undefined;\n const unique = new Map(values.map((value) => [canonicalJson(value), value]));\n return [...unique.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([, value]) => value);\n}\n\nfunction entryHash(entry: Omit<CapabilityContractEntry, \"contractHash\" | \"targets\">): string {\n return sha256(canonicalJson(entry));\n}\n\nfunction declarationVariable(call: ts.CallExpression): string | undefined {\n let node: ts.Node = call;\n while (\n node.parent &&\n (ts.isParenthesizedExpression(node.parent) ||\n ts.isAsExpression(node.parent) ||\n ts.isSatisfiesExpression(node.parent))\n ) {\n node = node.parent;\n }\n return node.parent && ts.isVariableDeclaration(node.parent) && ts.isIdentifier(node.parent.name)\n ? node.parent.name.text\n : undefined;\n}\n\nfunction isMacroCall(\n call: ts.CallExpression,\n names: ReadonlySet<string>,\n namespaces: ReadonlySet<string>,\n aliases: ReadonlyMap<string, string>,\n): \"component\" | \"procedure\" | \"external\" | undefined {\n const expression = unwrap(call.expression);\n let imported: string | undefined;\n if (ts.isIdentifier(expression)) imported = aliases.get(expression.text);\n else if (ts.isPropertyAccessExpression(expression) && ts.isIdentifier(expression.expression)) {\n if (namespaces.has(expression.expression.text)) imported = expression.name.text;\n } else if (\n ts.isElementAccessExpression(expression) &&\n ts.isIdentifier(expression.expression) &&\n namespaces.has(expression.expression.text) &&\n expression.argumentExpression &&\n ts.isStringLiteral(unwrap(expression.argumentExpression))\n ) {\n imported = (unwrap(expression.argumentExpression) as ts.StringLiteral).text;\n }\n if (imported === COMPONENT_MACRO) return \"component\";\n if (imported === PROCEDURE_MACRO) return \"procedure\";\n if (imported === EXTERNAL_MACRO) return \"external\";\n return undefined;\n}\n\nexport function extractModule(options: {\n code: string;\n id: string;\n root: string;\n target: string;\n placeholder: string;\n}): ExtractedModule {\n const file = ts.createSourceFile(options.id, options.code, ts.ScriptTarget.Latest, true, sourceKind(options.id));\n const namespaces = new Set<string>();\n const aliases = new Map<string, string>();\n for (const statement of file.statements) {\n if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) continue;\n if (statement.moduleSpecifier.text !== CORE || !statement.importClause) continue;\n const bindings = statement.importClause.namedBindings;\n if (bindings && ts.isNamespaceImport(bindings)) namespaces.add(bindings.name.text);\n if (bindings && ts.isNamedImports(bindings)) {\n for (const binding of bindings.elements) {\n aliases.set(binding.name.text, binding.propertyName?.text ?? binding.name.text);\n }\n }\n }\n // Assigned aliases are resolved transitively within the module.\n let changed = true;\n while (changed) {\n changed = false;\n const visitAlias = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {\n const init = unwrap(node.initializer);\n let source: string | undefined;\n if (ts.isIdentifier(init)) source = aliases.get(init.text);\n else if (ts.isPropertyAccessExpression(init) && ts.isIdentifier(init.expression) && namespaces.has(init.expression.text)) {\n source = init.name.text;\n }\n if (source && !aliases.has(node.name.text)) {\n aliases.set(node.name.text, source);\n changed = true;\n }\n }\n ts.forEachChild(node, visitAlias);\n };\n visitAlias(file);\n }\n\n const macroNames = new Set([COMPONENT_MACRO, PROCEDURE_MACRO, EXTERNAL_MACRO]);\n if (![...aliases.values()].some((name) => macroNames.has(name)) && namespaces.size === 0) {\n return { code: options.code, entries: [] };\n }\n\n const evaluator = new StaticEvaluator(file);\n const entries: CapabilityContractEntry[] = [];\n const injections: Array<{ position: number; text: string }> = [];\n const origin = normalizedOrigin(options.root, options.id);\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const macro = isMacroCall(node, macroNames, namespaces, aliases);\n if (macro) {\n if (!node.arguments[0]) throw new Error(`${origin}: contract declaration needs an argument`);\n const variable = declarationVariable(node);\n if (!variable) throw new Error(`${origin}: contract declaration must initialize a named module constant`);\n const declarationId = `${origin}#${variable}`;\n const definition = record(evaluator.evaluate(node.arguments[0], declarationId), declarationId);\n const emitted: CapabilityContractEntry[] = [];\n if (macro === \"component\") {\n const type = string(definition.type, `${declarationId}.type`);\n const inheritedPolicies = policies(definition.policies);\n const inheritedTags = definition.tags as string[] | undefined;\n const groups = [\n [\"observations\", \"observation\", \"read\"],\n [\"actions\", \"action\", undefined],\n ] as const;\n for (const [groupName, kind, defaultEffect] of groups) {\n const groupValue = definition[groupName];\n if (groupValue === undefined) continue;\n const group = record(groupValue, `${declarationId}.${groupName}`);\n for (const [name, rawMember] of Object.entries(group)) {\n const member = record(rawMember, `${declarationId}.${groupName}.${name}`);\n const capabilityPolicies = combine(inheritedPolicies, policies(member.policies));\n const capabilityTags = combine(inheritedTags, member.tags as string[] | undefined);\n const base = {\n declarationId,\n capabilityId: `view:${type}.${name}`,\n kind,\n description: string(member.description, `${declarationId}.${name}.description`),\n effect: string(member.effect ?? defaultEffect, `${declarationId}.${name}.effect`) as CapabilityContractEntry[\"effect\"],\n ...(member.input ? { inputSchema: member.input as JsonSchema } : {}),\n ...(member.output ? { outputSchema: member.output as JsonSchema } : {}),\n ...(member.confirmation ? { confirmation: member.confirmation as \"never\" | \"optional\" | \"required\" } : {}),\n ...(capabilityPolicies ? { policies: capabilityPolicies } : {}),\n ...(capabilityTags ? { tags: capabilityTags } : {}),\n origin,\n } satisfies Omit<CapabilityContractEntry, \"contractHash\" | \"targets\">;\n emitted.push({ ...base, contractHash: entryHash(base), targets: [options.target] });\n }\n }\n } else {\n const id = string(definition.id, `${declarationId}.id`);\n const base = {\n declarationId,\n capabilityId: id,\n kind: macro === \"procedure\" ? \"procedure\" as const : \"external\" as const,\n description: string(definition.description, `${declarationId}.description`),\n effect: string(definition.effect, `${declarationId}.effect`) as CapabilityContractEntry[\"effect\"],\n ...(definition.input ? { inputSchema: definition.input as JsonSchema } : {}),\n ...(definition.output ? { outputSchema: definition.output as JsonSchema } : {}),\n ...(definition.confirmation ? { confirmation: definition.confirmation as \"never\" | \"optional\" | \"required\" } : {}),\n ...(policies(definition.policies) ? { policies: policies(definition.policies) } : {}),\n ...(definition.tags ? { tags: definition.tags as string[] } : {}),\n origin,\n } satisfies Omit<CapabilityContractEntry, \"contractHash\" | \"targets\">;\n emitted.push({ ...base, contractHash: entryHash(base), targets: [options.target] });\n }\n entries.push(...emitted);\n if (node.arguments.length < 2) {\n if (macro === \"component\") {\n const capabilities: Record<string, CompiledCapabilityToken> = {};\n for (const entry of emitted) {\n capabilities[entry.capabilityId] = {\n manifestHash: options.placeholder,\n declarationId: entry.declarationId,\n capabilityId: entry.capabilityId,\n contractHash: entry.contractHash,\n };\n }\n const provenance: CompiledComponentProvenance = {\n manifestHash: options.placeholder,\n declarationId,\n capabilities,\n };\n injections.push({ position: node.arguments.end, text: `, ${JSON.stringify(provenance)}` });\n } else {\n const entry = emitted[0]!;\n const token: CompiledCapabilityToken = {\n manifestHash: options.placeholder,\n declarationId,\n capabilityId: entry.capabilityId,\n contractHash: entry.contractHash,\n };\n injections.push({ position: node.arguments.end, text: `, ${JSON.stringify(token)}` });\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(file);\n\n let code = options.code;\n for (const injection of injections.sort((a, b) => b.position - a.position)) {\n code = `${code.slice(0, injection.position)}${injection.text}${code.slice(injection.position)}`;\n }\n return { code, entries };\n}\n","import { resolve } from \"node:path\";\nimport type { CapabilityContractManifest } from \"@agent-surface/core\";\nimport { build, type InlineConfig } from \"vite\";\nimport { agentSurface, type ExternalContractPolicy } from \"./plugin.js\";\n\nexport interface CompileCapabilityContractOptions {\n root?: string;\n configFile?: string;\n target?: string;\n /**\n * Which dependencies may contribute capabilities. Forwarded to the compiler\n * plugin: without it, every discovered external contract is unauthorized and\n * the build fails.\n */\n externalContracts?: ExternalContractPolicy;\n vite?: InlineConfig;\n}\n\nexport async function compileCapabilityContract(\n options: CompileCapabilityContractOptions = {},\n): Promise<CapabilityContractManifest> {\n let manifest: CapabilityContractManifest | undefined;\n const root = resolve(options.root ?? process.cwd());\n const result = await build({\n ...(options.vite ?? {}),\n root,\n ...(options.configFile ? { configFile: resolve(root, options.configFile) } : {}),\n logLevel: options.vite?.logLevel ?? \"silent\",\n build: {\n ...(options.vite?.build ?? {}),\n write: false,\n },\n plugins: [\n ...(options.vite?.plugins ?? []),\n agentSurface({\n target: options.target,\n emit: false,\n ...(options.externalContracts ? { externalContracts: options.externalContracts } : {}),\n onManifest: (value) => {\n manifest = value;\n },\n }),\n ],\n });\n const outputs = Array.isArray(result) ? result : [result];\n for (const output of outputs) {\n if (!(\"output\" in output)) continue;\n const asset = output.output.find(\n (entry) => entry.type === \"asset\" && entry.fileName === \"agent-surface.contract.json\",\n );\n if (asset?.type === \"asset\") {\n const source = typeof asset.source === \"string\"\n ? asset.source\n : new TextDecoder().decode(asset.source);\n manifest = JSON.parse(source) as CapabilityContractManifest;\n break;\n }\n }\n if (!manifest) throw new Error(\"compiler did not produce a capability contract\");\n return manifest;\n}\n"],"mappings":"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","names":["relative","resolve","resolve","relative","resolve","resolve"]}
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-surface/compiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Vite compiler for deterministic agent capability contracts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"typescript": "^5.9.2",
|
|
22
22
|
"vite": "^7.1.3",
|
|
23
|
-
"@agent-surface/core": "^0.
|
|
23
|
+
"@agent-surface/core": "^0.20.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "^20.19.0"
|