agentic-engineering-harness 0.6.29 → 0.7.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.
Files changed (76) hide show
  1. package/dist/agents/permissions.js +4 -3
  2. package/dist/agents/permissions.js.map +1 -1
  3. package/dist/cli.js +23 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/context/compression/headroom.d.ts +6 -1
  6. package/dist/context/compression/headroom.js +60 -15
  7. package/dist/context/compression/headroom.js.map +1 -1
  8. package/dist/context/compression/types.d.ts +1 -0
  9. package/dist/context/gateway.d.ts +1 -0
  10. package/dist/context/gateway.js +58 -44
  11. package/dist/context/gateway.js.map +1 -1
  12. package/dist/context/repository/serena.d.ts +1 -1
  13. package/dist/context/repository/serena.js +2 -1
  14. package/dist/context/repository/serena.js.map +1 -1
  15. package/dist/context/transport.d.ts +33 -0
  16. package/dist/context/transport.js +63 -0
  17. package/dist/context/transport.js.map +1 -0
  18. package/dist/core/config.js +1 -1
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/init.js +2 -1
  21. package/dist/core/init.js.map +1 -1
  22. package/dist/core/run.js +6 -2
  23. package/dist/core/run.js.map +1 -1
  24. package/dist/core/types.d.ts +25 -0
  25. package/dist/core/verify.js +2 -1
  26. package/dist/core/verify.js.map +1 -1
  27. package/dist/evals/fullStack.d.ts +10 -7
  28. package/dist/evals/fullStack.js +132 -36
  29. package/dist/evals/fullStack.js.map +1 -1
  30. package/dist/evidence/graph.js +24 -7
  31. package/dist/evidence/graph.js.map +1 -1
  32. package/dist/memory/candidates.d.ts +29 -0
  33. package/dist/memory/candidates.js +31 -0
  34. package/dist/memory/candidates.js.map +1 -0
  35. package/dist/paseo/launchSpec.js +4 -4
  36. package/dist/paseo/launchSpec.js.map +1 -1
  37. package/dist/provenance/generate.d.ts +15 -0
  38. package/dist/provenance/generate.js +150 -68
  39. package/dist/provenance/generate.js.map +1 -1
  40. package/dist/providers/engram.d.ts +1 -0
  41. package/dist/providers/engram.js +40 -8
  42. package/dist/providers/engram.js.map +1 -1
  43. package/dist/providers/graphify.d.ts +20 -1
  44. package/dist/providers/graphify.js +106 -26
  45. package/dist/providers/graphify.js.map +1 -1
  46. package/dist/providers/serenaMcp.d.ts +7 -0
  47. package/dist/providers/serenaMcp.js +77 -0
  48. package/dist/providers/serenaMcp.js.map +1 -0
  49. package/dist/providers/versions.d.ts +10 -0
  50. package/dist/providers/versions.js +3 -0
  51. package/dist/providers/versions.js.map +1 -0
  52. package/dist/telemetry/events.js +36 -37
  53. package/dist/telemetry/events.js.map +1 -1
  54. package/dist/telemetry/otlp.d.ts +2 -1
  55. package/dist/telemetry/otlp.js +20 -41
  56. package/dist/telemetry/otlp.js.map +1 -1
  57. package/dist/telemetry/tracing.d.ts +19 -0
  58. package/dist/telemetry/tracing.js +141 -0
  59. package/dist/telemetry/tracing.js.map +1 -0
  60. package/dist/toolchain/config.js +3 -2
  61. package/dist/toolchain/config.js.map +1 -1
  62. package/dist/validators/external.js +6 -5
  63. package/dist/validators/external.js.map +1 -1
  64. package/dist/validators/toolEvidence.d.ts +2 -22
  65. package/dist/validators/toolEvidence.js +36 -3
  66. package/dist/validators/toolEvidence.js.map +1 -1
  67. package/dist/workers/agentPrompt.js +5 -3
  68. package/dist/workers/agentPrompt.js.map +1 -1
  69. package/docs/COMPONENT_MATURITY.md +15 -11
  70. package/docs/component-maturity.json +34 -0
  71. package/package.json +7 -1
  72. package/schemas/project.schema.json +1 -1
  73. package/schemas/validation-report.schema.json +2 -1
  74. package/scripts/headroom-bridge.py +88 -0
  75. package/templates/provider-versions.json +10 -0
  76. package/templates/toolchain.yaml +12 -4
