fluffy-context 0.7.7 → 0.8.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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  本地优先、Agent 无关的 Context 与 Knowledge Runtime,帮助 AI 编程 Agent 保存任务状态、恢复工作上下文、复用已验证共识,并生成有界且可追溯的上下文输入。
4
4
 
5
- **当前版本:0.7.7**
5
+ **当前版本:0.8.0**
6
6
 
7
7
  ```text
8
8
  checkpoint → orient → compile → expand → feedback → Agent continues
@@ -21,28 +21,21 @@ checkpoint → orient → compile → expand → feedback → Agent continues
21
21
  - `ctx compile`:生成带预算、来源和排除原因的 provider-neutral Context Manifest。
22
22
  - `ctx learn` / `ctx deadend`:记录可复用结论和失败方案,之后显式验证再用于普通检索。
23
23
 
24
- ## 0.7.7 当前能力与边界
24
+ ## 0.8.0 当前能力与边界
25
25
 
26
26
  | 能力 | 当前支持 |
27
27
  | --- | --- |
28
28
  | Context | 初始化、结构化 checkpoint、baseline/patch Snapshot、resume |
29
29
  | 检索 | `orient`、已验证 Knowledge/Deadend 检索、当前 Context 的 open Note |
30
- | Compiler | 确定性排序、字符预算、截断信息、provenance、纳入/排除原因 |
31
- | Manifest identity | `level`、`itemHash`、`manifestHash`、estimated token |
30
+ | Compiler | 确定性排序、字符预算、截断信息、provenance、纳入/排除原因、显式 Recipe 与可选图排序 |
31
+ | Manifest identity | `level`、`itemHash`、`manifestHash`、estimated token,以及 Recipe/图模式的身份绑定 |
32
+ | 演化 | 元数据 Experience、显式候选 Proposal、Skill/Recipe 物化与追加式治理 |
32
33
  | 文件活动 | 可选记录经过过滤的文件 metadata,并编译为 `activity` section |
33
34
  | Runtime | 本地 v2 Runtime、Git 观察、可选文件观察、自动唤醒和 fail-open 集成 |
34
- | 治理 | Knowledge/Deadend 的 candidate、verify、deprecate/obsolete、reject |
35
- | 集成 | Claude Code Hook、Claude Code 配置集成、MCP `context_orient`/`context_expand`/`context_usage_report`、TypeScript Agent API |
35
+ | 集成 | Claude Code Hook、Claude Code 配置集成、23 个 MCP 工具、TypeScript Agent API |
36
36
  | 观测 | `ctx usage report`:只读统计资产、显式复用、操作趋势和 estimated token 投入 |
37
37
 
38
- 以下能力**不属于 0.7.7**:
39
-
40
- - 没有 `ctx clean`;`ctx usage report` 是当前支持的只读观测命令。
41
- - 不自动创建 checkpoint、Note、Knowledge 或 Deadend。
42
- - 不自动把 Candidate 提升为 Verified。
43
- - 不提供模型总结、Embedding/向量检索、远程同步、多人协作或 Context merge。
44
-
45
- 0.7.7 已支持 `context_expand`,用于按需取得已选候选的 `structured` 或 `evidence` 层;它是无状态、只读操作,不读取项目文件内容,也不自动记录 feedback。
38
+ 0.8.0 仍明确不提供自动 checkpoint、自动候选提取、自动验证/发布、模型总结、Embedding/向量检索、远程同步、多人协作或 Context merge。`context_expand` 仍是无状态、只读操作:只按需取得已选候选的 `structured` 或 `evidence` 层,不读取项目文件内容,也不自动记录 feedback。
46
39
 
47
40
  ## 快速开始
48
41
 
@@ -181,7 +174,7 @@ Manifest 主要包含:
181
174
  - `identity`:Manifest hash、选中 item hash 和 estimated token;
182
175
  - `text`:最终有界文本。
183
176
 
184
- 0.7.7 的候选项提供:
177
+ 0.8.0 的候选项提供:
185
178
 
186
179
  ```text
187
180
  level: signal | summary | structured | evidence
@@ -213,6 +206,24 @@ Compiler 具有以下边界:
213
206
  - 普通查询默认只纳入适用且已验证的 Knowledge 和 Deadend;
214
207
  - `context_expand` 只读取已选候选的安全 metadata,不读取任意项目文件内容。
215
208
 
