dna-sdk 0.1.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/LICENSE +21 -0
- package/README.md +58 -0
- package/dist/adapters/embedding/onnx.d.ts +32 -0
- package/dist/adapters/embedding/onnx.js +51 -0
- package/dist/adapters/filesystem/cache.d.ts +16 -0
- package/dist/adapters/filesystem/cache.js +113 -0
- package/dist/adapters/filesystem/index.d.ts +2 -0
- package/dist/adapters/filesystem/index.js +2 -0
- package/dist/adapters/filesystem/source.d.ts +82 -0
- package/dist/adapters/filesystem/source.js +357 -0
- package/dist/adapters/postgres/index.d.ts +2 -0
- package/dist/adapters/postgres/index.js +2 -0
- package/dist/adapters/postgres/migrations.d.ts +14 -0
- package/dist/adapters/postgres/migrations.js +88 -0
- package/dist/adapters/postgres/source.d.ts +172 -0
- package/dist/adapters/postgres/source.js +569 -0
- package/dist/adapters/resolvers/github.d.ts +12 -0
- package/dist/adapters/resolvers/github.js +47 -0
- package/dist/adapters/resolvers/http.d.ts +22 -0
- package/dist/adapters/resolvers/http.js +145 -0
- package/dist/adapters/resolvers/index.d.ts +3 -0
- package/dist/adapters/resolvers/index.js +3 -0
- package/dist/adapters/resolvers/local.d.ts +24 -0
- package/dist/adapters/resolvers/local.js +132 -0
- package/dist/adapters/search/driver.d.ts +45 -0
- package/dist/adapters/search/driver.js +138 -0
- package/dist/adapters/search/migrations.d.ts +26 -0
- package/dist/adapters/search/migrations.js +58 -0
- package/dist/adapters/search/rrf.d.ts +23 -0
- package/dist/adapters/search/rrf.js +42 -0
- package/dist/adapters/search/sqlite-vec.d.ts +66 -0
- package/dist/adapters/search/sqlite-vec.js +294 -0
- package/dist/bootstrap.d.ts +45 -0
- package/dist/bootstrap.js +134 -0
- package/dist/extensions/agentskills/DOCS.md +18 -0
- package/dist/extensions/agentskills.d.ts +28 -0
- package/dist/extensions/agentskills.js +252 -0
- package/dist/extensions/agentsmd/DOCS.md +18 -0
- package/dist/extensions/agentsmd.d.ts +22 -0
- package/dist/extensions/agentsmd.js +170 -0
- package/dist/extensions/audit/kinds/audit-log.kind.yaml +148 -0
- package/dist/extensions/audit.d.ts +25 -0
- package/dist/extensions/audit.js +62 -0
- package/dist/extensions/automation/kinds/automation.kind.yaml +296 -0
- package/dist/extensions/automation/query.d.ts +49 -0
- package/dist/extensions/automation/query.js +77 -0
- package/dist/extensions/automation/write-guards.d.ts +59 -0
- package/dist/extensions/automation/write-guards.js +153 -0
- package/dist/extensions/automation.d.ts +41 -0
- package/dist/extensions/automation.js +54 -0
- package/dist/extensions/collab.d.ts +16 -0
- package/dist/extensions/collab.js +79 -0
- package/dist/extensions/doc/kinds/doc.kind.yaml +118 -0
- package/dist/extensions/doc.d.ts +25 -0
- package/dist/extensions/doc.js +10 -0
- package/dist/extensions/eval/kinds/eval-baseline.kind.yaml +65 -0
- package/dist/extensions/eval/kinds/eval-case.kind.yaml +140 -0
- package/dist/extensions/eval/kinds/eval-run.kind.yaml +134 -0
- package/dist/extensions/eval/kinds/eval-suite.kind.yaml +87 -0
- package/dist/extensions/eval.d.ts +24 -0
- package/dist/extensions/eval.js +31 -0
- package/dist/extensions/evidence/kinds/evidence.kind.yaml +92 -0
- package/dist/extensions/evidence.d.ts +17 -0
- package/dist/extensions/evidence.js +94 -0
- package/dist/extensions/federation.d.ts +22 -0
- package/dist/extensions/federation.js +173 -0
- package/dist/extensions/guardrails/DOCS.md +20 -0
- package/dist/extensions/guardrails.d.ts +31 -0
- package/dist/extensions/guardrails.js +228 -0
- package/dist/extensions/helix/DOCS-Actor.md +20 -0
- package/dist/extensions/helix/DOCS-Agent.md +20 -0
- package/dist/extensions/helix/DOCS-UseCase.md +20 -0
- package/dist/extensions/helix/layers.d.ts +12 -0
- package/dist/extensions/helix/layers.js +18 -0
- package/dist/extensions/helix/write-guards.d.ts +70 -0
- package/dist/extensions/helix/write-guards.js +172 -0
- package/dist/extensions/helix.d.ts +29 -0
- package/dist/extensions/helix.js +963 -0
- package/dist/extensions/helix_extras.d.ts +124 -0
- package/dist/extensions/helix_extras.js +328 -0
- package/dist/extensions/hooks.d.ts +31 -0
- package/dist/extensions/hooks.js +247 -0
- package/dist/extensions/kinddef/DOCS.md +24 -0
- package/dist/extensions/kinddef.d.ts +40 -0
- package/dist/extensions/kinddef.js +171 -0
- package/dist/extensions/lesson.d.ts +6 -0
- package/dist/extensions/lesson.js +194 -0
- package/dist/extensions/modelreg/kinds/model-profile.kind.yaml +155 -0
- package/dist/extensions/modelreg.d.ts +30 -0
- package/dist/extensions/modelreg.js +38 -0
- package/dist/extensions/recognizer.d.ts +34 -0
- package/dist/extensions/recognizer.js +272 -0
- package/dist/extensions/research.d.ts +32 -0
- package/dist/extensions/research.js +292 -0
- package/dist/extensions/safety.d.ts +33 -0
- package/dist/extensions/safety.js +230 -0
- package/dist/extensions/sdlc/kinds/adr.kind.yaml +136 -0
- package/dist/extensions/sdlc/kinds/archive-proposal.kind.yaml +107 -0
- package/dist/extensions/sdlc/kinds/changelog.kind.yaml +108 -0
- package/dist/extensions/sdlc/kinds/cognitive-policy.kind.yaml +470 -0
- package/dist/extensions/sdlc/kinds/forecast.kind.yaml +125 -0
- package/dist/extensions/sdlc/kinds/insight.kind.yaml +87 -0
- package/dist/extensions/sdlc/kinds/kaizen.kind.yaml +106 -0
- package/dist/extensions/sdlc/kinds/lesson-learned.kind.yaml +270 -0
- package/dist/extensions/sdlc/kinds/narrative.kind.yaml +189 -0
- package/dist/extensions/sdlc/kinds/pattern-insight.kind.yaml +204 -0
- package/dist/extensions/sdlc/kinds/postmortem.kind.yaml +168 -0
- package/dist/extensions/sdlc/kinds/pre-mortem.kind.yaml +145 -0
- package/dist/extensions/sdlc/kinds/prompt-template.kind.yaml +109 -0
- package/dist/extensions/sdlc/kinds/retrospective.kind.yaml +186 -0
- package/dist/extensions/sdlc/kinds/risk-register.kind.yaml +178 -0
- package/dist/extensions/sdlc/kinds/saved-view.kind.yaml +127 -0
- package/dist/extensions/sdlc/kinds/status-report.kind.yaml +129 -0
- package/dist/extensions/sdlc/kinds/synthesis-run.kind.yaml +279 -0
- package/dist/extensions/sdlc/kinds/synthesizer-state.kind.yaml +196 -0
- package/dist/extensions/sdlc/kinds/workflow-event.kind.yaml +195 -0
- package/dist/extensions/sdlc.d.ts +32 -0
- package/dist/extensions/sdlc.js +1318 -0
- package/dist/extensions/soulspec/DOCS.md +19 -0
- package/dist/extensions/soulspec.d.ts +22 -0
- package/dist/extensions/soulspec.js +287 -0
- package/dist/extensions/tenant.d.ts +6 -0
- package/dist/extensions/tenant.js +291 -0
- package/dist/extensions/testkit.d.ts +24 -0
- package/dist/extensions/testkit.js +211 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +102 -0
- package/dist/kernel/_text.d.ts +28 -0
- package/dist/kernel/_text.js +42 -0
- package/dist/kernel/bundle-handle.d.ts +83 -0
- package/dist/kernel/bundle-handle.js +184 -0
- package/dist/kernel/capabilities.d.ts +157 -0
- package/dist/kernel/capabilities.js +109 -0
- package/dist/kernel/collaborator-ports.d.ts +91 -0
- package/dist/kernel/collaborator-ports.js +1 -0
- package/dist/kernel/composition-resolver.d.ts +215 -0
- package/dist/kernel/composition-resolver.js +558 -0
- package/dist/kernel/composition.d.ts +10 -0
- package/dist/kernel/composition.js +1 -0
- package/dist/kernel/descriptor-loader.d.ts +13 -0
- package/dist/kernel/descriptor-loader.js +48 -0
- package/dist/kernel/document.d.ts +43 -0
- package/dist/kernel/document.js +71 -0
- package/dist/kernel/embedding.d.ts +28 -0
- package/dist/kernel/embedding.js +78 -0
- package/dist/kernel/errors.d.ts +62 -0
- package/dist/kernel/errors.js +82 -0
- package/dist/kernel/events.d.ts +6 -0
- package/dist/kernel/events.js +21 -0
- package/dist/kernel/evidence-capture.d.ts +69 -0
- package/dist/kernel/evidence-capture.js +138 -0
- package/dist/kernel/fs.d.ts +20 -0
- package/dist/kernel/fs.js +128 -0
- package/dist/kernel/generic-rw.d.ts +33 -0
- package/dist/kernel/generic-rw.js +235 -0
- package/dist/kernel/hooks.d.ts +172 -0
- package/dist/kernel/hooks.js +256 -0
- package/dist/kernel/index.d.ts +624 -0
- package/dist/kernel/index.js +1638 -0
- package/dist/kernel/instance.d.ts +211 -0
- package/dist/kernel/instance.js +487 -0
- package/dist/kernel/kind-registry.d.ts +183 -0
- package/dist/kernel/kind-registry.js +710 -0
- package/dist/kernel/kind_base.d.ts +106 -0
- package/dist/kernel/kind_base.js +244 -0
- package/dist/kernel/layer-resolver.d.ts +48 -0
- package/dist/kernel/layer-resolver.js +284 -0
- package/dist/kernel/lock-manager.d.ts +21 -0
- package/dist/kernel/lock-manager.js +43 -0
- package/dist/kernel/lock.d.ts +38 -0
- package/dist/kernel/lock.js +115 -0
- package/dist/kernel/meta.d.ts +135 -0
- package/dist/kernel/meta.js +817 -0
- package/dist/kernel/models.d.ts +3089 -0
- package/dist/kernel/models.js +764 -0
- package/dist/kernel/navigator.d.ts +36 -0
- package/dist/kernel/navigator.js +132 -0
- package/dist/kernel/port-surface.d.ts +33 -0
- package/dist/kernel/port-surface.js +180 -0
- package/dist/kernel/preview.d.ts +60 -0
- package/dist/kernel/preview.js +54 -0
- package/dist/kernel/prompt-budget.d.ts +39 -0
- package/dist/kernel/prompt-budget.js +43 -0
- package/dist/kernel/prompt-builder.d.ts +25 -0
- package/dist/kernel/prompt-builder.js +237 -0
- package/dist/kernel/protocols.d.ts +751 -0
- package/dist/kernel/protocols.js +493 -0
- package/dist/kernel/reports.d.ts +26 -0
- package/dist/kernel/reports.js +215 -0
- package/dist/kernel/resolver.d.ts +146 -0
- package/dist/kernel/resolver.js +232 -0
- package/dist/kernel/resource.d.ts +57 -0
- package/dist/kernel/resource.js +97 -0
- package/dist/kernel/runtime.d.ts +16 -0
- package/dist/kernel/runtime.js +18 -0
- package/dist/kernel/safety-scanner.d.ts +38 -0
- package/dist/kernel/safety-scanner.js +228 -0
- package/dist/kernel/serialize-to-files.d.ts +29 -0
- package/dist/kernel/serialize-to-files.js +23 -0
- package/dist/kernel/spec-access.d.ts +23 -0
- package/dist/kernel/spec-access.js +40 -0
- package/dist/kernel/studio_ui.d.ts +88 -0
- package/dist/kernel/studio_ui.js +135 -0
- package/dist/kernel/templates.d.ts +77 -0
- package/dist/kernel/templates.js +116 -0
- package/dist/kernel/tool-registry.d.ts +52 -0
- package/dist/kernel/tool-registry.js +89 -0
- package/dist/kernel/write-pipeline.d.ts +65 -0
- package/dist/kernel/write-pipeline.js +271 -0
- package/dist/kernel/writer-helpers.d.ts +24 -0
- package/dist/kernel/writer-helpers.js +42 -0
- package/dist/memory/decay.d.ts +31 -0
- package/dist/memory/decay.js +97 -0
- package/dist/memory/ecphory.d.ts +25 -0
- package/dist/memory/ecphory.js +178 -0
- package/dist/memory/encodingContext.d.ts +21 -0
- package/dist/memory/encodingContext.js +62 -0
- package/dist/memory/index.d.ts +23 -0
- package/dist/memory/index.js +23 -0
- package/dist/memory/memoryType.d.ts +7 -0
- package/dist/memory/memoryType.js +24 -0
- package/dist/memory/policy.d.ts +35 -0
- package/dist/memory/policy.js +35 -0
- package/dist/memory/retrieval.d.ts +21 -0
- package/dist/memory/retrieval.js +145 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.js +8 -0
- package/dist/testing/recordSearchConformance.d.ts +43 -0
- package/dist/testing/recordSearchConformance.js +147 -0
- package/dist/viz/ascii.d.ts +7 -0
- package/dist/viz/ascii.js +60 -0
- package/dist/viz/health.d.ts +8 -0
- package/dist/viz/health.js +161 -0
- package/dist/viz/index.d.ts +10 -0
- package/dist/viz/index.js +10 -0
- package/dist/viz/matrix.d.ts +8 -0
- package/dist/viz/matrix.js +84 -0
- package/dist/viz/mermaid.d.ts +38 -0
- package/dist/viz/mermaid.js +706 -0
- package/package.json +82 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# EvalCase โ one declarative evaluation scenario (record plane).
|
|
2
|
+
#
|
|
3
|
+
# Tier B port from the internal SDK's eval extension (s-dna-eval-kit).
|
|
4
|
+
# Upstream, an EvalCase declared a live-agent scenario (prompt, expected
|
|
5
|
+
# tool calls, trajectory mode, HITL policy, LLM-judge engines) executed by
|
|
6
|
+
# a Temporal worker. What travels is the AUTHORING VOCABULARY โ a case
|
|
7
|
+
# declares a target, deterministic checks and tags. What does NOT travel
|
|
8
|
+
# (coupled to the upstream runtime, not the Kind): trajectory_mode,
|
|
9
|
+
# hitl_policy, expected_tool_calls, engines/required_engines, judge_rubric
|
|
10
|
+
# and friends โ all of them presuppose a live agent loop + LLM judge that
|
|
11
|
+
# a notation SDK does not ship.
|
|
12
|
+
#
|
|
13
|
+
# Local-first evolution: the default target is the KERNEL ITSELF โ
|
|
14
|
+
# `target: {type: prompt, agent: X}` makes the runner compose
|
|
15
|
+
# `build_prompt(agent=X)` and apply the checks to the composed prompt.
|
|
16
|
+
# Deterministic, offline, and a REAL evaluation of declarative config
|
|
17
|
+
# ("does my agent compose what I expect?"). LLM/live targets are an
|
|
18
|
+
# extension point the HOST registers (EvalTargetPort โ same
|
|
19
|
+
# declare-here/execute-in-the-host split as Automation).
|
|
20
|
+
#
|
|
21
|
+
# tenant_scope intentionally NOT declared โ permissive (base + per-tenant
|
|
22
|
+
# overlay), the Evidence/Automation precedent.
|
|
23
|
+
#
|
|
24
|
+
# PARITY-CRITICAL package data: byte-identical mirror under both runtimes'
|
|
25
|
+
# eval/kinds/ (tests/test_descriptor_hash_parity.py enforces).
|
|
26
|
+
apiVersion: github.com/ruinosus/dna/core/v1
|
|
27
|
+
kind: KindDefinition
|
|
28
|
+
metadata:
|
|
29
|
+
name: eval-case
|
|
30
|
+
spec:
|
|
31
|
+
target_api_version: github.com/ruinosus/dna/eval/v1
|
|
32
|
+
target_kind: EvalCase
|
|
33
|
+
alias: eval-eval-case
|
|
34
|
+
origin: github.com/ruinosus/dna/eval
|
|
35
|
+
plane: record
|
|
36
|
+
prompt_target: false
|
|
37
|
+
flatten_in_context: false
|
|
38
|
+
prompt_target_priority: 0
|
|
39
|
+
storage:
|
|
40
|
+
type: yaml
|
|
41
|
+
container: eval-cases
|
|
42
|
+
schema:
|
|
43
|
+
type: object
|
|
44
|
+
required:
|
|
45
|
+
- checks
|
|
46
|
+
additionalProperties: false
|
|
47
|
+
properties:
|
|
48
|
+
description:
|
|
49
|
+
type: string
|
|
50
|
+
description: What this case verifies (one line).
|
|
51
|
+
target:
|
|
52
|
+
type: object
|
|
53
|
+
additionalProperties: true
|
|
54
|
+
description: What to evaluate. Omitted โ the suite's target โ
|
|
55
|
+
{type = prompt}. type=prompt composes the agent's system prompt
|
|
56
|
+
via build_prompt (deterministic, offline); any other type must
|
|
57
|
+
be registered by the host as an EvalTargetPort.
|
|
58
|
+
properties:
|
|
59
|
+
type:
|
|
60
|
+
type: string
|
|
61
|
+
description: Target type. 'prompt' is built in; custom types
|
|
62
|
+
are host-registered EvalTargetPorts.
|
|
63
|
+
agent:
|
|
64
|
+
type: string
|
|
65
|
+
description: Agent name for the prompt target (omitted โ
|
|
66
|
+
the scope's default agent).
|
|
67
|
+
scope:
|
|
68
|
+
type: string
|
|
69
|
+
description: Scope override for the prompt target (omitted โ
|
|
70
|
+
the scope the suite runs in).
|
|
71
|
+
input:
|
|
72
|
+
type: string
|
|
73
|
+
description: Free-form input for custom targets (e.g. the user
|
|
74
|
+
message an LLM target sends). The prompt target ignores it.
|
|
75
|
+
checks:
|
|
76
|
+
type: array
|
|
77
|
+
minItems: 1
|
|
78
|
+
description: Deterministic assertions applied to the text the
|
|
79
|
+
target produced. ALL checks must pass for the case to pass.
|
|
80
|
+
items:
|
|
81
|
+
type: object
|
|
82
|
+
required:
|
|
83
|
+
- type
|
|
84
|
+
additionalProperties: false
|
|
85
|
+
properties:
|
|
86
|
+
type:
|
|
87
|
+
type: string
|
|
88
|
+
enum:
|
|
89
|
+
- contains
|
|
90
|
+
- not_contains
|
|
91
|
+
- regex
|
|
92
|
+
- not_regex
|
|
93
|
+
- equals
|
|
94
|
+
- min_length
|
|
95
|
+
- max_length
|
|
96
|
+
value:
|
|
97
|
+
type:
|
|
98
|
+
- string
|
|
99
|
+
- integer
|
|
100
|
+
description: The needle/pattern (string checks) or the
|
|
101
|
+
length bound (min_length/max_length).
|
|
102
|
+
case_sensitive:
|
|
103
|
+
type: boolean
|
|
104
|
+
description: For contains/not_contains/equals. Default true.
|
|
105
|
+
expected:
|
|
106
|
+
type: string
|
|
107
|
+
description: Human-readable note of the expected outcome (shown
|
|
108
|
+
in reports; not machine-checked).
|
|
109
|
+
tags:
|
|
110
|
+
type: array
|
|
111
|
+
items:
|
|
112
|
+
type: string
|
|
113
|
+
skip:
|
|
114
|
+
type: boolean
|
|
115
|
+
description: Declared but not executed (reported as skipped).
|
|
116
|
+
skip_reason:
|
|
117
|
+
type: string
|
|
118
|
+
describe:
|
|
119
|
+
path: description
|
|
120
|
+
description_fallback_field: description
|
|
121
|
+
summary:
|
|
122
|
+
target_type:
|
|
123
|
+
path: target.type
|
|
124
|
+
default: ''
|
|
125
|
+
checks:
|
|
126
|
+
count_of: checks
|
|
127
|
+
tags: []
|
|
128
|
+
graph_style:
|
|
129
|
+
fill: '#8B5CF6'
|
|
130
|
+
stroke: '#7C3AED'
|
|
131
|
+
text_color: '#fff'
|
|
132
|
+
ascii_icon: ๐งช
|
|
133
|
+
display_label: Eval Cases
|
|
134
|
+
docs: An EvalCase is one declarative evaluation scenario. It names a
|
|
135
|
+
target (default = the kernel's own prompt composition via
|
|
136
|
+
build_prompt, deterministic and offline; custom targets such as a
|
|
137
|
+
live LLM are host-registered EvalTargetPorts) and a list of
|
|
138
|
+
deterministic checks (contains/regex/equals/length) applied to the
|
|
139
|
+
text the target produced. Grouped by an EvalSuite; executed by the
|
|
140
|
+
local runner (`dna eval run`), which persists an EvalRun.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# EvalRun โ persisted result of running an EvalSuite (record plane,
|
|
2
|
+
# runtime artifact; written by the local runner / `dna eval run --save`).
|
|
3
|
+
#
|
|
4
|
+
# Tier B port from the internal SDK's eval extension (s-dna-eval-kit).
|
|
5
|
+
# Upstream, runs were written by a Temporal eval worker and carried live
|
|
6
|
+
# agent telemetry. What does NOT travel (runtime-coupled, honest cut):
|
|
7
|
+
# agent (the run records its resolved target instead), total_tokens,
|
|
8
|
+
# total_cost_usd, aggregate_score/score_label, per-case tool calls,
|
|
9
|
+
# trajectories and metric scores. What travels: the run ledger โ counts,
|
|
10
|
+
# timestamps, target info and per-case check results.
|
|
11
|
+
#
|
|
12
|
+
# tenant_scope intentionally NOT declared โ permissive (base + per-tenant
|
|
13
|
+
# overlay), the Evidence/Automation precedent.
|
|
14
|
+
#
|
|
15
|
+
# PARITY-CRITICAL package data: byte-identical mirror under both runtimes'
|
|
16
|
+
# eval/kinds/ (tests/test_descriptor_hash_parity.py enforces).
|
|
17
|
+
apiVersion: github.com/ruinosus/dna/core/v1
|
|
18
|
+
kind: KindDefinition
|
|
19
|
+
metadata:
|
|
20
|
+
name: eval-run
|
|
21
|
+
spec:
|
|
22
|
+
target_api_version: github.com/ruinosus/dna/eval/v1
|
|
23
|
+
target_kind: EvalRun
|
|
24
|
+
alias: eval-eval-run
|
|
25
|
+
origin: github.com/ruinosus/dna/eval
|
|
26
|
+
plane: record
|
|
27
|
+
prompt_target: false
|
|
28
|
+
flatten_in_context: false
|
|
29
|
+
prompt_target_priority: 0
|
|
30
|
+
is_runtime_artifact: true
|
|
31
|
+
storage:
|
|
32
|
+
type: yaml
|
|
33
|
+
container: eval-runs
|
|
34
|
+
schema:
|
|
35
|
+
type: object
|
|
36
|
+
required:
|
|
37
|
+
- suite
|
|
38
|
+
- total
|
|
39
|
+
- passed
|
|
40
|
+
- failed
|
|
41
|
+
- results
|
|
42
|
+
additionalProperties: false
|
|
43
|
+
properties:
|
|
44
|
+
suite:
|
|
45
|
+
type: string
|
|
46
|
+
description: Name of the EvalSuite that was executed.
|
|
47
|
+
started_at:
|
|
48
|
+
type: string
|
|
49
|
+
format: date-time
|
|
50
|
+
finished_at:
|
|
51
|
+
type: string
|
|
52
|
+
format: date-time
|
|
53
|
+
target:
|
|
54
|
+
type: object
|
|
55
|
+
additionalProperties: true
|
|
56
|
+
description: The suite-level target the run resolved (per-case
|
|
57
|
+
overrides are recorded on each result row).
|
|
58
|
+
total:
|
|
59
|
+
type: integer
|
|
60
|
+
passed:
|
|
61
|
+
type: integer
|
|
62
|
+
failed:
|
|
63
|
+
type: integer
|
|
64
|
+
errored:
|
|
65
|
+
type: integer
|
|
66
|
+
skipped:
|
|
67
|
+
type: integer
|
|
68
|
+
results:
|
|
69
|
+
type: array
|
|
70
|
+
description: Per-case outcomes, in execution order.
|
|
71
|
+
items:
|
|
72
|
+
type: object
|
|
73
|
+
required:
|
|
74
|
+
- case
|
|
75
|
+
- status
|
|
76
|
+
additionalProperties: false
|
|
77
|
+
properties:
|
|
78
|
+
case:
|
|
79
|
+
type: string
|
|
80
|
+
status:
|
|
81
|
+
type: string
|
|
82
|
+
enum:
|
|
83
|
+
- passed
|
|
84
|
+
- failed
|
|
85
|
+
- error
|
|
86
|
+
- skipped
|
|
87
|
+
target_type:
|
|
88
|
+
type: string
|
|
89
|
+
description: Resolved target type this case ran against.
|
|
90
|
+
checks:
|
|
91
|
+
type: array
|
|
92
|
+
description: Outcome of each declared check.
|
|
93
|
+
items:
|
|
94
|
+
type: object
|
|
95
|
+
required:
|
|
96
|
+
- type
|
|
97
|
+
- passed
|
|
98
|
+
additionalProperties: false
|
|
99
|
+
properties:
|
|
100
|
+
type:
|
|
101
|
+
type: string
|
|
102
|
+
value:
|
|
103
|
+
type:
|
|
104
|
+
- string
|
|
105
|
+
- integer
|
|
106
|
+
passed:
|
|
107
|
+
type: boolean
|
|
108
|
+
detail:
|
|
109
|
+
type: string
|
|
110
|
+
description: Why the check failed (or the error).
|
|
111
|
+
error:
|
|
112
|
+
type: string
|
|
113
|
+
description: Error message when status=error (unknown
|
|
114
|
+
target type, target raised, case not found).
|
|
115
|
+
output_excerpt:
|
|
116
|
+
type: string
|
|
117
|
+
description: First chars of the text the target produced
|
|
118
|
+
(evidence for humans reading the run).
|
|
119
|
+
summary:
|
|
120
|
+
suite: ''
|
|
121
|
+
passed: 0
|
|
122
|
+
failed: 0
|
|
123
|
+
total: 0
|
|
124
|
+
graph_style:
|
|
125
|
+
fill: '#3B82F6'
|
|
126
|
+
stroke: '#2563EB'
|
|
127
|
+
text_color: '#fff'
|
|
128
|
+
ascii_icon: ๐
|
|
129
|
+
display_label: Eval Runs
|
|
130
|
+
docs: An EvalRun is the persisted result of one local execution of an
|
|
131
|
+
EvalSuite โ pass/fail/error/skip counts, timestamps, the resolved
|
|
132
|
+
target, and per-case results with the outcome of every declared
|
|
133
|
+
check. Written by `dna eval run --save`; compared against a pinned
|
|
134
|
+
EvalBaseline to detect regressions (`dna eval run --baseline`).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# EvalSuite โ groups EvalCases + run configuration (record plane).
|
|
2
|
+
#
|
|
3
|
+
# Tier B port from the internal SDK's eval extension (s-dna-eval-kit).
|
|
4
|
+
# Upstream, a suite bound the cases to a live agent + worker execution
|
|
5
|
+
# config. What does NOT travel (runtime/worker-coupled, honest cut):
|
|
6
|
+
# agent (required upstream โ here the target carries the binding),
|
|
7
|
+
# timeout_per_case, max_cost_usd, model_override, comparison_key,
|
|
8
|
+
# auto_findings, judge_language/judge_profile, parent_suite and the
|
|
9
|
+
# red-team (pyrit) block. What travels: the grouping (cases), a default
|
|
10
|
+
# target the cases inherit, and stop_on_fail.
|
|
11
|
+
#
|
|
12
|
+
# tenant_scope intentionally NOT declared โ permissive (base + per-tenant
|
|
13
|
+
# overlay), the Evidence/Automation precedent.
|
|
14
|
+
#
|
|
15
|
+
# PARITY-CRITICAL package data: byte-identical mirror under both runtimes'
|
|
16
|
+
# eval/kinds/ (tests/test_descriptor_hash_parity.py enforces).
|
|
17
|
+
apiVersion: github.com/ruinosus/dna/core/v1
|
|
18
|
+
kind: KindDefinition
|
|
19
|
+
metadata:
|
|
20
|
+
name: eval-suite
|
|
21
|
+
spec:
|
|
22
|
+
target_api_version: github.com/ruinosus/dna/eval/v1
|
|
23
|
+
target_kind: EvalSuite
|
|
24
|
+
alias: eval-eval-suite
|
|
25
|
+
origin: github.com/ruinosus/dna/eval
|
|
26
|
+
plane: record
|
|
27
|
+
prompt_target: false
|
|
28
|
+
flatten_in_context: false
|
|
29
|
+
prompt_target_priority: 0
|
|
30
|
+
storage:
|
|
31
|
+
type: yaml
|
|
32
|
+
container: eval-suites
|
|
33
|
+
dep_filters:
|
|
34
|
+
cases: eval-eval-case
|
|
35
|
+
schema:
|
|
36
|
+
type: object
|
|
37
|
+
additionalProperties: false
|
|
38
|
+
properties:
|
|
39
|
+
description:
|
|
40
|
+
type: string
|
|
41
|
+
description: What this suite evaluates (one line).
|
|
42
|
+
cases:
|
|
43
|
+
type: array
|
|
44
|
+
items:
|
|
45
|
+
type: string
|
|
46
|
+
description: EvalCase names to run, in order. Empty/omitted =
|
|
47
|
+
every EvalCase in the scope.
|
|
48
|
+
target:
|
|
49
|
+
type: object
|
|
50
|
+
additionalProperties: true
|
|
51
|
+
description: Default target for cases that do not declare their
|
|
52
|
+
own (same shape as EvalCase.target).
|
|
53
|
+
properties:
|
|
54
|
+
type:
|
|
55
|
+
type: string
|
|
56
|
+
agent:
|
|
57
|
+
type: string
|
|
58
|
+
scope:
|
|
59
|
+
type: string
|
|
60
|
+
stop_on_fail:
|
|
61
|
+
type: boolean
|
|
62
|
+
description: Stop executing remaining cases after the first
|
|
63
|
+
failed/errored case. Default false.
|
|
64
|
+
labels:
|
|
65
|
+
type: array
|
|
66
|
+
items:
|
|
67
|
+
type: string
|
|
68
|
+
describe:
|
|
69
|
+
path: description
|
|
70
|
+
description_fallback_field: description
|
|
71
|
+
summary:
|
|
72
|
+
cases:
|
|
73
|
+
count_of: cases
|
|
74
|
+
target_type:
|
|
75
|
+
path: target.type
|
|
76
|
+
default: ''
|
|
77
|
+
graph_style:
|
|
78
|
+
fill: '#6366F1'
|
|
79
|
+
stroke: '#4F46E5'
|
|
80
|
+
text_color: '#fff'
|
|
81
|
+
ascii_icon: ๐
|
|
82
|
+
display_label: Eval Suites
|
|
83
|
+
docs: An EvalSuite groups EvalCase documents and configures how the
|
|
84
|
+
local runner executes them โ the case list (empty = all cases in the
|
|
85
|
+
scope), a default target the cases inherit, and stop_on_fail. Run it
|
|
86
|
+
with `dna eval run <suite>`; each execution can be persisted as an
|
|
87
|
+
EvalRun and compared against a pinned EvalBaseline.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvalExtension โ evaluation authoring as data (TS twin).
|
|
3
|
+
*
|
|
4
|
+
* Registers 4 Kinds, all from descriptors (F3 โ record Kinds are data,
|
|
5
|
+
* not classes): EvalCase (eval-eval-case), EvalSuite (eval-eval-suite),
|
|
6
|
+
* EvalRun (eval-eval-run), EvalBaseline (eval-eval-baseline). The
|
|
7
|
+
* kinds/*.kind.yaml files are PARITY-CRITICAL package data โ
|
|
8
|
+
* byte-identical mirrors of the Python copies
|
|
9
|
+
* (tests/test_descriptor_hash_parity.py enforces).
|
|
10
|
+
*
|
|
11
|
+
* The local synchronous runner (run_suite / compare / EvalTargetPort) is
|
|
12
|
+
* Py-primary by design (dna/extensions/eval/runner.py): the runner is a
|
|
13
|
+
* host-side execution library โ the same declare-here/execute-in-the-host
|
|
14
|
+
* split as Automation, where the DECLARATION (these Kinds) is the
|
|
15
|
+
* cross-language contract and execution lives with the host. A TS host
|
|
16
|
+
* evaluates the same documents against the same schemas; a TS runner twin
|
|
17
|
+
* lands when a TS host needs one.
|
|
18
|
+
*/
|
|
19
|
+
import type { Extension, ExtensionHost } from "../kernel/protocols.js";
|
|
20
|
+
export declare class EvalExtension implements Extension {
|
|
21
|
+
readonly name = "eval";
|
|
22
|
+
readonly version = "1.0.0";
|
|
23
|
+
register(kernel: ExtensionHost): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvalExtension โ evaluation authoring as data (TS twin).
|
|
3
|
+
*
|
|
4
|
+
* Registers 4 Kinds, all from descriptors (F3 โ record Kinds are data,
|
|
5
|
+
* not classes): EvalCase (eval-eval-case), EvalSuite (eval-eval-suite),
|
|
6
|
+
* EvalRun (eval-eval-run), EvalBaseline (eval-eval-baseline). The
|
|
7
|
+
* kinds/*.kind.yaml files are PARITY-CRITICAL package data โ
|
|
8
|
+
* byte-identical mirrors of the Python copies
|
|
9
|
+
* (tests/test_descriptor_hash_parity.py enforces).
|
|
10
|
+
*
|
|
11
|
+
* The local synchronous runner (run_suite / compare / EvalTargetPort) is
|
|
12
|
+
* Py-primary by design (dna/extensions/eval/runner.py): the runner is a
|
|
13
|
+
* host-side execution library โ the same declare-here/execute-in-the-host
|
|
14
|
+
* split as Automation, where the DECLARATION (these Kinds) is the
|
|
15
|
+
* cross-language contract and execution lives with the host. A TS host
|
|
16
|
+
* evaluates the same documents against the same schemas; a TS runner twin
|
|
17
|
+
* lands when a TS host needs one.
|
|
18
|
+
*/
|
|
19
|
+
import { loadDescriptors } from "../kernel/descriptor-loader.js";
|
|
20
|
+
export class EvalExtension {
|
|
21
|
+
name = "eval";
|
|
22
|
+
version = "1.0.0";
|
|
23
|
+
register(kernel) {
|
|
24
|
+
// F3: builtin record Kinds as descriptors โ package data through the
|
|
25
|
+
// same funnel as per-scope KindDefinitions (plane lint + digest
|
|
26
|
+
// idempotency + builtin conflict marker).
|
|
27
|
+
for (const raw of loadDescriptors(import.meta.url, "eval/kinds")) {
|
|
28
|
+
kernel.kindFromDescriptor(raw);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Evidence โ immutable audit event record (record plane, runtime artifact).
|
|
2
|
+
# Two real shapes share the schema (s-evidence-schema-reconciliation):
|
|
3
|
+
# provenance (kernel evidence_capture) and gaia worker events.
|
|
4
|
+
#
|
|
5
|
+
# F3 lote-3 (spec 2026-06-10-kinds-descriptor-f3): the twin EvidenceKind
|
|
6
|
+
# classes (Py+TS) were DELETED โ this descriptor is the single source.
|
|
7
|
+
# PARITY-CRITICAL package data: byte-identical mirror under both runtimes'
|
|
8
|
+
# evidence/kinds/ (tests/test_descriptor_hash_parity.py enforces).
|
|
9
|
+
# Equivalence frozen in tests/test_lote3_descriptor_equivalence.py
|
|
10
|
+
# (golden: tests/goldens/lote3/Evidence.golden.json).
|
|
11
|
+
#
|
|
12
|
+
# tenant_scope intentionally NOT declared (class never declared `scope`;
|
|
13
|
+
# undeclared kinds stay permissive โ declaring would change tenancy).
|
|
14
|
+
apiVersion: github.com/ruinosus/dna/core/v1
|
|
15
|
+
kind: KindDefinition
|
|
16
|
+
metadata:
|
|
17
|
+
name: evidence
|
|
18
|
+
spec:
|
|
19
|
+
target_api_version: github.com/ruinosus/dna/evidence/v1
|
|
20
|
+
target_kind: Evidence
|
|
21
|
+
alias: evidence-evidence
|
|
22
|
+
origin: github.com/ruinosus/dna/evidence
|
|
23
|
+
plane: record
|
|
24
|
+
prompt_target: false
|
|
25
|
+
flatten_in_context: false
|
|
26
|
+
prompt_target_priority: 0
|
|
27
|
+
is_runtime_artifact: true
|
|
28
|
+
storage:
|
|
29
|
+
type: yaml
|
|
30
|
+
container: evidence
|
|
31
|
+
schema:
|
|
32
|
+
type: object
|
|
33
|
+
required:
|
|
34
|
+
- event_type
|
|
35
|
+
additionalProperties: true
|
|
36
|
+
properties:
|
|
37
|
+
event_type:
|
|
38
|
+
type: string
|
|
39
|
+
enum:
|
|
40
|
+
- document_created
|
|
41
|
+
- document_modified
|
|
42
|
+
- document_deleted
|
|
43
|
+
- eval_run_completed
|
|
44
|
+
- baseline_pinned
|
|
45
|
+
- finding_created
|
|
46
|
+
- finding_status_changed
|
|
47
|
+
- custom
|
|
48
|
+
- gaia.assessment.started
|
|
49
|
+
- gaia.assessment.completed
|
|
50
|
+
- gaia.assessment.failed
|
|
51
|
+
- gaia.pillar.completed
|
|
52
|
+
- gaia.pillar.threshold_breach
|
|
53
|
+
- gaia.report.issued
|
|
54
|
+
sha256:
|
|
55
|
+
type: string
|
|
56
|
+
captured_at:
|
|
57
|
+
type: string
|
|
58
|
+
format: date-time
|
|
59
|
+
author:
|
|
60
|
+
type: string
|
|
61
|
+
document_ref:
|
|
62
|
+
type: string
|
|
63
|
+
snapshot:
|
|
64
|
+
type: object
|
|
65
|
+
additionalProperties: true
|
|
66
|
+
suite:
|
|
67
|
+
type: string
|
|
68
|
+
notes:
|
|
69
|
+
type: string
|
|
70
|
+
created_at:
|
|
71
|
+
type: string
|
|
72
|
+
format: date-time
|
|
73
|
+
payload:
|
|
74
|
+
type: object
|
|
75
|
+
additionalProperties: true
|
|
76
|
+
source_kind:
|
|
77
|
+
type: string
|
|
78
|
+
source_name:
|
|
79
|
+
type: string
|
|
80
|
+
summary:
|
|
81
|
+
event_type: ''
|
|
82
|
+
document_ref: ''
|
|
83
|
+
captured_at: ''
|
|
84
|
+
graph_style:
|
|
85
|
+
fill: '#059669'
|
|
86
|
+
stroke: '#047857'
|
|
87
|
+
text_color: '#fff'
|
|
88
|
+
ascii_icon: ๐
|
|
89
|
+
display_label: Evidence
|
|
90
|
+
docs: An Evidence document is an immutable audit event record. Captures the event
|
|
91
|
+
type, SHA-256 hash of the referenced content, timestamp, author, and optional
|
|
92
|
+
snapshot. Used by the GAIA report pipeline to provide a verifiable audit trail.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvidenceExtension โ audit trail Kinds for the GAIA pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Registers 2 KindPorts:
|
|
5
|
+
* - Evidence (evidence-evidence) โ immutable audit event record
|
|
6
|
+
* - EvidencePolicy (evidence-policy) โ controls which events are auto-captured
|
|
7
|
+
*
|
|
8
|
+
* All use YAML storage with no custom reader/writer โ the generic
|
|
9
|
+
* machinery handles serialization. 1:1 parity with Python.
|
|
10
|
+
*/
|
|
11
|
+
import type { Extension, ExtensionHost } from "../kernel/protocols.js";
|
|
12
|
+
export { shouldCapture } from "../kernel/evidence-capture.js";
|
|
13
|
+
export declare class EvidenceExtension implements Extension {
|
|
14
|
+
readonly name = "evidence";
|
|
15
|
+
readonly version = "1.0.0";
|
|
16
|
+
register(kernel: ExtensionHost): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvidenceExtension โ audit trail Kinds for the GAIA pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Registers 2 KindPorts:
|
|
5
|
+
* - Evidence (evidence-evidence) โ immutable audit event record
|
|
6
|
+
* - EvidencePolicy (evidence-policy) โ controls which events are auto-captured
|
|
7
|
+
*
|
|
8
|
+
* All use YAML storage with no custom reader/writer โ the generic
|
|
9
|
+
* machinery handles serialization. 1:1 parity with Python.
|
|
10
|
+
*/
|
|
11
|
+
import { KindBase } from "../kernel/kind_base.js";
|
|
12
|
+
import { SD } from "../kernel/protocols.js";
|
|
13
|
+
import { makeEvidenceCaptureHandler } from "../kernel/evidence-capture.js";
|
|
14
|
+
// shouldCapture is generic policy-evaluation logic that now lives in the
|
|
15
|
+
// kernel (s-invert-evidence-capture-dep) so the microkernel's evidence-capture
|
|
16
|
+
// handler needs no extension import. Re-exported here as the extension's
|
|
17
|
+
// public API (index.ts + callers import it from this module).
|
|
18
|
+
import { loadDescriptors } from "../kernel/descriptor-loader.js";
|
|
19
|
+
export { shouldCapture } from "../kernel/evidence-capture.js";
|
|
20
|
+
const API_VERSION = "github.com/ruinosus/dna/evidence/v1";
|
|
21
|
+
// Evidence โ F3 lote-3 (spec 2026-06-10-kinds-descriptor-f3): the twin
|
|
22
|
+
// EvidenceKind classes (Py+TS) were DELETED โ synthesized from
|
|
23
|
+
// kinds/evidence.kind.yaml (parity-critical package data, byte-identical
|
|
24
|
+
// PyโTS) via the loadDescriptors loop in register(). Equivalence with the
|
|
25
|
+
// extinct class frozen in test_lote3_descriptor_equivalence.py (golden:
|
|
26
|
+
// tests/goldens/lote3/Evidence.golden.json).
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// EvidencePolicy Kind
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
class EvidencePolicyKind extends KindBase {
|
|
31
|
+
apiVersion = API_VERSION;
|
|
32
|
+
kind = "EvidencePolicy";
|
|
33
|
+
alias = "evidence-policy";
|
|
34
|
+
origin = "github.com/ruinosus/dna/evidence";
|
|
35
|
+
isPromptTarget = false;
|
|
36
|
+
promptTargetPriority = 0;
|
|
37
|
+
flattenInContext = false;
|
|
38
|
+
storage = SD.yaml("evidence-policies");
|
|
39
|
+
graphStyle = { fill: "#0891B2", stroke: "#0E7490", textColor: "#fff" };
|
|
40
|
+
asciiIcon = "๐";
|
|
41
|
+
displayLabel = "Evidence Policies";
|
|
42
|
+
docs = "An EvidencePolicy controls which event types are automatically " +
|
|
43
|
+
"captured as Evidence documents. Declares the list of event types " +
|
|
44
|
+
"to watch, whether auto-capture is enabled, and retention period.";
|
|
45
|
+
dependencies() { return null; }
|
|
46
|
+
schema() {
|
|
47
|
+
return {
|
|
48
|
+
type: "object",
|
|
49
|
+
required: ["events"],
|
|
50
|
+
additionalProperties: true,
|
|
51
|
+
properties: {
|
|
52
|
+
events: {
|
|
53
|
+
type: "array",
|
|
54
|
+
items: { type: "string" },
|
|
55
|
+
},
|
|
56
|
+
auto_capture: { type: "boolean", default: true },
|
|
57
|
+
retention_days: { type: "integer", default: 365 },
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
summary(doc) {
|
|
62
|
+
const spec = (doc.spec ?? {});
|
|
63
|
+
return {
|
|
64
|
+
events: spec.events ?? [],
|
|
65
|
+
auto_capture: spec.auto_capture ?? true,
|
|
66
|
+
retention_days: spec.retention_days ?? 365,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Extension
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
export class EvidenceExtension {
|
|
74
|
+
name = "evidence";
|
|
75
|
+
version = "1.0.0";
|
|
76
|
+
register(kernel) {
|
|
77
|
+
kernel.kind(new EvidencePolicyKind());
|
|
78
|
+
// F3 lote-3: builtin record Kinds as descriptors (Evidence) โ
|
|
79
|
+
// kinds/*.kind.yaml package data through the same funnel as per-scope
|
|
80
|
+
// KindDefinitions (plane lint + digest idempotency + conflict marker).
|
|
81
|
+
for (const raw of loadDescriptors(import.meta.url, "evidence/kinds")) {
|
|
82
|
+
kernel.kindFromDescriptor(raw);
|
|
83
|
+
}
|
|
84
|
+
// Register the evidence auto-capture handler when the host also
|
|
85
|
+
// exposes the RUNTIME capabilities the handler closes over
|
|
86
|
+
// (instance + writeDocument โ the full Kernel does; a bare
|
|
87
|
+
// ExtensionHost slice need not). Feature-test, then narrow to the
|
|
88
|
+
// handler's own declared host contract.
|
|
89
|
+
const cap = kernel;
|
|
90
|
+
if (typeof cap.instance === "function" && typeof cap.writeDocument === "function") {
|
|
91
|
+
kernel.on("post_save", makeEvidenceCaptureHandler(cap));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FederationExtension โ Phase 14r MCP Federation (schema v2, 2026-07-07).
|
|
3
|
+
*
|
|
4
|
+
* Declares the `MCPFederation` Kind: an external MCP server whose tools
|
|
5
|
+
* DNA agents consume via `Agent.spec.mcp_servers` (primary,
|
|
6
|
+
* s-mcp-servers-on-agent) or via the DNA-as-MCP-server proxy
|
|
7
|
+
* (legacy Phase 14r direction). Transports: stdio | streamable_http.
|
|
8
|
+
* Auth carries env-var NAMES only โ never secret values.
|
|
9
|
+
*
|
|
10
|
+
* Schema v2 is fully backward-compatible with v1 docs: `transport`
|
|
11
|
+
* defaults to `stdio` and every new field is optional.
|
|
12
|
+
*
|
|
13
|
+
* 1:1 parity with python/dna/extensions/federation/__init__.py.
|
|
14
|
+
* The TS SDK ships schema/Kind parity only โ the agent runtime (and the
|
|
15
|
+
* MCP client) is Python-only by design (spec ยง3).
|
|
16
|
+
*/
|
|
17
|
+
import type { ExtensionHost, Extension } from "../kernel/protocols.js";
|
|
18
|
+
export declare class FederationExtension implements Extension {
|
|
19
|
+
readonly name = "federation";
|
|
20
|
+
readonly version = "1.0.0";
|
|
21
|
+
register(kernel: ExtensionHost): void;
|
|
22
|
+
}
|