---
title: "ModelArtifact · types"
url: https://developers.dagio.ai/reference/types-model-artifact/
---

# ModelArtifact · types

   
                              
                                                                        
                                      
                  
           
          
   

The following types define named objects and their relationships. Tables include inherited properties. Schema-derived types refer to their validated structures; a TypeScript declaration does not replace the compiler’s semantic checks.

## ModelSourceSnapshot

Immutable source snapshot stored separately from its compiled artifact.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ModelSourceSnapshot@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `modelId` | `string` | **Required.** Defines model Id for this object. Observe the type, variants and bounds in the Options column. |
| `version` | `string` | **Required.** Declared content or publication version identifying the applicable interpretation. |
| `commit` | `string` | **Required.** Source revision identity associated with compilation. |
| `subdirectory` | `string` | **Required.** Source package subdirectory within the distribution repository. |
| `files` | `readonly { path: string; content: string; }[]` | **Required.** Defines files for this object. Observe the type, variants and bounds in the Options column. |
| `sourceHash` | `string` | **Required.** Digest of the source used to produce the artifact. |

```typescript
export interface ModelSourceSnapshot {
  contract: 'ModelSourceSnapshot@1';
  modelId: string;
  version: string;
  commit: string;
  subdirectory: string;
  files: readonly { path: string; content: string }[];
  sourceHash: string;
}
```

## ModelArtifact

Runtime artifact accepted by Model Distribution and Surface Core.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ModelArtifact@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `artifactHash` | `string` | **Required.** Artifact content digest that must match its provenance. |
| `sourceHash` | `string` | **Required.** Digest of the source used to produce the artifact. |
| `model` | `ManagedModelSource` | **Required.** Defines model for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ModelArtifact {
  contract: 'ModelArtifact@1';
  artifactHash: string;
  sourceHash: string;
  model: ManagedModelSource;
}
```

## CompiledManagedModel

Complete deterministic compilation output for one managed Model directory.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `snapshot` | `ModelSourceSnapshot` | **Required.** Defines snapshot for this object. Observe the type, variants and bounds in the Options column. |
| `artifact` | `ModelArtifact` | **Required.** Defines artifact for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface CompiledManagedModel {
  snapshot: ModelSourceSnapshot;
  artifact: ModelArtifact;
}
```

[All references](https://developers.dagio.ai/reference/)

<!-- surface-examples:start -->

## Applied examples : Publish a reusable app

Publication describes the app; policies preserve access to instance Actions.

### Configuration

Fragment placed in `publication`. [Properties and accepted values](https://developers.dagio.ai/reference/workspace-model-foundation/).

```json
{
  "kind": "workspace-application",
  "license": "Proprietary",
  "requiredCapabilities": [],
  "requiredConnections": []
}
```

### Variation and connection

Fragment placed in `contentActions[]`. [Properties and accepted values](https://developers.dagio.ai/reference/content-space-action-policy/).

```json
{
  "contract": "ContentSpaceActionPolicy@1",
  "spaceKey": "clients",
  "actionKey": "prepare-quote",
  "minimumRole": "editor"
}
```

### UI layout example

The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.

1. Target object
2. Proposed change
3. Checks
4. Confirm

<!-- surface-examples:end -->
