# @lssm-tech/integration.agent-sandbox

Deny-by-default Docker and development sandbox adapters for @lssm-tech/lib.ai-agent

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `2.0.5`
- Package path: `packages/integrations/agent-sandbox`
- Manifest path: `packages/integrations/agent-sandbox/package.json`
- Manifest Git blob: `d41e439252d3460e7b895f97971d087a36526755`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/integration.agent-sandbox](https://lssm.co/docs/packages/integration.agent-sandbox/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.agent-sandbox.txt)

## Package metadata

```json
{
  "layer": "integrations",
  "physicalArea": null,
  "primaryArea": "agents-and-context",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "integrations",
    "catalogKind": "integration",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "experimental"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Agents, execution and context](https://lssm.co/docs/areas/agents-and-context/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/integrations/agent-sandbox/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/README.md",
  "blobSha": "a995c01bfe1fdbca41cfff107d44eee53a4ec7cf",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# @lssm-tech/integration.agent-sandbox

Production Docker and development-fixture implementations of
`@lssm-tech/lib.ai-agent` sandbox ports.

## Scope

- `DockerAgentSandbox` creates one OS-contained container per workspace with a
  read-only root, private tmpfs workspace, dropped capabilities,
  `no-new-privileges`, non-root execution, and explicit memory/PID/output/time
  limits.
- Docker networking is deny-all by default. Each allowlisted TCP target is
  DNS-pinned before attachment and exposed through a dedicated restricted
  sidecar on an internal-only network, preventing direct DNS/IP bypass.
- Commands, read/write roots, network targets, and secrets are deny-by-default.
  Secrets are resolved by reference for one command, redacted from output, and
  rejected from reads or artifact extraction if a command persisted them.
- Extracts immutable artifacts through `@lssm-tech/lib.files`.
- `LocalDevelopmentSandbox` remains an honest policy/redaction fixture and
  rejects isolation, egress, and quota claims it cannot prove.

## Containment conformance

`bun test src/docker-agent-sandbox.test.ts` runs the adapter in an external
fixture against a live Docker daemon. It covers command denial, traversal and
symlink attacks, DNS/IP egress bypass, positive network allowlisting,
child-process fanout, memory/CPU/output limits, cancellation, teardown, secret
scrubbing, and artifact integrity.

UDP allowlisting is rejected rather than silently weakened.

Docker teardown now verifies container and network absence through inventory.
A failed removal acknowledgement is recoverable only when absence is confirmed.
Unconfirmed teardown throws and retains the workspace handle for retry. This
is removal verification, not durable restart discovery or executor fencing.

Docker CLI operations default to a five-minute deadline. Sandbox commands use
the policy timeout plus 30 seconds for transport. Deadline and input failures
kill the CLI client and report an unknown external outcome; they neither retry
the command nor prove the daemon-side process stopped. Reconcile the workspace
before resuming effects.

Network and proxy names are tracked before allocation so lost creation
acknowledgements retain cleanup targets. Container creation failures also enter
cleanup. This process-local tracking does not yet provide restart discovery.
Containment conformance fails on teardown errors instead of suppressing them.


## Declared capabilities

### Integration Agent Sandbox

Capability ID: `package.lssm.tech.integration.agent.sandbox`

Deny-by-default Docker and development sandbox adapters for @lssm-tech/lib.ai-agent

Use cases:

- Adopt deny-by-default docker and development sandbox adapters for @lssm-tech/lib.ai-agent

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/integration.agent-sandbox package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "contractspec",
    "agent",
    "sandbox",
    "artifacts",
    "typescript",
    "integration"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/integration.agent-sandbox",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-agent-sandbox",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-cli",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-command",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-containment-fixture",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-files",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-network",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-network-containment-fixture",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-paths",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-types",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/docker-workspace",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.agent-sandbox/local-artifact",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "integrations",
  "kind": "integration",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "experimental",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./docker-agent-sandbox",
    "./docker-cli",
    "./docker-command",
    "./docker-containment-fixture",
    "./docker-files",
    "./docker-network",
    "./docker-network-containment-fixture",
    "./docker-paths",
    "./docker-types",
    "./docker-workspace",
    "./local-artifact",
    "./local-command",
    "./local-development-sandbox",
    "./local-types"
  ],
  "examples": [],
  "replacements": []
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-agent-sandbox",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-cli",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-command",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-containment-fixture",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-files",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-network",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-network-containment-fixture",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-paths",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-types",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/docker-workspace",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.agent.sandbox",
    "from": "@lssm-tech/integration.agent-sandbox/local-artifact",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/integration.agent-sandbox` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/index.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-agent-sandbox` — subpath `./docker-agent-sandbox`
  - `unconditional`: `./src/docker-agent-sandbox.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-agent-sandbox.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-cli` — subpath `./docker-cli`
  - `unconditional`: `./src/docker-cli.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-cli.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-command` — subpath `./docker-command`
  - `unconditional`: `./src/docker-command.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-command.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-containment-fixture` — subpath `./docker-containment-fixture`
  - `unconditional`: `./src/docker-containment-fixture.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-containment-fixture.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-files` — subpath `./docker-files`
  - `unconditional`: `./src/docker-files.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-files.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-network` — subpath `./docker-network`
  - `unconditional`: `./src/docker-network.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-network.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-network-containment-fixture` — subpath `./docker-network-containment-fixture`
  - `unconditional`: `./src/docker-network-containment-fixture.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-network-containment-fixture.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-partial-creation.fixture` — subpath `./docker-partial-creation.fixture`
  - `unconditional`: `./src/docker-partial-creation.fixture.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-partial-creation.fixture.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-paths` — subpath `./docker-paths`
  - `unconditional`: `./src/docker-paths.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-paths.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-process` — subpath `./docker-process`
  - `unconditional`: `./src/docker-process.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-process.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-removal` — subpath `./docker-removal`
  - `unconditional`: `./src/docker-removal.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-removal.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-types` — subpath `./docker-types`
  - `unconditional`: `./src/docker-types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-types.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/docker-workspace` — subpath `./docker-workspace`
  - `unconditional`: `./src/docker-workspace.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/docker-workspace.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/local-artifact` — subpath `./local-artifact`
  - `unconditional`: `./src/local-artifact.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/local-artifact.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/local-command` — subpath `./local-command`
  - `unconditional`: `./src/local-command.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/local-command.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/local-development-sandbox` — subpath `./local-development-sandbox`
  - `unconditional`: `./src/local-development-sandbox.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/local-development-sandbox.ts); verified source file.

