@actrun_ai/tastekit-core 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/dist/compiler/compiler.d.ts +24 -0
- package/dist/compiler/compiler.d.ts.map +1 -0
- package/dist/compiler/compiler.js +153 -0
- package/dist/compiler/compiler.js.map +1 -0
- package/dist/compiler/constitution-compiler.d.ts +11 -0
- package/dist/compiler/constitution-compiler.d.ts.map +1 -0
- package/dist/compiler/constitution-compiler.js +154 -0
- package/dist/compiler/constitution-compiler.js.map +1 -0
- package/dist/compiler/derivation.d.ts +125 -0
- package/dist/compiler/derivation.d.ts.map +1 -0
- package/dist/compiler/derivation.js +109 -0
- package/dist/compiler/derivation.js.map +1 -0
- package/dist/compiler/guardrails-compiler.d.ts +11 -0
- package/dist/compiler/guardrails-compiler.d.ts.map +1 -0
- package/dist/compiler/guardrails-compiler.js +362 -0
- package/dist/compiler/guardrails-compiler.js.map +1 -0
- package/dist/compiler/index.d.ts +13 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +13 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/memory-compiler.d.ts +12 -0
- package/dist/compiler/memory-compiler.d.ts.map +1 -0
- package/dist/compiler/memory-compiler.js +293 -0
- package/dist/compiler/memory-compiler.js.map +1 -0
- package/dist/compiler/playbook-compiler.d.ts +15 -0
- package/dist/compiler/playbook-compiler.d.ts.map +1 -0
- package/dist/compiler/playbook-compiler.js +1143 -0
- package/dist/compiler/playbook-compiler.js.map +1 -0
- package/dist/compiler/skills-compiler.d.ts +15 -0
- package/dist/compiler/skills-compiler.d.ts.map +1 -0
- package/dist/compiler/skills-compiler.js +203 -0
- package/dist/compiler/skills-compiler.js.map +1 -0
- package/dist/domains/development-agent/domain.d.ts +8 -0
- package/dist/domains/development-agent/domain.d.ts.map +1 -0
- package/dist/domains/development-agent/domain.js +35 -0
- package/dist/domains/development-agent/domain.js.map +1 -0
- package/dist/domains/development-agent/index.d.ts +3 -0
- package/dist/domains/development-agent/index.d.ts.map +1 -0
- package/dist/domains/development-agent/index.js +3 -0
- package/dist/domains/development-agent/index.js.map +1 -0
- package/dist/domains/development-agent/rubric.d.ts +13 -0
- package/dist/domains/development-agent/rubric.d.ts.map +1 -0
- package/dist/domains/development-agent/rubric.js +451 -0
- package/dist/domains/development-agent/rubric.js.map +1 -0
- package/dist/domains/development-agent/skills/code-review.d.ts +25 -0
- package/dist/domains/development-agent/skills/code-review.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/code-review.js +146 -0
- package/dist/domains/development-agent/skills/code-review.js.map +1 -0
- package/dist/domains/development-agent/skills/debugging-issues.d.ts +25 -0
- package/dist/domains/development-agent/skills/debugging-issues.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/debugging-issues.js +155 -0
- package/dist/domains/development-agent/skills/debugging-issues.js.map +1 -0
- package/dist/domains/development-agent/skills/documenting-code.d.ts +19 -0
- package/dist/domains/development-agent/skills/documenting-code.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/documenting-code.js +92 -0
- package/dist/domains/development-agent/skills/documenting-code.js.map +1 -0
- package/dist/domains/development-agent/skills/index.d.ts +55 -0
- package/dist/domains/development-agent/skills/index.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/index.js +19 -0
- package/dist/domains/development-agent/skills/index.js.map +1 -0
- package/dist/domains/development-agent/skills/refactor-plan.d.ts +19 -0
- package/dist/domains/development-agent/skills/refactor-plan.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/refactor-plan.js +117 -0
- package/dist/domains/development-agent/skills/refactor-plan.js.map +1 -0
- package/dist/domains/development-agent/skills/writing-tests.d.ts +20 -0
- package/dist/domains/development-agent/skills/writing-tests.d.ts.map +1 -0
- package/dist/domains/development-agent/skills/writing-tests.js +93 -0
- package/dist/domains/development-agent/skills/writing-tests.js.map +1 -0
- package/dist/domains/general-agent/domain.d.ts +9 -0
- package/dist/domains/general-agent/domain.d.ts.map +1 -0
- package/dist/domains/general-agent/domain.js +36 -0
- package/dist/domains/general-agent/domain.js.map +1 -0
- package/dist/domains/general-agent/index.d.ts +4 -0
- package/dist/domains/general-agent/index.d.ts.map +1 -0
- package/dist/domains/general-agent/index.js +4 -0
- package/dist/domains/general-agent/index.js.map +1 -0
- package/dist/domains/general-agent/rubric.d.ts +8 -0
- package/dist/domains/general-agent/rubric.d.ts.map +1 -0
- package/dist/domains/general-agent/rubric.js +332 -0
- package/dist/domains/general-agent/rubric.js.map +1 -0
- package/dist/domains/general-agent/skills/context-synthesis.d.ts +19 -0
- package/dist/domains/general-agent/skills/context-synthesis.d.ts.map +1 -0
- package/dist/domains/general-agent/skills/context-synthesis.js +94 -0
- package/dist/domains/general-agent/skills/context-synthesis.js.map +1 -0
- package/dist/domains/general-agent/skills/index.d.ts +32 -0
- package/dist/domains/general-agent/skills/index.d.ts.map +1 -0
- package/dist/domains/general-agent/skills/index.js +11 -0
- package/dist/domains/general-agent/skills/index.js.map +1 -0
- package/dist/domains/general-agent/skills/task-orchestration.d.ts +19 -0
- package/dist/domains/general-agent/skills/task-orchestration.d.ts.map +1 -0
- package/dist/domains/general-agent/skills/task-orchestration.js +101 -0
- package/dist/domains/general-agent/skills/task-orchestration.js.map +1 -0
- package/dist/domains/index.d.ts +21 -0
- package/dist/domains/index.d.ts.map +1 -0
- package/dist/domains/index.js +37 -0
- package/dist/domains/index.js.map +1 -0
- package/dist/domains/types.d.ts +22 -0
- package/dist/domains/types.d.ts.map +1 -0
- package/dist/domains/types.js +2 -0
- package/dist/domains/types.js.map +1 -0
- package/dist/drift/consolidator.d.ts +47 -0
- package/dist/drift/consolidator.d.ts.map +1 -0
- package/dist/drift/consolidator.js +116 -0
- package/dist/drift/consolidator.js.map +1 -0
- package/dist/drift/detector.d.ts +79 -0
- package/dist/drift/detector.d.ts.map +1 -0
- package/dist/drift/detector.js +424 -0
- package/dist/drift/detector.js.map +1 -0
- package/dist/drift/index.d.ts +9 -0
- package/dist/drift/index.d.ts.map +1 -0
- package/dist/drift/index.js +9 -0
- package/dist/drift/index.js.map +1 -0
- package/dist/drift/proposal.d.ts +108 -0
- package/dist/drift/proposal.d.ts.map +1 -0
- package/dist/drift/proposal.js +2 -0
- package/dist/drift/proposal.js.map +1 -0
- package/dist/eval/index.d.ts +9 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +9 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/judge.d.ts +33 -0
- package/dist/eval/judge.d.ts.map +1 -0
- package/dist/eval/judge.js +209 -0
- package/dist/eval/judge.js.map +1 -0
- package/dist/eval/replay.d.ts +23 -0
- package/dist/eval/replay.d.ts.map +1 -0
- package/dist/eval/replay.js +42 -0
- package/dist/eval/replay.js.map +1 -0
- package/dist/eval/runner.d.ts +35 -0
- package/dist/eval/runner.d.ts.map +1 -0
- package/dist/eval/runner.js +52 -0
- package/dist/eval/runner.js.map +1 -0
- package/dist/generators/agents-md-generator.d.ts +9 -0
- package/dist/generators/agents-md-generator.d.ts.map +1 -0
- package/dist/generators/agents-md-generator.js +71 -0
- package/dist/generators/agents-md-generator.js.map +1 -0
- package/dist/generators/blocks/domain-context.d.ts +7 -0
- package/dist/generators/blocks/domain-context.d.ts.map +1 -0
- package/dist/generators/blocks/domain-context.js +26 -0
- package/dist/generators/blocks/domain-context.js.map +1 -0
- package/dist/generators/blocks/drift-awareness.d.ts +6 -0
- package/dist/generators/blocks/drift-awareness.d.ts.map +1 -0
- package/dist/generators/blocks/drift-awareness.js +28 -0
- package/dist/generators/blocks/drift-awareness.js.map +1 -0
- package/dist/generators/blocks/evaluation-criteria.d.ts +7 -0
- package/dist/generators/blocks/evaluation-criteria.d.ts.map +1 -0
- package/dist/generators/blocks/evaluation-criteria.js +18 -0
- package/dist/generators/blocks/evaluation-criteria.js.map +1 -0
- package/dist/generators/blocks/guardrails.d.ts +6 -0
- package/dist/generators/blocks/guardrails.d.ts.map +1 -0
- package/dist/generators/blocks/guardrails.js +44 -0
- package/dist/generators/blocks/guardrails.js.map +1 -0
- package/dist/generators/blocks/identity.d.ts +6 -0
- package/dist/generators/blocks/identity.d.ts.map +1 -0
- package/dist/generators/blocks/identity.js +36 -0
- package/dist/generators/blocks/identity.js.map +1 -0
- package/dist/generators/blocks/memory-policy.d.ts +6 -0
- package/dist/generators/blocks/memory-policy.d.ts.map +1 -0
- package/dist/generators/blocks/memory-policy.js +34 -0
- package/dist/generators/blocks/memory-policy.js.map +1 -0
- package/dist/generators/blocks/playbook-index.d.ts +7 -0
- package/dist/generators/blocks/playbook-index.d.ts.map +1 -0
- package/dist/generators/blocks/playbook-index.js +14 -0
- package/dist/generators/blocks/playbook-index.js.map +1 -0
- package/dist/generators/blocks/session-rhythm.d.ts +6 -0
- package/dist/generators/blocks/session-rhythm.d.ts.map +1 -0
- package/dist/generators/blocks/session-rhythm.js +11 -0
- package/dist/generators/blocks/session-rhythm.js.map +1 -0
- package/dist/generators/blocks/skills-index.d.ts +6 -0
- package/dist/generators/blocks/skills-index.d.ts.map +1 -0
- package/dist/generators/blocks/skills-index.js +36 -0
- package/dist/generators/blocks/skills-index.js.map +1 -0
- package/dist/generators/blocks/tool-usage.d.ts +6 -0
- package/dist/generators/blocks/tool-usage.d.ts.map +1 -0
- package/dist/generators/blocks/tool-usage.js +31 -0
- package/dist/generators/blocks/tool-usage.js.map +1 -0
- package/dist/generators/blocks/vocabulary.d.ts +7 -0
- package/dist/generators/blocks/vocabulary.d.ts.map +1 -0
- package/dist/generators/blocks/vocabulary.js +27 -0
- package/dist/generators/blocks/vocabulary.js.map +1 -0
- package/dist/generators/claude-hooks-compat.d.ts +33 -0
- package/dist/generators/claude-hooks-compat.d.ts.map +1 -0
- package/dist/generators/claude-hooks-compat.js +322 -0
- package/dist/generators/claude-hooks-compat.js.map +1 -0
- package/dist/generators/claude-md-generator.d.ts +12 -0
- package/dist/generators/claude-md-generator.d.ts.map +1 -0
- package/dist/generators/claude-md-generator.js +60 -0
- package/dist/generators/claude-md-generator.js.map +1 -0
- package/dist/generators/index.d.ts +11 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +11 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/soul-md-generator.d.ts +9 -0
- package/dist/generators/soul-md-generator.d.ts.map +1 -0
- package/dist/generators/soul-md-generator.js +104 -0
- package/dist/generators/soul-md-generator.js.map +1 -0
- package/dist/generators/types.d.ts +55 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +7 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/interview/index.d.ts +11 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +11 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/interviewer.d.ts +94 -0
- package/dist/interview/interviewer.d.ts.map +1 -0
- package/dist/interview/interviewer.js +516 -0
- package/dist/interview/interviewer.js.map +1 -0
- package/dist/interview/questions.d.ts +15 -0
- package/dist/interview/questions.d.ts.map +1 -0
- package/dist/interview/questions.js +86 -0
- package/dist/interview/questions.js.map +1 -0
- package/dist/interview/rubric.d.ts +265 -0
- package/dist/interview/rubric.d.ts.map +1 -0
- package/dist/interview/rubric.js +74 -0
- package/dist/interview/rubric.js.map +1 -0
- package/dist/interview/session.d.ts +9 -0
- package/dist/interview/session.d.ts.map +1 -0
- package/dist/interview/session.js +33 -0
- package/dist/interview/session.js.map +1 -0
- package/dist/interview/universal-rubric.d.ts +11 -0
- package/dist/interview/universal-rubric.d.ts.map +1 -0
- package/dist/interview/universal-rubric.js +165 -0
- package/dist/interview/universal-rubric.js.map +1 -0
- package/dist/llm/index.d.ts +8 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/provider.d.ts +62 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +24 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +18 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +56 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/ollama.d.ts +17 -0
- package/dist/llm/providers/ollama.d.ts.map +1 -0
- package/dist/llm/providers/ollama.js +45 -0
- package/dist/llm/providers/ollama.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +19 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +52 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/resolve.d.ts +11 -0
- package/dist/llm/resolve.d.ts.map +1 -0
- package/dist/llm/resolve.js +56 -0
- package/dist/llm/resolve.js.map +1 -0
- package/dist/mcp/binder.d.ts +28 -0
- package/dist/mcp/binder.d.ts.map +1 -0
- package/dist/mcp/binder.js +87 -0
- package/dist/mcp/binder.js.map +1 -0
- package/dist/mcp/client.d.ts +99 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +196 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/index.d.ts +9 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/inspector.d.ts +29 -0
- package/dist/mcp/inspector.d.ts.map +1 -0
- package/dist/mcp/inspector.js +44 -0
- package/dist/mcp/inspector.js.map +1 -0
- package/dist/schemas/bindings.d.ts +248 -0
- package/dist/schemas/bindings.d.ts.map +1 -0
- package/dist/schemas/bindings.js +34 -0
- package/dist/schemas/bindings.js.map +1 -0
- package/dist/schemas/constitution.d.ts +229 -0
- package/dist/schemas/constitution.d.ts.map +1 -0
- package/dist/schemas/constitution.js +47 -0
- package/dist/schemas/constitution.js.map +1 -0
- package/dist/schemas/evalpack.d.ts +322 -0
- package/dist/schemas/evalpack.d.ts.map +1 -0
- package/dist/schemas/evalpack.js +43 -0
- package/dist/schemas/evalpack.js.map +1 -0
- package/dist/schemas/guardrails.d.ts +171 -0
- package/dist/schemas/guardrails.d.ts.map +1 -0
- package/dist/schemas/guardrails.js +35 -0
- package/dist/schemas/guardrails.js.map +1 -0
- package/dist/schemas/index.d.ts +18 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/memory.d.ts +277 -0
- package/dist/schemas/memory.d.ts.map +1 -0
- package/dist/schemas/memory.js +42 -0
- package/dist/schemas/memory.js.map +1 -0
- package/dist/schemas/playbook.d.ts +270 -0
- package/dist/schemas/playbook.d.ts.map +1 -0
- package/dist/schemas/playbook.js +52 -0
- package/dist/schemas/playbook.js.map +1 -0
- package/dist/schemas/skills.d.ts +320 -0
- package/dist/schemas/skills.d.ts.map +1 -0
- package/dist/schemas/skills.js +84 -0
- package/dist/schemas/skills.js.map +1 -0
- package/dist/schemas/trace.d.ts +126 -0
- package/dist/schemas/trace.d.ts.map +1 -0
- package/dist/schemas/trace.js +70 -0
- package/dist/schemas/trace.js.map +1 -0
- package/dist/schemas/trust.d.ts +142 -0
- package/dist/schemas/trust.d.ts.map +1 -0
- package/dist/schemas/trust.js +30 -0
- package/dist/schemas/trust.js.map +1 -0
- package/dist/schemas/validators.d.ts +26 -0
- package/dist/schemas/validators.d.ts.map +1 -0
- package/dist/schemas/validators.js +79 -0
- package/dist/schemas/validators.js.map +1 -0
- package/dist/schemas/workspace.d.ts +725 -0
- package/dist/schemas/workspace.d.ts.map +1 -0
- package/dist/schemas/workspace.js +119 -0
- package/dist/schemas/workspace.js.map +1 -0
- package/dist/skills/constraints.d.ts +19 -0
- package/dist/skills/constraints.d.ts.map +1 -0
- package/dist/skills/constraints.js +91 -0
- package/dist/skills/constraints.js.map +1 -0
- package/dist/skills/generator.d.ts +13 -0
- package/dist/skills/generator.d.ts.map +1 -0
- package/dist/skills/generator.js +126 -0
- package/dist/skills/generator.js.map +1 -0
- package/dist/skills/graph.d.ts +42 -0
- package/dist/skills/graph.d.ts.map +1 -0
- package/dist/skills/graph.js +217 -0
- package/dist/skills/graph.js.map +1 -0
- package/dist/skills/index.d.ts +13 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +13 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/linter.d.ts +22 -0
- package/dist/skills/linter.d.ts.map +1 -0
- package/dist/skills/linter.js +201 -0
- package/dist/skills/linter.js.map +1 -0
- package/dist/skills/packer.d.ts +27 -0
- package/dist/skills/packer.d.ts.map +1 -0
- package/dist/skills/packer.js +72 -0
- package/dist/skills/packer.js.map +1 -0
- package/dist/skills/tracker.d.ts +27 -0
- package/dist/skills/tracker.d.ts.map +1 -0
- package/dist/skills/tracker.js +131 -0
- package/dist/skills/tracker.js.map +1 -0
- package/dist/skills/versioner.d.ts +19 -0
- package/dist/skills/versioner.d.ts.map +1 -0
- package/dist/skills/versioner.js +76 -0
- package/dist/skills/versioner.js.map +1 -0
- package/dist/tracing/index.d.ts +8 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +8 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/reader.d.ts +18 -0
- package/dist/tracing/reader.d.ts.map +1 -0
- package/dist/tracing/reader.js +34 -0
- package/dist/tracing/reader.js.map +1 -0
- package/dist/tracing/tracer.d.ts +22 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +105 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/trust/auditor.d.ts +35 -0
- package/dist/trust/auditor.d.ts.map +1 -0
- package/dist/trust/auditor.js +78 -0
- package/dist/trust/auditor.js.map +1 -0
- package/dist/trust/index.d.ts +8 -0
- package/dist/trust/index.d.ts.map +1 -0
- package/dist/trust/index.js +8 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/manager.d.ts +18 -0
- package/dist/trust/manager.d.ts.map +1 -0
- package/dist/trust/manager.js +60 -0
- package/dist/trust/manager.js.map +1 -0
- package/dist/utils/filesystem.d.ts +15 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +53 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/hash.d.ts +7 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +15 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/yaml.d.ts +6 -0
- package/dist/utils/yaml.d.ts.map +1 -0
- package/dist/utils/yaml.js +14 -0
- package/dist/utils/yaml.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { readFileIfExists, writeFileSafe, ensureDir } from '../utils/filesystem.js';
|
|
2
|
+
import { hashString } from '../utils/hash.js';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Skill Versioner — Track skill instruction history for rollback
|
|
6
|
+
*
|
|
7
|
+
* Stores version snapshots in .tastekit/skill-versions/{skill_id}.versions.json.
|
|
8
|
+
* Each version records content hash, timestamp, optional amendment ID, and eval score.
|
|
9
|
+
*/
|
|
10
|
+
const VERSIONS_DIR = 'skill-versions';
|
|
11
|
+
export class SkillVersioner {
|
|
12
|
+
basePath;
|
|
13
|
+
constructor(workspacePath) {
|
|
14
|
+
this.basePath = join(workspacePath, VERSIONS_DIR);
|
|
15
|
+
ensureDir(this.basePath);
|
|
16
|
+
}
|
|
17
|
+
/** Record a new version of a skill's content. Returns the version number. */
|
|
18
|
+
recordVersion(skillId, content, opts) {
|
|
19
|
+
const history = this.getHistory(skillId);
|
|
20
|
+
const contentHash = hashString(content);
|
|
21
|
+
// Skip if content hasn't changed
|
|
22
|
+
if (history.versions.length > 0) {
|
|
23
|
+
const latest = history.versions[history.versions.length - 1];
|
|
24
|
+
if (latest.content_hash === contentHash) {
|
|
25
|
+
return latest;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const version = {
|
|
29
|
+
version: history.versions.length + 1,
|
|
30
|
+
content_hash: contentHash,
|
|
31
|
+
timestamp: new Date().toISOString(),
|
|
32
|
+
amendment_id: opts?.amendmentId,
|
|
33
|
+
eval_score: opts?.evalScore,
|
|
34
|
+
};
|
|
35
|
+
history.versions.push(version);
|
|
36
|
+
history.current = version.version;
|
|
37
|
+
this.saveHistory(skillId, history);
|
|
38
|
+
return version;
|
|
39
|
+
}
|
|
40
|
+
/** Get the full version history for a skill. */
|
|
41
|
+
getHistory(skillId) {
|
|
42
|
+
const filePath = this.historyPath(skillId);
|
|
43
|
+
const content = readFileIfExists(filePath);
|
|
44
|
+
if (content) {
|
|
45
|
+
return JSON.parse(content);
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
skill_id: skillId,
|
|
49
|
+
versions: [],
|
|
50
|
+
current: 0,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Get a specific version. */
|
|
54
|
+
getVersion(skillId, versionNumber) {
|
|
55
|
+
const history = this.getHistory(skillId);
|
|
56
|
+
return history.versions.find(v => v.version === versionNumber) ?? null;
|
|
57
|
+
}
|
|
58
|
+
/** Set the current version pointer (for rollback). */
|
|
59
|
+
rollback(skillId, toVersion) {
|
|
60
|
+
const history = this.getHistory(skillId);
|
|
61
|
+
const target = history.versions.find(v => v.version === toVersion);
|
|
62
|
+
if (!target) {
|
|
63
|
+
throw new Error(`Version ${toVersion} not found for skill "${skillId}"`);
|
|
64
|
+
}
|
|
65
|
+
history.current = toVersion;
|
|
66
|
+
this.saveHistory(skillId, history);
|
|
67
|
+
return target;
|
|
68
|
+
}
|
|
69
|
+
historyPath(skillId) {
|
|
70
|
+
return join(this.basePath, `${skillId}.versions.json`);
|
|
71
|
+
}
|
|
72
|
+
saveHistory(skillId, history) {
|
|
73
|
+
writeFileSafe(this.historyPath(skillId), JSON.stringify(history, null, 2));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=versioner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioner.js","sourceRoot":"","sources":["../../skills/versioner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tracing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tracing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TraceEvent } from '../schemas/trace.js';
|
|
2
|
+
/**
|
|
3
|
+
* Trace Reader
|
|
4
|
+
*
|
|
5
|
+
* Reads and parses trace files.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TraceReader {
|
|
8
|
+
readTrace(tracePath: string): TraceEvent[];
|
|
9
|
+
filterByEventType(events: TraceEvent[], eventType: string): TraceEvent[];
|
|
10
|
+
filterBySkill(events: TraceEvent[], skillId: string): TraceEvent[];
|
|
11
|
+
filterByActor(events: TraceEvent[], actor: 'agent' | 'user' | 'system'): TraceEvent[];
|
|
12
|
+
getErrors(events: TraceEvent[]): TraceEvent[];
|
|
13
|
+
getApprovals(events: TraceEvent[]): {
|
|
14
|
+
requests: TraceEvent[];
|
|
15
|
+
responses: TraceEvent[];
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../tracing/reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;GAIG;AAEH,qBAAa,WAAW;IACtB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAS1C,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAIxE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAIlE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,EAAE;IAIrF,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;IAI7C,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG;QAClC,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,SAAS,EAAE,UAAU,EAAE,CAAC;KACzB;CAMF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Trace Reader
|
|
4
|
+
*
|
|
5
|
+
* Reads and parses trace files.
|
|
6
|
+
*/
|
|
7
|
+
export class TraceReader {
|
|
8
|
+
readTrace(tracePath) {
|
|
9
|
+
const content = readFileSync(tracePath, 'utf-8');
|
|
10
|
+
const lines = content.trim().split('\n');
|
|
11
|
+
return lines
|
|
12
|
+
.filter(line => line.length > 0)
|
|
13
|
+
.map(line => JSON.parse(line));
|
|
14
|
+
}
|
|
15
|
+
filterByEventType(events, eventType) {
|
|
16
|
+
return events.filter(e => e.event_type === eventType);
|
|
17
|
+
}
|
|
18
|
+
filterBySkill(events, skillId) {
|
|
19
|
+
return events.filter(e => e.skill_id === skillId);
|
|
20
|
+
}
|
|
21
|
+
filterByActor(events, actor) {
|
|
22
|
+
return events.filter(e => e.actor === actor);
|
|
23
|
+
}
|
|
24
|
+
getErrors(events) {
|
|
25
|
+
return this.filterByEventType(events, 'error');
|
|
26
|
+
}
|
|
27
|
+
getApprovals(events) {
|
|
28
|
+
return {
|
|
29
|
+
requests: this.filterByEventType(events, 'approval_requested'),
|
|
30
|
+
responses: this.filterByEventType(events, 'approval_response'),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../tracing/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAGlC;;;;GAIG;AAEH,MAAM,OAAO,WAAW;IACtB,SAAS,CAAC,SAAiB;QACzB,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,OAAO,KAAK;aACT,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,MAAoB,EAAE,SAAiB;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CAAC,MAAoB,EAAE,OAAe;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,MAAoB,EAAE,KAAkC;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,MAAoB;QAI/B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,CAAC;YAC9D,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,CAAC;SAC/D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TraceEvent } from '../schemas/trace.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tracer
|
|
4
|
+
*
|
|
5
|
+
* Writes trace events to JSONL files.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Tracer {
|
|
8
|
+
private runId;
|
|
9
|
+
private tracePath;
|
|
10
|
+
constructor(workspacePath: string, runId?: string);
|
|
11
|
+
getRunId(): string;
|
|
12
|
+
trace(event: Omit<TraceEvent, 'schema_version' | 'run_id' | 'timestamp'>): void;
|
|
13
|
+
tracePlan(data: any): void;
|
|
14
|
+
traceThink(data: any, skillId?: string): void;
|
|
15
|
+
traceToolCall(toolRef: string, input: any, skillId?: string, stepId?: string): void;
|
|
16
|
+
traceToolResult(toolRef: string, output: any, skillId?: string, stepId?: string): void;
|
|
17
|
+
traceApprovalRequest(data: any, riskScore?: number): void;
|
|
18
|
+
traceApprovalResponse(approved: boolean, reason?: string): void;
|
|
19
|
+
traceArtifactWritten(artifactPath: string, hash: string): void;
|
|
20
|
+
traceError(error: Error, context?: any): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../tracing/tracer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD;;;;GAIG;AAEH,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IASjD,QAAQ,IAAI,MAAM;IAIlB,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI;IAa/E,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAQ1B,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS7C,aAAa,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAYP,eAAe,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,GAAG,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAYP,oBAAoB,CAClB,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IASP,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/D,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAS9D,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;CAW9C"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { appendFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { hashObject } from '../utils/hash.js';
|
|
4
|
+
import { ensureDir, resolveTracesPath } from '../utils/filesystem.js';
|
|
5
|
+
/**
|
|
6
|
+
* Tracer
|
|
7
|
+
*
|
|
8
|
+
* Writes trace events to JSONL files.
|
|
9
|
+
*/
|
|
10
|
+
export class Tracer {
|
|
11
|
+
runId;
|
|
12
|
+
tracePath;
|
|
13
|
+
constructor(workspacePath, runId) {
|
|
14
|
+
this.runId = runId || crypto.randomUUID();
|
|
15
|
+
const tracesDir = resolveTracesPath(workspacePath);
|
|
16
|
+
ensureDir(tracesDir);
|
|
17
|
+
this.tracePath = join(tracesDir, `${this.runId}.trace.v1.jsonl`);
|
|
18
|
+
}
|
|
19
|
+
getRunId() {
|
|
20
|
+
return this.runId;
|
|
21
|
+
}
|
|
22
|
+
trace(event) {
|
|
23
|
+
const fullEvent = {
|
|
24
|
+
schema_version: 'trace_event.v1',
|
|
25
|
+
run_id: this.runId,
|
|
26
|
+
timestamp: new Date().toISOString(),
|
|
27
|
+
...event,
|
|
28
|
+
};
|
|
29
|
+
// Write as JSONL (one event per line)
|
|
30
|
+
const line = JSON.stringify(fullEvent) + '\n';
|
|
31
|
+
appendFileSync(this.tracePath, line);
|
|
32
|
+
}
|
|
33
|
+
tracePlan(data) {
|
|
34
|
+
this.trace({
|
|
35
|
+
actor: 'agent',
|
|
36
|
+
event_type: 'plan',
|
|
37
|
+
data,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
traceThink(data, skillId) {
|
|
41
|
+
this.trace({
|
|
42
|
+
actor: 'agent',
|
|
43
|
+
event_type: 'think',
|
|
44
|
+
skill_id: skillId,
|
|
45
|
+
data,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
traceToolCall(toolRef, input, skillId, stepId) {
|
|
49
|
+
this.trace({
|
|
50
|
+
actor: 'agent',
|
|
51
|
+
event_type: 'tool_call',
|
|
52
|
+
tool_ref: toolRef,
|
|
53
|
+
skill_id: skillId,
|
|
54
|
+
step_id: stepId,
|
|
55
|
+
input_hash: hashObject(input),
|
|
56
|
+
data: { input },
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
traceToolResult(toolRef, output, skillId, stepId) {
|
|
60
|
+
this.trace({
|
|
61
|
+
actor: 'agent',
|
|
62
|
+
event_type: 'tool_result',
|
|
63
|
+
tool_ref: toolRef,
|
|
64
|
+
skill_id: skillId,
|
|
65
|
+
step_id: stepId,
|
|
66
|
+
output_hash: hashObject(output),
|
|
67
|
+
data: { output },
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
traceApprovalRequest(data, riskScore) {
|
|
71
|
+
this.trace({
|
|
72
|
+
actor: 'agent',
|
|
73
|
+
event_type: 'approval_requested',
|
|
74
|
+
risk_score: riskScore,
|
|
75
|
+
data,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
traceApprovalResponse(approved, reason) {
|
|
79
|
+
this.trace({
|
|
80
|
+
actor: 'user',
|
|
81
|
+
event_type: 'approval_response',
|
|
82
|
+
data: { approved, reason },
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
traceArtifactWritten(artifactPath, hash) {
|
|
86
|
+
this.trace({
|
|
87
|
+
actor: 'agent',
|
|
88
|
+
event_type: 'artifact_written',
|
|
89
|
+
output_hash: hash,
|
|
90
|
+
data: { path: artifactPath },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
traceError(error, context) {
|
|
94
|
+
this.trace({
|
|
95
|
+
actor: 'system',
|
|
96
|
+
event_type: 'error',
|
|
97
|
+
error: error.message,
|
|
98
|
+
data: {
|
|
99
|
+
stack: error.stack,
|
|
100
|
+
context,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../tracing/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TrustV1 } from '../schemas/trust.js';
|
|
2
|
+
import { BindingsV1 } from '../schemas/bindings.js';
|
|
3
|
+
/**
|
|
4
|
+
* Trust Auditor
|
|
5
|
+
*
|
|
6
|
+
* Audits trust policy against current bindings and detects violations:
|
|
7
|
+
* - unpinned_server: bound server not in trust policy
|
|
8
|
+
* - fingerprint_mismatch: server fingerprint differs from pinned value
|
|
9
|
+
* - unpinned_skill: skill source not pinned (reserved for future use)
|
|
10
|
+
* - new_tool: tool appeared that was not in baseline bindings
|
|
11
|
+
*/
|
|
12
|
+
export interface AuditViolation {
|
|
13
|
+
type: 'fingerprint_mismatch' | 'unpinned_server' | 'unpinned_skill' | 'new_tool';
|
|
14
|
+
severity: 'error' | 'warning';
|
|
15
|
+
message: string;
|
|
16
|
+
details?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export interface AuditReport {
|
|
19
|
+
timestamp: string;
|
|
20
|
+
violations: AuditViolation[];
|
|
21
|
+
passed: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare class TrustAuditor {
|
|
24
|
+
/**
|
|
25
|
+
* Audit trust policy against current bindings.
|
|
26
|
+
*
|
|
27
|
+
* @param trust - Current trust policy
|
|
28
|
+
* @param bindings - Current MCP bindings
|
|
29
|
+
* @param previousBindings - Optional baseline bindings for new_tool detection.
|
|
30
|
+
* When provided, any tool in `bindings` that was not in `previousBindings`
|
|
31
|
+
* triggers a new_tool warning.
|
|
32
|
+
*/
|
|
33
|
+
audit(trust: TrustV1, bindings: BindingsV1, previousBindings?: BindingsV1): AuditReport;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=auditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditor.d.ts","sourceRoot":"","sources":["../../trust/auditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;;;;;;GAQG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,sBAAsB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,UAAU,CAAC;IACjF,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,YAAY;IACvB;;;;;;;;OAQG;IACH,KAAK,CACH,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,UAAU,EACpB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,WAAW;CAqEf"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export class TrustAuditor {
|
|
2
|
+
/**
|
|
3
|
+
* Audit trust policy against current bindings.
|
|
4
|
+
*
|
|
5
|
+
* @param trust - Current trust policy
|
|
6
|
+
* @param bindings - Current MCP bindings
|
|
7
|
+
* @param previousBindings - Optional baseline bindings for new_tool detection.
|
|
8
|
+
* When provided, any tool in `bindings` that was not in `previousBindings`
|
|
9
|
+
* triggers a new_tool warning.
|
|
10
|
+
*/
|
|
11
|
+
audit(trust, bindings, previousBindings) {
|
|
12
|
+
const violations = [];
|
|
13
|
+
// Check all bound servers are pinned and fingerprints match
|
|
14
|
+
for (const server of bindings.servers) {
|
|
15
|
+
const pinned = trust.mcp_servers.find(s => s.url === server.url);
|
|
16
|
+
if (!pinned) {
|
|
17
|
+
violations.push({
|
|
18
|
+
type: 'unpinned_server',
|
|
19
|
+
severity: 'warning',
|
|
20
|
+
message: `MCP server not pinned: ${server.name}`,
|
|
21
|
+
details: { url: server.url },
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else if (server.pinned_fingerprint && server.pinned_fingerprint !== pinned.fingerprint) {
|
|
25
|
+
violations.push({
|
|
26
|
+
type: 'fingerprint_mismatch',
|
|
27
|
+
severity: pinned.pin_mode === 'strict' ? 'error' : 'warning',
|
|
28
|
+
message: `Fingerprint mismatch for server: ${server.name}`,
|
|
29
|
+
details: {
|
|
30
|
+
expected: pinned.fingerprint,
|
|
31
|
+
actual: server.pinned_fingerprint,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else if (!server.pinned_fingerprint && pinned.fingerprint) {
|
|
36
|
+
// Server is in trust policy with a fingerprint but binding never pinned one
|
|
37
|
+
violations.push({
|
|
38
|
+
type: 'unpinned_server',
|
|
39
|
+
severity: 'warning',
|
|
40
|
+
message: `Server binding has no pinned fingerprint but trust policy expects one: ${server.name}`,
|
|
41
|
+
details: { url: server.url, expected_fingerprint: pinned.fingerprint },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Detect new tools not present in baseline
|
|
46
|
+
if (previousBindings) {
|
|
47
|
+
const baselineToolRefs = new Set();
|
|
48
|
+
for (const server of previousBindings.servers) {
|
|
49
|
+
for (const tool of server.tools) {
|
|
50
|
+
baselineToolRefs.add(`${server.name}:${tool.tool_ref}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const server of bindings.servers) {
|
|
54
|
+
for (const tool of server.tools) {
|
|
55
|
+
const qualifiedRef = `${server.name}:${tool.tool_ref}`;
|
|
56
|
+
if (!baselineToolRefs.has(qualifiedRef)) {
|
|
57
|
+
violations.push({
|
|
58
|
+
type: 'new_tool',
|
|
59
|
+
severity: 'warning',
|
|
60
|
+
message: `New tool detected: ${qualifiedRef}`,
|
|
61
|
+
details: {
|
|
62
|
+
server: server.name,
|
|
63
|
+
tool_ref: tool.tool_ref,
|
|
64
|
+
risk_hints: tool.risk_hints,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
violations,
|
|
74
|
+
passed: violations.filter(v => v.severity === 'error').length === 0,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../../trust/auditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../trust/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../trust/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TrustV1 } from '../schemas/trust.js';
|
|
2
|
+
/**
|
|
3
|
+
* Trust Manager
|
|
4
|
+
*
|
|
5
|
+
* Manages trust policy for MCP servers and skill sources.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TrustManager {
|
|
8
|
+
private policy;
|
|
9
|
+
constructor(policy: TrustV1);
|
|
10
|
+
pinMCPServer(url: string, fingerprint: string, mode?: 'strict' | 'warn'): void;
|
|
11
|
+
pinSkillSource(type: 'local' | 'git', pathOrUrl: string, hash: string, mode?: 'strict' | 'warn'): void;
|
|
12
|
+
verifyMCPServer(url: string, currentFingerprint: string): {
|
|
13
|
+
trusted: boolean;
|
|
14
|
+
reason?: string;
|
|
15
|
+
};
|
|
16
|
+
getPolicy(): TrustV1;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../trust/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoC,MAAM,qBAAqB,CAAC;AAGhF;;;;GAIG;AAEH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,OAAO;IAI3B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,MAAiB,GAAG,IAAI;IAexF,cAAc,CACZ,IAAI,EAAE,OAAO,GAAG,KAAK,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAAQ,GAAG,MAAiB,GACjC,IAAI;IAiBP,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG;QACxD,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAoBD,SAAS,IAAI,OAAO;CAGrB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages trust policy for MCP servers and skill sources.
|
|
5
|
+
*/
|
|
6
|
+
export class TrustManager {
|
|
7
|
+
policy;
|
|
8
|
+
constructor(policy) {
|
|
9
|
+
this.policy = policy;
|
|
10
|
+
}
|
|
11
|
+
pinMCPServer(url, fingerprint, mode = 'strict') {
|
|
12
|
+
const existing = this.policy.mcp_servers.find(s => s.url === url);
|
|
13
|
+
if (existing) {
|
|
14
|
+
existing.fingerprint = fingerprint;
|
|
15
|
+
existing.pin_mode = mode;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.policy.mcp_servers.push({
|
|
19
|
+
url,
|
|
20
|
+
fingerprint,
|
|
21
|
+
pin_mode: mode,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
pinSkillSource(type, pathOrUrl, hash, mode = 'strict') {
|
|
26
|
+
const source = {
|
|
27
|
+
type,
|
|
28
|
+
pin_mode: mode,
|
|
29
|
+
};
|
|
30
|
+
if (type === 'local') {
|
|
31
|
+
source.path = pathOrUrl;
|
|
32
|
+
source.hash = hash;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
source.url = pathOrUrl;
|
|
36
|
+
source.commit = hash;
|
|
37
|
+
}
|
|
38
|
+
this.policy.skill_sources.push(source);
|
|
39
|
+
}
|
|
40
|
+
verifyMCPServer(url, currentFingerprint) {
|
|
41
|
+
const pinned = this.policy.mcp_servers.find(s => s.url === url);
|
|
42
|
+
if (!pinned) {
|
|
43
|
+
return {
|
|
44
|
+
trusted: false,
|
|
45
|
+
reason: 'Server not pinned in trust policy',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (pinned.fingerprint !== currentFingerprint) {
|
|
49
|
+
return {
|
|
50
|
+
trusted: false,
|
|
51
|
+
reason: `Fingerprint mismatch (expected: ${pinned.fingerprint}, got: ${currentFingerprint})`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return { trusted: true };
|
|
55
|
+
}
|
|
56
|
+
getPolicy() {
|
|
57
|
+
return this.policy;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../trust/manager.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,MAAM,OAAO,YAAY;IACf,MAAM,CAAU;IAExB,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,WAAmB,EAAE,OAA0B,QAAQ;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAElE,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;YACnC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC3B,GAAG;gBACH,WAAW;gBACX,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,cAAc,CACZ,IAAqB,EACrB,SAAiB,EACjB,IAAY,EACZ,OAA0B,QAAQ;QAElC,MAAM,MAAM,GAAqB;YAC/B,IAAI;YACJ,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,kBAA0B;QAIrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,mCAAmC;aAC5C,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,KAAK,kBAAkB,EAAE,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,mCAAmC,MAAM,CAAC,WAAW,UAAU,kBAAkB,GAAG;aAC7F,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem utilities for TasteKit
|
|
3
|
+
*/
|
|
4
|
+
export declare function ensureDir(path: string): void;
|
|
5
|
+
export declare function writeFileSafe(path: string, content: string): void;
|
|
6
|
+
export declare function readFileIfExists(path: string): string | null;
|
|
7
|
+
export declare function atomicWrite(path: string, content: string): void;
|
|
8
|
+
export declare function resolveArtifactPath(workspacePath: string, artifact: 'constitution' | 'guardrails' | 'memory'): string;
|
|
9
|
+
export declare function resolveTracesPath(workspacePath: string): string;
|
|
10
|
+
export declare function resolveSkillsPath(workspacePath: string): string;
|
|
11
|
+
export declare function resolvePlaybooksPath(workspacePath: string): string;
|
|
12
|
+
export declare function resolveSessionPath(workspacePath: string): string;
|
|
13
|
+
export declare function resolveTrustPath(workspacePath: string): string;
|
|
14
|
+
export declare function resolveBindingsPath(workspacePath: string): string;
|
|
15
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../utils/filesystem.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI5C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK/D;AAED,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,cAAc,GAAG,YAAY,GAAG,QAAQ,GACjD,MAAM,CAOR;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'fs';
|
|
2
|
+
import { dirname, join } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem utilities for TasteKit
|
|
5
|
+
*/
|
|
6
|
+
export function ensureDir(path) {
|
|
7
|
+
if (!existsSync(path)) {
|
|
8
|
+
mkdirSync(path, { recursive: true });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function writeFileSafe(path, content) {
|
|
12
|
+
ensureDir(dirname(path));
|
|
13
|
+
writeFileSync(path, content, 'utf-8');
|
|
14
|
+
}
|
|
15
|
+
export function readFileIfExists(path) {
|
|
16
|
+
if (existsSync(path)) {
|
|
17
|
+
return readFileSync(path, 'utf-8');
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
export function atomicWrite(path, content) {
|
|
22
|
+
ensureDir(dirname(path));
|
|
23
|
+
const tempPath = `${path}.tmp`;
|
|
24
|
+
writeFileSync(tempPath, content, 'utf-8');
|
|
25
|
+
renameSync(tempPath, path);
|
|
26
|
+
}
|
|
27
|
+
export function resolveArtifactPath(workspacePath, artifact) {
|
|
28
|
+
const filenames = {
|
|
29
|
+
constitution: 'constitution.v1.json',
|
|
30
|
+
guardrails: 'guardrails.v1.yaml',
|
|
31
|
+
memory: 'memory.v1.yaml',
|
|
32
|
+
};
|
|
33
|
+
return join(workspacePath, filenames[artifact]);
|
|
34
|
+
}
|
|
35
|
+
export function resolveTracesPath(workspacePath) {
|
|
36
|
+
return join(workspacePath, 'traces');
|
|
37
|
+
}
|
|
38
|
+
export function resolveSkillsPath(workspacePath) {
|
|
39
|
+
return join(workspacePath, 'skills');
|
|
40
|
+
}
|
|
41
|
+
export function resolvePlaybooksPath(workspacePath) {
|
|
42
|
+
return join(workspacePath, 'playbooks');
|
|
43
|
+
}
|
|
44
|
+
export function resolveSessionPath(workspacePath) {
|
|
45
|
+
return join(workspacePath, 'session.json');
|
|
46
|
+
}
|
|
47
|
+
export function resolveTrustPath(workspacePath) {
|
|
48
|
+
return join(workspacePath, 'trust.v1.json');
|
|
49
|
+
}
|
|
50
|
+
export function resolveBindingsPath(workspacePath) {
|
|
51
|
+
return join(workspacePath, 'bindings.v1.json');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../utils/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC;;GAEG;AAEH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe;IACvD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC;IAC/B,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,aAAqB,EACrB,QAAkD;IAElD,MAAM,SAAS,GAA2B;QACxC,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,gBAAgB;KACzB,CAAC;IACF,OAAO,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,OAAO,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,OAAO,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,OAAO,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,OAAO,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hashing utilities for deterministic compilation and fingerprinting
|
|
3
|
+
*/
|
|
4
|
+
export declare function hashString(input: string): string;
|
|
5
|
+
export declare function hashObject(obj: any): string;
|
|
6
|
+
export declare function shortHash(input: string, length?: number): string;
|
|
7
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../utils/hash.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAG3C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAEnE"}
|