@aipathway/conformance

中文文档
1.4.0发布于 2026/10/24CC-BY-4.0TypeScriptES Module零依赖近 30 天下载 4476

Run a published AI Pathway build standard against your own build, on your machine, and get a fixture you can act on.

原始使用文档
文档目录9 节
  1. Getting the key
  2. What init writes
  3. What this is
  4. The one rule that makes it work
  5. The checks are not in this package
  6. The standards
  7. Also available
  8. Who publishes this
  9. Licence

@aipathway/conformance

Run a published AI Pathway build standard against your own build, on your own machine, before you talk to anybody.

npx @aipathway/conformance init booked-after-hours-build-standard
cd booked-after-hours-build-standard && npm install && node run.mjs

That writes a folder that runs: the harness, a build file to implement, and one scenario per check carrying that check's own words. Every check starts red. Going green is the work, and a green run means something because a red one was possible.

npx @aipathway/conformance list     # the standards
npx @aipathway/conformance show <slug>   # every check, what it injects, what it asserts
npx @aipathway/conformance json <slug>   # the same, for your own harness
npx @aipathway/conformance init <slug> [dir]
npx @aipathway/conformance connect [dir] [--wait]   # a key for the hosted step

Getting the key

Where a standard names one of our providers, the second run is against us, and that needs a key. connect gets one without leaving the terminal: it prints a link and a code, the account owner opens the link, signs in, checks the code and approves, and the key is written to .env beside the scaffold (git-ignored; run.mjs reads it). It never asks for the scope that makes a phone ring. Then it prints what the account still needs, with the link the owner opens to connect their job system or ledger, and --wait keeps checking until they have.

What init writes

filewhosewhat
build.mjsyoursthe build. The only file that does the job
scenarios.mjsyoursone holds per check, generated with the check's own words
run.mjsoursfetches the checks, runs, prints. No edits needed
AGENTS.mdoursthe same instructions, written for a coding agent

It does not look for, patch or launch your existing code. It writes a new folder beside it, because guessing how somebody's project boots is how a tool becomes a framework.

What this is

Each standard is a set of numbered checks. Most of them can be proved on a stub on your laptop. A few cannot: they need a live number, a real ledger or a real register, and those say so rather than failing you for not having one.

The verdicts mean different things and each one has a different next step.

verdictmeaningwhat you do
passasserted green herenothing
failasserted red herethis is a fixture. It names one check
shape_onlyshape holds on the stub, truth needs the live providerre-runs when you switch provider
with_uscannot be proved herethe step the standard says not to hand-roll
evidence_requirednot a software checkgo and do it, then attach what proves it

A fail is the useful one. It names a single check, carries what went in and what your build did, and is enough to act on without anybody reconstructing your business.

The one rule that makes it work

Everything your build does to the outside world goes through the ports. The runner owns the world your build writes into, so a build that calls a vendor SDK directly leaves that world empty and the run reports no write observed through the port rather than quietly passing. That is not pedantry: it is the only way a result means anything.

import { StubWorld, runStandard, fetchChecks } from "@aipathway/conformance";

const std = await fetchChecks("booked-after-hours-build-standard");

// Your build takes the ports and does the job. Nothing else.
const build = (p) => {
  p.disclose("This is an AI assistant and the call is being recorded.");
  const said = p.hear() ?? "";
  const addr = p.resolveAddress(said);
  if (!addr?.inArea) return;
  const open = p.findOpenJob("+61400000001");
  if (open) return void p.updateJob(open.id, "intent-1");
  const job = p.writeJob({ phone: "+61400000001", address: addr.resolved, type: "emergency" }, "intent-1");
  if (job) p.notify("on-call", job.id, "emergency");
};

You supply a scenario per check: the world it starts in, how to drive your build, and what "held" means. The check tells you what to inject and what to assert; the scenario is the few lines that connect that to your code.

The checks are not in this package

They are fetched from the site, so a standard corrected on Tuesday does not need a release here, and you cannot end up conformant against a stale copy. The package is the harness. The site is the standard.

The standards

27 of them, each one a job that leaks money in an Australian small business or network. Every one publishes its checks as data at the same /checks.json path.

StandardThe job
booked-after-hoursThe phone answered out of hours, the job written once
debtor-chasingOverdue invoices chased against a live ledger
rent-arrearsArrears worked without breaching a tenancy rule
database-reactivationA dormant contact list worked properly
invoice-checkSubcontractor invoices matched before they are paid
rejected-packPaperwork that fails after the work is done
compliance-calendarObligations that fall due on somebody else's schedule
cited-answerAnswers that carry their source and stop when it moves
multi-site-conformanceBranches that have quietly diverged
fire-service-packService evidence bound to the right asset
quote-outA job that exists turned into a draft quote, priced only from the book
advice-fileEvery interview becomes one file the next person can pick up
knowledge-graphA fact lives once, and retiring a source takes its answers with it
knowledge-baseEverything the business relies on, in one place, with a name on it
invoice-outThe invoice exists the day the job finishes, one per job, priced only from the book
dispatch-boardThe right person at the right house at the right time, told once
inbox-triageNothing in the inbox lost, nothing answered that a person should answer
follow-upThe quote decision or document owed, chased until it arrives and not after
two-recordsTwo systems say the same thing, and a person sees both numbers first
timesheet-checkEvery hour traced to a person, a day and a job before payroll
material-orderMaterials ordered from the job, from the catalogue, once
recurring-reportThe report on schedule, every figure traced to its source
cash-seamOne record from the call to the chase, each carrying the id of the one before
simpro-claude-connectorClaude on your own Simpro, on your own key, touching nothing a customer sees
price-one-pagerThe vendor sees where the price came from, and the record proves it later
open-home-feedbackEvery open-home attendee followed up with your yes, and the vendor told what buyers said
just-sold-packA sale nearby told to the neighbours, every message approved by a person

Also available

Who publishes this

AI Pathway, Brisbane. We publish the standards free and sell the one step in each that should not be hand-rolled, which is usually the part carrying an Australian legal obligation a machine cannot hold: a live number with AI disclosure, Do Not Call Register checks, calling hours by state, and a record that survives a dispute.

If a check will not come good, send the failing run from the foot of that standard's page. It names one check, so it gets a fixed price rather than a discovery call.

Licence

CC BY 4.0. The standards are free to implement, free to fork, and free to build a competing product against. If a check is wrong, say so: the fastest way is to run it and send what came out.

版本与发布记录

@aipathway/conformance 共发布 19 个版本,首次发布于 2026/09/20;过去 12 个月发布了 19 个版本。

版本发布日期距今
1.4.0latest2026/10/2414 天前
1.2.02026/10/031 个月前
1.1.22026/10/031 个月前
1.1.12026/10/021 个月前
1.1.02026/09/261 个月前
1.0.02026/09/261 个月前

关于 @aipathway/conformance 的常见问题

@aipathway/conformance 是什么?

Run a published AI Pathway build standard against your own build, on your machine, and get a fixture you can act on.

如何安装 @aipathway/conformance?

在项目目录运行 npm install @aipathway/conformance,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 conformance,可以用 npx conformance 直接运行。

@aipathway/conformance 支持 TypeScript 吗?

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

@aipathway/conformance 支持 ESM 还是 CommonJS?

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

@aipathway/conformance 可以商用吗?

@aipathway/conformance 使用 CC-BY-4.0 许可。声明的许可为 CC-BY-4.0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@aipathway/conformance 的下载量有多少?

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

@aipathway/conformance 还在维护吗?

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