209
+ #### 显式 Recipe 与证据图
210
+
211
+ Recipe 仅在调用方明确传入已验证或已发布的 `--recipe-id` 时参与编译:
212
+
213
+ ```bash
214
+ ctx compile "验证签名逻辑" --recipe-id <recipe-id> --max-chars 4000
215
+ ```
216
+
217
+ Recipe 是受限的声明式 source/section 偏好与预算,不执行文本、不读取文件、不替换核心排序,也不会被自动选择。未传入 `--recipe-id` 时,编译保持既有默认行为和兼容身份契约。Recipe 状态、内容或适用性改变后,旧的 Recipe Manifest 不能继续用于展开,必须重新 `compile`。
218
+
219
+ 可选 `--graph-hops 0|1|2` 让证据图在已经通过治理和词法检索的候选项之间进行有界排序:
220
+
221
+ ```bash
222
+ ctx compile "验证签名逻辑" --graph-hops 1 --max-chars 4000
223
+ ```
224
+
225
+ 图不会生成图专属候选、不会绕过适用性或隐私过滤,也不会读取项目源文件。图投影不可用、无效或没有种子时,编译会明确说明 fallback 原因并回退到词法排序;`0` 表示不遍历图。展开时必须重传原始 `recipeId`、`graphHops` 与其他 compile 参数,Manifest hash 校验仍然有效。
226
+
216
227
  ### `ctx usage report`
217
228
 
218
229
  `usage report` 适合每周或每月复盘,不需要为每条 prompt 调用。它是只读的,基于 v1 文件和 v2 journal 派生统计,不创建事件、不修改 Context、Snapshot、Note 或 projection:
@@ -309,7 +320,33 @@ ctx checkpoint \
309
320
 
310
321
  只有真正保存了新 Snapshot 时 Note 才会被标记为已吸收;`no_change` 和 `rate_limited` 不会改变 Note。
311
322
 
312
- ## CLI 能力地图
323
+ ## Evolution、Skill 与 Recipe
324
+
325
+ 0.8.0 的 Evolution 是显式、确定性且仅使用已授权 metadata 的工作流:
326
+
327
+ ```text
328
+ Experience metadata → explicit proposal → explicit acceptance
329
+ → Skill / Recipe materialization → governed lifecycle
330
+ ```
331
+
332
+ `ctx evolution propose` 只从有界的 journal、Git/workspace metadata 和显式 `record.used` 信号生成候选;不会读取源文件、原始 prompt、Note 内容或 Snapshot 内容。它不自动运行,也不会创建 checkpoint、接受 Proposal、验证/发布 Skill 或 Recipe、调用 Skill,或改变默认编译策略。
333
+
334
+ ```bash
335
+ ctx evolution propose --recent-limit 32 --target-kind skill
336
+ ctx evolution list
337
+ ctx evolution inspect <proposal-id>
338
+ ctx evolution accept <proposal-id> --rationale "人工审查来源与边界"
339
+ ctx evolution verify <proposal-id> --rationale "确认候选可进入后续物化"
340
+ ctx evolution supersede <proposal-id> \
341
+ --rationale "由新提案替代" --supersedes proposal:<predecessor-id>
342
+ ```
343
+
344
+ 所有 Proposal、候选工件、Skill、Recipe、调用和状态变化都追加到 v2 journal。修订通过 `supersedes` 保留前任与继任谱系,不覆盖或删除历史记录。接受 Proposal 只生成候选工件;Skill 或 Recipe 还必须显式 materialize 并经过各自的生命周期治理。
345
+
346
+ Skill 生命周期为 `candidate → verified → published → deprecated|superseded`(也可以从 candidate 终止)。只有 `published` Skill 可记录调用;调用只保存调用方 event ID 与输入 hash,不保存原始输入。每次调用恰好允许一个终态 outcome:`success`、`failure`、`partial`、`irrelevant` 或 `unknown`。Skill procedure 是可审查文本,不会由 Runtime、Compiler 或 MCP 自动执行。
347
+
348
+ Recipe 使用同样的 `candidate → verified → published → deprecated|superseded` 治理。它只在 `ctx recipe materialize` 后存在,并且只有显式 `--recipe-id` 才能影响一次 `compile`;候选、未验证、终态或不适用 Recipe 会被拒绝,不会静默回退到其它 Recipe。
349
+
313
350
 
314
351
  完整参数请使用 `ctx <command> --help`。常用命令按用途分组如下。