@@ -1,8 +1,12 @@
1
1
  # Component maturity at current `main`
2
2
 
3
3
  This matrix records the highest level supported by executable code and tests at
4
- the current revision. A roadmap checkbox means that a capability exists; it is
5
- not evidence that the capability is production-grade.
4
+ the current revision. The machine-readable source is
5
+ [`component-maturity.json`](component-maturity.json). A roadmap checkbox means
6
+ that a capability exists; it is not evidence that the capability is
7
+ production-grade.
8
+
9
+ A roadmap checkbox means that a capability exists; it is not evidence that the capability is production-grade.
6
10
 
7
11
  Levels are cumulative: `DECLARED`, `ADAPTER`, `EXECUTABLE`,
8
12
  `WORKFLOW_INTEGRATED`, `DOGFOODED`, `EVAL_VALIDATED`, `PRODUCTION_GRADE`.
@@ -12,8 +16,8 @@ Levels are cumulative: `DECLARED`, `ADAPTER`, `EXECUTABLE`,
12
16
  | Paseo | WORKFLOW_INTEGRATED | `src/paseo`, Paseo runtime tests |
13
17
  | Codex CLI | WORKFLOW_INTEGRATED | `src/workers/agentPrompt.ts`, runtime invocation tests |
14
18
  | OpenCode | WORKFLOW_INTEGRATED | `src/agents/permissions.ts`, direct/Podman/Paseo tests |
15
- | Engram | WORKFLOW_INTEGRATED | `src/providers/engram.ts`, memory lifecycle tests |
16
- | Graphify | WORKFLOW_INTEGRATED | canonical provider/model, snapshots and scheduling tests |
19
+ | Engram | WORKFLOW_INTEGRATED | `src/core/run.ts`, `src/memory/candidates.ts`, real CLI contract and full-stack fixture |
20
+ | Graphify | WORKFLOW_INTEGRATED | provider-owned CLI lifecycle, canonical model, freshness metadata and real CLI contract |
17
21
  | OpenSpec | WORKFLOW_INTEGRATED | `src/spec`, OpenSpec bridge tests |
18
22
  | AEH SDD | WORKFLOW_INTEGRATED | `src/core/sdd.ts`, SDD tests |
19
23
  | TaskContracts | WORKFLOW_INTEGRATED | contract/seal and run tests |
@@ -21,20 +25,20 @@ Levels are cumulative: `DECLARED`, `ADAPTER`, `EXECUTABLE`,
21
25
  | Reqnroll | DECLARED | consumer-project capability; no AEH runtime dependency |
22
26
  | .NET/xUnit integration | EXECUTABLE | Gherkin/project validation path |
23
27
  | Testcontainers capability | DECLARED | consumer test capability; detected through project validation |
24
- | Playwright | WORKFLOW_INTEGRATED | normalized browser evidence adapter |
28
+ | Playwright | WORKFLOW_INTEGRATED | pinned Chromium JSON-reporter contract and normalized browser evidence adapter |
25
29
  | Pact | ADAPTER | normalized contract evidence adapter; consumer runtime remains external |
26
30
  | OPA | WORKFLOW_INTEGRATED | typed execution identity and Rego policy path |
27
- | Opengrep | WORKFLOW_INTEGRATED | normalized security findings |
28
- | Trivy | WORKFLOW_INTEGRATED | normalized vulnerability/secret/misconfiguration findings and SBOM |
31
+ | Opengrep | WORKFLOW_INTEGRATED | pinned CLI JSON contract and normalized security findings |
32
+ | Trivy | WORKFLOW_INTEGRATED | pinned CLI JSON contract, strict full-stack validation, normalized vulnerability/secret/misconfiguration findings and SBOM |
29
33
  | Podman | WORKFLOW_INTEGRATED | hardened worker executor and sandbox tests |
