ai-capability-framework 1.0.0-rc.3 → 1.0.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/CHANGELOG.md +97 -103
- package/CODE_OF_CONDUCT.md +11 -13
- package/CONTRIBUTING.md +40 -43
- package/GOVERNANCE.md +34 -35
- package/README.md +99 -63
- package/ROADMAP.md +12 -12
- package/SECURITY.md +15 -15
- package/dist/audit/ledger.d.ts.map +1 -1
- package/dist/audit/ledger.js +2 -1
- package/dist/audit/records.d.ts.map +1 -1
- package/dist/audit/records.js +2 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/aws/dynamodb-stores.d.ts +2 -7
- package/dist/aws/dynamodb-stores.d.ts.map +1 -1
- package/dist/aws/dynamodb-stores.js +56 -5
- package/dist/aws/testing.d.ts.map +1 -1
- package/dist/aws/testing.js +9 -0
- package/dist/cli.d.ts +6 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +77 -7
- package/dist/evals-live/index.d.ts +2 -2
- package/dist/evals-live/index.d.ts.map +1 -1
- package/dist/evals-live/index.js +1 -1
- package/dist/evals-live/live-eval-runner.d.ts +49 -1
- package/dist/evals-live/live-eval-runner.d.ts.map +1 -1
- package/dist/evals-live/live-eval-runner.js +246 -4
- package/dist/evals-live/types.d.ts +62 -9
- package/dist/evals-live/types.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/runtime/actions.d.ts +2 -0
- package/dist/runtime/actions.d.ts.map +1 -1
- package/dist/runtime/actions.js +200 -55
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/stores.d.ts +2 -7
- package/dist/runtime/stores.d.ts.map +1 -1
- package/dist/runtime/stores.js +12 -0
- package/dist/runtime/types.d.ts +25 -6
- package/dist/runtime/types.d.ts.map +1 -1
- package/docs/action-lifecycle.md +38 -32
- package/docs/adapter-roadmap.md +51 -49
- package/docs/adapters.md +14 -15
- package/docs/ai-sdk-runtime.md +36 -39
- package/docs/anthropic-runtime.md +29 -32
- package/docs/api/public-api-policy.md +59 -0
- package/docs/api.md +354 -371
- package/docs/architecture/current-state.md +28 -31
- package/docs/audit/index.md +29 -29
- package/docs/aws/cloudwatch-telemetry.md +5 -7
- package/docs/aws/dynamodb-single-table.md +8 -9
- package/docs/aws/kms-redaction.md +5 -6
- package/docs/aws/overview.md +5 -5
- package/docs/aws/production-reference.md +13 -14
- package/docs/aws/step-functions-approval.md +7 -9
- package/docs/aws-runtime.md +24 -25
- package/docs/capability-manifests.md +17 -21
- package/docs/control-plane/overview.md +2 -2
- package/docs/control-plane.md +24 -27
- package/docs/controls/index.md +19 -22
- package/docs/core/capability-manifests.md +4 -5
- package/docs/core/entity-manifests.md +5 -5
- package/docs/eval-runner.md +29 -31
- package/docs/evalops.md +13 -14
- package/docs/evals/golden-tests.md +4 -5
- package/docs/evals/overview.md +3 -3
- package/docs/evals/replay-and-trace-to-golden.md +19 -20
- package/docs/evals.md +19 -20
- package/docs/evidence.md +22 -23
- package/docs/gemini-runtime.md +31 -33
- package/docs/getting-started/anthropic-quickstart.md +61 -0
- package/docs/getting-started/concepts.md +9 -10
- package/docs/getting-started/gemini-quickstart.md +62 -0
- package/docs/getting-started/installation.md +3 -3
- package/docs/getting-started/openai-quickstart.md +61 -0
- package/docs/getting-started/provider-neutral-quickstart.md +106 -0
- package/docs/getting-started/quickstart.md +2 -2
- package/docs/getting-started.md +23 -20
- package/docs/glossary.md +31 -48
- package/docs/governance/gate.md +28 -30
- package/docs/governance/impact-and-compatibility.md +2 -3
- package/docs/governance/index.md +53 -54
- package/docs/governance/lifecycle.md +4 -5
- package/docs/governance/overview.md +2 -3
- package/docs/governance/risk-compiler.md +4 -5
- package/docs/host-responsibilities.md +6 -8
- package/docs/implementation-notes/baseline-gaps.md +15 -18
- package/docs/index.md +21 -6
- package/docs/interoperability.md +9 -9
- package/docs/langchain-runtime.md +27 -31
- package/docs/live-evals.md +68 -32
- package/docs/mcp-server-runtime.md +36 -40
- package/docs/memory.md +35 -36
- package/docs/migration-0.1-to-1.0.md +14 -9
- package/docs/observability/overview.md +2 -3
- package/docs/observability-runtime.md +35 -39
- package/docs/openai-responses.md +36 -37
- package/docs/openai-runtime.md +41 -46
- package/docs/openai-walkthrough.md +24 -28
- package/docs/policy-broker.md +9 -10
- package/docs/provenance.md +30 -29
- package/docs/providers/anthropic.md +5 -5
- package/docs/providers/choose-a-runtime.md +37 -0
- package/docs/providers/conformance.md +14 -15
- package/docs/providers/gemini.md +5 -5
- package/docs/providers/mcp.md +2 -3
- package/docs/providers/openai.md +2 -2
- package/docs/providers/semantic-kernel.md +2 -2
- package/docs/providers.md +43 -38
- package/docs/public/license-exceptions.md +187 -0
- package/docs/public/npm-release-preflight.md +112 -0
- package/docs/public-framework/compatibility-policy.md +12 -13
- package/docs/public-framework/deprecation-policy.md +8 -8
- package/docs/public-framework/final-certification-matrix.md +104 -0
- package/docs/public-framework/license-decision.md +20 -0
- package/docs/public-framework/release-process.md +46 -16
- package/docs/public-framework/security-disclosure.md +4 -5
- package/docs/public-framework/v1-certification.md +102 -15
- package/docs/release.md +200 -122
- package/docs/runtime/action-lifecycle.md +3 -3
- package/docs/runtime/policy-broker.md +4 -4
- package/docs/runtime/runtime-overview.md +4 -5
- package/docs/runtime/tool-result-envelope.md +7 -7
- package/docs/runtime.md +90 -93
- package/docs/security/overview.md +4 -4
- package/docs/security/security-packs.md +24 -26
- package/docs/security/trust-taint-redaction.md +42 -47
- package/docs/semantic-kernel-runtime.md +35 -37
- package/docs/spec.md +95 -101
- package/docs/start-here.md +18 -20
- package/examples/01-basic-read-capability/README.md +3 -4
- package/examples/02-prepare-approve-commit/README.md +6 -6
- package/examples/03-multi-provider-tools/README.md +2 -2
- package/examples/04-mcp-server/README.md +4 -5
- package/examples/05-langchain-langgraph-bridge/README.md +4 -5
- package/examples/06-vercel-ai-sdk-bridge/README.md +5 -7
- package/examples/07-policy-broker-custom-auth/README.md +4 -4
- package/examples/08-aws-step-functions-approval/README.md +4 -5
- package/examples/09-security-packs-promptfoo/README.md +4 -4
- package/examples/10-trace-to-golden/README.md +2 -2
- package/examples/11-control-plane/README.md +4 -5
- package/examples/aws/README.md +5 -8
- package/examples/control-plane/README.md +8 -9
- package/examples/control-plane/fixtures/control-plane.seed.json +8 -32
- package/examples/control-plane/public/app.js +57 -18
- package/examples/control-plane/public/index.html +15 -6
- package/examples/control-plane/server.mjs +15 -3
- package/examples/eval-results/public.results.passing.json +6 -21
- package/examples/providers/ai-sdk-next/README.md +11 -8
- package/examples/providers/anthropic-claude/README.md +5 -6
- package/examples/providers/gemini/README.md +6 -6
- package/examples/providers/langchain-agent/README.md +3 -4
- package/examples/providers/langgraph-tool-node/README.md +7 -7
- package/examples/providers/mcp/README.md +8 -8
- package/examples/providers/provider-conformance/README.md +3 -3
- package/examples/providers/semantic-kernel-mcp/README.md +6 -6
- package/examples/providers/semantic-kernel-openapi/README.md +6 -7
- package/examples/runtime-support-billing/README.md +8 -9
- package/examples/runtime-support-billing/support-billing-runtime.mjs +8 -4
- package/examples/scheduling/capabilities/scheduling.availability.get.yaml +2 -2
- package/examples/scheduling/capabilities/scheduling.invite.prepare.yaml +2 -2
- package/examples/scheduling/capabilities/scheduling.invite.send.yaml +2 -2
- package/examples/scheduling/entities/AvailabilitySlot.yaml +2 -2
- package/examples/scheduling/entities/MeetingInvite.yaml +2 -2
- package/examples/scheduling/evals/scheduling.invite.prepare.valid.yaml +3 -1
- package/examples/semantic-kernel-mcp/README.md +11 -12
- package/examples/semantic-kernel-openapi/README.md +8 -8
- package/examples/support/capabilities/support.refund.commit_case.yaml +3 -3
- package/examples/support/capabilities/support.refund.prepare_case.yaml +2 -2
- package/examples/support/capabilities/support.ticket.get.yaml +2 -2
- package/examples/support/entities/Ticket.yaml +0 -1
- package/examples/support/eval-results/support.results.passing.json +3 -12
- package/examples/support/evals/support.refund.prepare_case.approval_required.yaml +3 -1
- package/examples/support/evals/support.refund.prepare_case.valid.yaml +3 -2
- package/examples/support/memory/support.agent.preferences.json +2 -6
- package/examples/support/openai/context.support_agent.json +1 -4
- package/examples/support/provenance/support.refund.summary.provenance.json +2 -6
- package/examples/support/replay/support.refund.approval_required.trace.json +4 -14
- package/package.json +22 -5
- package/schemas/audit/action-record.schema.json +4 -1
- package/schemas/aws/approval-task.schema.json +8 -1
- package/schemas/conformance/conformance-case.schema.json +18 -2
- package/schemas/conformance/conformance-report.schema.json +17 -2
- package/schemas/conformance/provider-target-matrix.schema.json +35 -4
- package/schemas/controls/control-decision.schema.json +7 -1
- package/schemas/eval-case.schema.json +8 -1
- package/schemas/eval-result.schema.json +8 -1
- package/schemas/evidence/evidence-pack.schema.json +34 -5
- package/schemas/governance/compatibility-diff.schema.json +8 -1
- package/schemas/governance/lifecycle-transition.schema.json +10 -1
- package/schemas/governance/risk-compilation-result.schema.json +9 -1
- package/schemas/provenance/generated-content-provenance.schema.json +3 -1
- package/schemas/replay/replay-result.schema.json +16 -2
- package/schemas/replay/replay-trace.schema.json +11 -2
- package/schemas/security/context-segment.schema.json +21 -12
- package/schemas/security/redaction-policy.schema.json +4 -1
- package/schemas/security-packs/coverage-report.schema.json +17 -2
- package/schemas/security-packs/security-case-suite.schema.json +11 -1
- package/schemas/tool-result-envelope.schema.json +9 -1
- package/security-packs/approval_bypass.yaml +12 -2
- package/security-packs/capability_spoofing.yaml +17 -3
- package/security-packs/cost_amplification.yaml +21 -4
- package/security-packs/cross_tenant_access.yaml +16 -3
- package/security-packs/insecure_output_rendering.yaml +15 -4
- package/security-packs/mcp_tool_abuse.yaml +17 -3
- package/security-packs/memory_scope_violation.yaml +19 -4
- package/security-packs/prompt_injection_direct.yaml +19 -4
- package/security-packs/prompt_injection_indirect.yaml +18 -3
- package/security-packs/provider_payload_exposure.yaml +26 -4
- package/security-packs/retrieval_poisoning.yaml +5 -2
- package/security-packs/schema_confusion.yaml +17 -3
- package/security-packs/sensitive_data_disclosure.yaml +22 -5
- package/security-packs/tool_exfiltration.yaml +20 -4
- package/security-packs/tool_result_poisoning.yaml +19 -4
- package/security-packs/unsafe_commit_attempt.yaml +6 -3
package/docs/providers.md
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
# Provider Foundation
|
|
2
2
|
|
|
3
|
-
AICF is a provider-agnostic AI capability framework. It turns application
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
OpenAI is one adapter, not the architecture. The canonical contract is still
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
AICF is a provider-agnostic AI capability framework. It turns application functions,
|
|
4
|
+
data access, and workflows into typed, permissioned, versioned, observable, and
|
|
5
|
+
evaluated capabilities that can be exposed to AI models and agent frameworks without
|
|
6
|
+
making any provider schema the source of truth.
|
|
7
|
+
|
|
8
|
+
OpenAI is one adapter, not the architecture. The canonical contract is still the AICF
|
|
9
|
+
capability manifest plus runtime policy, lifecycle, and model-safe result envelopes.
|
|
10
|
+
|
|
11
|
+
If you are new to provider adapters, start with the
|
|
12
|
+
[provider-neutral quickstart](getting-started/provider-neutral-quickstart.md) and then
|
|
13
|
+
use [Choose a Runtime](providers/choose-a-runtime.md). The same mental model applies to
|
|
14
|
+
every provider runtime and framework bridge: export a routed slice, map provider calls
|
|
15
|
+
back through bindings, validate with AICF, and keep commit host-controlled. The
|
|
16
|
+
[OpenAI walkthrough](openai-walkthrough.md) remains a concrete example, not the default
|
|
17
|
+
architecture.
|
|
17
18
|
|
|
18
19
|
## Provider Types
|
|
19
20
|
|
|
20
|
-
- Direct model runtimes: OpenAI Responses, Anthropic Claude Messages, and Google
|
|
21
|
-
|
|
21
|
+
- Direct model runtimes: OpenAI Responses, Anthropic Claude Messages, and Google Gemini
|
|
22
|
+
GenerateContent.
|
|
22
23
|
- Framework bridges: Vercel AI SDK and LangChain/LangGraph.
|
|
23
24
|
- Interoperability surfaces: MCP descriptors/server runtime and Semantic
|
|
24
25
|
Kernel-compatible MCP/OpenAPI metadata.
|
|
25
|
-
- Descriptor-only conformance: the provider conformance matrix verifies that a
|
|
26
|
-
|
|
26
|
+
- Descriptor-only conformance: the provider conformance matrix verifies that a routed
|
|
27
|
+
slice maps consistently across supported targets.
|
|
27
28
|
|
|
28
|
-
Provider modules are optional subpath imports. Root, runtime, and shared
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
Provider modules are optional subpath imports. Root, runtime, and shared provider
|
|
30
|
+
imports must work without Anthropic, Google, AI SDK, LangChain, MCP SDK, Semantic
|
|
31
|
+
Kernel, OpenAI, AWS, or observability SDK packages installed.
|
|
31
32
|
|
|
32
33
|
```ts
|
|
33
34
|
import { createProviderToolNameMap } from "ai-capability-framework/providers";
|
|
@@ -41,15 +42,14 @@ import { exportSemanticKernelOpenApiPlugin } from "ai-capability-framework/provi
|
|
|
41
42
|
|
|
42
43
|
## Shared Behavior
|
|
43
44
|
|
|
44
|
-
The shared provider layer provides deterministic provider-safe tool names,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
`AicfToolExecutor`.
|
|
45
|
+
The shared provider layer provides deterministic provider-safe tool names, collision
|
|
46
|
+
diagnostics, reverse lookup through binding maps, schema normalization, canonical
|
|
47
|
+
provider call/result summaries, optional dependency loading, and an execution helper
|
|
48
|
+
that delegates read and prepare calls to `AicfToolExecutor`.
|
|
49
49
|
|
|
50
|
-
Provider SDK validation does not replace AICF validation. Provider descriptors
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
Provider SDK validation does not replace AICF validation. Provider descriptors are
|
|
51
|
+
generated from routed AICF capability slices, then all tool calls map back through
|
|
52
|
+
bindings to the original capability ID and input schema.
|
|
53
53
|
|
|
54
54
|
## Safety Boundary
|
|
55
55
|
|
|
@@ -58,19 +58,24 @@ AICF remains the policy and action authority:
|
|
|
58
58
|
- commit capabilities are not exported to models by default;
|
|
59
59
|
- read and prepare calls execute through AICF validation, policy, lifecycle, and
|
|
60
60
|
model-safe envelopes;
|
|
61
|
-
- optional AICF controls can deny provider export, apply read-only mode, and
|
|
62
|
-
|
|
63
|
-
- commit remains host-controlled through `AicfActionLifecycleManager` after a
|
|
64
|
-
|
|
61
|
+
- optional AICF controls can deny provider export, apply read-only mode, and enforce
|
|
62
|
+
provider-loop budgets;
|
|
63
|
+
- commit remains host-controlled through `AicfActionLifecycleManager` after a stored
|
|
64
|
+
prepared action, approval, idempotency, and audit checks;
|
|
65
65
|
- raw prompts, raw user messages, provider request/response payloads, traces,
|
|
66
66
|
credentials, and private diagnostics are not logged by default;
|
|
67
67
|
- ambiguous provider/runtime behavior fails closed.
|
|
68
68
|
|
|
69
|
-
Live tests are opt-in. Normal package checks use mock clients, fake SDK
|
|
70
|
-
|
|
69
|
+
Live tests are opt-in. Normal package checks use mock clients, fake SDK factories,
|
|
70
|
+
descriptor exports, and synthetic fixtures.
|
|
71
71
|
|
|
72
72
|
## Guides And Examples
|
|
73
73
|
|
|
74
|
+
- [Choose a runtime](providers/choose-a-runtime.md)
|
|
75
|
+
- [Provider-neutral quickstart](getting-started/provider-neutral-quickstart.md)
|
|
76
|
+
- [OpenAI quickstart](getting-started/openai-quickstart.md)
|
|
77
|
+
- [Anthropic quickstart](getting-started/anthropic-quickstart.md)
|
|
78
|
+
- [Gemini quickstart](getting-started/gemini-quickstart.md)
|
|
74
79
|
- [OpenAI Responses runtime](openai-runtime.md)
|
|
75
80
|
- [Anthropic Claude runtime](anthropic-runtime.md)
|
|
76
81
|
- [Google Gemini runtime](gemini-runtime.md)
|
|
@@ -80,9 +85,9 @@ factories, descriptor exports, and synthetic fixtures.
|
|
|
80
85
|
- [Semantic Kernel compatibility](semantic-kernel-runtime.md)
|
|
81
86
|
- [Provider conformance](providers/conformance.md)
|
|
82
87
|
|
|
83
|
-
Grouped public examples live under `examples/providers/`. They are README-only
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
Grouped public examples live under `examples/providers/`. They are README-only by
|
|
89
|
+
design: no credentials, raw provider payloads, live transcripts, or local runtime state
|
|
90
|
+
are included.
|
|
86
91
|
|
|
87
92
|
## Release Checks
|
|
88
93
|
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Dependency License Exceptions
|
|
2
|
+
|
|
3
|
+
AICF uses MIT for the public framework and accepts common permissive dependency licenses
|
|
4
|
+
by default. The release gate blocks unknown, copyleft, source-available, and unlicensed
|
|
5
|
+
dependency metadata unless maintainers document an explicit exception here.
|
|
6
|
+
|
|
7
|
+
The default allow-list is:
|
|
8
|
+
|
|
9
|
+
- MIT
|
|
10
|
+
- Apache-2.0
|
|
11
|
+
- BSD-2-Clause
|
|
12
|
+
- BSD-3-Clause
|
|
13
|
+
- ISC
|
|
14
|
+
- CC0-1.0
|
|
15
|
+
- Unlicense
|
|
16
|
+
- BlueOak-1.0.0
|
|
17
|
+
|
|
18
|
+
Disallowed-by-default license families include GPL, AGPL, LGPL, SSPL, BUSL, unknown
|
|
19
|
+
licenses, and `UNLICENSED`.
|
|
20
|
+
|
|
21
|
+
The `npm run check:licenses` gate reads the package lockfiles and the JSON block below.
|
|
22
|
+
Exceptions must be exact by package, version, license, and package scope. Stale or
|
|
23
|
+
malformed exception records fail the gate.
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"exceptions": [
|
|
28
|
+
{
|
|
29
|
+
"package": "argparse",
|
|
30
|
+
"version": "2.0.1",
|
|
31
|
+
"license": "Python-2.0",
|
|
32
|
+
"scope": "root",
|
|
33
|
+
"reason": "Transitive build and validation dependency; license reviewed as compatible for public package use.",
|
|
34
|
+
"approved_by": "AICF maintainers",
|
|
35
|
+
"approved_at": "2026-06-08",
|
|
36
|
+
"review_by": "2027-06-08",
|
|
37
|
+
"constraints": "Do not copy package source into AICF docs or examples."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"package": "lightningcss",
|
|
41
|
+
"version": "1.32.0",
|
|
42
|
+
"license": "MPL-2.0",
|
|
43
|
+
"scope": "root",
|
|
44
|
+
"reason": "Transitive TypeDoc build dependency; weak-copyleft terms are isolated to the dependency package.",
|
|
45
|
+
"approved_by": "AICF maintainers",
|
|
46
|
+
"approved_at": "2026-06-08",
|
|
47
|
+
"review_by": "2027-06-08",
|
|
48
|
+
"constraints": "Do not vendor or modify dependency source in this repository."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"package": "lightningcss-android-arm64",
|
|
52
|
+
"version": "1.32.0",
|
|
53
|
+
"license": "MPL-2.0",
|
|
54
|
+
"scope": "root",
|
|
55
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
56
|
+
"approved_by": "AICF maintainers",
|
|
57
|
+
"approved_at": "2026-06-08",
|
|
58
|
+
"review_by": "2027-06-08",
|
|
59
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"package": "lightningcss-darwin-arm64",
|
|
63
|
+
"version": "1.32.0",
|
|
64
|
+
"license": "MPL-2.0",
|
|
65
|
+
"scope": "root",
|
|
66
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
67
|
+
"approved_by": "AICF maintainers",
|
|
68
|
+
"approved_at": "2026-06-08",
|
|
69
|
+
"review_by": "2027-06-08",
|
|
70
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"package": "lightningcss-darwin-x64",
|
|
74
|
+
"version": "1.32.0",
|
|
75
|
+
"license": "MPL-2.0",
|
|
76
|
+
"scope": "root",
|
|
77
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
78
|
+
"approved_by": "AICF maintainers",
|
|
79
|
+
"approved_at": "2026-06-08",
|
|
80
|
+
"review_by": "2027-06-08",
|
|
81
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"package": "lightningcss-freebsd-x64",
|
|
85
|
+
"version": "1.32.0",
|
|
86
|
+
"license": "MPL-2.0",
|
|
87
|
+
"scope": "root",
|
|
88
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
89
|
+
"approved_by": "AICF maintainers",
|
|
90
|
+
"approved_at": "2026-06-08",
|
|
91
|
+
"review_by": "2027-06-08",
|
|
92
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"package": "lightningcss-linux-arm-gnueabihf",
|
|
96
|
+
"version": "1.32.0",
|
|
97
|
+
"license": "MPL-2.0",
|
|
98
|
+
"scope": "root",
|
|
99
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
100
|
+
"approved_by": "AICF maintainers",
|
|
101
|
+
"approved_at": "2026-06-08",
|
|
102
|
+
"review_by": "2027-06-08",
|
|
103
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"package": "lightningcss-linux-arm64-gnu",
|
|
107
|
+
"version": "1.32.0",
|
|
108
|
+
"license": "MPL-2.0",
|
|
109
|
+
"scope": "root",
|
|
110
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
111
|
+
"approved_by": "AICF maintainers",
|
|
112
|
+
"approved_at": "2026-06-08",
|
|
113
|
+
"review_by": "2027-06-08",
|
|
114
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"package": "lightningcss-linux-arm64-musl",
|
|
118
|
+
"version": "1.32.0",
|
|
119
|
+
"license": "MPL-2.0",
|
|
120
|
+
"scope": "root",
|
|
121
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
122
|
+
"approved_by": "AICF maintainers",
|
|
123
|
+
"approved_at": "2026-06-08",
|
|
124
|
+
"review_by": "2027-06-08",
|
|
125
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"package": "lightningcss-linux-x64-gnu",
|
|
129
|
+
"version": "1.32.0",
|
|
130
|
+
"license": "MPL-2.0",
|
|
131
|
+
"scope": "root",
|
|
132
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
133
|
+
"approved_by": "AICF maintainers",
|
|
134
|
+
"approved_at": "2026-06-08",
|
|
135
|
+
"review_by": "2027-06-08",
|
|
136
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"package": "lightningcss-linux-x64-musl",
|
|
140
|
+
"version": "1.32.0",
|
|
141
|
+
"license": "MPL-2.0",
|
|
142
|
+
"scope": "root",
|
|
143
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
144
|
+
"approved_by": "AICF maintainers",
|
|
145
|
+
"approved_at": "2026-06-08",
|
|
146
|
+
"review_by": "2027-06-08",
|
|
147
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"package": "lightningcss-win32-arm64-msvc",
|
|
151
|
+
"version": "1.32.0",
|
|
152
|
+
"license": "MPL-2.0",
|
|
153
|
+
"scope": "root",
|
|
154
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
155
|
+
"approved_by": "AICF maintainers",
|
|
156
|
+
"approved_at": "2026-06-08",
|
|
157
|
+
"review_by": "2027-06-08",
|
|
158
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"package": "lightningcss-win32-x64-msvc",
|
|
162
|
+
"version": "1.32.0",
|
|
163
|
+
"license": "MPL-2.0",
|
|
164
|
+
"scope": "root",
|
|
165
|
+
"reason": "Optional platform package for the reviewed lightningcss dependency.",
|
|
166
|
+
"approved_by": "AICF maintainers",
|
|
167
|
+
"approved_at": "2026-06-08",
|
|
168
|
+
"review_by": "2027-06-08",
|
|
169
|
+
"constraints": "Keep usage limited to dependency installation; do not vendor source."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"package": "tslib",
|
|
173
|
+
"version": "2.8.1",
|
|
174
|
+
"license": "0BSD",
|
|
175
|
+
"scope": "root",
|
|
176
|
+
"reason": "Transitive TypeScript helper dependency; 0BSD is public-domain-like and compatible with MIT distribution.",
|
|
177
|
+
"approved_by": "AICF maintainers",
|
|
178
|
+
"approved_at": "2026-06-08",
|
|
179
|
+
"review_by": "2027-06-08",
|
|
180
|
+
"constraints": "Review again if the dependency is vendored or materially modified."
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Host applications and downstream distributors remain responsible for their own legal
|
|
187
|
+
review.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# npm Release Preflight
|
|
2
|
+
|
|
3
|
+
Run this preflight before pushing a release tag. It checks the public npm package
|
|
4
|
+
boundary and makes the release operator verify ownership and publishing setup.
|
|
5
|
+
|
|
6
|
+
## Packages
|
|
7
|
+
|
|
8
|
+
| Package | Expected scope | Access | Release policy |
|
|
9
|
+
| ------------------------- | ----------------------- | ------ | ------------------------------------------------------------------------- |
|
|
10
|
+
| `ai-capability-framework` | unscoped public package | public | Published from the release tag after final certification. |
|
|
11
|
+
| `@aicf/agent-skills` | `@aicf` npm scope | public | Published from the same release tag and version, before the root package. |
|
|
12
|
+
|
|
13
|
+
Both packages must use the same version. Release tags must match that version exactly:
|
|
14
|
+
package version `1.0.0` uses tag `v1.0.0`.
|
|
15
|
+
|
|
16
|
+
## Ownership
|
|
17
|
+
|
|
18
|
+
AICF maintainers own release approval. Before tagging, the release operator must verify
|
|
19
|
+
npm ownership directly:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm whoami
|
|
23
|
+
npm owner ls ai-capability-framework
|
|
24
|
+
npm owner ls @aicf/agent-skills
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
For the first `@aicf/agent-skills` release, the `@aicf` npm scope and package-level
|
|
28
|
+
trusted publishing setup must exist before the tag is pushed.
|
|
29
|
+
|
|
30
|
+
## Dist Tags
|
|
31
|
+
|
|
32
|
+
- Prerelease versions with a hyphen, such as `1.0.0-rc.6`, publish with `next`.
|
|
33
|
+
- Stable versions, such as `1.0.0`, publish with `latest`.
|
|
34
|
+
- Do not move `latest` to a prerelease intentionally. If a prerelease lands on `latest`,
|
|
35
|
+
fix the dist tags before announcing the release.
|
|
36
|
+
|
|
37
|
+
## Trusted Publishing
|
|
38
|
+
|
|
39
|
+
GitHub Actions publishing must use npm Trusted Publishing with OIDC. Do not commit npm
|
|
40
|
+
tokens, one-time passwords, local `.npmrc` auth lines, or long-lived release
|
|
41
|
+
credentials. The publish workflow must keep `id-token: write` and publish only from `v*`
|
|
42
|
+
tags that point at `origin/main`.
|
|
43
|
+
|
|
44
|
+
AICF uses npm Trusted Publishing / GitHub OIDC for both public packages:
|
|
45
|
+
|
|
46
|
+
- `ai-capability-framework`
|
|
47
|
+
- `@aicf/agent-skills`
|
|
48
|
+
|
|
49
|
+
## Preflight Commands
|
|
50
|
+
|
|
51
|
+
See [Final Certification Matrix](../public-framework/final-certification-matrix.md) for
|
|
52
|
+
the complete local command and workflow gate.
|
|
53
|
+
|
|
54
|
+
Run the final matrix and local metadata/registry preflight:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run check:final-matrix
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm run check:release-tag
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm run release:preflight:npm
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For final manual release review, use strict mode:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
node scripts/check-npm-release-preflight.mjs --strict
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The default command verifies package metadata, target dist tag, package availability,
|
|
75
|
+
and whether the target local versions are already published. It warns when npm login or
|
|
76
|
+
owner checks cannot be completed. Strict mode fails on missing npm auth, missing owner
|
|
77
|
+
verification, or missing scoped package setup.
|
|
78
|
+
|
|
79
|
+
Run both package publish dry-runs with the computed dist tag:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npm run release:publish:dry
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This command does not publish. It runs root and `@aicf/agent-skills` dry-runs with
|
|
86
|
+
`--access public`.
|
|
87
|
+
|
|
88
|
+
## Version Availability
|
|
89
|
+
|
|
90
|
+
Before tagging, verify the target versions are unpublished:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
94
|
+
npm view "ai-capability-framework@${VERSION}" version
|
|
95
|
+
npm view "@aicf/agent-skills@${VERSION}" version
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
If either command returns a version, bump both package versions and refresh lockfiles
|
|
99
|
+
before tagging. npm versions are immutable.
|
|
100
|
+
|
|
101
|
+
## Rollback And Deprecation
|
|
102
|
+
|
|
103
|
+
Do not delete a published version as a normal rollback strategy. If a release is bad,
|
|
104
|
+
publish a fixed version and, when appropriate, deprecate the bad version with a concise
|
|
105
|
+
public-safe reason:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm deprecate ai-capability-framework@<version> "Use <fixed-version>."
|
|
109
|
+
npm deprecate @aicf/agent-skills@<version> "Use <fixed-version>."
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
For dist-tag mistakes, move the tag to the intended version with `npm dist-tag add`.
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
# Compatibility Policy
|
|
2
2
|
|
|
3
|
-
AICF treats exported TypeScript APIs, schemas, CLI commands, public examples,
|
|
4
|
-
|
|
3
|
+
AICF treats exported TypeScript APIs, schemas, CLI commands, public examples, and
|
|
4
|
+
documented subpath imports as public compatibility surfaces.
|
|
5
5
|
|
|
6
|
-
Breaking changes include manifest schema breaking changes, required input
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
changes that require optional SDKs from root imports.
|
|
6
|
+
Breaking changes include manifest schema breaking changes, required input changes,
|
|
7
|
+
removed exports, public error-code removals or meaning changes, lifecycle/risk semantic
|
|
8
|
+
changes, weakened runtime safety behavior, provider descriptor changes that alter
|
|
9
|
+
generated tools, eval-result schema changes, control-plane API changes, model-exposed
|
|
10
|
+
commit paths, or package boundary changes that require optional SDKs from root imports.
|
|
12
11
|
|
|
13
|
-
Minor changes include new optional manifest fields, new isolated subpaths, new
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
Minor changes include new optional manifest fields, new isolated subpaths, new provider
|
|
13
|
+
adapters, new eval scorers, new warnings that do not fail by default, new docs, and new
|
|
14
|
+
examples.
|
|
16
15
|
|
|
17
|
-
Patch changes include bug fixes, docs corrections, internal refactors, and
|
|
18
|
-
|
|
16
|
+
Patch changes include bug fixes, docs corrections, internal refactors, and provider
|
|
17
|
+
compatibility fixes that do not alter public contracts.
|
|
19
18
|
|
|
20
19
|
When in doubt, add compatibility tests and document migration guidance.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Deprecation Policy
|
|
2
2
|
|
|
3
|
-
Deprecated capabilities, APIs, docs, or commands should remain available long
|
|
4
|
-
|
|
3
|
+
Deprecated capabilities, APIs, docs, or commands should remain available long enough for
|
|
4
|
+
public users to migrate.
|
|
5
5
|
|
|
6
|
-
Deprecated public APIs and manifest fields should warn or remain documented for
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
Deprecated public APIs and manifest fields should warn or remain documented for at least
|
|
7
|
+
one minor release before removal unless a security issue requires immediate denial.
|
|
8
|
+
Deprecated manifest fields must remain loadable until the next major version when
|
|
9
|
+
practical.
|
|
10
10
|
|
|
11
11
|
Deprecation guidance should include:
|
|
12
12
|
|
|
@@ -16,5 +16,5 @@ Deprecation guidance should include:
|
|
|
16
16
|
- migration notes;
|
|
17
17
|
- tests that preserve compatibility until removal.
|
|
18
18
|
|
|
19
|
-
Safety fixes may deny unsafe behavior immediately, but should still provide
|
|
20
|
-
|
|
19
|
+
Safety fixes may deny unsafe behavior immediately, but should still provide actionable
|
|
20
|
+
diagnostics.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Final Certification Matrix
|
|
2
|
+
|
|
3
|
+
The final certification matrix is the local release-review gate for AICF v1 readiness.
|
|
4
|
+
It is not a legal certification, audit opinion, security guarantee, or npm publish
|
|
5
|
+
action. It checks that the public repository, root package, `@aicf/agent-skills`,
|
|
6
|
+
workflows, docs, package contents, and release dry-run commands line up.
|
|
7
|
+
|
|
8
|
+
Run the matrix directly with:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm run check:final-matrix
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
It is also part of:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm run check:certification
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Required Local Commands
|
|
21
|
+
|
|
22
|
+
Before a release tag, these non-live commands must pass from the repository root:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm ci
|
|
26
|
+
npm run format:check
|
|
27
|
+
npm run build
|
|
28
|
+
npm run typecheck
|
|
29
|
+
npm test
|
|
30
|
+
npm run validate
|
|
31
|
+
npm run conformance
|
|
32
|
+
npm run check:package
|
|
33
|
+
npm run check:package-public
|
|
34
|
+
npm run check:workspace-public
|
|
35
|
+
npm run check:release-install
|
|
36
|
+
npm run check:metadata
|
|
37
|
+
npm run check:licenses
|
|
38
|
+
npm run check:final-matrix
|
|
39
|
+
npm run check:release-tag
|
|
40
|
+
npm run skills:check
|
|
41
|
+
npm run check:certification
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Agent skills must also pass their package-local checks:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm --prefix agent-skills ci
|
|
48
|
+
npm --prefix agent-skills run validate
|
|
49
|
+
npm --prefix agent-skills run test
|
|
50
|
+
npm --prefix agent-skills run pack:dry
|
|
51
|
+
npm --prefix agent-skills run check
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Required Workflows
|
|
55
|
+
|
|
56
|
+
The matrix asserts these workflows exist and contain the expected gates:
|
|
57
|
+
|
|
58
|
+
- CI with Node 20.x, 22.x, and 24.x.
|
|
59
|
+
- Validate.
|
|
60
|
+
- Security with audit, license, secret, package public, and workspace public checks.
|
|
61
|
+
- Docs.
|
|
62
|
+
- Release Dry Run.
|
|
63
|
+
- Publish.
|
|
64
|
+
- Agent skills checks through CI and final certification.
|
|
65
|
+
|
|
66
|
+
## Package Artifact Rules
|
|
67
|
+
|
|
68
|
+
Root and agent-skills package dry-runs must not include `.git/`, `node_modules/`,
|
|
69
|
+
`_private/`, `.aicf/`, raw prompts, raw traces, raw provider payloads, logs, local
|
|
70
|
+
backups, generated docs, source archives, package archives, coverage output, or
|
|
71
|
+
unreviewed scratch files.
|
|
72
|
+
|
|
73
|
+
Create source review archives with the release script:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm run archive:source
|
|
77
|
+
npm run check:source-archive
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Do not zip the working directory manually.
|
|
81
|
+
|
|
82
|
+
## Publish Dry-Run Review
|
|
83
|
+
|
|
84
|
+
The publish dry-run command computes the npm dist tag from the package version and runs
|
|
85
|
+
both package dry-runs with public access:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm run release:publish:dry
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Prereleases such as `1.0.0-rc.6` use `next`. Stable releases use `latest`. This command
|
|
92
|
+
does not publish.
|
|
93
|
+
|
|
94
|
+
## Manual Acceptance
|
|
95
|
+
|
|
96
|
+
Before stable v1, maintainers should also review README positioning, MIT license
|
|
97
|
+
consistency, provider-neutral onboarding, at least one non-OpenAI quickstart, agent
|
|
98
|
+
skills install docs, npm ownership, trusted publishing, source archive contents, opt-in
|
|
99
|
+
live test boundaries, and root import optional-dependency isolation.
|
|
100
|
+
|
|
101
|
+
- GitHub repository About/description says AICF is a provider-agnostic governed AI
|
|
102
|
+
capability framework.
|
|
103
|
+
- GitHub topics include at least: ai, agents, tool-calling, evals, governance,
|
|
104
|
+
model-context-protocol, langchain, gemini, anthropic, openai, typescript.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# License Decision
|
|
2
|
+
|
|
3
|
+
AICF uses the MIT license for the v1 public release.
|
|
4
|
+
|
|
5
|
+
This is an intentional project decision. The root framework package,
|
|
6
|
+
`@aicf/agent-skills`, the Codex plugin metadata, tracked skill frontmatter, README text,
|
|
7
|
+
package metadata, and release checks must all agree on MIT unless maintainers make an
|
|
8
|
+
explicit future license change.
|
|
9
|
+
|
|
10
|
+
MIT keeps the framework easy to adopt, fork, inspect, and embed in application stacks.
|
|
11
|
+
AICF still expects host applications to own their own legal review, security review,
|
|
12
|
+
compliance obligations, provider terms, and production risk decisions.
|
|
13
|
+
|
|
14
|
+
The release certification gate includes `npm run check:metadata` to confirm the license
|
|
15
|
+
and public identity are consistent before a v1 tag is published.
|
|
16
|
+
|
|
17
|
+
Dependency licenses are checked separately with `npm run check:licenses`. That gate uses
|
|
18
|
+
the root and `agent-skills` lockfiles, allows common permissive licenses by default, and
|
|
19
|
+
requires explicit public review records for any exception in
|
|
20
|
+
[Dependency License Exceptions](../public/license-exceptions.md).
|