315
352
 
@@ -441,38 +478,57 @@ ctx integrate claude install --apply
441
478
  ctx agent serve
442
479
  ```
443
480
 
444
- 0.7.7 当前暴露以下工具:
481
+ 0.8.0 当前暴露以下 23 个工具:
445
482
 
446
483
  ```text
447
- context_orient 只读、有界地获取任务上下文
448
- context_expand 只读地展开 selected compiler candidate
449
- context_compile 只读地生成确定性 Manifest
450
- context_resume 恢复 Context(可能更新 lastUsedAt)
451
- context_note_list 只读地列出 Note
452
- context_note_add 显式新增 Note
453
- context_checkpoint 显式保存 Context/Snapshot
454
- ```
455
-
484
+ context_orient 只读、有界地获取任务上下文
485
+ context_expand 只读地展开 selected compiler candidate
486
+ context_compile 只读地生成确定性 Manifest
487
+ context_resume 恢复 Context(可能更新 lastUsedAt)
488
+ context_note_list 只读地列出 Note
489
+ context_note_add 显式新增 Note
490
+ context_usage_report 只读统计上下文使用情况
491
+ recipe_list 只读列出 Recipe
492
+ recipe_inspect 只读检查 Recipe
493
+ recipe_materialize 从已接受候选显式物化 Recipe
494
+ recipe_transition 显式追加 Recipe 生命周期变化
495
+ skill_list 只读列出 Skill
496
+ skill_inspect 只读检查 Skill
497
+ skill_materialize 从已接受候选显式物化 Skill
498
+ skill_transition 显式追加 Skill 生命周期变化
499
+ skill_record_invocation 为已发布 Skill 记录输入 hash
500
+ skill_record_outcome 为调用追加唯一终态 outcome
501
+ evolution_propose 从授权 metadata 显式生成候选 Proposal
502
+ evolution_list 只读列出 Proposal
503
+ evolution_inspect 只读检查 Proposal
504
+ evolution_accept 显式接受 Proposal 为候选工件
505
+ evolution_transition 显式追加 Proposal 生命周期变化
506
+ context_checkpoint 显式保存 Context/Snapshot
507
+ ```
508
+
509
+ `context_compile` 和嵌套的 `context_expand.compile` 可接收 `recipeId` 与 `graphHops: 0|1|2`。Evolution、Skill 和 Recipe 的读操作不逻辑创建用户可见认知记录;写操作始终必须显式调用。
456
510
  输入字段与 CLI/Agent API 对齐:
457
511
 
458
512
  - `context_orient`:`path`、`contextId`、`query`、`scope`、`maxChars` 和各 source limit;
459
- - `context_compile`:编译选项及 `scenario`、`paths`、`activityLimit`、`trigger` 等字段;
460
- - `context_expand`:`manifestHash`、`candidateId` 或 `itemHash`、`level`、独立 `maxChars` 和原始 `compile` 参数;
513
+ - `context_compile`:编译选项,包括可选 `recipeId` 与 `graphHops: 0|1|2`;
514
+ - `context_expand`:`manifestHash`、`candidateId` 或 `itemHash`、`level`、独立 `maxChars` 和原始 `compile` 参数(包含原始 Recipe/图选项);
461
515
  - `context_resume`:`contextId`、`maxChars`、`includeDetails`、`query`、`scope`;
462
516
  - `context_note_list`:`contextId`、`openOnly`、`limit`、`maxChars`;
463
517
  - `context_note_add`:必填 `message`,以及 Note 的 `kind`、`actor`、关联 Context/Snapshot、`relatedFiles` 和 `status`;
464
- - `context_checkpoint`:Context 输入字段、`absorbNotes` 和可选的 `lastError`。
518
+ - `context_checkpoint`:Context 输入字段、`absorbNotes` 和可选的 `lastError`;
519
+ - `evolution_propose`:可选 `eventIds` 或 `recentLimit`,以及 `targetKind: skill|compiler-recipe`;`evolution_accept` 与 `evolution_transition` 均要求非空 rationale;
520
+ - `skill_*` 与 `recipe_*`:只接受受治理的候选与追加式生命周期输入,不执行 Skill procedure 或 Recipe 内容。
465
521
 