30
- | OpenTelemetry | WORKFLOW_INTEGRATED | coherent operation trace IDs plus local NDJSON |
31
- | Engineering Evals | EVAL_VALIDATED | `src/evals`, `tests/evals.test.ts` |
34
+ | OpenTelemetry | WORKFLOW_INTEGRATED | official SDK provider/context propagation plus local NDJSON |
35
+ | Engineering Evals | DOGFOODED | deterministic production-path fixture in `src/evals/fullStack.ts` |
32
36
  | SBOM | EXECUTABLE | Trivy-backed provenance generation |
33
37
  | Cosign | EXECUTABLE | optional signing plus verification path |
34
38
  | in-toto/SLSA | EXECUTABLE | statement/predicate and manifest-chain generation |
35
39
  | ContextBudgetGateway | WORKFLOW_INTEGRATED | typed fragments in the actual agent prompt path |
36
- | Serena | ADAPTER | provider doctor/MCP projection; local installation is external |
37
- | Headroom | ADAPTER | controller-side compression provider; not exposed as runtime MCP |
40
+ | Serena | WORKFLOW_INTEGRATED | pinned MCP initialize/tools/list/call contract and transport projection; local installation is external |
41
+ | Headroom | EXECUTABLE | controller-side SDK bridge, real compression contract and full-stack fixture |
38
42
  | Repository Context Map | WORKFLOW_INTEGRATED | Graphify/filesystem map consumed by prompt preparation |
39
43
  | `aeh_context_retrieve` | WORKFLOW_INTEGRATED | authorization, path and SHA-256 checks |
40
44
 
@@ -0,0 +1,34 @@
1
+ {
2
+ "version": 1,
3
+ "levels": ["DECLARED", "ADAPTER", "EXECUTABLE", "WORKFLOW_INTEGRATED", "DOGFOODED", "EVAL_VALIDATED", "PRODUCTION_GRADE"],
4
+ "components": {
5
+ "Paseo": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/paseo", "tests/paseoRuntime.test.ts"] },
6
+ "Codex CLI": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/workers/direct.ts", "tests/runtimeInvocation.test.ts"] },
7
+ "OpenCode": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/agents/permissions.ts", "tests/opencodePaseoCapability.test.ts"] },
8
+ "Engram": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/core/run.ts", "src/memory/candidates.ts", "tests/providerContracts.test.ts", "src/evals/fullStack.ts"] },
9
+ "Graphify": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/providers/graphify.ts", "src/providers/graphifyModel.ts", "tests/providerContracts.test.ts", "src/evals/fullStack.ts"] },
10
+ "OpenSpec": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/spec", "tests/openSpecBridge.test.ts"] },
11
+ "AEH SDD": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/core/sdd.ts", "tests/sdd.test.ts"] },
12
+ "TaskContracts": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/core/seal.ts", "tests/verifyRoots.test.ts"] },
13
+ "Gherkin": { "claimed": "EXECUTABLE", "evidence": ["src/validators/gherkin.ts"] },
14
+ "Reqnroll": { "claimed": "DECLARED", "evidence": ["docs/COMPONENT_MATURITY.md"] },
15
+ ".NET/xUnit integration": { "claimed": "EXECUTABLE", "evidence": ["src/validators/commands.ts"] },
16
+ "Testcontainers capability": { "claimed": "DECLARED", "evidence": ["docs/COMPONENT_MATURITY.md"] },
17
+ "Playwright": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/validators/external.ts", "src/validators/toolEvidence.ts", "tests/providerContracts.test.ts", ".github/workflows/ci.yml"] },
18
+ "Pact": { "claimed": "ADAPTER", "evidence": ["src/validators/toolEvidence.ts"] },
19
+ "OPA": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/validators/opa.ts", "tests/architectureIntegrationContracts.test.ts"] },
20
+ "Opengrep": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/validators/external.ts", "src/validators/toolEvidence.ts", "tests/providerContracts.test.ts", ".github/workflows/ci.yml"] },
21
+ "Trivy": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/validators/external.ts", "src/validators/toolEvidence.ts", "tests/providerContracts.test.ts", "src/evals/fullStack.ts", ".github/workflows/ci.yml"] },
22
+ "Podman": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/workers/podman.ts"] },
23
+ "OpenTelemetry": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/telemetry/tracing.ts", "src/telemetry/events.ts"] },
24
+ "Engineering Evals": { "claimed": "DOGFOODED", "evidence": ["src/evals/fullStack.ts"] },
25
+ "SBOM": { "claimed": "EXECUTABLE", "evidence": ["src/provenance/generate.ts"] },
26
+ "Cosign": { "claimed": "EXECUTABLE", "evidence": ["src/provenance/generate.ts"] },
27
+ "in-toto/SLSA": { "claimed": "EXECUTABLE", "evidence": ["src/provenance/generate.ts"] },
28
+ "ContextBudgetGateway": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/context/gateway.ts", "src/workers/agentPrompt.ts"] },
29
+ "Serena": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/context/repository/serena.ts", "src/providers/serenaMcp.ts", "tests/providerContracts.test.ts", "src/context/transport.ts", ".github/workflows/ci.yml"] },
30
+ "Headroom": { "claimed": "EXECUTABLE", "evidence": ["src/context/compression/headroom.ts", "scripts/headroom-bridge.py", "tests/providerContracts.test.ts", "src/evals/fullStack.ts"] },
31
+ "Repository Context Map": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/context/repository/map.ts", "src/workers/agentPrompt.ts"] },
32
+ "aeh_context_retrieve": { "claimed": "WORKFLOW_INTEGRATED", "evidence": ["src/context/retrieval", "src/context/gateway.ts"] }
33
+ }
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-engineering-harness",
3
- "version": "0.6.29",
3
+ "version": "0.7.0",
4
4
  "description": "OSS-first engineering harness for deterministic, spec-driven, issue-driven, audit-governed and orchestration-first multi-agent software delivery.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,6 +15,7 @@
15
15
  "schemas",
16
16
  "skills",
17
17
  "docs",
18
+ "scripts/headroom-bridge.py",
18
19
  "scripts/link-self-bin.mjs"
19
20
  ],
