cognitive-core 0.2.0 → 0.2.2
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/.claude/settings.json +111 -2
- package/.sessionlog/settings.json +4 -0
- package/dist/atlas.d.ts +10 -0
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +65 -0
- package/dist/atlas.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/index.d.ts +1 -1
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/pipeline.d.ts +4 -31
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +12 -64
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +30 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -1
- package/dist/learning/unified-pipeline.js +207 -0
- package/dist/learning/unified-pipeline.js.map +1 -1
- package/dist/memory/candidate-retrieval.d.ts.map +1 -1
- package/dist/memory/candidate-retrieval.js +3 -1
- package/dist/memory/candidate-retrieval.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +21 -4
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +53 -16
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/playbook.d.ts +6 -0
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +15 -0
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/source-resolver.d.ts +120 -0
- package/dist/memory/source-resolver.d.ts.map +1 -0
- package/dist/memory/source-resolver.js +300 -0
- package/dist/memory/source-resolver.js.map +1 -0
- package/dist/types/config.d.ts +141 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/error-classifier.js +8 -8
- package/dist/utils/error-classifier.js.map +1 -1
- package/dist/workspace/efficacy-toolkit.d.ts +164 -0
- package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
- package/dist/workspace/efficacy-toolkit.js +281 -0
- package/dist/workspace/efficacy-toolkit.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +3 -1
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/templates/index.d.ts +3 -0
- package/dist/workspace/templates/index.d.ts.map +1 -1
- package/dist/workspace/templates/index.js +6 -0
- package/dist/workspace/templates/index.js.map +1 -1
- package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
- package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-decay-detection.js +197 -0
- package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
- package/dist/workspace/types.d.ts +12 -54
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +8 -2
- package/playbooks/compound-engineering/adversarial-review.json +51 -0
- package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
- package/playbooks/compound-engineering/agent-native-review.json +54 -0
- package/playbooks/compound-engineering/api-contract-review.json +52 -0
- package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
- package/playbooks/compound-engineering/bug-reproduction.json +62 -0
- package/playbooks/compound-engineering/confidence-calibration.json +49 -0
- package/playbooks/compound-engineering/correctness-review.json +49 -0
- package/playbooks/compound-engineering/data-migration-safety.json +59 -0
- package/playbooks/compound-engineering/deployment-verification.json +63 -0
- package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
- package/playbooks/compound-engineering/implementation-planning.json +64 -0
- package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
- package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
- package/playbooks/compound-engineering/learnings-research.json +54 -0
- package/playbooks/compound-engineering/maintainability-review.json +49 -0
- package/playbooks/compound-engineering/performance-review.json +54 -0
- package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
- package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
- package/playbooks/compound-engineering/project-standards-review.json +52 -0
- package/playbooks/compound-engineering/reliability-review.json +53 -0
- package/playbooks/compound-engineering/review-orchestration.json +64 -0
- package/playbooks/compound-engineering/security-review.json +54 -0
- package/playbooks/compound-engineering/systematic-execution.json +64 -0
- package/playbooks/compound-engineering/testing-review.json +50 -0
- package/src/atlas.ts +96 -0
- package/src/index.ts +27 -0
- package/src/learning/index.ts +1 -0
- package/src/learning/unified-pipeline.ts +271 -1
- package/src/memory/candidate-retrieval.ts +2 -1
- package/src/memory/curated-loader.ts +69 -16
- package/src/memory/index.ts +16 -0
- package/src/memory/playbook.ts +19 -0
- package/src/memory/source-resolver.ts +422 -0
- package/src/types/config.ts +46 -0
- package/src/types/index.ts +4 -0
- package/src/utils/error-classifier.ts +8 -8
- package/src/workspace/efficacy-toolkit.ts +496 -0
- package/src/workspace/index.ts +29 -0
- package/src/workspace/templates/index.ts +24 -0
- package/src/workspace/templates/playbook-decay-detection.ts +272 -0
- package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
- package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
- package/src/workspace/types.ts +22 -78
- package/tests/fixtures/behavioral-trajectories.ts +210 -0
- package/tests/integration/curated-sources-e2e.test.ts +502 -0
- package/tests/integration/pipeline-data-correctness.test.ts +794 -0
- package/tests/learning/meta-learner.test.ts +418 -0
- package/tests/learning/pipeline-memory-updates.test.ts +721 -0
- package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
- package/tests/memory/candidate-retrieval.test.ts +167 -0
- package/tests/memory/compound-engineering-seed.test.ts +338 -0
- package/tests/memory/curated-loader-extended.test.ts +225 -0
- package/tests/memory/meta.test.ts +399 -0
- package/tests/memory/playbook-quality-validation.test.ts +430 -0
- package/tests/memory/source-resolver.test.ts +700 -0
- package/tests/search/evaluator.test.ts +257 -0
- package/tests/search/verification-runner.test.ts +357 -0
- package/tests/utils/error-classifier.test.ts +149 -0
- package/tests/utils/trajectory-helpers.test.ts +163 -0
- package/tests/workspace/efficacy-toolkit.test.ts +404 -0
- package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
- package/.claude/settings.local.json +0 -11
- package/dist/learning/llm-extractor.d.ts +0 -88
- package/dist/learning/llm-extractor.d.ts.map +0 -1
- package/dist/learning/llm-extractor.js +0 -372
- package/dist/learning/llm-extractor.js.map +0 -1
- package/dist/learning/loop-coordinator.d.ts +0 -61
- package/dist/learning/loop-coordinator.d.ts.map +0 -1
- package/dist/learning/loop-coordinator.js +0 -96
- package/dist/learning/loop-coordinator.js.map +0 -1
- package/references/agent-workspace/CLAUDE.md +0 -74
- package/references/agent-workspace/README.md +0 -587
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +0 -2061
- package/references/agent-workspace/package.json +0 -54
- package/references/agent-workspace/src/handle.ts +0 -122
- package/references/agent-workspace/src/index.ts +0 -32
- package/references/agent-workspace/src/manager.ts +0 -102
- package/references/agent-workspace/src/readers/json.ts +0 -71
- package/references/agent-workspace/src/readers/markdown.ts +0 -37
- package/references/agent-workspace/src/readers/raw.ts +0 -27
- package/references/agent-workspace/src/types.ts +0 -68
- package/references/agent-workspace/src/validation.ts +0 -93
- package/references/agent-workspace/src/writers/json.ts +0 -17
- package/references/agent-workspace/src/writers/markdown.ts +0 -27
- package/references/agent-workspace/src/writers/raw.ts +0 -22
- package/references/agent-workspace/tests/errors.test.ts +0 -652
- package/references/agent-workspace/tests/handle.test.ts +0 -144
- package/references/agent-workspace/tests/manager.test.ts +0 -124
- package/references/agent-workspace/tests/readers.test.ts +0 -205
- package/references/agent-workspace/tests/validation.test.ts +0 -196
- package/references/agent-workspace/tests/writers.test.ts +0 -108
- package/references/agent-workspace/tsconfig.json +0 -20
- package/references/agent-workspace/tsup.config.ts +0 -9
- package/references/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -556
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -60
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
- package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
- package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -19
- package/references/skill-tree/.sudocode/specs.jsonl +0 -3
- package/references/skill-tree/CLAUDE.md +0 -126
- package/references/skill-tree/README.md +0 -372
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -164
- package/references/skill-tree/package-lock.json +0 -1852
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playbook Lifecycle Review Template
|
|
3
|
+
*
|
|
4
|
+
* Portfolio-wide health assessment with lifecycle recommendations.
|
|
5
|
+
* Uses the efficacy toolkit's portfolio snapshot to give the agent
|
|
6
|
+
* a pre-computed view of the entire playbook portfolio, then asks
|
|
7
|
+
* for promotion, deprecation, merge, and evolution recommendations.
|
|
8
|
+
*
|
|
9
|
+
* This is the "skill designer" review step (inspired by MemSkill)
|
|
10
|
+
* that periodically evaluates the whole portfolio.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { WorkspaceHandle } from 'agent-workspace';
|
|
14
|
+
import type { Playbook } from '../../types/index.js';
|
|
15
|
+
import type { TaskAnnotation, PlaybookEffectivenessEntry } from '../../learning/effectiveness.js';
|
|
16
|
+
import type {
|
|
17
|
+
AgenticTaskTemplate,
|
|
18
|
+
AnalysisComplexity,
|
|
19
|
+
} from '../types.js';
|
|
20
|
+
import {
|
|
21
|
+
buildPortfolioSnapshot,
|
|
22
|
+
type PortfolioSnapshot,
|
|
23
|
+
} from '../efficacy-toolkit.js';
|
|
24
|
+
|
|
25
|
+
// ============================================================
|
|
26
|
+
// Input / Output Types
|
|
27
|
+
// ============================================================
|
|
28
|
+
|
|
29
|
+
export interface PlaybookLifecycleReviewInput {
|
|
30
|
+
playbooks: Playbook[];
|
|
31
|
+
annotations: TaskAnnotation[];
|
|
32
|
+
playbookEffectiveness: PlaybookEffectivenessEntry[];
|
|
33
|
+
unguidedSuccessRate: number;
|
|
34
|
+
trajectoryDomainMap: Map<string, string>;
|
|
35
|
+
/** Current core tier playbook IDs (from SkillLibrary) */
|
|
36
|
+
corePlaybookIds?: string[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface PlaybookLifecycleReviewOutput {
|
|
40
|
+
/** Pre-computed portfolio snapshot */
|
|
41
|
+
snapshot: PortfolioSnapshot;
|
|
42
|
+
/** Agent's lifecycle recommendations */
|
|
43
|
+
recommendations: LifecycleRecommendation[];
|
|
44
|
+
/** Portfolio-level strategic insights */
|
|
45
|
+
insights: string[];
|
|
46
|
+
/** Priority-ordered action plan */
|
|
47
|
+
actionPlan: string[];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface LifecycleRecommendation {
|
|
51
|
+
playbookId: string;
|
|
52
|
+
playbookName: string;
|
|
53
|
+
currentState: 'active' | 'core' | 'stale' | 'underperforming';
|
|
54
|
+
proposedState: 'promote-to-core' | 'keep-active' | 'deprecate' | 'archive'
|
|
55
|
+
| 'merge' | 'evolve' | 'split';
|
|
56
|
+
rationale: string;
|
|
57
|
+
/** For merge: target playbook */
|
|
58
|
+
mergeTarget?: { id: string; name: string };
|
|
59
|
+
/** For evolve: suggested guidance changes */
|
|
60
|
+
evolutionNotes?: string;
|
|
61
|
+
priority: 'high' | 'medium' | 'low';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ============================================================
|
|
65
|
+
// Template Implementation
|
|
66
|
+
// ============================================================
|
|
67
|
+
|
|
68
|
+
export const playbookLifecycleReviewTemplate: AgenticTaskTemplate<
|
|
69
|
+
PlaybookLifecycleReviewInput,
|
|
70
|
+
PlaybookLifecycleReviewOutput
|
|
71
|
+
> = {
|
|
72
|
+
taskType: 'playbook-lifecycle-review',
|
|
73
|
+
domain: 'meta-learning',
|
|
74
|
+
description: 'Portfolio-wide playbook health assessment with lifecycle recommendations',
|
|
75
|
+
|
|
76
|
+
assessComplexity(input: PlaybookLifecycleReviewInput): AnalysisComplexity {
|
|
77
|
+
if (input.playbooks.length === 0) return 'heuristic';
|
|
78
|
+
if (input.playbooks.length <= 3 && input.annotations.length < 10) return 'heuristic';
|
|
79
|
+
if (input.playbooks.length > 30) return 'thorough';
|
|
80
|
+
if (input.playbooks.length > 10) return 'standard';
|
|
81
|
+
return 'lightweight';
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
async heuristicFallback(input: PlaybookLifecycleReviewInput): Promise<PlaybookLifecycleReviewOutput> {
|
|
85
|
+
const snapshot = buildPortfolioSnapshot(
|
|
86
|
+
input.playbooks,
|
|
87
|
+
input.annotations,
|
|
88
|
+
input.playbookEffectiveness,
|
|
89
|
+
input.unguidedSuccessRate,
|
|
90
|
+
input.trajectoryDomainMap,
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
// Simple heuristic recommendations
|
|
94
|
+
const recommendations: LifecycleRecommendation[] = [];
|
|
95
|
+
|
|
96
|
+
for (const flag of snapshot.decaying) {
|
|
97
|
+
recommendations.push({
|
|
98
|
+
playbookId: flag.playbookId,
|
|
99
|
+
playbookName: flag.playbookName,
|
|
100
|
+
currentState: 'active',
|
|
101
|
+
proposedState: 'evolve',
|
|
102
|
+
rationale: flag.reason,
|
|
103
|
+
priority: 'high',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const flag of snapshot.stale) {
|
|
108
|
+
recommendations.push({
|
|
109
|
+
playbookId: flag.playbookId,
|
|
110
|
+
playbookName: flag.playbookName,
|
|
111
|
+
currentState: 'stale',
|
|
112
|
+
proposedState: 'archive',
|
|
113
|
+
rationale: flag.reason,
|
|
114
|
+
priority: 'medium',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
snapshot,
|
|
120
|
+
recommendations,
|
|
121
|
+
insights: [],
|
|
122
|
+
actionPlan: recommendations.map(r =>
|
|
123
|
+
`${r.proposedState} "${r.playbookName}" — ${r.rationale}`
|
|
124
|
+
),
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
async prepareWorkspace(
|
|
129
|
+
input: PlaybookLifecycleReviewInput,
|
|
130
|
+
handle: WorkspaceHandle
|
|
131
|
+
): Promise<void> {
|
|
132
|
+
const snapshot = buildPortfolioSnapshot(
|
|
133
|
+
input.playbooks,
|
|
134
|
+
input.annotations,
|
|
135
|
+
input.playbookEffectiveness,
|
|
136
|
+
input.unguidedSuccessRate,
|
|
137
|
+
input.trajectoryDomainMap,
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
// Portfolio snapshot — the core data
|
|
141
|
+
await handle.writeJson('input', 'portfolio-snapshot.json', snapshot);
|
|
142
|
+
|
|
143
|
+
// Per-playbook summaries for the agent to reference
|
|
144
|
+
const playbookSummaries = input.playbooks.map(pb => ({
|
|
145
|
+
id: pb.id,
|
|
146
|
+
name: pb.name,
|
|
147
|
+
confidence: pb.confidence,
|
|
148
|
+
successCount: pb.evolution.successCount,
|
|
149
|
+
failureCount: pb.evolution.failureCount,
|
|
150
|
+
successRate: pb.evolution.successCount + pb.evolution.failureCount > 0
|
|
151
|
+
? pb.evolution.successCount / (pb.evolution.successCount + pb.evolution.failureCount)
|
|
152
|
+
: 0,
|
|
153
|
+
domains: pb.applicability.domains,
|
|
154
|
+
strategy: pb.guidance.strategy,
|
|
155
|
+
tacticsCount: pb.guidance.tactics.length,
|
|
156
|
+
refinementsCount: pb.evolution.refinements.length,
|
|
157
|
+
version: pb.evolution.version,
|
|
158
|
+
lastUsed: pb.evolution.lastUsed,
|
|
159
|
+
isCore: input.corePlaybookIds?.includes(pb.id) ?? false,
|
|
160
|
+
consolidationStrength: pb.evolution.consolidationStrength ?? 0,
|
|
161
|
+
}));
|
|
162
|
+
|
|
163
|
+
await handle.writeJson('input', 'playbook-summaries.json', playbookSummaries);
|
|
164
|
+
|
|
165
|
+
// Redundancy pairs (pre-computed by toolkit)
|
|
166
|
+
if (snapshot.redundant.length > 0) {
|
|
167
|
+
await handle.writeJson('input', 'redundancy-pairs.json', snapshot.redundant);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
buildTaskPrompt(input: PlaybookLifecycleReviewInput): string {
|
|
172
|
+
return [
|
|
173
|
+
`Review the health of the entire playbook portfolio (${input.playbooks.length} playbooks).`,
|
|
174
|
+
'',
|
|
175
|
+
'Read:',
|
|
176
|
+
'- input/portfolio-snapshot.json — Portfolio health metrics, flagged issues (decaying, stale, low adoption, redundant)',
|
|
177
|
+
'- input/playbook-summaries.json — Per-playbook summaries with confidence, success rates, domains',
|
|
178
|
+
'- input/redundancy-pairs.json — (if present) Playbook pairs with high content overlap',
|
|
179
|
+
'',
|
|
180
|
+
'For each playbook, recommend a lifecycle action:',
|
|
181
|
+
'- **promote-to-core**: High confidence + success rate, proven across tasks',
|
|
182
|
+
'- **keep-active**: Performing well, no changes needed',
|
|
183
|
+
'- **evolve**: Decent foundation but guidance needs updating based on failure patterns',
|
|
184
|
+
'- **merge**: Two playbooks cover the same ground — merge into one stronger playbook',
|
|
185
|
+
'- **split**: One playbook covers too many domains — split into domain-specific variants',
|
|
186
|
+
'- **deprecate**: Low value, actively misleading, or superseded',
|
|
187
|
+
'- **archive**: No longer relevant but worth preserving for reference',
|
|
188
|
+
'',
|
|
189
|
+
'Also provide:',
|
|
190
|
+
'- Strategic insights about the portfolio (coverage gaps, over-invested domains, etc.)',
|
|
191
|
+
'- A priority-ordered action plan (most impactful changes first)',
|
|
192
|
+
'',
|
|
193
|
+
'Write to output/lifecycle-review.json:',
|
|
194
|
+
'```json',
|
|
195
|
+
'{',
|
|
196
|
+
' "recommendations": [',
|
|
197
|
+
' {',
|
|
198
|
+
' "playbookId": "id",',
|
|
199
|
+
' "playbookName": "name",',
|
|
200
|
+
' "currentState": "active" | "core" | "stale" | "underperforming",',
|
|
201
|
+
' "proposedState": "promote-to-core" | "keep-active" | "deprecate" | "archive" | "merge" | "evolve" | "split",',
|
|
202
|
+
' "rationale": "why this change",',
|
|
203
|
+
' "mergeTarget": { "id": "...", "name": "..." },',
|
|
204
|
+
' "evolutionNotes": "optional: what to change in guidance",',
|
|
205
|
+
' "priority": "high" | "medium" | "low"',
|
|
206
|
+
' }',
|
|
207
|
+
' ],',
|
|
208
|
+
' "insights": ["insight1", "insight2"],',
|
|
209
|
+
' "actionPlan": ["step1", "step2"]',
|
|
210
|
+
'}',
|
|
211
|
+
'```',
|
|
212
|
+
].join('\n');
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
getSkills() { return []; },
|
|
216
|
+
getResources() { return []; },
|
|
217
|
+
|
|
218
|
+
outputConfig: {
|
|
219
|
+
files: [
|
|
220
|
+
{
|
|
221
|
+
path: 'lifecycle-review.json',
|
|
222
|
+
format: 'json' as const,
|
|
223
|
+
required: true,
|
|
224
|
+
description: 'Playbook lifecycle review results',
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
async collectOutput(handle: WorkspaceHandle): Promise<PlaybookLifecycleReviewOutput> {
|
|
230
|
+
const raw = await handle.readJson('output', 'lifecycle-review.json') as Record<string, unknown>;
|
|
231
|
+
const snapshot = await handle.readJson('input', 'portfolio-snapshot.json') as PortfolioSnapshot;
|
|
232
|
+
|
|
233
|
+
const recommendations: LifecycleRecommendation[] = Array.isArray(raw.recommendations)
|
|
234
|
+
? (raw.recommendations as Record<string, unknown>[]).map(r => {
|
|
235
|
+
const mergeTarget = r.mergeTarget as Record<string, unknown> | undefined;
|
|
236
|
+
return {
|
|
237
|
+
playbookId: String(r.playbookId ?? ''),
|
|
238
|
+
playbookName: String(r.playbookName ?? ''),
|
|
239
|
+
currentState: String(r.currentState ?? 'active') as LifecycleRecommendation['currentState'],
|
|
240
|
+
proposedState: String(r.proposedState ?? 'keep-active') as LifecycleRecommendation['proposedState'],
|
|
241
|
+
rationale: String(r.rationale ?? ''),
|
|
242
|
+
mergeTarget: mergeTarget
|
|
243
|
+
? { id: String(mergeTarget.id ?? ''), name: String(mergeTarget.name ?? '') }
|
|
244
|
+
: undefined,
|
|
245
|
+
evolutionNotes: r.evolutionNotes ? String(r.evolutionNotes) : undefined,
|
|
246
|
+
priority: String(r.priority ?? 'medium') as LifecycleRecommendation['priority'],
|
|
247
|
+
};
|
|
248
|
+
})
|
|
249
|
+
: [];
|
|
250
|
+
|
|
251
|
+
return {
|
|
252
|
+
snapshot,
|
|
253
|
+
recommendations,
|
|
254
|
+
insights: Array.isArray(raw.insights) ? raw.insights.map(String) : [],
|
|
255
|
+
actionPlan: Array.isArray(raw.actionPlan) ? raw.actionPlan.map(String) : [],
|
|
256
|
+
};
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
async processOutput(): Promise<void> {
|
|
260
|
+
// Caller decides how to act on lifecycle recommendations
|
|
261
|
+
},
|
|
262
|
+
|
|
263
|
+
getComputeRequirements(_input, complexity) {
|
|
264
|
+
return {
|
|
265
|
+
mode: 'local' as const,
|
|
266
|
+
complexity,
|
|
267
|
+
timeout: complexity === 'thorough' ? 240_000 : 120_000,
|
|
268
|
+
};
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
agentType: 'claude-code',
|
|
272
|
+
timeout: 180_000,
|
|
273
|
+
captureToolCalls: true,
|
|
274
|
+
};
|
package/src/workspace/types.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
TaskTemplate,
|
|
3
|
+
TaskComplexity,
|
|
4
|
+
SkillSpec,
|
|
5
|
+
ResourceSpec as BaseResourceSpec,
|
|
6
|
+
} from 'agent-workspace';
|
|
2
7
|
import type { MemorySystem, MemoryQueryResultV2 } from '../memory/system.js';
|
|
3
8
|
import type { Trajectory } from '../types/index.js';
|
|
4
9
|
import type { ComputeRequirements } from '../runtime/compute-provider.js';
|
|
5
10
|
|
|
6
11
|
// Re-export agent-workspace types used by consumers
|
|
7
12
|
export type { WorkspaceHandle, OutputSpec, OutputFileSpec, ValidationResult } from 'agent-workspace';
|
|
13
|
+
export type { TaskTemplate, TaskComplexity, SkillSpec, TaskRunner, TaskResult, AgentBackend, AgentSpawnConfig, AgentResult, TaskRunnerHooks, TaskRunnerConfig } from 'agent-workspace';
|
|
8
14
|
|
|
9
15
|
// ============================================================
|
|
10
16
|
// Agent Skills
|
|
@@ -12,13 +18,9 @@ export type { WorkspaceHandle, OutputSpec, OutputFileSpec, ValidationResult } fr
|
|
|
12
18
|
|
|
13
19
|
/**
|
|
14
20
|
* Skill to load into workspace skills/ directory.
|
|
15
|
-
*
|
|
21
|
+
* Extends agent-workspace's SkillSpec with source tracking.
|
|
16
22
|
*/
|
|
17
|
-
export interface AgentSkillSpec {
|
|
18
|
-
/** Skill directory name */
|
|
19
|
-
name: string;
|
|
20
|
-
/** SKILL.md content */
|
|
21
|
-
content: string;
|
|
23
|
+
export interface AgentSkillSpec extends SkillSpec {
|
|
22
24
|
/** Source of this skill */
|
|
23
25
|
source: 'playbook-conversion' | 'curated' | 'extracted';
|
|
24
26
|
}
|
|
@@ -29,14 +31,9 @@ export interface AgentSkillSpec {
|
|
|
29
31
|
|
|
30
32
|
/**
|
|
31
33
|
* Supplementary resource to load into workspace resources/ directory.
|
|
34
|
+
* Extends agent-workspace's ResourceSpec with description.
|
|
32
35
|
*/
|
|
33
|
-
export interface ResourceSpec {
|
|
34
|
-
/** Path relative to resources/ directory */
|
|
35
|
-
path: string;
|
|
36
|
-
/** How to populate this resource */
|
|
37
|
-
type: 'directory' | 'file' | 'symlink';
|
|
38
|
-
/** Source path (for symlink/copy) or content (for file) */
|
|
39
|
-
source: string;
|
|
36
|
+
export interface ResourceSpec extends BaseResourceSpec {
|
|
40
37
|
/** Description for the agent */
|
|
41
38
|
description?: string;
|
|
42
39
|
}
|
|
@@ -46,13 +43,9 @@ export interface ResourceSpec {
|
|
|
46
43
|
// ============================================================
|
|
47
44
|
|
|
48
45
|
/**
|
|
49
|
-
*
|
|
46
|
+
* Backward-compatible alias for agent-workspace's TaskComplexity.
|
|
50
47
|
*/
|
|
51
|
-
export type AnalysisComplexity =
|
|
52
|
-
| 'heuristic' // Use heuristicFallback(), no agent needed
|
|
53
|
-
| 'lightweight' // Agent with small budget, simple workspace
|
|
54
|
-
| 'standard' // Agent with moderate budget, full workspace
|
|
55
|
-
| 'thorough'; // Agent with large budget, full workspace, more time
|
|
48
|
+
export type AnalysisComplexity = TaskComplexity;
|
|
56
49
|
|
|
57
50
|
// ============================================================
|
|
58
51
|
// Processing Context
|
|
@@ -81,34 +74,14 @@ export interface ProcessingContext {
|
|
|
81
74
|
/**
|
|
82
75
|
* Declarative recipe for an agentic analysis task.
|
|
83
76
|
*
|
|
77
|
+
* Extends agent-workspace's TaskTemplate with cognitive-core-specific hooks
|
|
78
|
+
* for memory injection, output processing, and compute requirements.
|
|
79
|
+
*
|
|
84
80
|
* TInput: the typed input data for this analysis
|
|
85
81
|
* TOutput: the typed output the agent produces
|
|
86
82
|
*/
|
|
87
|
-
export interface AgenticTaskTemplate<TInput, TOutput> {
|
|
88
|
-
|
|
89
|
-
taskType: string;
|
|
90
|
-
|
|
91
|
-
/** Domain for knowledge injection and meta-learning */
|
|
92
|
-
domain: string;
|
|
93
|
-
|
|
94
|
-
/** Human-readable description */
|
|
95
|
-
description: string;
|
|
96
|
-
|
|
97
|
-
// === WORKSPACE SETUP ===
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Prepare the workspace filesystem from typed input.
|
|
101
|
-
* Uses the WorkspaceHandle to write input files via typed I/O methods.
|
|
102
|
-
*/
|
|
103
|
-
prepareWorkspace(input: TInput, handle: WorkspaceHandle): Promise<void>;
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Build the task description for the agent.
|
|
107
|
-
* Natural language prompt explaining what to do and what output to produce.
|
|
108
|
-
*/
|
|
109
|
-
buildTaskPrompt(input: TInput): string;
|
|
110
|
-
|
|
111
|
-
// === SKILLS ===
|
|
83
|
+
export interface AgenticTaskTemplate<TInput, TOutput> extends TaskTemplate<TInput, TOutput> {
|
|
84
|
+
// === SKILLS (override with source tracking) ===
|
|
112
85
|
|
|
113
86
|
/**
|
|
114
87
|
* Skills to load into the workspace skills/ directory.
|
|
@@ -116,14 +89,14 @@ export interface AgenticTaskTemplate<TInput, TOutput> {
|
|
|
116
89
|
*/
|
|
117
90
|
getSkills(input: TInput): AgentSkillSpec[];
|
|
118
91
|
|
|
119
|
-
// === RESOURCES ===
|
|
92
|
+
// === RESOURCES (override with description) ===
|
|
120
93
|
|
|
121
94
|
/**
|
|
122
95
|
* Supplementary resources for the workspace resources/ directory.
|
|
123
96
|
*/
|
|
124
97
|
getResources(input: TInput): ResourceSpec[];
|
|
125
98
|
|
|
126
|
-
// === KNOWLEDGE ===
|
|
99
|
+
// === KNOWLEDGE (cognitive-core extension) ===
|
|
127
100
|
|
|
128
101
|
/**
|
|
129
102
|
* Additional memory queries beyond the automatic domain-scoped query.
|
|
@@ -133,17 +106,7 @@ export interface AgenticTaskTemplate<TInput, TOutput> {
|
|
|
133
106
|
memory: MemorySystem
|
|
134
107
|
): Promise<MemoryQueryResultV2>;
|
|
135
108
|
|
|
136
|
-
// === OUTPUT ===
|
|
137
|
-
|
|
138
|
-
/** Configuration defining the expected output shape */
|
|
139
|
-
outputConfig: OutputSpec;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Read and validate agent output from workspace.
|
|
143
|
-
* Uses the WorkspaceHandle to read output via typed I/O methods.
|
|
144
|
-
* Returns typed output or throws if validation fails.
|
|
145
|
-
*/
|
|
146
|
-
collectOutput(handle: WorkspaceHandle): Promise<TOutput>;
|
|
109
|
+
// === OUTPUT PROCESSING (cognitive-core extension) ===
|
|
147
110
|
|
|
148
111
|
/**
|
|
149
112
|
* Process the validated output — store results, accumulate for batch learning, etc.
|
|
@@ -154,31 +117,12 @@ export interface AgenticTaskTemplate<TInput, TOutput> {
|
|
|
154
117
|
context: ProcessingContext
|
|
155
118
|
): Promise<void>;
|
|
156
119
|
|
|
157
|
-
// === COMPLEXITY ASSESSMENT ===
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Assess whether this input needs agentic analysis or heuristic fallback.
|
|
161
|
-
*/
|
|
162
|
-
assessComplexity(input: TInput): AnalysisComplexity;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Heuristic fallback for simple cases.
|
|
166
|
-
* Called when assessComplexity returns 'heuristic'.
|
|
167
|
-
*/
|
|
168
|
-
heuristicFallback?(input: TInput): Promise<TOutput>;
|
|
169
|
-
|
|
170
120
|
// === CONFIGURATION ===
|
|
171
121
|
|
|
172
|
-
/** Agent type to spawn (default: 'claude-code') */
|
|
173
|
-
agentType?: string;
|
|
174
|
-
|
|
175
|
-
/** Timeout for the analysis agent (default: 120_000ms) */
|
|
176
|
-
timeout?: number;
|
|
177
|
-
|
|
178
122
|
/** Whether to capture detailed tool calls (default: true) */
|
|
179
123
|
captureToolCalls?: boolean;
|
|
180
124
|
|
|
181
|
-
// === COMPUTE ===
|
|
125
|
+
// === COMPUTE (cognitive-core extension) ===
|
|
182
126
|
|
|
183
127
|
/**
|
|
184
128
|
* Static compute requirements for this template.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story-based trajectory fixtures for behavioral tests.
|
|
3
|
+
*
|
|
4
|
+
* Each factory produces a realistic trajectory with semantically meaningful
|
|
5
|
+
* steps — the kind of thing an agent actually does when solving a task.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createTrajectory, type Trajectory } from '../../src/types/trajectory.js';
|
|
9
|
+
import { createTask } from '../../src/types/task.js';
|
|
10
|
+
import { createStep } from '../../src/types/step.js';
|
|
11
|
+
import { successOutcome, failureOutcome } from '../../src/types/outcome.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Successful "fix broken TypeScript import" trajectory.
|
|
15
|
+
* Steps: read file → identify wrong path → edit import → run tsc → pass.
|
|
16
|
+
*/
|
|
17
|
+
export function makeTypescriptImportFix(variant: number): Trajectory {
|
|
18
|
+
const files = ['routes.ts', 'utils.ts', 'handler.ts', 'service.ts', 'controller.ts', 'middleware.ts'];
|
|
19
|
+
const file = files[variant % files.length];
|
|
20
|
+
return createTrajectory({
|
|
21
|
+
task: createTask({
|
|
22
|
+
domain: 'typescript',
|
|
23
|
+
description: `Fix broken TypeScript import in src/${file}`,
|
|
24
|
+
}),
|
|
25
|
+
steps: [
|
|
26
|
+
createStep({
|
|
27
|
+
thought: `Check the import statements in ${file}`,
|
|
28
|
+
action: `ReadFile src/${file}`,
|
|
29
|
+
observation: `import { UserService } from "./services/user"\n// TS2307: Cannot find module './services/user'`,
|
|
30
|
+
}),
|
|
31
|
+
createStep({
|
|
32
|
+
thought: 'The import path is missing the .js extension required by ESM',
|
|
33
|
+
action: `EditFile src/${file}`,
|
|
34
|
+
observation: `Updated: import { UserService } from "./services/user.js"`,
|
|
35
|
+
}),
|
|
36
|
+
createStep({
|
|
37
|
+
thought: 'Verify the fix compiles',
|
|
38
|
+
action: 'Bash tsc --noEmit',
|
|
39
|
+
observation: 'Compilation successful. No errors found.',
|
|
40
|
+
}),
|
|
41
|
+
],
|
|
42
|
+
outcome: successOutcome(`Fixed ESM import extension in src/${file}`),
|
|
43
|
+
agentId: 'test-agent',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Successful "fix Python type error" trajectory.
|
|
49
|
+
* Steps: read traceback → identify wrong type → edit function → run pytest → pass.
|
|
50
|
+
*/
|
|
51
|
+
export function makePythonTypeFix(variant: number): Trajectory {
|
|
52
|
+
const files = ['api.py', 'models.py', 'views.py', 'serializers.py', 'utils.py'];
|
|
53
|
+
const file = files[variant % files.length];
|
|
54
|
+
return createTrajectory({
|
|
55
|
+
task: createTask({
|
|
56
|
+
domain: 'python',
|
|
57
|
+
description: `Fix Python type error in ${file}`,
|
|
58
|
+
}),
|
|
59
|
+
steps: [
|
|
60
|
+
createStep({
|
|
61
|
+
thought: `Read the failing file ${file}`,
|
|
62
|
+
action: `ReadFile ${file}`,
|
|
63
|
+
observation: `def process_items(items: list[str]) -> int:\n return items.count`,
|
|
64
|
+
}),
|
|
65
|
+
createStep({
|
|
66
|
+
thought: 'The function returns the method reference instead of calling it',
|
|
67
|
+
action: `EditFile ${file}`,
|
|
68
|
+
observation: `Updated: return items.count() # was missing parentheses`,
|
|
69
|
+
}),
|
|
70
|
+
createStep({
|
|
71
|
+
thought: 'Run the tests to verify',
|
|
72
|
+
action: 'Bash pytest -x',
|
|
73
|
+
observation: '5 passed in 0.3s',
|
|
74
|
+
}),
|
|
75
|
+
],
|
|
76
|
+
outcome: successOutcome(`Fixed missing parentheses in ${file}`),
|
|
77
|
+
agentId: 'test-agent',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Failed "fix authentication bypass" trajectory.
|
|
83
|
+
* Steps: read auth code → attempt fix → tests still fail.
|
|
84
|
+
*/
|
|
85
|
+
export function makeFailedAuthFix(errorDetail: string): Trajectory {
|
|
86
|
+
return createTrajectory({
|
|
87
|
+
task: createTask({
|
|
88
|
+
domain: 'security',
|
|
89
|
+
description: 'Fix authentication bypass vulnerability in auth middleware',
|
|
90
|
+
}),
|
|
91
|
+
steps: [
|
|
92
|
+
createStep({
|
|
93
|
+
thought: 'Read the auth middleware to understand the vulnerability',
|
|
94
|
+
action: 'ReadFile src/middleware/auth.ts',
|
|
95
|
+
observation: 'JWT token validation skips expiry check when token has admin role',
|
|
96
|
+
}),
|
|
97
|
+
createStep({
|
|
98
|
+
thought: 'Add expiry validation for all tokens regardless of role',
|
|
99
|
+
action: 'EditFile src/middleware/auth.ts',
|
|
100
|
+
observation: 'Added: if (isTokenExpired(token)) throw new AuthError("expired")',
|
|
101
|
+
}),
|
|
102
|
+
createStep({
|
|
103
|
+
thought: 'Run the security test suite',
|
|
104
|
+
action: 'Bash npm run test:security',
|
|
105
|
+
observation: `FAIL: ${errorDetail}`,
|
|
106
|
+
}),
|
|
107
|
+
],
|
|
108
|
+
outcome: failureOutcome(errorDetail),
|
|
109
|
+
agentId: 'test-agent',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Successful Kubernetes deployment — completely different domain.
|
|
115
|
+
*/
|
|
116
|
+
export function makeKubernetesDeploy(): Trajectory {
|
|
117
|
+
return createTrajectory({
|
|
118
|
+
task: createTask({
|
|
119
|
+
domain: 'devops',
|
|
120
|
+
description: 'Deploy updated API service to Kubernetes staging cluster',
|
|
121
|
+
}),
|
|
122
|
+
steps: [
|
|
123
|
+
createStep({
|
|
124
|
+
thought: 'Check current deployment status',
|
|
125
|
+
action: 'Bash kubectl get pods -n staging',
|
|
126
|
+
observation: 'api-service-7f8d9c 1/1 Running 0 12h',
|
|
127
|
+
}),
|
|
128
|
+
createStep({
|
|
129
|
+
thought: 'Apply the new deployment manifest',
|
|
130
|
+
action: 'Bash kubectl apply -f k8s/api-service.yaml',
|
|
131
|
+
observation: 'deployment.apps/api-service configured',
|
|
132
|
+
}),
|
|
133
|
+
createStep({
|
|
134
|
+
thought: 'Wait for rollout to complete',
|
|
135
|
+
action: 'Bash kubectl rollout status deployment/api-service -n staging',
|
|
136
|
+
observation: 'deployment "api-service" successfully rolled out',
|
|
137
|
+
}),
|
|
138
|
+
],
|
|
139
|
+
outcome: successOutcome('Deployed api-service v2.3.1 to staging'),
|
|
140
|
+
agentId: 'test-agent',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Inefficient trajectory with many repeated read actions.
|
|
146
|
+
* Useful for testing reflexion critique of wasted steps.
|
|
147
|
+
*/
|
|
148
|
+
export function makeInefficient(stepCount: number): Trajectory {
|
|
149
|
+
const steps = [];
|
|
150
|
+
for (let i = 0; i < stepCount; i++) {
|
|
151
|
+
steps.push(
|
|
152
|
+
createStep({
|
|
153
|
+
thought: `Check config again (attempt ${i + 1})`,
|
|
154
|
+
action: 'ReadFile src/config.ts',
|
|
155
|
+
observation: 'export const config = { debug: false, port: 3000 }',
|
|
156
|
+
}),
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
// Finally do the actual fix
|
|
160
|
+
steps.push(
|
|
161
|
+
createStep({
|
|
162
|
+
thought: 'After re-reading many times, change the debug flag',
|
|
163
|
+
action: 'EditFile src/config.ts',
|
|
164
|
+
observation: 'Updated: debug: true',
|
|
165
|
+
}),
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
return createTrajectory({
|
|
169
|
+
task: createTask({
|
|
170
|
+
domain: 'typescript',
|
|
171
|
+
description: 'Enable debug mode in application config',
|
|
172
|
+
}),
|
|
173
|
+
steps,
|
|
174
|
+
outcome: failureOutcome('Timed out after too many read operations'),
|
|
175
|
+
agentId: 'test-agent',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Successful trajectory with a specific solution description,
|
|
181
|
+
* useful for verifying causal edge extraction.
|
|
182
|
+
*/
|
|
183
|
+
export function makeSuccessfulWithSolution(
|
|
184
|
+
domain: string,
|
|
185
|
+
description: string,
|
|
186
|
+
solution: string,
|
|
187
|
+
): Trajectory {
|
|
188
|
+
return createTrajectory({
|
|
189
|
+
task: createTask({ domain, description }),
|
|
190
|
+
steps: [
|
|
191
|
+
createStep({
|
|
192
|
+
thought: 'Analyze the problem',
|
|
193
|
+
action: 'ReadFile src/main.ts',
|
|
194
|
+
observation: 'Found the issue',
|
|
195
|
+
}),
|
|
196
|
+
createStep({
|
|
197
|
+
thought: 'Apply the fix',
|
|
198
|
+
action: 'EditFile src/main.ts',
|
|
199
|
+
observation: 'File updated',
|
|
200
|
+
}),
|
|
201
|
+
createStep({
|
|
202
|
+
thought: 'Verify',
|
|
203
|
+
action: 'Bash npm test',
|
|
204
|
+
observation: 'All tests passed',
|
|
205
|
+
}),
|
|
206
|
+
],
|
|
207
|
+
outcome: successOutcome(solution),
|
|
208
|
+
agentId: 'test-agent',
|
|
209
|
+
});
|
|
210
|
+
}
|