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/action-lifecycle.md
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
# Action Lifecycle
|
|
2
2
|
|
|
3
|
-
AICF runtime separates model-facing tool use from host-controlled side effects.
|
|
4
|
-
|
|
5
|
-
application code.
|
|
3
|
+
AICF runtime separates model-facing tool use from host-controlled side effects. Models
|
|
4
|
+
may receive read and prepare capabilities. Commit stays behind application code.
|
|
6
5
|
|
|
7
6
|
## Flow
|
|
8
7
|
|
|
9
8
|
The runtime lifecycle is:
|
|
10
9
|
|
|
11
10
|
```text
|
|
12
|
-
route -> read or prepare -> approval pending -> approved or rejected -> commit -> audit
|
|
11
|
+
route -> read or prepare -> approval pending -> approved or rejected -> commit -> optional verify -> audit
|
|
13
12
|
```
|
|
14
13
|
|
|
15
|
-
`AicfToolExecutor` accepts only `read` and `prepare` execution requests. A
|
|
16
|
-
|
|
14
|
+
`AicfToolExecutor` accepts only `read` and `prepare` execution requests. A malformed
|
|
15
|
+
model tool call that attempts `commit` is denied safely.
|
|
17
16
|
|
|
18
|
-
`AicfActionLifecycleManager` is the commit entrypoint. It commits only from a
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
`AicfActionLifecycleManager` is the commit entrypoint. It commits only from a stored
|
|
18
|
+
prepared action plus a matching approval when required and an idempotency key when
|
|
19
|
+
required by the capability manifest.
|
|
21
20
|
|
|
22
21
|
## Prepare
|
|
23
22
|
|
|
@@ -29,18 +28,17 @@ Prepare validates:
|
|
|
29
28
|
- registered prepare handler;
|
|
30
29
|
- output schema for the prepared-action preview.
|
|
31
30
|
|
|
32
|
-
Successful prepare stores an `AicfPreparedAction`. Prepare capabilities that
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
Successful prepare stores an `AicfPreparedAction`. Prepare capabilities that can later
|
|
32
|
+
be committed should declare `lifecycle.commit_capability_id`, and the prepared action
|
|
33
|
+
records that linked commit capability. If policy requires approval, the returned
|
|
34
|
+
model-safe envelope includes `status: "approval_required"` and a prepared-action
|
|
35
|
+
reference.
|
|
37
36
|
|
|
38
37
|
## Approval
|
|
39
38
|
|
|
40
|
-
`recordApproval()` records an approval decision for a prepared action and updates
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
decision.
|
|
39
|
+
`recordApproval()` records an approval decision for a prepared action and updates the
|
|
40
|
+
prepared-action state. It does not build approval UI, verify approvers, or own identity.
|
|
41
|
+
Host applications must perform those checks before recording the decision.
|
|
44
42
|
|
|
45
43
|
## Commit
|
|
46
44
|
|
|
@@ -48,28 +46,36 @@ Commit validates:
|
|
|
48
46
|
|
|
49
47
|
- stored prepared action exists and is not expired, rejected, or cancelled;
|
|
50
48
|
- requested commit capability matches the prepared action's declared
|
|
51
|
-
`commitCapabilityId`, or the prepared action capability itself supports
|
|
52
|
-
commit;
|
|
49
|
+
`commitCapabilityId`, or the prepared action capability itself supports commit;
|
|
53
50
|
- commit capability exists and supports `lifecycle.commit`;
|
|
54
51
|
- commit handler exists;
|
|
55
52
|
- approval exists, is approved, matches the prepared action, and is not expired;
|
|
56
53
|
- idempotency is present when required;
|
|
57
54
|
- policy allows commit for the runtime context.
|
|
58
55
|
|
|
59
|
-
Commit uses the stored prepared action and approval. It does not accept
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
Commit uses the stored prepared action and approval. It does not accept model-provided
|
|
57
|
+
raw business arguments. Duplicate idempotency keys return the safe existing result
|
|
58
|
+
rather than invoking the handler again.
|
|
62
59
|
|
|
63
|
-
Failed commit handlers, thrown commit handlers, and invalid commit output move
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
Failed commit handlers, thrown commit handlers, and invalid commit output move the
|
|
61
|
+
prepared action to `failed`. Terminal actions such as committed, failed, expired,
|
|
62
|
+
cancelled, and rejected cannot be moved back to approved.
|
|
66
63
|
|
|
67
64
|
## Verify
|
|
68
65
|
|
|
69
|
-
`verify()` checks a committed action through the committed capability's optional
|
|
70
|
-
verify handler. It
|
|
71
|
-
|
|
66
|
+
`verify()` checks a stored committed action through the committed capability's optional
|
|
67
|
+
verify handler. It requires the committed-action reference to match the stored prepared
|
|
68
|
+
action, tenant, account, subject, and committed capability.
|
|
72
69
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
Verification does not rewrite committed side-effect history. A successful verification
|
|
71
|
+
keeps the prepared action state as `committed` and records
|
|
72
|
+
`verification.status: "verified"`. A verification failure also keeps state as
|
|
73
|
+
`committed` and records `verification.status: "verification_failed"`. Runtime envelopes
|
|
74
|
+
mirror this split with `action.state: "committed"` plus `action.verificationStatus`.
|
|
75
|
+
|
|
76
|
+
If an action is already verified, `verify()` returns the stored verification result
|
|
77
|
+
without calling the handler again. Thrown handler errors are redacted in the envelope,
|
|
78
|
+
audit event, and optional audit ledger.
|
|
79
|
+
|
|
80
|
+
In-memory stores are examples and test utilities. Production applications should use
|
|
81
|
+
durable stores, such as the optional AWS reference stores or host-owned storage.
|
package/docs/adapter-roadmap.md
CHANGED
|
@@ -22,29 +22,29 @@ Every adapter should expose the same high-level contract:
|
|
|
22
22
|
- `bindings`, `excluded`, and `diagnostics`;
|
|
23
23
|
- selection gated by `decideCapability(..., operation: "select")`;
|
|
24
24
|
- restricted side-effect tools excluded by default;
|
|
25
|
-
- schema normalization that fails closed when the target cannot represent an
|
|
26
|
-
|
|
25
|
+
- schema normalization that fails closed when the target cannot represent an AICF input
|
|
26
|
+
schema safely.
|
|
27
27
|
|
|
28
28
|
## Priority Order
|
|
29
29
|
|
|
30
|
-
| Priority | Adapter
|
|
31
|
-
|
|
|
32
|
-
| Priority | Adapter
|
|
33
|
-
| ---
|
|
34
|
-
| P1
|
|
35
|
-
| P2
|
|
36
|
-
| P3
|
|
37
|
-
| P4
|
|
38
|
-
| P5
|
|
39
|
-
| P6
|
|
30
|
+
| Priority | Adapter | Why It Comes Here | Primary Output |
|
|
31
|
+
| -------- | --------------------------------------- | ----------------- | ------------------------------------------------------------------------------ |
|
|
32
|
+
| Priority | Adapter | Status | Primary Output |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| P1 | Anthropic Claude Messages tools | Implemented | Claude client tool definitions plus parser for `tool_use` blocks. |
|
|
35
|
+
| P2 | Google Gemini function calling | Implemented | Gemini `functionDeclarations` plus parser for `functionCall` objects. |
|
|
36
|
+
| P3 | Vercel AI SDK tools | Implemented | AI SDK tool map with `inputSchema`, `description`, `strict`, and no `execute`. |
|
|
37
|
+
| P4 | Model Context Protocol tool descriptors | Implemented | MCP `Tool` descriptors and parser for `tools/call` requests. |
|
|
38
|
+
| P5 | LangChain/LangGraph tools | Implemented | Structured tool parameter specs and bindings for host-supplied functions. |
|
|
39
|
+
| P6 | Semantic Kernel functions | Implemented | Function/plugin metadata and parser guidance for manual invocation flows. |
|
|
40
40
|
|
|
41
41
|
## P1: Anthropic Claude Messages Tools
|
|
42
42
|
|
|
43
43
|
Target a no-model-call adapter that exports Claude client tool definitions:
|
|
44
44
|
|
|
45
45
|
- `name`: sanitized AICF capability ID, capped at the provider limit.
|
|
46
|
-
- `description`: composed from `model_description`, use guidance, risk,
|
|
47
|
-
|
|
46
|
+
- `description`: composed from `model_description`, use guidance, risk, autonomy,
|
|
47
|
+
lifecycle, and side-effect metadata.
|
|
48
48
|
- `input_schema`: normalized AICF `input_schema`.
|
|
49
49
|
- `strict: true` when the schema can be represented safely.
|
|
50
50
|
- optional `input_examples` only when public examples are available and validated.
|
|
@@ -54,12 +54,10 @@ Parser target:
|
|
|
54
54
|
- map Claude `tool_use.name` to capability ID;
|
|
55
55
|
- read `tool_use.id` as call ID;
|
|
56
56
|
- validate `tool_use.input` against the original AICF input schema;
|
|
57
|
-
- return structured diagnostics for unknown names, malformed input, and schema
|
|
58
|
-
failures.
|
|
57
|
+
- return structured diagnostics for unknown names, malformed input, and schema failures.
|
|
59
58
|
|
|
60
|
-
Reference basis: Claude client tools include `name`, `description`, and
|
|
61
|
-
|
|
62
|
-
host application executes.
|
|
59
|
+
Reference basis: Claude client tools include `name`, `description`, and `input_schema`,
|
|
60
|
+
can use `strict: true`, and return `tool_use` blocks that the host application executes.
|
|
63
61
|
|
|
64
62
|
## P2: Google Gemini Function Calling
|
|
65
63
|
|
|
@@ -67,8 +65,8 @@ Target a no-model-call adapter that exports Gemini function declarations:
|
|
|
67
65
|
|
|
68
66
|
- `name`: sanitized capability ID using underscores or camelCase-safe names.
|
|
69
67
|
- `description`: composed from AICF model-facing and governance metadata.
|
|
70
|
-
- `parameters`: AICF input schema converted to Gemini's OpenAPI-compatible
|
|
71
|
-
|
|
68
|
+
- `parameters`: AICF input schema converted to Gemini's OpenAPI-compatible schema
|
|
69
|
+
subset.
|
|
72
70
|
|
|
73
71
|
Parser target:
|
|
74
72
|
|
|
@@ -78,13 +76,13 @@ Parser target:
|
|
|
78
76
|
- report schema keywords that cannot be represented safely in Gemini parameters.
|
|
79
77
|
|
|
80
78
|
The hard part is schema normalization. Gemini function declarations use an
|
|
81
|
-
OpenAPI-compatible subset, so this adapter should fail closed for unsupported
|
|
82
|
-
|
|
79
|
+
OpenAPI-compatible subset, so this adapter should fail closed for unsupported JSON
|
|
80
|
+
Schema 2020-12 features rather than silently weakening validation.
|
|
83
81
|
|
|
84
82
|
## P3: Vercel AI SDK Tools
|
|
85
83
|
|
|
86
|
-
Target a TypeScript-first adapter that exports an AI SDK-compatible tool map
|
|
87
|
-
|
|
84
|
+
Target a TypeScript-first adapter that exports an AI SDK-compatible tool map without
|
|
85
|
+
execution functions:
|
|
88
86
|
|
|
89
87
|
- object keys are deterministic tool names;
|
|
90
88
|
- values include `description`, `inputSchema`, and `strict` when supported;
|
|
@@ -97,9 +95,9 @@ Parser target:
|
|
|
97
95
|
- validate tool call input against the original AICF input schema;
|
|
98
96
|
- leave tool result production and execution to the host app.
|
|
99
97
|
|
|
100
|
-
This adapter is attractive because the AI SDK accepts JSON schemas and `execute`
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
This adapter is attractive because the AI SDK accepts JSON schemas and `execute` is
|
|
99
|
+
optional, allowing host apps to forward calls to a queue, client, or approval path
|
|
100
|
+
instead of executing in the same process.
|
|
103
101
|
|
|
104
102
|
## P4: Model Context Protocol Tool Descriptors
|
|
105
103
|
|
|
@@ -110,18 +108,18 @@ Target MCP descriptor export, not an AICF-owned executable MCP server:
|
|
|
110
108
|
- `description`: AICF model description plus lifecycle/risk guidance;
|
|
111
109
|
- `inputSchema`: AICF input schema, preserving JSON Schema 2020-12 where valid;
|
|
112
110
|
- `outputSchema`: AICF output schema when representable;
|
|
113
|
-
- `annotations`: conservative hints derived from side effects, such as read-only
|
|
114
|
-
|
|
111
|
+
- `annotations`: conservative hints derived from side effects, such as read-only and
|
|
112
|
+
idempotent hints.
|
|
115
113
|
|
|
116
114
|
Parser target:
|
|
117
115
|
|
|
118
116
|
- map `tools/call.params.name` to capability ID;
|
|
119
117
|
- validate `tools/call.params.arguments`;
|
|
120
|
-
- return an AICF capability request object for the host MCP server or runtime to
|
|
121
|
-
|
|
118
|
+
- return an AICF capability request object for the host MCP server or runtime to decide
|
|
119
|
+
and execute.
|
|
122
120
|
|
|
123
|
-
Do not add an MCP server that executes capabilities inside AICF. Host apps may
|
|
124
|
-
|
|
121
|
+
Do not add an MCP server that executes capabilities inside AICF. Host apps may use AICF
|
|
122
|
+
descriptors inside their own MCP server implementation.
|
|
125
123
|
|
|
126
124
|
## P5: LangChain And LangGraph Tools
|
|
127
125
|
|
|
@@ -132,12 +130,12 @@ Target descriptor export for host-created tools:
|
|
|
132
130
|
- schema suitable for LangChain structured tools;
|
|
133
131
|
- binding metadata for capability ID, risk, autonomy, and restriction status.
|
|
134
132
|
|
|
135
|
-
Do not generate callable implementations. LangChain and LangGraph tools are
|
|
136
|
-
|
|
137
|
-
|
|
133
|
+
Do not generate callable implementations. LangChain and LangGraph tools are runtime
|
|
134
|
+
functions that can update state or return commands, so the host must supply execution,
|
|
135
|
+
approval, and state handling.
|
|
138
136
|
|
|
139
|
-
This adapter should probably be implemented after the AI SDK adapter, because
|
|
140
|
-
|
|
137
|
+
This adapter should probably be implemented after the AI SDK adapter, because both are
|
|
138
|
+
TypeScript-oriented but AI SDK has a cleaner descriptor-only path.
|
|
141
139
|
|
|
142
140
|
## P6: Semantic Kernel Functions
|
|
143
141
|
|
|
@@ -148,8 +146,8 @@ Target metadata and manual-invocation compatibility:
|
|
|
148
146
|
- parser support for chosen function name and arguments;
|
|
149
147
|
- guidance for `autoInvoke: false` style host workflows.
|
|
150
148
|
|
|
151
|
-
Semantic Kernel is useful for enterprise users, but its strongest value is in
|
|
152
|
-
|
|
149
|
+
Semantic Kernel is useful for enterprise users, but its strongest value is in runtime
|
|
150
|
+
orchestration. AICF should stay on the metadata and validation side.
|
|
153
151
|
|
|
154
152
|
## Common Tests For Future Adapter Implementations
|
|
155
153
|
|
|
@@ -157,10 +155,10 @@ Each adapter should add tests for:
|
|
|
157
155
|
|
|
158
156
|
- allowed read and prepare capabilities exported for a matching context;
|
|
159
157
|
- restricted commit/send capabilities excluded by default;
|
|
160
|
-
- restricted export only with an explicit option and deterministic selection
|
|
161
|
-
|
|
162
|
-
- deterministic safe name generation, truncation, collision handling, and
|
|
163
|
-
|
|
158
|
+
- restricted export only with an explicit option and deterministic selection still
|
|
159
|
+
applied;
|
|
160
|
+
- deterministic safe name generation, truncation, collision handling, and reverse
|
|
161
|
+
bindings;
|
|
164
162
|
- schema normalization success and unsupported-schema exclusion;
|
|
165
163
|
- valid tool-call parsing;
|
|
166
164
|
- invalid JSON or malformed input handling;
|
|
@@ -170,10 +168,14 @@ Each adapter should add tests for:
|
|
|
170
168
|
|
|
171
169
|
## Reference Links
|
|
172
170
|
|
|
173
|
-
- Anthropic Claude tool use:
|
|
174
|
-
|
|
171
|
+
- Anthropic Claude tool use:
|
|
172
|
+
https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview
|
|
173
|
+
- Anthropic define tools:
|
|
174
|
+
https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools
|
|
175
175
|
- Google Gemini function calling: https://ai.google.dev/gemini-api/docs/function-calling
|
|
176
176
|
- Vercel AI SDK tool calling: https://ai-sdk.dev/docs/ai-sdk-core/tools-and-tool-calling
|
|
177
|
-
- Model Context Protocol tools:
|
|
177
|
+
- Model Context Protocol tools:
|
|
178
|
+
https://modelcontextprotocol.io/specification/2025-06-18/server/tools
|
|
178
179
|
- LangChain JavaScript tools: https://docs.langchain.com/oss/javascript/langchain/tools
|
|
179
|
-
- Semantic Kernel manual function invocation:
|
|
180
|
+
- Semantic Kernel manual function invocation:
|
|
181
|
+
https://learn.microsoft.com/en-us/semantic-kernel/concepts/ai-services/chat-completion/function-calling/function-invocation
|
package/docs/adapters.md
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
# Adapters
|
|
2
2
|
|
|
3
|
-
AICF adapters export validated capability manifests into provider or runtime
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
AICF adapters export validated capability manifests into provider or runtime tool
|
|
4
|
+
descriptor shapes. They do not call models, execute handlers, persist actions, collect
|
|
5
|
+
approvals, or perform side effects.
|
|
6
6
|
|
|
7
7
|
Every adapter follows the same boundary:
|
|
8
8
|
|
|
9
9
|
- require a decision context with permissions and autonomy tier;
|
|
10
10
|
- include only capabilities whose `select` decision is `allowed`;
|
|
11
|
-
- exclude restricted commit, send, money-moving, permission-changing, workflow,
|
|
12
|
-
|
|
13
|
-
- allow restricted export only with `includeRestricted: true`, while still
|
|
14
|
-
|
|
11
|
+
- exclude restricted commit, send, money-moving, permission-changing, workflow, and
|
|
12
|
+
irreversible capabilities by default;
|
|
13
|
+
- allow restricted export only with `includeRestricted: true`, while still applying
|
|
14
|
+
deterministic selection;
|
|
15
15
|
- bind exported names back to AICF capability IDs;
|
|
16
16
|
- validate parsed tool-call arguments against the original AICF input schema;
|
|
17
|
-
- fail closed with diagnostics when schemas or names cannot be represented
|
|
18
|
-
safely.
|
|
17
|
+
- fail closed with diagnostics when schemas or names cannot be represented safely.
|
|
19
18
|
|
|
20
19
|
## TypeScript APIs
|
|
21
20
|
|
|
@@ -89,9 +88,9 @@ node dist/cli.js langchain-tools examples --context examples/support/openai/cont
|
|
|
89
88
|
node dist/cli.js semantic-kernel-functions examples --context examples/support/openai/context.support_agent.json
|
|
90
89
|
```
|
|
91
90
|
|
|
92
|
-
Use `--include-restricted` only when the host has deliberately narrowed context
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
Use `--include-restricted` only when the host has deliberately narrowed context and
|
|
92
|
+
still intends to run deterministic approval, idempotency, auth, and commit checks before
|
|
93
|
+
any side effect.
|
|
95
94
|
|
|
96
95
|
## Output Shapes
|
|
97
96
|
|
|
@@ -107,6 +106,6 @@ All outputs include `bindings`, `excluded`, and `diagnostics`.
|
|
|
107
106
|
|
|
108
107
|
## Host Responsibilities
|
|
109
108
|
|
|
110
|
-
Adapters only produce descriptors and parse calls. Host applications remain
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
Adapters only produce descriptors and parse calls. Host applications remain responsible
|
|
110
|
+
for model requests, real authorization, facts, approvals, execution, storage,
|
|
111
|
+
idempotency, verification, and durable audit logs.
|
package/docs/ai-sdk-runtime.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Vercel AI SDK Bridge
|
|
2
2
|
|
|
3
|
-
The AI SDK bridge is an optional provider adapter for applications that already
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
The AI SDK bridge is an optional provider adapter for applications that already use
|
|
4
|
+
Vercel AI SDK Core. It translates a routed AICF capability slice into AI SDK tools,
|
|
5
|
+
executes tool calls through `AicfToolExecutor`, and returns model-safe AICF runtime
|
|
6
|
+
envelopes.
|
|
7
7
|
|
|
8
|
-
It does not install provider packages, choose a model provider, expose commit
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
It does not install provider packages, choose a model provider, expose commit tools,
|
|
9
|
+
persist state, log raw provider payloads, or make root/runtime imports depend on the
|
|
10
|
+
`ai` package.
|
|
11
11
|
|
|
12
12
|
## Import
|
|
13
13
|
|
|
14
|
-
Install AICF plus AI SDK Core only in applications that use this bridge. Model
|
|
15
|
-
|
|
14
|
+
Install AICF plus AI SDK Core only in applications that use this bridge. Model provider
|
|
15
|
+
packages remain host application dependencies.
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
npm install ai-capability-framework ai
|
|
@@ -26,52 +26,49 @@ import {
|
|
|
26
26
|
} from "ai-capability-framework/providers/ai-sdk";
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
`createDefaultAiSdkToolFactories()` dynamically imports the optional `ai`
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
`createDefaultAiSdkToolFactories()` dynamically imports the optional `ai` package. Host
|
|
30
|
+
applications may instead pass compatible `tool`, `jsonSchema`, and optional
|
|
31
|
+
`stepCountIs` factories.
|
|
32
32
|
|
|
33
33
|
## Tool Bridge
|
|
34
34
|
|
|
35
|
-
`buildAiSdkTools()` builds an AI SDK tool set from an already-routed AICF
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
`executeProviderToolCall()`.
|
|
35
|
+
`buildAiSdkTools()` builds an AI SDK tool set from an already-routed AICF capability
|
|
36
|
+
slice. Each generated tool uses a provider-safe name, a cloned JSON Schema input, and an
|
|
37
|
+
`execute` callback that delegates to `executeProviderToolCall()`.
|
|
39
38
|
|
|
40
39
|
AI SDK validation and `needsApproval` metadata are advisory. AICF still performs
|
|
41
|
-
canonical input validation, policy checks, lifecycle checks, approval handling,
|
|
42
|
-
|
|
40
|
+
canonical input validation, policy checks, lifecycle checks, approval handling, and
|
|
41
|
+
model-safe envelope formatting.
|
|
43
42
|
|
|
44
43
|
Minimal usage is: validate manifests, build a routed runtime slice, register
|
|
45
|
-
read/prepare handlers, create AI SDK tool factories, then pass the generated
|
|
46
|
-
|
|
44
|
+
read/prepare handlers, create AI SDK tool factories, then pass the generated tools to a
|
|
45
|
+
host-owned `generateText` or `streamText` call.
|
|
47
46
|
|
|
48
47
|
## Generate And Stream Wrappers
|
|
49
48
|
|
|
50
|
-
`runAiSdkGenerateText()` is a convenience wrapper around a host-supplied
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
events.
|
|
49
|
+
`runAiSdkGenerateText()` is a convenience wrapper around a host-supplied `generateText`
|
|
50
|
+
function. It passes the host model, prompt or messages, system text, tools, `stopWhen`,
|
|
51
|
+
and provider options, then returns a safe summary with text, tool-call summaries,
|
|
52
|
+
model-safe tool envelopes, usage, warnings, and trace events.
|
|
55
53
|
|
|
56
|
-
`runAiSdkStreamText()` is a thin wrapper around a host-supplied `streamText`
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
`runAiSdkStreamText()` is a thin wrapper around a host-supplied `streamText` function.
|
|
55
|
+
It passes AICF-backed tools and trace hooks, sets `includeRawChunks: false`, and does
|
|
56
|
+
not consume, transform, log, or store raw stream chunks.
|
|
59
57
|
|
|
60
58
|
## Boundary
|
|
61
59
|
|
|
62
|
-
- AICF capability manifests, policy, lifecycle, and runtime envelopes remain the
|
|
63
|
-
|
|
64
|
-
- Commit, destructive, money-moving, and external-send capabilities are not
|
|
65
|
-
|
|
66
|
-
- Provider packages such as `@ai-sdk/openai`, `@ai-sdk/anthropic`, and
|
|
67
|
-
|
|
68
|
-
- Raw prompts, provider request/response payloads, traces, credentials, and
|
|
69
|
-
|
|
60
|
+
- AICF capability manifests, policy, lifecycle, and runtime envelopes remain the source
|
|
61
|
+
of truth.
|
|
62
|
+
- Commit, destructive, money-moving, and external-send capabilities are not exported by
|
|
63
|
+
default and are not executable through AI SDK tool calls.
|
|
64
|
+
- Provider packages such as `@ai-sdk/openai`, `@ai-sdk/anthropic`, and `@ai-sdk/google`
|
|
65
|
+
are host application dependencies, not AICF dependencies.
|
|
66
|
+
- Raw prompts, provider request/response payloads, traces, credentials, and private
|
|
67
|
+
diagnostics are not captured by default.
|
|
70
68
|
- Live tests are opt-in with `RUN_LIVE_AI_SDK=1` and host-provided model setup.
|
|
71
69
|
|
|
72
|
-
Known limitations: no AI SDK provider packages, no provider selection, no UI
|
|
73
|
-
|
|
74
|
-
model-exposed commit path.
|
|
70
|
+
Known limitations: no AI SDK provider packages, no provider selection, no UI components,
|
|
71
|
+
no raw stream chunk capture, no production storage, and no model-exposed commit path.
|
|
75
72
|
|
|
76
73
|
## Checks
|
|
77
74
|
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
# Anthropic Claude Runtime
|
|
2
2
|
|
|
3
|
-
The Anthropic runtime is an optional provider adapter for Claude Messages tool
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
The Anthropic runtime is an optional provider adapter for Claude Messages tool use. It
|
|
4
|
+
translates a routed AICF capability slice into Claude client tools, runs a bounded
|
|
5
|
+
Messages loop with a caller-provided client, executes tool calls through
|
|
6
|
+
`AicfToolExecutor`, and returns Claude-compatible `tool_result` blocks.
|
|
7
7
|
|
|
8
|
-
It does not expose commit tools, use Anthropic Tool Runner, persist state, log
|
|
9
|
-
|
|
8
|
+
It does not expose commit tools, use Anthropic Tool Runner, persist state, log raw
|
|
9
|
+
provider payloads, or make root/runtime imports depend on the Anthropic SDK.
|
|
10
10
|
|
|
11
11
|
## Import
|
|
12
12
|
|
|
13
|
-
Install AICF plus the optional Anthropic SDK only in applications that use this
|
|
14
|
-
subpath:
|
|
13
|
+
Install AICF plus the optional Anthropic SDK only in applications that use this subpath:
|
|
15
14
|
|
|
16
15
|
```bash
|
|
17
16
|
npm install ai-capability-framework @anthropic-ai/sdk
|
|
@@ -26,8 +25,8 @@ import {
|
|
|
26
25
|
```
|
|
27
26
|
|
|
28
27
|
`createDefaultAnthropicMessagesClient()` dynamically imports the optional
|
|
29
|
-
`@anthropic-ai/sdk` package. Host applications may instead pass any compatible
|
|
30
|
-
|
|
28
|
+
`@anthropic-ai/sdk` package. Host applications may instead pass any compatible client
|
|
29
|
+
with `messages.create(input)`.
|
|
31
30
|
|
|
32
31
|
## Runtime Shape
|
|
33
32
|
|
|
@@ -35,38 +34,36 @@ Minimal usage is: validate manifests, build a routed runtime slice, register
|
|
|
35
34
|
read/prepare handlers, create or pass a Claude-compatible client, then call
|
|
36
35
|
`runAnthropicMessages()` with synthetic-safe messages and host context.
|
|
37
36
|
|
|
38
|
-
The host application is responsible for building runtime context, routing
|
|
39
|
-
|
|
37
|
+
The host application is responsible for building runtime context, routing capabilities,
|
|
38
|
+
registering handlers, and providing initial Claude messages.
|
|
40
39
|
|
|
41
|
-
`runAnthropicMessages()` sends `model`, `max_tokens`, `system`, `messages`,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
starts with matching `tool_result` blocks.
|
|
40
|
+
`runAnthropicMessages()` sends `model`, `max_tokens`, `system`, `messages`, `tools`, and
|
|
41
|
+
optional `tool_choice` to `client.messages.create()`. If Claude returns `tool_use`
|
|
42
|
+
blocks, AICF parses them through the generated binding map, validates arguments against
|
|
43
|
+
the original AICF schema, executes only read or prepare through the runtime executor,
|
|
44
|
+
and appends one user message whose content starts with matching `tool_result` blocks.
|
|
47
45
|
|
|
48
|
-
`tool_result.tool_use_id` always comes from Claude's `tool_use.id`. Safe error
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
`tool_result.tool_use_id` always comes from Claude's `tool_use.id`. Safe error envelopes
|
|
47
|
+
set `is_error: true`; approval-required prepare results are returned as model-safe
|
|
48
|
+
envelopes without committing the action.
|
|
51
49
|
|
|
52
50
|
## Boundary
|
|
53
51
|
|
|
54
|
-
The Anthropic runtime follows the same provider-neutral boundary as the OpenAI
|
|
55
|
-
runtime:
|
|
52
|
+
The Anthropic runtime follows the same provider-neutral boundary as the OpenAI runtime:
|
|
56
53
|
|
|
57
|
-
- AICF capability manifests, policy, lifecycle, and runtime envelopes remain the
|
|
58
|
-
|
|
54
|
+
- AICF capability manifests, policy, lifecycle, and runtime envelopes remain the source
|
|
55
|
+
of truth.
|
|
59
56
|
- Claude tool schemas are provider descriptors, not trusted execution policy.
|
|
60
|
-
- Commit, destructive, money-moving, and external-send capabilities are not
|
|
61
|
-
|
|
62
|
-
- Raw prompts, provider request/response payloads, traces, credentials, and
|
|
63
|
-
|
|
57
|
+
- Commit, destructive, money-moving, and external-send capabilities are not exported by
|
|
58
|
+
default and are not executable through provider tool calls.
|
|
59
|
+
- Raw prompts, provider request/response payloads, traces, credentials, and private
|
|
60
|
+
diagnostics are not captured by default.
|
|
64
61
|
- Live tests are opt-in with `RUN_LIVE_ANTHROPIC=1`, `ANTHROPIC_API_KEY`, and
|
|
65
62
|
`AICF_ANTHROPIC_MODEL`.
|
|
66
63
|
|
|
67
|
-
Known limitations: no streaming, no Anthropic Tool Runner, no server-side
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
Known limitations: no streaming, no Anthropic Tool Runner, no server-side Anthropic
|
|
65
|
+
tools, no provider-managed automatic tool execution, no production storage, and no
|
|
66
|
+
model-exposed commit path.
|
|
70
67
|
|
|
71
68
|
## Checks
|
|
72
69
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Public API Policy
|
|
2
|
+
|
|
3
|
+
AICF treats published package exports as public contracts. The root package is the
|
|
4
|
+
stable Core and descriptor API. Runtime, provider, governance, security, storage,
|
|
5
|
+
control-plane, eval, and CLI utilities live behind explicit subpaths so applications can
|
|
6
|
+
import only the surface they use.
|
|
7
|
+
|
|
8
|
+
## Root API Policy
|
|
9
|
+
|
|
10
|
+
The root import is reserved for stable Core and descriptor APIs. It should stay small
|
|
11
|
+
enough that applications can import it without pulling optional runtime, provider,
|
|
12
|
+
cloud, tracing, or CLI implementation dependencies.
|
|
13
|
+
|
|
14
|
+
## Import Policy
|
|
15
|
+
|
|
16
|
+
- Use `ai-capability-framework` for Core contracts, manifest loading, validation,
|
|
17
|
+
deterministic decisions, eval helpers, descriptor adapters, and model-safe tool
|
|
18
|
+
results.
|
|
19
|
+
- Use subpaths for optional runtime or integration surfaces, such as
|
|
20
|
+
`ai-capability-framework/runtime`, `ai-capability-framework/openai`, and
|
|
21
|
+
`ai-capability-framework/providers/anthropic`.
|
|
22
|
+
- Use `ai-capability-framework/cli` only for programmatic CLI tests or tooling. The
|
|
23
|
+
`runCli` helper is intentionally not exported from the root package.
|
|
24
|
+
- The `aicf` binary remains the supported command-line entrypoint for normal CLI use.
|
|
25
|
+
- Optional provider, AWS, OpenTelemetry, Langfuse, MCP, LangChain, AI SDK, and Agents
|
|
26
|
+
SDK packages must not be required by the root import.
|
|
27
|
+
|
|
28
|
+
## Export Classifications
|
|
29
|
+
|
|
30
|
+
| Surface | Classification | Notes |
|
|
31
|
+
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `ai-capability-framework` | stable public | Core manifests, loading, validation, deterministic decisions, eval helpers, descriptor-only adapters, registry helpers, and model-safe tool-result helpers. |
|
|
33
|
+
| `ai-capability-framework/runtime` | release-candidate public | No-model runtime context, routing, policy, handler registry, executor, lifecycle, stores, audit events, and envelopes. |
|
|
34
|
+
| `ai-capability-framework/openai` | adapter public | Optional OpenAI Responses runtime and OpenAI Agents SDK bridge. |
|
|
35
|
+
| `ai-capability-framework/providers` | adapter public | Shared provider foundation for names, schemas, calls, results, optional dependencies, and provider execution helpers. |
|
|
36
|
+
| `ai-capability-framework/providers/*` | adapter public | Provider-specific or framework-bridge adapter surfaces for Anthropic, Gemini, AI SDK, LangChain, MCP, Semantic Kernel, and conformance helpers. |
|
|
37
|
+
| `ai-capability-framework/mcp-server` | adapter public | Optional MCP server runtime surface backed by AICF routing and execution. |
|
|
38
|
+
| `ai-capability-framework/aws` | adapter public | Optional AWS reference adapters. AWS SDK imports stay isolated to this subpath. |
|
|
39
|
+
| `ai-capability-framework/observability`, `ai-capability-framework/langfuse` | release-candidate public | Optional metadata/redacted-content tracing and Langfuse adapters. |
|
|
40
|
+
| `ai-capability-framework/evals-live`, `ai-capability-framework/evalops`, `ai-capability-framework/promptfoo` | release-candidate public | Optional eval and EvalOps export/import helpers. Live paths are opt-in. |
|
|
41
|
+
| `ai-capability-framework/governance`, `ai-capability-framework/controls`, `ai-capability-framework/conformance` | release-candidate public | Governance, runtime controls, and deterministic conformance gates. |
|
|
42
|
+
| `ai-capability-framework/audit`, `ai-capability-framework/security`, `ai-capability-framework/security-packs`, `ai-capability-framework/replay`, `ai-capability-framework/evidence`, `ai-capability-framework/memory`, `ai-capability-framework/provenance` | release-candidate public | Public-safe evidence, security, replay, memory, and provenance utility contracts. |
|
|
43
|
+
| `ai-capability-framework/control-plane` | release-candidate public | Framework-neutral request router and reference service helpers; production auth and storage remain host-owned. |
|
|
44
|
+
| `ai-capability-framework/cli` | release-candidate public | Programmatic CLI runner for tests and tooling. Exposes `runCli` and `CliRunOptions`; not exported from the root package. |
|
|
45
|
+
| `src/cli.ts` direct imports in repository tests | internal but exported for CLI/tests | Source-level test convenience only. External users should import `ai-capability-framework/cli` or run the `aicf` binary. |
|
|
46
|
+
| Root `runCli` export | should be removed before v1 | Removed from root in P7. Use `ai-capability-framework/cli`. |
|
|
47
|
+
| CLI implementation helpers other than `runCli` and `CliRunOptions` | should move to subpath | Keep private to the CLI module unless a future release documents a narrow public contract. |
|
|
48
|
+
| Undocumented source files, generated internals, and private helper functions | should be removed before v1 | Do not expose through package exports. |
|
|
49
|
+
|
|
50
|
+
## Migration Note For Release-Candidate Users
|
|
51
|
+
|
|
52
|
+
If a release-candidate app imported `runCli` from the package root, change it to:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { runCli } from "ai-capability-framework/cli";
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This keeps root imports focused on the stable Core API while preserving a supported
|
|
59
|
+
programmatic CLI entrypoint for tests and local automation.
|