20
21
  "scripts": {
@@ -35,12 +36,17 @@
35
36
  },
36
37
  "dependencies": {
37
38
  "@opentelemetry/api": "^1.9.0",
39
+ "@opentelemetry/context-async-hooks": "^2.10.0",
40
+ "@opentelemetry/exporter-trace-otlp-http": "^0.206.0",
41
+ "@opentelemetry/resources": "^2.10.0",
42
+ "@opentelemetry/sdk-trace-node": "^2.10.0",
38
43
  "commander": "^14.0.1",
39
44
  "minimatch": "^10.0.3",
40
45
  "yaml": "^2.8.1",
41
46
  "zod": "^4.0.17"
42
47
  },
43
48
  "devDependencies": {
49
+ "@playwright/test": "1.62.1",
44
50
  "@types/node": "^24.2.1",
45
51
  "agentic-engineering-harness": "^0.6.27",
46
52
  "tsx": "^4.20.3",
@@ -47,7 +47,7 @@
47
47
  } },
48
48
  "delivery": { "type": "object", "properties": { "stateDir": { "type": "string" }, "github": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "tokenEnv": { "type": "string", "minLength": 1 }, "repository": { "type": "string", "pattern": "^[^/]+/[^/]+$" }, "apiBaseUrl": { "type": "string", "format": "uri" }, "assignTokenOwner": { "type": "boolean" }, "labels": { "type": "array", "items": { "type": "string" } }, "branchPattern": { "type": "string", "minLength": 1 }, "finalizeOnAcceptance": { "type": "boolean" }, "pullRequestDraft": { "type": "boolean" } } }, "paseo": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "createWorkspace": { "type": "boolean" }, "autoUseWorkspace": { "type": "boolean" }, "worktreeSlugPattern": { "type": "string", "minLength": 1 } } } } },
49
49
  "memory": { "type": "object" },