- `@lssm-tech/integration.agent-sandbox/local-types` — subpath `./local-types`
  - `unconditional`: `./src/local-types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/agent-sandbox/src/local-types.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./docker-agent-sandbox": {
      "types": "./dist/docker-agent-sandbox.d.ts",
      "bun": "./dist/docker-agent-sandbox.js",
      "node": "./dist/node/docker-agent-sandbox.js",
      "default": "./dist/docker-agent-sandbox.js"
    },
    "./docker-cli": {
      "types": "./dist/docker-cli.d.ts",
      "bun": "./dist/docker-cli.js",
      "node": "./dist/node/docker-cli.js",
      "default": "./dist/docker-cli.js"
    },
    "./docker-command": {
      "types": "./dist/docker-command.d.ts",
      "bun": "./dist/docker-command.js",
      "node": "./dist/node/docker-command.js",
      "default": "./dist/docker-command.js"
    },
    "./docker-containment-fixture": {
      "types": "./dist/docker-containment-fixture.d.ts",
      "bun": "./dist/docker-containment-fixture.js",
      "node": "./dist/node/docker-containment-fixture.js",
      "default": "./dist/docker-containment-fixture.js"
    },
    "./docker-files": {
      "types": "./dist/docker-files.d.ts",
      "bun": "./dist/docker-files.js",
      "node": "./dist/node/docker-files.js",
      "default": "./dist/docker-files.js"
    },
    "./docker-network": {
      "types": "./dist/docker-network.d.ts",
      "bun": "./dist/docker-network.js",
      "node": "./dist/node/docker-network.js",
      "default": "./dist/docker-network.js"
    },
    "./docker-network-containment-fixture": {
      "types": "./dist/docker-network-containment-fixture.d.ts",
      "bun": "./dist/docker-network-containment-fixture.js",
      "node": "./dist/node/docker-network-containment-fixture.js",
      "default": "./dist/docker-network-containment-fixture.js"
    },
    "./docker-partial-creation.fixture": {
      "types": "./dist/docker-partial-creation.fixture.d.ts",
      "bun": "./dist/docker-partial-creation.fixture.js",
      "node": "./dist/node/docker-partial-creation.fixture.js",
      "default": "./dist/docker-partial-creation.fixture.js"
    },
    "./docker-paths": {
      "types": "./dist/docker-paths.d.ts",
      "bun": "./dist/docker-paths.js",
      "node": "./dist/node/docker-paths.js",
      "default": "./dist/docker-paths.js"
    },
    "./docker-process": {
      "types": "./dist/docker-process.d.ts",
      "bun": "./dist/docker-process.js",
      "node": "./dist/node/docker-process.js",
      "default": "./dist/docker-process.js"
    },
    "./docker-removal": {
      "types": "./dist/docker-removal.d.ts",
      "bun": "./dist/docker-removal.js",
      "node": "./dist/node/docker-removal.js",
      "default": "./dist/docker-removal.js"
    },
    "./docker-types": {
      "types": "./dist/docker-types.d.ts",
      "bun": "./dist/docker-types.js",
      "node": "./dist/node/docker-types.js",
      "default": "./dist/docker-types.js"
    },
    "./docker-workspace": {
      "types": "./dist/docker-workspace.d.ts",
      "bun": "./dist/docker-workspace.js",
      "node": "./dist/node/docker-workspace.js",
      "default": "./dist/docker-workspace.js"
    },
    "./local-artifact": {
      "types": "./dist/local-artifact.d.ts",
      "bun": "./dist/local-artifact.js",
      "node": "./dist/node/local-artifact.js",
      "default": "./dist/local-artifact.js"
    },
    "./local-command": {
      "types": "./dist/local-command.d.ts",
      "bun": "./dist/local-command.js",
      "node": "./dist/node/local-command.js",
      "default": "./dist/local-command.js"
    },
    "./local-development-sandbox": {
      "types": "./dist/local-development-sandbox.d.ts",
      "bun": "./dist/local-development-sandbox.js",
      "node": "./dist/node/local-development-sandbox.js",
      "default": "./dist/local-development-sandbox.js"
    },
    "./local-types": {
      "types": "./dist/local-types.d.ts",
      "bun": "./dist/local-types.js",
      "node": "./dist/node/local-types.js",
      "default": "./dist/local-types.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/lib.ai-agent](https://lssm.co/docs/packages/lib.ai-agent/): `workspace:^`
- [@lssm-tech/lib.files](https://lssm.co/docs/packages/lib.files/): `workspace:^`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
  "publish:pkg:canary": "bun publish:pkg --tag canary",
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "lint": "bun lint:fix",
  "lint:fix": "node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .",
  "lint:check": "node ../../../scripts/biome.cjs check .",
  "test": "bun test",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit"
}
```

## Declared documentation links

- [Integration Agent Sandbox documentation](https://www.npmjs.com/package/%40lssm-tech%2Fintegration.agent-sandbox) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Fintegration.agent-sandbox",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/integration.agent-sandbox.txt",
  "route": "/llms/integration.agent-sandbox",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.agent-sandbox.txt",
  "blobSha": "a995c01bfe1fdbca41cfff107d44eee53a4ec7cf",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