466
522
  成功调用同时返回 JSON `content` 和 `structuredContent`。结果分别对应 CLI/Agent API 的 Manifest、load result、Note 列表、单个 Note 或 checkpoint result。Checkpoint 保留 `saved`、`no_change` 和 `rate_limited` 状态,MCP 不自动重试,也不暴露绕过限流的参数。
467
523
 
468
524
  读写边界如下:
469
525
 
470
- - `context_orient`、`context_expand`、`context_compile` 和 `context_note_list` 是只读操作;
526
+ - `context_orient`、`context_expand`、`context_compile`、`context_note_list`、`context_usage_report`、`evolution_list`、`evolution_inspect`、`skill_list`、`skill_inspect`、`recipe_list` 和 `recipe_inspect` 是逻辑只读操作;
471
527
  - `context_resume` 使用现有 `loadContext` 语义,可能更新 `lastUsedAt`,但不会创建 Snapshot;
472
528
  - `context_note_add` 会写入 Note,但不会创建 Snapshot;
473
529
  - `context_checkpoint` 会创建或更新 Snapshot、Context metadata 和 index,并可显式吸收 Note;
474
- - 任何工具都不会自动创建 Knowledge、Deadend、feedback 或重复 checkpoint;
475
- - Knowledge/Deadend 的记录和治理暂不提供独立 MCP 工具,继续使用 CLI/Agent API。
530
+ - `evolution_propose`、`evolution_accept`、`evolution_transition`、`skill_*` 写工具和 `recipe_*` 写工具都是显式的追加写入;没有工具会自动接受、验证、发布、物化、调用或执行 Skill/Recipe;
531
+ - 任何工具都不会自动创建 Knowledge、Deadend、feedback 或重复 checkpoint。
476
532
 
477
533
  MCP 的 stdin/stdout 属于协议通道,不能混入日志或交互文本。调用错误(包括输入验证、缺失 Context、空 Note message 和 stale Manifest hash)返回单次工具错误,server 继续运行。`context_expand` 与 CLI/Agent API 使用相同的无状态 Manifest hash 校验和 partial 预算语义。
478
534
 
@@ -511,6 +567,11 @@ saveContext
511
567
  loadContext
512
568
  searchContext
513
569
  recordContextUse