50
- "codeIntelligence": { "type": "object", "properties": { "provider": { "type": "string" }, "required": { "type": "boolean" }, "graphPath": { "type": "string" }, "snapshotDir": { "type": "string" }, "refreshCommand": { "type": "string" }, "scheduling": { "type": "object", "properties": { "useEdges": { "type": "boolean" }, "maxGraphHops": { "type": "integer", "minimum": 1 }, "maxSharedNodes": { "type": "integer", "minimum": 0 }, "centralityConflictThreshold": { "type": "number", "minimum": 0 } } } } },
50
+ "codeIntelligence": { "type": "object", "properties": { "provider": { "type": "string" }, "required": { "type": "boolean" }, "graphPath": { "type": "string" }, "snapshotDir": { "type": "string" }, "codeOnly": { "type": "boolean" }, "refreshCommand": { "type": "string" }, "scheduling": { "type": "object", "properties": { "useEdges": { "type": "boolean" }, "maxGraphHops": { "type": "integer", "minimum": 1 }, "maxSharedNodes": { "type": "integer", "minimum": 0 }, "centralityConflictThreshold": { "type": "number", "minimum": 0 } } } } },
51
51
  "context": { "type": "object", "properties": {
52
52
  "mode": { "enum": ["observe", "enforce"] },
53
53
  "budgets": { "type": "object", "properties": {
@@ -9,7 +9,8 @@
9
9
  "taskId": { "type": "string" },
10
10
  "status": { "enum": ["PASS", "FAIL"] },
11
11
  "checks": { "type": "array" },
12
- "changedFiles": { "type": "array", "items": { "type": "string" } }
12
+ "changedFiles": { "type": "array", "items": { "type": "string" } },
13
+ "findings": { "type": "array", "items": { "type": "object", "required": ["fingerprint", "tool", "kind"], "properties": { "fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "tool": { "type": "string" }, "kind": { "type": "string" }, "rule": { "type": "string" }, "severity": { "type": "string" }, "file": { "type": "string" }, "line": { "type": "integer", "minimum": 1 }, "message": { "type": "string" }, "artifact": { "type": "string" } }, "additionalProperties": true } }
13
14
  },
14
15
  "additionalProperties": true
15
16
  }
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+ """Small, line-oriented JSON bridge for the pinned Headroom SDK.
3
+
4
+ The bridge deliberately uses Headroom's public ``headroom.compression`` API,
5
+ never its agent wrappers or memory store. stdout is reserved for one JSON
6
+ response; diagnostics belong on stderr so the Node adapter can reject framing
7
+ corruption deterministically.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import hashlib
13
+ import json
14
+ import sys
15
+ from typing import Any
16
+
17
+
18
+ def fail(message: str, code: str = "HEADROOM_BRIDGE_ERROR") -> None:
19
+ print(json.dumps({"version": 1, "error": {"code": code, "message": message}}), flush=True)
20
+
21
+
22
+ def main() -> int:
23
+ try:
24
+ raw = sys.stdin.read()
25
+ request = json.loads(raw)
26
+ if not isinstance(request, dict) or request.get("version") != 1:
27
+ fail("request version must be 1", "INVALID_REQUEST")
28
+ return 2
29
+ operation = request.get("operation", "compress")
30
+ from headroom import __version__
31
+
32
+ if operation == "doctor":
33
+ print(json.dumps({"version": 1, "providerVersion": __version__}), flush=True)
34
+ return 0
35
+ if operation != "compress":
36
+ fail(f"unsupported operation: {operation}", "INVALID_REQUEST")
37
+ return 2
38
+
39
+ content = request.get("content")
40
+ source_sha256 = request.get("sourceSha256")
41
+ max_tokens = request.get("maxTokens")
42
+ if not isinstance(content, str) or not content:
43
+ fail("content must be a non-empty string", "INVALID_REQUEST")
44
+ return 2
45
+ if not isinstance(source_sha256, str) or hashlib.sha256(content.encode()).hexdigest() != source_sha256:
46
+ fail("sourceSha256 does not match content", "SOURCE_HASH_MISMATCH")
47
+ return 2
48
+ if not isinstance(max_tokens, int) or max_tokens < 1:
49
+ fail("maxTokens must be a positive integer", "INVALID_REQUEST")
50
+ return 2
51
+
52
+ # UniversalCompressor is the documented local SDK entry point. Keep
53
+ # Kompress enabled: AEH provisions headroom-ai[all] and this contract
54
+ # must exercise the intended compression stack, not the fallback-only
55
+ # path. CCR remains disabled because AEH persists and authorizes the
56
+ # original fragment itself.
57
+ from headroom.compression import UniversalCompressor, UniversalCompressorConfig
58
+
59
+ original_tokens = max(1, len(content) // 4)
60
+ target_ratio = min(1.0, max_tokens / original_tokens)
61
+ compressor = UniversalCompressor(
62
+ UniversalCompressorConfig(
63
+ use_magika=True,
64
+ use_kompress=True,
65
+ ccr_enabled=False,
66
+ compression_ratio_target=target_ratio,
67
+ )
68
+ )
69
+ result = compressor.compress(content)
70
+ response: dict[str, Any] = {
71
+ "version": 1,
72
+ "content": result.compressed,
73
+ "originalTokens": result.tokens_before,
74
+ "compressedTokens": result.tokens_after,
75
+ "reversible": False,
76
+ "providerVersion": __version__,
77
+ "sourceSha256": source_sha256,
78
+ }
79
+ print(json.dumps(response, separators=(",", ":")), flush=True)
80
+ return 0
81
+ except Exception as error: # pragma: no cover - exercised by contract tests
82
+ print(f"headroom bridge failure: {error}", file=sys.stderr, flush=True)
83
+ fail(str(error), "SDK_RUNTIME_FAILURE")
84
+ return 1
85
+
86
+
87
+ if __name__ == "__main__":
88
+ raise SystemExit(main())
@@ -0,0 +1,10 @@
1
+ {
2
+ "headroom": "0.28.0",
3
+ "graphify": "0.9.43",
4
+ "engram": "0.4.1",
5
+ "serena": "1.6.1",
6
+ "trivy": "0.70.0",
7
+ "opengrep": "1.22.0",
8
+ "playwright": "1.62.1",
9
+ "pnpm": "10.15.0"
10
+ }
@@ -106,7 +106,7 @@ tools:
106
106
  kind: mise
107
107
  command: graphify
108
108
  source: "pipx:graphifyy"
109
- version: latest
109
+ version: "0.9.43"
110
110
  dependsOn: [uv]
111
111
  activateWhen: [code-intelligence:graphify]
112
112
 
@@ -132,7 +132,8 @@ tools:
132
132
  kind: mise
133
133
  command: engram
134
134
  source: "npm:@engram-ai-memory/cli"
135
- version: latest
135
+ version: "0.4.1"
136
+ dependsOn: [pnpm]
136
137
  activateWhen: [memory:engram]
137
138
 
138
139
  opa:
@@ -148,14 +149,14 @@ tools:
148
149
  kind: mise
149
150
  command: opengrep
150
151
  source: "aqua:opengrep/opengrep"
151
- version: latest
152
+ version: "1.22.0"
152
153
  activateWhen: [security-tool:opengrep, validator:opengrep]
153
154
 
154
155
  trivy:
155
156
  kind: mise
156
157
  command: trivy
157
158
  source: "aqua:aquasecurity/trivy"
158
- version: latest
159
+ version: "0.70.0"
159
160
  activateWhen: [security-tool:trivy, validator:trivy]
160
161
  container:
161
162
  image: ghcr.io/aquasecurity/trivy:latest
@@ -172,6 +173,13 @@ tools:
172
173
  command: podman
173
174
  activateWhen: [orchestration:podman, sandbox:podman]
174
175
 
176
+ pnpm:
177
+ kind: mise
178
+ command: pnpm
179
+ source: "npm:pnpm"
180
+ version: "10.15.0"
181
+ activateWhen: [memory:engram, project:pnpm]
182
+
175
183
  projectDependencies:
176
184
  autoDetect: true
177
185
  commands: []