Skip to content

Commit 92ad702

Browse files
committed
refactor: rename asset to entity across scripts, docs, and comments
Replace all user-facing and internal references to "asset" with "entity" to align with the new Entity+Edge data model. This includes Tengo script variables (asset → entity, new_asset → new_entity), processor/sink code, test fixtures, READMEs, and documentation.
1 parent b5beb1c commit 92ad702

File tree

25 files changed

+218
-247
lines changed

25 files changed

+218
-247
lines changed

agent/agent_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ func TestAgentRun(t *testing.T) {
930930
"engine": "tengo",
931931
"script": heredoc.Doc(`
932932
text := import("text")
933-
asset.description = text.replace(asset.description, "incredible", "amazing", -1)
933+
entity.description = text.replace(entity.description, "incredible", "amazing", -1)
934934
`),
935935
},
936936
},

docs/concepts/context_graph.mdx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ Meteor closes this gap. By continuously extracting metadata — schemas, lineage
1212

1313
## What is a Context Graph?
1414

15-
A context graph is a connected, queryable representation of your data ecosystem. It captures not just what assets exist, but how they relate to each other:
15+
A context graph is a connected, queryable representation of your data ecosystem. It captures not just what entities exist, but how they relate to each other:
1616

17-
- **Nodes** represent assets: tables, dashboards, jobs, topics, models, buckets, users, repositories, teams, groups.
17+
- **Nodes** represent entities: tables, dashboards, jobs, topics, models, buckets, users, repositories, teams, groups.
1818
- **Edges** represent relationships: lineage (which table feeds which dashboard), ownership (who is responsible), membership (who belongs to which team), and dependency (which job produces which dataset).
1919

2020
Unlike a flat catalog or a search index, a context graph preserves **structure**. It knows that a revenue dashboard depends on a sales table, which is produced by an ETL job, which reads from a Kafka topic. This structure is what makes AI useful over enterprise data.
@@ -34,10 +34,10 @@ Meteor's extractors connect to 30+ data sources — databases (BigQuery, Postgre
3434

3535
### Process
3636

37-
Processors enrich and transform assets in-flight before they reach a sink. Use them to:
37+
Processors enrich and transform entities in-flight before they reach a sink. Use them to:
3838

3939
- Append **labels** for classification (environment, domain, sensitivity, PII)
40-
- **Enrich** assets with custom fields from external systems
40+
- **Enrich** entities with custom fields from external systems
4141
- Run **scripts** (Tengo) for arbitrary transformation logic, including HTTP calls to external APIs
4242

4343
### Deliver
@@ -77,7 +77,7 @@ With Meteor's lineage graph, AI can:
7777
- **Root-cause analysis** — "This metric dropped. What changed upstream?"
7878
- **Dependency awareness** — "Before deprecating this dataset, show me everything downstream."
7979

80-
### Asset Discovery for AI Agents
80+
### Entity Discovery for AI Agents
8181

8282
Function-calling AI agents need to know what tools and data are available. The context graph serves as the agent's **world model**:
8383

@@ -96,10 +96,10 @@ Meteor's plugin architecture makes it straightforward to extend the context grap
9696

9797
| Capability | Approach |
9898
|---|---|
99-
| **Semantic search** | Use a script processor to generate vector embeddings from asset descriptions, enabling similarity-based retrieval |
100-
| **Business glossary** | Extract metric definitions and business terms as first-class assets, linking them to underlying tables |
101-
| **Usage signals** | Build extractors that capture query frequency and dashboard views, helping AI rank assets by relevance |
102-
| **Data quality** | Enrich assets with freshness, completeness, and anomaly scores so AI can assess data trustworthiness |
99+
| **Semantic search** | Use a script processor to generate vector embeddings from entity descriptions, enabling similarity-based retrieval |
100+
| **Business glossary** | Extract metric definitions and business terms as first-class entities, linking them to underlying tables |
101+
| **Usage signals** | Build extractors that capture query frequency and dashboard views, helping AI rank entities by relevance |
102+
| **Data quality** | Enrich entities with freshness, completeness, and anomaly scores so AI can assess data trustworthiness |
103103
| **LLM-optimized exports** | Create sinks that format metadata as structured context windows sized for LLM consumption |
104104

105105
## The Flywheel
@@ -109,7 +109,7 @@ The context graph is not a one-time build. It is a continuously improving loop:
109109
1. **Meteor extracts** metadata from across the data ecosystem
110110
2. **The context graph** grows richer with each extraction cycle
111111
3. **AI systems** use the graph for grounding, reasoning, and discovery
112-
4. **AI interactions** reveal gaps — missing descriptions, unknown lineage, unlabeled assets
112+
4. **AI interactions** reveal gaps — missing descriptions, unknown lineage, unlabeled entities
113113
5. **Teams fill gaps**, improving metadata quality
114114
6. **Meteor captures** the improvements, and the cycle continues
115115

docs/concepts/processor.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ processors:
6262
config:
6363
engine: tengo
6464
script: |
65-
asset.name = asset.name + " (processed)"
65+
entity.name = entity.name + " (processed)"
6666
```
6767
6868
## Writing a Recipe with Processors
@@ -88,7 +88,7 @@ processors:
8888
config:
8989
engine: tengo
9090
script: |
91-
asset.name = asset.name + " [" + asset.source + "]"
91+
entity.name = entity.name + " [" + entity.source + "]"
9292
```
9393

9494
In this example, each entity first gets enriched with a `domain` attribute, then gets labeled with `source: meteor`, and finally has its name modified by the script processor.