570
+ proposeContextEvolution
571
+ listContextEvolutionProposals
572
+ inspectContextEvolutionProposal
573
+ acceptContextEvolutionCandidate
574
+ transitionContextEvolutionProposal
514
575
  ```
515
576
 
516
577
  Compiler identity 工具也通过公开入口导出:
@@ -627,15 +688,15 @@ npm pack --dry-run --json
627
688
 
628
689
  ## 未来方向
629
690
 
630
- 以下方向属于后续版本,不是 0.7.7 的当前能力:
691
+ 以下方向仍属于后续版本:
631
692
 
632
693
  | 方向 | 目标 |
633
694
  | --- | --- |
634
695
  | Context expansion | 在现有 `context_expand` 基础上继续完善更丰富的分层内容 |
635
- | Decision Graph | 将决策变成可治理、可追溯的一等对象 |
636
- | Knowledge Evolution | 支持知识合并、替代、范围演化和 review-needed 信号 |
696
+ | 证据图深化 | 在当前有界 metadata 图之外评估更丰富、可解释的关联,但不引入不透明推断 |
697
+ | Knowledge Evolution | 扩展已存在的候选、谱系和人工治理流程,不引入自动发布 |
637
698
  | Journal maintenance | 提供安全的清理、归档和长期运行维护能力 |
638
- | Usage reporting | 统计估算 token、编译、展开、检索和反馈覆盖情况(`ctx report`) |
699
+ | Usage reporting | 继续完善估算 token、编译、展开、检索和反馈覆盖情况 |
639
700
  | 外部协作 | 远程同步、多人协作和团队权限 |
640
701
 
641
702
  这些方向不会改变当前的边界:Git、项目文档和宿主规则继续由各自系统负责;Candidate 仍需要显式治理;模型调用和远程服务不是核心 Runtime 的隐式依赖。
@@ -1,3 +1,6 @@
1
+ import { inspectRecipe, listRecipes, type MaterializeRecipeInput, type TransitionRecipeInput } from '../cognition/recipes.js';
2
+ import { inspectSkill, listSkills, type MaterializeSkillInput, type RecordSkillInvocationInput, type RecordSkillOutcomeInput, type TransitionSkillInput } from '../cognition/skills.js';
3
+ import { type AcceptEvolutionCandidateInput, type ProposeEvolutionInput, type TransitionEvolutionProposalInput } from '../cognition/evolution.js';
1
4
  import { type UsageInterface } from '../cognition/usage.js';
2
5
  import { type UsageReport, type UsageReportOptions } from '../cognition/usage-report.js';
3
6
  import type { AgentLoadOptions, AgentLoadResult, AgentSaveResult, CheckpointInput, ContextSearchOptions, ContextSearchResult } from '../runtime/types.js';
@@ -15,4 +18,42 @@ export declare function recordContextUse(startPath: string | undefined, input: C
15
18
  recorded: boolean;
16
19
  eventId: string;
17
20
  }>;
21
+ export { inspectRecipe, inspectSkill, listRecipes, listSkills };
22
+ export declare function proposeContextEvolution(startPath: string | undefined, input?: ProposeEvolutionInput): Promise<import('../cognition/evolution.js').ProposeEvolutionResult>;
23
+ export declare function listContextEvolutionProposals(startPath?: string): Promise<import('../cognition/types.js').EvolutionProposalState[]>;
24
+ export declare function inspectContextEvolutionProposal(startPath: string | undefined, proposalId: string): Promise<import('../cognition/types.js').EvolutionProposalState>;
25
+ export declare function acceptContextEvolutionCandidate(startPath: string | undefined, input: AcceptEvolutionCandidateInput): Promise<{
26
+ accepted: boolean;
27
+ eventId: string;
28
+ }>;
29
+ export declare function transitionContextEvolutionProposal(startPath: string | undefined, input: TransitionEvolutionProposalInput): Promise<{
30
+ transitioned: boolean;
31
+ eventId: string;
32
+ }>;
33
+ export declare function materializeContextRecipe(startPath: string | undefined, input: MaterializeRecipeInput): Promise<{
34
+ materialized: boolean;
35
+ recipeId: string;
36
+ eventId: string;
37
+ }>;
38
+ export declare function transitionContextRecipe(startPath: string | undefined, input: TransitionRecipeInput): Promise<{
39
+ transitioned: boolean;
40
+ eventId: string;
41
+ }>;
42
+ export declare function materializeContextSkill(startPath: string | undefined, input: MaterializeSkillInput): Promise<{
43
+ materialized: boolean;
44
+ skillId: string;
45
+ eventId: string;
46
+ }>;
47
+ export declare function transitionContextSkill(startPath: string | undefined, input: TransitionSkillInput): Promise<{
48
+ transitioned: boolean;
49
+ eventId: string;
50
+ }>;
51
+ export declare function recordContextSkillInvocation(startPath: string | undefined, input: RecordSkillInvocationInput): Promise<{
52
+ recorded: boolean;
53
+ eventId: string;
54
+ }>;
55
+ export declare function recordContextSkillOutcome(startPath: string | undefined, input: RecordSkillOutcomeInput): Promise<{
56
+ recorded: boolean;
57
+ eventId: string;
58
+ }>;
18
59
  export declare function searchContext(startPath: string | undefined, query: string, options?: ContextSearchOptions): Promise<ContextSearchResult>;
@@ -4,6 +4,9 @@ import { contextsRoot, contextMetadataPath } from '../storage/layout.js';
4
4
  import { isRecord, readJson } from '../storage/json-store.js';
5
5
  import { checkpoint, rebuildSnapshot, resume, resumeSnapshot } from '../runtime/runtime.js';
6
6
  import { recordUse } from '../cognition/feedback.js';
7
+ import { inspectRecipe, listRecipes, materializeRecipe, transitionRecipe } from '../cognition/recipes.js';
8
+ import { inspectSkill, listSkills, materializeSkill, recordSkillInvocation, recordSkillOutcome, transitionSkill } from '../cognition/skills.js';
9
+ import { acceptEvolutionCandidate, inspectEvolutionProposal, listEvolutionProposals, proposeEvolution, transitionEvolutionProposal } from '../cognition/evolution.js';
7
10
  import { selectV2Orientation } from '../cognition/orient.js';
8
11
  import { discoverV2Deadends, discoverV2Knowledge } from '../cognition/retrieval.js';
9
12
  import { discoverDeadends, discoverKnowledge, listDeadends } from '../runtime/knowledge.js';
@@ -303,6 +306,40 @@ export async function contextUsageReport(startPath, options = {}) {
303
306
  export async function recordContextUse(startPath, input) {
304
307
  return recordUse(startPath, input);
305
308
  }
309
+ export { inspectRecipe, inspectSkill, listRecipes, listSkills };
310
+ export async function proposeContextEvolution(startPath, input = {}) {
311
+ return proposeEvolution(startPath, input);
312
+ }
313
+ export async function listContextEvolutionProposals(startPath) {
314
+ return listEvolutionProposals(startPath);
315
+ }
316
+ export async function inspectContextEvolutionProposal(startPath, proposalId) {
317
+ return inspectEvolutionProposal(startPath, proposalId);
318
+ }
319
+ export async function acceptContextEvolutionCandidate(startPath, input) {
320
+ return acceptEvolutionCandidate(startPath, input);
321
+ }
322
+ export async function transitionContextEvolutionProposal(startPath, input) {
323
+ return transitionEvolutionProposal(startPath, input);
324
+ }
325
+ export async function materializeContextRecipe(startPath, input) {
326
+ return materializeRecipe(startPath, input);
327
+ }
328
+ export async function transitionContextRecipe(startPath, input) {
329
+ return transitionRecipe(startPath, input);
330
+ }
331
+ export async function materializeContextSkill(startPath, input) {
332
+ return materializeSkill(startPath, input);
333
+ }
334
+ export async function transitionContextSkill(startPath, input) {
335
+ return transitionSkill(startPath, input);
336
+ }
337
+ export async function recordContextSkillInvocation(startPath, input) {
338
+ return recordSkillInvocation(startPath, input);
339
+ }
340
+ export async function recordContextSkillOutcome(startPath, input) {
341
+ return recordSkillOutcome(startPath, input);
342
+ }
306
343
  export async function searchContext(startPath, query, options = {}) {
307
344
  const projectRoot = await resolveProjectRoot(startPath);
308
345
  const cleanQuery = query.trim();
@@ -1,7 +1,12 @@
1
1
  export * from './api.js';
2
+ export type { MaterializeRecipeInput, TransitionRecipeInput, } from '../cognition/recipes.js';
3
+ export type { MaterializeSkillInput, RecordSkillInvocationInput, RecordSkillOutcomeInput, TransitionSkillInput, } from '../cognition/skills.js';
4
+ export type { AcceptEvolutionCandidateInput, ProposeEvolutionInput, ProposeEvolutionResult, TransitionEvolutionProposalInput, } from '../cognition/evolution.js';
5
+ export type { EvolutionCandidateArtifact, EvolutionLineageReference, EvolutionProposal, EvolutionProposalState, Experience, } from '../cognition/types.js';
2
6
  export type { ContextOrientContext, ContextUseInput, ContextOrientExplanation, ContextOrientNoContextResult, ContextOrientOptions, ContextOrientReadyResult, ContextOrientResult, ContextOrientSnapshot, } from './types.js';
3
7
  export type { AgentLoadOptions, AgentLoadResult, AgentSaveResult, ContextSearchHit, ContextSearchOptions, ContextSearchResult, } from '../runtime/types.js';
4
8
  export { contextCompile } from './api.js';
5
9
  export { compileContext } from '../compiler/compile.js';
6
10
  export { canonicalJson, contentHash, estimateTokens, rebuildManifestHash, validateManifestIdentity } from '../compiler/identity.js';
7
- export type { ContextActivityRecord, ContextAnchor, ContextBudget, ContextBudgetReport, ContextCandidate, ContextCandidateSection, ContextCompileOptions, ContextExpandInput, ContextExpandLevel, ContextExpandResult, ContextExclusion, ContextExclusionReason, ContextIntent, ContextIntentSignal, ContextLevel, ContextManifest, ContextProvenance, ContextScenario, ContextSourceDescriptor, ContextTruncation, } from '../compiler/types.js';
11
+ export type { ContextActivityRecord, ContextAnchor, ContextBudget, ContextBudgetReport, ContextCandidate, ContextCandidateSection, ContextCompileOptions, ContextRecipeParticipation, ContextExpandInput, ContextExpandLevel, ContextExpandResult, ContextExclusion, ContextExclusionReason, ContextIntent, ContextIntentSignal, ContextLevel, ContextManifest, ContextProvenance, ContextScenario, ContextSourceDescriptor, ContextTruncation, } from '../compiler/types.js';
12
+ export type { CompilerRecipe, CompilerRecipeState } from '../cognition/types.js';