Files
dingtalk-workspace-cli/internal/corecmd/contract/doc.go
T
玉澜andCursor 0a2e49e7e4 fix(schema): separate catalog content hash from surface registry hash
Runtime assemble was stamping Snapshot.SourceHash with the registry
surface hash, so schema --all catalog_hash diverged from the CI dump
content source_hash and failed Policy. Also remap ContractFinal
Interface.Ref onto pinned MCP metadata so interface_type stays aligned.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 12:26:25 +08:00

53 lines
2.7 KiB
Go

// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package contract owns command-framework declaration DTOs and the
// ProductDecl registry. It is intentionally free of Cobra-keyed runtime
// stores and Catalog delivery code.
//
// This package is the sole definition point for:
// - ContractFinalPayload (DTO only — store lives in corecmd/contractfinal)
// - ProductDecl (+ string-keyed registry; not Cobra-keyed)
// - SafetySpec / SelectionSpec / InterfaceSpec / DryRunSpec / identity /
// positionals / ParamDecl
// - FieldProvenance / FieldCandidateProvenance
//
// Package boundary:
//
// - Types / ProductDecl → corecmd/contract (this package).
// - Authoring wrapper → corecmd.ContractDecl (leaf-facing; nested fields are
// these contract types). Name is ContractDecl, not SchemaDecl: "Schema" in
// this repo means Catalog / ToolSpec delivery, not the author declaration.
// - AnnotateRuntime* writers → internal/corecmd/runtimeannotate
// (framework-owned; cli may thin re-export; corecmd must not import cli).
// - ContractFinal cobra store + Register seam → internal/corecmd/contractfinal
// (framework calls RegisterRuntimeContractFinal here; product code uses
// cli.RegisterRuntimeContractFinal re-export).
// - Catalog assembly / ResolveMeta (`RegisterSchemaSourceRoot` →
// `ResolveSchemaBuild`); go:embed only for reviewed inputs → internal/cli
// (delivery root).
//
// Description declare vs delivery (not dual authority):
//
// - Construction requires ContractDecl.Description (declaration evidence).
// - Catalog delivery prefers Cobra Long when present → provenance cobra_help;
// without Long, declared Description is delivered → contract_final.
// - Title prefers declared ContractDecl/ContractFinal, then Cobra Short, then
// MCP metadata. Declare is not "wire final value" for description when Long
// exists; assembly stamps the real winner.
//
// Authoring path: corecmd.ContractDecl → ContractFinalPayload (via
// contractfinal seam); ProductDecl for product-level Agent routing.
// Provenance stamp for declared leaf Safety remains "corecmd.contract".
package contract