@fourier-labs/harbour-contracts

中文文档
0.106.3发布于 2026/11/13UNLICENSEDTypeScriptES Module零依赖近 30 天下载 9073

每个跨越Isomorph元件之间边界的数据形状的单一真理源.

中文使用文档
文档目录6 节
  1. 版式
  2. 计划
  3. 工作流程
  4. 更改形状
  5. 消费
  6. 页:1

港口合同

每个跨越Isomorph边界的数据形状的单一真理源 组件. 司马先: 手写 JSON Schema 在 schema/ 是来源; 跳 软件包( r)gen-go/)和类型脚本包(gen-ts/ → @fourier-labs/harbour-contracts已经 生成 和执着。 没有处理器, 后置堆栈, 或 MCP 操作程序是针对一个形状构建的 这里首先存在.

版式

路径什麽
schema/*.jsonJSON Schema (草案-07). 你唯一手写的档案.
gen-go/已生成 去包装 contracts (进口) github.com/Fourier-Labs-AI/harbour-contracts/gen-go) (中文(简体) ).
gen-ts/生成 TS 源; 发布于 @fourier-labs/harbour-contracts。 。 。 .
contract-release.json生成出放出/版本外加聚合和每个文件的schema,AI-fixture,Go-source和TypeScript-source摘要,用于严格的消费针.
tools/gen/gen.mjs单一代码驱动程序(节点). 验证每个计划,然后发出Go + TS.
docs/adr/会议记录(例如:. 0001-t1-ratified.md) (中文(简体) ).

计划

文件形状长期
deploy-request.schema.jsonMCP 磁共振 deploy(app, {commit, branch}) 有效载荷; 新预览部署默认为 branch_select 除非 sequential 明确第7节
error-envelope.schema.json每个 FAILED 转换时发射的失败信封第2.1节
error-category.enum.json闭合故障类别 enum + 每个类别 retryable 登记第2.2节
artifact-contract.schema.json建立产出合同(供应商-可移动性接合),包括以摘要为主、定义明确的应用程序明确参考第3节
well-defined-app-manifest.schema.json用于静态、全存储和浏览器第一应用程序的版本运行时线:工作量、时间表、队列、服务绑定、语言运行时、浏览器能力和路由认证定义良好的应用程序 P0
version-state.schema.json状态机器 T1a — 状态,法律过渡,版本Id格式第1节
env-bindings.schema.jsonEnvBindings 编号 : Target 编号 : Binding (BYOC完成) (英语)第4.2.2节
kvs-routing-entry.schema.jsonCloudFront KVS 路由值 (% 1){static, api}(中文(简体) )第8条
ai-composite-policy-digest.schema.json订购复合政策摘要标识并生成GO/TS助手AI 治理 § 5.1
ai-classification-stamp.schema.json不可更改的确切版本分类证据AI治理 §5.2
ai-deployment-gate-decision.schema.json仅附加明确的部署门决定AI治理 §5.2
ai-governance-decision.schema.jsonAI治理决定,包括审查的OpenAI兼容客户端配置边界的无值描述符AI 治理 §5
ai-gateway-key-lifecycle-event.schema.json无价值版本的关键生命周期证据AI 治理 §7
ai-runtime-binding.schema.json平台中性工作量标识/保密约束AI治理第5.8节
binding-classification-subject.schema.json版本分配前的完整无值绑定名称分类AI 治理 § 5.7 / SEC-UP-01
sanitized-binding-evidence.schema.json准确的版本 sanitized 运行时间约束分配收据AI治理 第5.7节/SEC-UP-02
ai-pricing-revision, (中文(简体) ), ai-metering-policy, (中文(简体) ), ai-budget-ledger-event, (中文(简体) ), ai-trace-event-v2附加计量 v2 记录,包括媒体维度和 P5 痕量归属; v1 记录仍可读取AI 治理 §9
app-integrations-declaration.schema.json承诺 .isomorph/integrations.json (单位:千美元)isomorph.app-integrations/2.0: 已关闭的八十一操作集(黑读/后/更新/删除/DM/ Lookup,Gmail list/thread/read/send/attachment-ADR 0018; Basecamp 项目/待办列表/待办列表/待办/消息/评论/人名单,待办、消息、评论和营火帖-ADR 0022;Sharepoint list/ite/drive/file list,文件搜索和读取,项目创建和更新,文件上传-ADR 0024;电话短消息列表-ADR 0028;电话号码读取-ADR 0029;Google日历、驱动器、Docs和工作表及展望、OneDRrive、Excel和Teams读取和写作签名人-ADR 0032;仓库视图读取和表格附载取`访问 ' 读取附录 — ADR 0028; service request) with fixed or declared identity modes (gmail.message.send ' 于0.102.0 — ADR 0045宣布;4个Gmail自0.106.0 — ADR 0049读取;拥有共享操作/身份/环境enums
integration-execute-request, (中文(简体) ), integration-execute-result, (中文(简体) ), integration-connect-result, (中文(简体) ), integration-error-detailsApp SDK集成电线合同 /_harbour/integrations/*: 操作输入范围(仓库读取过滤器、组、总量和仓库中的种类,并说何时) truncated – ADR 0017; Slack 和 Gmail 读取页面, 邮递线程, 邮件携带 HTML 和附件 – ADR 0018; 读取的开发仓库可能携带应用程序 sampleRows 结果是 sample ——ADR 0021; Basecamp 列表页面 pageToken,ids是数字字符串,写答 {id, appUrl} — ADR 0022; SharePoint 列表页图 $skiptoken身份证是图式身份证, fields 是一个有界限的记录, 写答 {id, webUrl} - ADR 0024;仓库附件需要 rows,并使用一个电话短信列表 since编号 :from ——ADR 0028;一个电话号码读取不需输入 ——ADR 0029;日历事件取用RFC 3339 start编号 :end,工作表和Excel带 values,一个带边框的单元格矩阵, Docs take replacements,且该事件读取,文档读取,值和工作表结果有各自的形状——ADR 0032,操作结果形状,同意状态和关闭状态 details.code 设置理由发展工具包§4,§8
saas-connection.schema.json, (中文(简体) ), data-grant-v2.schema.json租户SaaS的连接记录(每个租户和供应商安装一个频道图;信息技术可选 oauthClient, (中文(简体) ), userModeApproval, (中文(简体) ), directMessages, (中文(简体) ), externalRecipients ——ADR 0018; Basecamp 连接被固定 account 和项目编号 channels ——ADR 0022;一个SharePoint连接的被钉住的微软365租户在 account 和站点编号 channels ——ADR 0024;最多20个 approvers - 除了租户管理者之外,他们可以批准访问请求——ADR 0026 channels - ADR 0028,一个应用程序用别名读取——ADR 0029;8个Google Workspace和Microsoft 365的供应商,只有用户同意,一个Teams连接的固定租户和 <teamId>/<channelId> 频道映射 — ADR 0032; 可选 startedBy 当一个构建者的第一个请求创建连接时 —— ADR 0034; 一个 Gmail 连接的 installation 是公司邮箱IT连接, botName 其地址——ADR 0045和添加剂 harbour.data-grant/2.0 具有结构化资源和提供租赁/清理的赠款记录(生成状况机器;遗产) data-grant 未触及)第5节
kit-bundle-manifest.schema.json, (中文(简体) ), kit-lock.schema.json已发布套装捆绑身份( SDK tarball 文摘加可选) sdk.version 链接 sdk.url 下载位置)和承诺 .isomorph/kit.lock.json 密码 建造 SDK 复仇门比较发展工具箱§3
deploy-response.schema.json接受机构 POST /v1/tenants/{tenant}/apps/{app}/deployments,仅在权威的 QUEUED 版本存在并接受其 SQS 消息后返回—— 说
deployment-source.schema.json证书无源 DeployRequest 机构 : provider 实值 github 或者说 gitlab, (中文(简体) ), repositoryUrl 并且部署控制平面对照租户的源链接(ADR 0023)检查宿主; 证书通过 Matterize Source 内部解决—— 说
deployment-environment.schema.json预览 API 所接受的公共环境(preview 只能通过促销来实现生产)—— 说
api-error-response.schema.json部署/状态Lambda的安全JSON错误机构 4xx/5xxx答复;不同于内部 ErrorEnvelope—— 说
deployment-status-request.schema.json经验证的路径参数 GET /v1/tenants/{tenant}/apps/{app}/deployments/{versionId}—— 说
deployment-status-response.schema.json200 OK body for GET status: 准确的不可改变版本,带有 progress 线索, deployTarget 财务报告和审定财务报表 diagnosticRef—— 说
deployment-status-failure.schema.json前端安全故障投影嵌入了失败状态响应; 带摘要 diagnosticRef 找到经编辑的诊断—— 说
promotion-request.schema.json机构 POST /v1/tenants/{tenant}/apps/{app}/promotions;寄存器身份来自存储的记录,而非调用者ADR 0003 数据
promotion-response.schema.json202 接受体在生产版本及其耐用性约束存在后返回ADR 0003 数据
transform-report.schema.json结构化输出 一种剂必须从一次变换尝试返回; 交给该剂作为输出计划并被控制平面重新验证—— 说
transform-parked-result.schema.json在需要建构器输入时, 在一个持久的检查站后进行连续审查的结果; 没有成功的报告—— 说
builder-input-proposal.schema.json在没有构建者自主输入的情况下,连续预览无法继续进行时发布的无价值建议—— 说
deployment-continuation.schema.json允许从已停放的输入请求中部署一个儿童的不可改变的参考文献;从未使用证书值—— 说
security-scan-input-v2.schema.json向安全保证机器提供投入harbour.security-scan-input/2.0,替换v1):一个包在源输入处验证,扫描在租户的执行账户中ADR 0014 (英语)
security-verdict.schema.json安全保证决定; BLOCKED 表面为不可重试 gate.security-scan 类别ADR 0014 (英语)
data-source.schema.json行政登记的外部数据来源; credentialRef 是一个隐秘的 URI , 证书从未越过此边界; 可选 development编号 :preview 副本 environments,生产是顶级终点;连接器包括 trino (ADR 0021)和 (中文(简体) ) clickhouse (ADR 0030) (中文(简体) )数据存取 MVP
data-dependency.schema.json与租户数据源清单相比,一个已申报或发现的应用程序的外部数据依赖性数据存取 MVP
secret-reference.schema.json命名一个应用程序所依赖的秘密槽; 只有引用及其生命周期交叉, 绝不是值秘密经理MVP
ai-callsite-inventory.schema.json一个精确的部署版本(仅检测)的不可移动,已消毒的AI呼叫站点发现AI 治理
ai-runtime-contract.schema.json由AI治理计划决定产生的不可移动运行时间合同;范围化配置外加保密管理者参考AI 治理
ai-policy-snapshot.schema.jsonAI Gateway所摄取的、内容不易改变的AI政策快照AI 治理
ai-gateway-key-lookup.schema.json一个版本范围Isomorph 密钥的无值网关认证元数据AI 治理
ai-trace-event.schema.json无值 AI Gateway 追踪元数据( v1); 原始提示和回复从不入队列AI 治理
ai-transform-event.schema.json载有计划拦截计划的AI拦截任务输入AI 治理
ai-transform-result.schema.json确定性拦截结果:仅说明和摘要证据AI 治理
ai-verification-evidence.schema.json通过部署核查提交一个规范版本的无价值的有根据证据AI 治理

运行时资源简介是由转换、文物和 定义明确的应用程序显示。 支持的配置文件是 standard, (中文(简体) ), memory-1g,以及 memory-2g;消费者必须拒绝未经确认的原始CPU或内存覆盖.

两种计划携带逻辑 超越结构类型,生成到帮助者:

  • error-category.enum.json → IsRetryable(category) (前进) / isRetryable(category) (TS), 处理具体类别和家庭前缀storage.unsupported-engine.<engine>) (中文(简体) ). 未知类别已关闭( 不可重试) .
  • version-state.schema.json → CanTransition(environment, from, to) 编号 : IsTerminal(state) (开始)和 canTransition 编号 : isTerminal (TS),由 x-transitions 边缘列表——如此控制平面 任何消费者都同意一个来源的合法性.
  • binding-classification-subject.schema.json 财务报告和审定财务报表 sanitized-binding-evidence.schema.json · 犬形长度前缀SHA-256 预想/潜水员加上确切姓名, 在 Go 和 TypeScript 中请求映射和分配接收验证器.
  • integration-execute-request.schema.json → IntegrationExecuteInputRules + 键 validateIntegrationExecuteInput(operation, input) (TS)/ (中文(简体) ) ValidateIntegrationExecuteInput (走开), 从每个操作的 then- 块(propertyNames.enum, (中文(简体) ), required每个外地 maximum编号 :default) (中文(简体) ). 治理者执行路径, 应用 SDK 和工具包的本地检查 拒绝同样判决的请求(limit must be an integer between 1 and 15; 计 数 SDK出售TypeScript文件,因为它没有依赖性.

工作流程

make gen       # regenerate gen-go/ + gen-ts/ from schema/ (Node only — no Go needed)
make verify    # regenerate, then fail if git shows a diff  ← the staleness gate (CI runs this)
make build     # compile-check the generated Go + TS (needs go + local tsc)
make test      # generator determinism + contract-logic tests (Node; Go when installed)

代码是 只节点 这样 make gen 可在任何地方复制 tsc 为: 仅用于 编译检查 产出(make build),而不是生成.

更改形状

  1. 编辑方案 schema/。类别 enum 和 状态机器是 关闭 - 延长 他们 只有通过 PR 到此 repo (PR是通知消费者的地方).
  2. make gen 承诺 gen-go/ + 键 gen-ts/ 除了改变计划.
  3. CI (中文(简体) )make verify失败 .
  4. 不编辑 VERSION, (中文(简体) ), package.json其版本或 CHANGELOG.md: 发布版本来自 页:1 vX.Y.Z 合并后按下标签( t)ADR 0050 (英语)) (中文(简体) ).
  5. 形状变化是 (contracts) 变化:通过 /review + 键 /code-review ultra → /ship。 。 。 .

消费者应该将出版的三部分版本和出版的三部分放在上面 schemasDigest编号 :aiFixturesDigest 内 contract-release.json他们的线人应该 (一) 对照所生成的型号或计划,验证罐头装置; 在合同没有签出时,它不能默默不作. Npm文物中包含 schema/, (中文(简体) ), fixtures/ai/, (中文(简体) ), gen-ts/ 和释放 显示,所以每个由显示器命名的字节都可从 同样的释放。 通过标记的 Go 模块源源仍然可用 .

generatedGo 财务报告和审定财务报表 generatedTypeScript 封存每个 .go编号 :.ts 文档中 软件包目录. gen-go/contract_release.go 财务报告和审定财务报表 gen-ts/contract-release.ts 是唯一的排除: 那些生成的文件 嵌入集合消化器本身,所以将它们包括进去将产生一个 自我参考,没有有限的摘要。 列出的排除和 (a) 测试拒绝任何不同的排斥设置和独立 重新计算每个包含的文件和集合 .

平台中性的工作量和秘密参考资料是标识,而不是一般的 URLs (英语). 他们用 scheme://authority/path 经审查的添加剂计划 登记(aws-sm, (中文(简体) ), iam-role, (中文(简体) ), k8s-sa, (中文(简体) ), secretref, (中文(简体) ), spiffe, (中文(简体) ), vault, (中文(简体) ), vault-v2) (中文(简体) ). 一个新的平台在合同发布中扩展了登记处. 用户信息、 端口、 % 编码、 查询字符串、 碎片和空路径 区段故意无法代表,防止引用字段 成为证明或任意价值的运输.

V2 度量计方案是与现有 v1 政策/跟踪挂钩的预测 身份证明 在迁移期间,消费者可双读v1和v2,并可双写 都一样 旧记录从不重写;更正仅为附加调整 或取代记录。 删除 v1 写作需要单独记录 消费者削减证据.

消费

  • 开始: go get github.com/Fourier-Labs-AI/harbour-contracts/[email protected]

    二事使此相通,而后一相相出,非所显也.

    发布标记必须是3个部分的分集. 运行和npm 需要 MAJOR.MINOR.PATCH,而此寄存器记录 MAJOR.MINOR.PATCH.MICRO因此,可公布的发布要求多边空间研究组织: 成为零, 并按确定性绘制地图:仓库 0.9.0.0 − 包装 0.9.0 → 发布标签 v0.9.0。可选的四部分记账标签 v0.9.0.0 可能 在同一承诺中指明,但不公布。 CI验证这张地图, 更改日志标题和标签格式.

    Repo是私人的,Go从全球缓存取来. 设定此值一次 机器 :

    go env -w GOPRIVATE=github.com/Fourier-Labs-AI/*
    git config --global credential."https://github.com/Fourier-Labs-AI".helper '!gh auth git-credential'
    git config --global credential."https://github.com/Fourier-Labs-AI".useHttpPath true
    

    证书的配置必须是 全局和URL范围d,该组合是 非附带事项 :

    • 无法覆盖文件夹( I)includeIf gitdir:…) (中文(简体) ). 运行 git ls-remote 内部 ~/go/pkg/mod/cache/vcs/…所以每个指南的助手从不 适用。 完全失败 /tmp 并且从伊索莫特的复出 让它看起来像一个糟糕的标签 而不是一个认证问题.
    • 使用 URL 前缀进行范围界定使其远离您其他的 GitHub 账户:仅 github.com/Fourier-Labs-AI/* 使用此证书.
    • 一个SSH insteadOf 重写是通常的建议,而且 这里不对 除非你们 SSH 密钥属于一个有 Fourier org 访问权限的账户. 检查 ssh -T [email protected] 在到达它之前.

    没有以上, go get 失败 Repository not found ——读作: 缺少标签, 而不是缺少访问权限 .

  • {\FN华文楷体\FS16\1CHE0E0E0}TS: npm i @fourier-labs/harbour-contracts ——由CI从标签上发表. 手写AI政策解决器(resolver/index.ts(b) 与该船同装的船舶 @fourier-labs/harbour-contracts/resolver 子路径导出( n)package.json exports) (中文(简体) ).

页:1

gen.mjs 从节点生产两种语言。 走开 构建字段对齐 实值 (gofmt为通过 make fmt) ;这从未 影响编译,而 staleness gate 比较了原始生成器输出,所以保持绿色.

版本与发布记录

@fourier-labs/harbour-contracts 共发布 85 个版本,首次发布于 2026/08/04;过去 12 个月发布了 85 个版本。

版本发布日期距今
0.106.3latest2026/11/133 天前
0.106.22026/11/123 天前
0.106.12026/11/114 天前
0.106.02026/11/114 天前
0.105.02026/11/114 天前
0.104.02026/11/114 天前

关于 @fourier-labs/harbour-contracts 的常见问题

@fourier-labs/harbour-contracts 是什么?

每个跨越Isomorph元件之间边界的数据形状的单一真理源.

如何安装 @fourier-labs/harbour-contracts?

在项目目录运行 npm install @fourier-labs/harbour-contracts,或使用 pnpm add / yarn add / bun add。

@fourier-labs/harbour-contracts 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fourier-labs/harbour-contracts 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@fourier-labs/harbour-contracts 可以商用吗?

@fourier-labs/harbour-contracts 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@fourier-labs/harbour-contracts 的下载量有多少?

根据 npm 官方下载统计,@fourier-labs/harbour-contracts 在 2026/10/16 – 2026/11/14 这 30 天内被下载 9,073 次,日均约 302 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fourier-labs/harbour-contracts 还在维护吗?

最新版本 0.106.3 发布于 2026/11/13(3 天前);至今共发布 85 个版本,其中过去 12 个月发布了 85 个;首次发布于 2026/08/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。