docs/examples/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export METEOR_BIGQUERY_PROJECT_ID=my-gcp-project
2424
meteor run ./bigquery-kafka-recipe.yaml
2525
```
2626

27-
Extracts BigQuery metadata with column profiling enabled and streams it to a Kafka topic. The `key_path` config keys each message by asset URN for consistent partitioning.
27+
Extracts BigQuery metadata with column profiling enabled and streams it to a Kafka topic. The `key_path` config keys each message by entity URN for consistent partitioning.
2828

2929
## Postgres to Compass
3030

@@ -46,7 +46,7 @@ export METEOR_KAFKA_BROKERS=broker1:9092,broker2:9092
4646
meteor run ./bigquery-multi-sink.yaml
4747
```
4848

49-
Demonstrates multiple sinks and chained processors. Extracts BigQuery metadata with column profiling and view lineage, enriches and labels assets, then sends to both Compass and Kafka simultaneously.
49+
Demonstrates multiple sinks and chained processors. Extracts BigQuery metadata with column profiling and view lineage, enriches and labels entities, then sends to both Compass and Kafka simultaneously.
5050

5151
## Tableau to File
5252

docs/guides/troubleshooting.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Common issues and solutions when working with Meteor.
6969

7070
### Empty results
7171

72-
**Symptom:** Recipe runs successfully but produces no assets.
72+
**Symptom:** Recipe runs successfully but produces no entities.
7373

7474
**Solutions:**
7575
- Check that the source has data accessible with the provided credentials.
@@ -79,12 +79,12 @@ Common issues and solutions when working with Meteor.
7979

8080
### Partial extraction
8181

82-
**Symptom:** Some assets are extracted but others are missing.
82+
**Symptom:** Some entities are extracted but others are missing.
8383

8484
**Solutions:**
8585
- Check the `exclude` configuration in your recipe.
8686
- For database extractors, ensure the user has permissions on all target schemas.
87-
- Check Meteor logs for per-asset errors that may indicate permission issues on specific resources.
87+
- Check Meteor logs for per-entity errors that may indicate permission issues on specific resources.
8888

8989
## Sink Issues
9090

docs/reference/configuration.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ For complete configuration details, refer to the [sinks reference](./sinks).
115115

116116
| Processor | Key Config Fields |
117117
| :-------- | :---------------- |
118-
| `enrich` | `attributes` — key-value map to merge into asset attributes |
119-
| `labels` | `labels` — key-value map to append to asset labels |
118+
| `enrich` | `attributes` — key-value map to merge into entity properties |
119+
| `labels` | `labels` — key-value map to append to entity properties labels |
120120
| `script` | `engine`, `script` — Tengo script for custom transformation |
121121

122122
For complete configuration details, refer to the [processors reference](./processors).

docs/reference/processors.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ processors:
7070

7171
## script
7272

73-
Transforms the entity using a user-defined script. The entity is exposed to the script as an `asset` variable (a map). Currently [Tengo][tengo] is the only supported engine. The script has full control over entity fields, including the ability to make HTTP calls to external services.
73+
Transforms the entity using a user-defined script. The entity is exposed to the script as an `entity` variable (a map). Currently [Tengo][tengo] is the only supported engine. The script has full control over entity fields, including the ability to make HTTP calls to external services.
7474

7575
```yaml
7676
processors:
7777
- name: script
7878
config:
7979
engine: tengo
8080
script: |
81-
asset.name = asset.name + " (processed)"
81+
entity.name = entity.name + " (processed)"
8282
```
8383

8484
| Key | Type | Description | Required |

plugins/extractors/bigquery/bigquery.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type Config struct {
4747
TablePattern string `mapstructure:"table_pattern"`
4848
Exclude Exclude `mapstructure:"exclude"`
4949
IncludeColumnProfile bool `mapstructure:"include_column_profile"`
50-
// MaxPreviewRows can also be set to -1 to restrict adding preview_rows key in asset data
50+
// MaxPreviewRows can also be set to -1 to restrict adding preview_rows key in entity properties
5151
MaxPreviewRows int `mapstructure:"max_preview_rows" default:"30"`
5252
MixValues bool `mapstructure:"mix_values" default:"false"`
5353
IsCollectTableUsage bool `mapstructure:"collect_table_usage" default:"false"`
@@ -336,7 +336,7 @@ func (e *Extractor) extractTable(ctx context.Context, ds *bigquery.Dataset, emit
336336
}
337337
record, err := e.buildRecord(ctx, table, tmd)
338338
if err != nil {
339-
e.logger.Error("failed to build asset", "err", err, "table", tableFQN)
339+
e.logger.Error("failed to build record", "err", err, "table", tableFQN)
340340
return nil
341341
}
342342
emit(record)

plugins/extractors/bigtable/bigtable.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (e *Extractor) Init(ctx context.Context, config plugins.Config) error {
120120

121121
// Extract checks if the extractor is configured and
122122
// if so, then extracts the metadata and
123-
// returns the assets.
123+
// returns the records.
124124
func (e *Extractor) Extract(ctx context.Context, emit plugins.Emit) error {
125125
return e.getTablesInfo(ctx, emit)
126126
}

plugins/extractors/grafana/grafana.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (e *Extractor) Init(ctx context.Context, config plugins.Config) error {
9898
}
9999

100100
// Extract checks if the extractor is configured and
101-
// if so, then it extracts the assets from the extractor.
101+
// if so, then it extracts the metadata from the extractor.
102102
func (e *Extractor) Extract(ctx context.Context, emit plugins.Emit) error {
103103
if e.extract["datasources"] {
104104
if err := e.extractDatasources(ctx, emit); err != nil {

0 commit comments

Comments
 (0)