Crawler Summary

airflow-to-dabs answer-first brief

Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Freshness

Last checked 2/25/2026

Best For

airflow-to-dabs is best for general automation workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 89/100

airflow-to-dabs

Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g

OpenClawself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Feb 25, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Feb 25, 2026

Vendor

Park Peter

Artifacts

0

Benchmarks

0

Last release

Unpublished

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Setup snapshot

git clone https://github.com/park-peter/airflow-to-dabs.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Park Peter

profilemedium
Observed Feb 25, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed Feb 25, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB OPENCLEW

Extracted files

0

Examples

3

Snippets

0

Languages

typescript

Parameters

Executable Examples

text

| Task ID           | Operator                | DABs Task Type      | Tier | Notes              |
|-------------------|-------------------------|---------------------|------|--------------------|
| extract_data      | PythonOperator          | notebook_task       | 1    |                    |
| check_env         | BranchPythonOperator    | condition_task      | 2    | Simple equality    |
| wait_for_file     | S3KeySensor             | trigger.file_arrival| 3    | Becomes job trigger|
| custom_step       | MyCustomOperator        | notebook_task       | 4    | MANUAL REVIEW      |

text

<bundle-name>/
  databricks.yml                    # Single bundle config with shared variables and targets
  resources/
    <dag_id_1>_job.yml              # One job resource per DAG
    <dag_id_2>_job.yml
    <dag_id_3>_job.yml
  src/
    <dag_id_1>/                     # Source files namespaced per DAG
      <task_id>.py
      <task_id>.sql
    <dag_id_2>/
      <task_id>.py
    <dag_id_3>/
      <task_id>.py
  MIGRATION_NOTES.md                # Consolidated migration notes for all DAGs

text

<dag_id>-bundle/
  databricks.yml
  resources/
    <dag_id>_job.yml
  src/
    <task_id>.py
    <task_id>.sql
  MIGRATION_NOTES.md

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB OPENCLEW

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g

Full README

name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. version: 1.0.0 author: park-peter repository: https://github.com/park-peter/airflow-to-dabs keywords:

  • airflow
  • databricks
  • migration
  • lakeflow
  • dabs
  • asset-bundles
  • dag-conversion

Airflow to Databricks Asset Bundles Converter

Converts Apache Airflow DAG files into complete Databricks Asset Bundles (DABs) projects, producing databricks.yml, resources/*.yml job definitions, and extracted src/ source files ready for databricks bundle deploy.

Capabilities

  • Parse Airflow DAG files to extract tasks, dependencies, operators, schedules, and parameters
  • Map 40+ Airflow operator types (including all Databricks provider operators) to their DABs task type equivalents using a tiered mapping system
  • Convert Airflow cron expressions and presets to Quartz cron format
  • Convert Airflow sensors (S3, HDFS, file, table, external task) to DABs triggers (file_arrival, table_update)
  • Extract inline Python callables, SQL strings, and bash commands into standalone source files
  • Convert Airflow Jinja template variables to DABs dynamic value references
  • Map default_args (retries, timeouts, email notifications) to DABs job/task settings
  • Generate MIGRATION_NOTES.md documenting conversion decisions and manual action items
  • Handle TaskGroups, SubDAGs, branching operators, Airflow dynamic task mapping, and XCom patterns
  • Hadoop/HDFS migration: detect spark-submit in BashOperator/SSHOperator, clean up YARN Spark configs, map HDFS paths, convert HiveQL to Spark SQL, handle SqoopOperator alternatives
  • Bulk conversion guidance for DAGs with hundreds of Spark tasks

Workflow

Phase 1: Parse the Airflow DAG

Read the provided Airflow DAG file(s) and extract the following structure:

  1. DAG metadata: dag_id, schedule_interval/schedule, default_args, catchup, tags, params
  2. Task inventory: For each task, capture:
    • task_id and operator class (e.g., PythonOperator, BashOperator)
    • Operator-specific parameters (python_callable, bash_command, sql, application, json, etc.)
    • op_kwargs, op_args, params, templates_dict
  3. Dependency graph: Extract >> / << chains and set_upstream/set_downstream calls to build the task DAG
  4. Sensors: Identify sensor tasks and their trigger conditions (S3 path, table name, external DAG, time)
  5. TaskGroups / SubDAGs: Identify grouped tasks and their internal structure
  6. Flags: Note any custom operators (subclasses of BaseOperator), XCom usage (xcom_push/xcom_pull), Airflow Variables, Airflow Connections, dynamic task mapping (expand), and custom timetable/dataset schedules

Present a summary table to the user before proceeding:

| Task ID           | Operator                | DABs Task Type      | Tier | Notes              |
|-------------------|-------------------------|---------------------|------|--------------------|
| extract_data      | PythonOperator          | notebook_task       | 1    |                    |
| check_env         | BranchPythonOperator    | condition_task      | 2    | Simple equality    |
| wait_for_file     | S3KeySensor             | trigger.file_arrival| 3    | Becomes job trigger|
| custom_step       | MyCustomOperator        | notebook_task       | 4    | MANUAL REVIEW      |

Phase 2: Map Operators to DABs Task Types

Read references/operator-mapping.md for the authoritative mapping table.

For each task in the inventory:

  1. Tier 1 (direct): Apply the 1:1 mapping. Copy field values to DABs YAML fields per the reference.
  2. Tier 2 (semantic): Reason about the operator's intent.
    • BranchPythonOperator: If the branching logic is a simple comparison, use condition_task. If complex, use a two-step pattern (notebook + condition).
    • DummyOperator/EmptyOperator: Remove from the task list. Rewire depends_on so downstream tasks point to the dummy's upstream tasks.
    • SubDagOperator/TaskGroup: Flatten into the parent job with prefixed task keys, or extract to a separate job via run_job_task.
  3. Tier 3 (sensors): Convert to job-level triggers. Read references/schedule-trigger-mapping.md.
    • File sensors -> trigger.file_arrival
    • Table/SQL sensors -> trigger.table_update
    • External task sensors -> depends_on, run_job_task, or trigger.table_update
    • Remove sensor tasks from the task list (they become job-level configuration).
  4. Tier 4 (unsupported): Flag for manual review. Suggest notebook_task as fallback. Add entry to MIGRATION_NOTES.md.

For schedule conversion, read references/schedule-trigger-mapping.md:

  • Convert Airflow 5-field cron to 6-field Quartz cron (prepend 0 for seconds, adjust day-of-week numbering, and normalize Sunday 0/7 -> 1)
  • Convert Airflow presets (@daily, @hourly, etc.) to Quartz equivalents
  • Extract timezone from default_args or DAG start_date
  • Convert @continuous to job-level continuous mode
  • For dataset/timetable schedules, map to trigger.table_update when deterministic, otherwise flag in MIGRATION_NOTES.md

Phase 3: Generate the DABs Project

Produce the following output files. Read references/dab-schema-reference.md for the complete YAML schema. Use assets/templates/databricks.yml.tmpl and assets/templates/job-resource.yml.tmpl as starting skeletons.

Output Modes

Multi-DAG (default): When converting multiple DAGs, produce a single bundle with one databricks.yml and a separate job resource file per DAG under resources/. This is the default because it enables cross-job references via ${resources.jobs.<name>.id} and allows a single databricks bundle deploy.

Single-DAG: When converting one DAG, produce a standalone bundle directory.

Split bundles (opt-in): If the user explicitly requests separate bundles per DAG (e.g., "create a separate bundle for each DAG"), produce one bundle directory per DAG. Cross-DAG TriggerDagRunOperator references will require hardcoded job IDs and a note in MIGRATION_NOTES.md.

Multi-DAG Output Structure (default)

<bundle-name>/
  databricks.yml                    # Single bundle config with shared variables and targets
  resources/
    <dag_id_1>_job.yml              # One job resource per DAG
    <dag_id_2>_job.yml
    <dag_id_3>_job.yml
  src/
    <dag_id_1>/                     # Source files namespaced per DAG
      <task_id>.py
      <task_id>.sql
    <dag_id_2>/
      <task_id>.py
    <dag_id_3>/
      <task_id>.py
  MIGRATION_NOTES.md                # Consolidated migration notes for all DAGs

Single-DAG Output Structure

<dag_id>-bundle/
  databricks.yml
  resources/
    <dag_id>_job.yml
  src/
    <task_id>.py
    <task_id>.sql
  MIGRATION_NOTES.md

File generation rules:

  1. databricks.yml: For multi-DAG, derive bundle.name from a user-provided name or the parent directory name. For single-DAG, derive from dag_id (kebab-case). Include variables for spark_version, node_type_id, warehouse_id. Define dev and prod targets. Use include: - resources/*.yml to pull in all job definitions.

  2. resources/<dag_id>_job.yml: One job resource file per DAG, each containing:

    • schedule or trigger from Phase 2
    • email_notifications from default_args.email
    • parameters from DAG params and Jinja variables like {{ ds }}
    • job_clusters with a shared cluster definition
    • tasks list with all mapped tasks, preserving the dependency graph via depends_on
    • Task-level max_retries and min_retry_interval_millis from default_args.retries and retry_delay
    • Task-level timeout_seconds from default_args.execution_timeout
    • Cross-DAG references via TriggerDagRunOperator resolve to ${resources.jobs.<target-dag-job-key>.id} within the same bundle
  3. src/<dag_id>/*.py notebooks: For each notebook_task or spark_python_task:

    • In multi-DAG mode, namespace source files under src/<dag_id>/ to avoid collisions
    • In single-DAG mode, place directly in src/
    • Start with # Databricks notebook source
    • Add dbutils.widgets.text() and dbutils.widgets.get() for each base_parameters entry
    • Extract the python_callable function body (not the function signature itself)
    • Replace Airflow imports with Databricks equivalents (e.g., from airflow.models import Variable -> dbutils.widgets.get())
  4. src/<dag_id>/*.sql files: For each sql_task with inline SQL:

    • Extract the SQL string
    • Replace {{ ds }} with {{job.parameters.run_date}}
    • Replace {{ params.x }} with {{job.parameters.x}}
  5. MIGRATION_NOTES.md: A single consolidated file documenting:

    • Tier 4 operators flagged for manual review
    • XCom patterns that need conversion to dbutils.jobs.taskValues
    • Airflow Connections that need Databricks secrets or UC connections
    • Airflow Variables that need bundle variables or job parameters
    • Any catchup, depends_on_past, sla settings that have no DABs equivalent
    • Sensor-to-trigger conversions with notes on external location setup
    • Cross-DAG dependency map: which jobs reference other jobs via run_job_task, with resolved ${resources.jobs...} substitutions

Phase 4: Review and Validate

After generating all files:

  1. Dependency check: Verify every depends_on reference points to a valid task_key in the same job
  2. Orphan check: Verify no tasks are unreachable (disconnected from the DAG)
  3. Task type check: Verify each task has exactly one task type field
  4. Cluster check: Verify every task that requires compute has job_cluster_key, existing_cluster_id, or new_cluster (except condition_task, run_job_task, and similar clusterless tasks)
  5. Parameter check: Verify all {{job.parameters.*}} references have corresponding entries in the job parameters list
  6. Bundle schema check: Run databricks bundle validate -t <target> and fix schema warnings/errors (if auth is unavailable, run databricks bundle schema validation checks offline and report the limitation)
  7. Present summary: Show the user a final summary with file list, task count, and any MIGRATION_NOTES items requiring attention

Resources

Progressive disclosure -- read these references as needed during each phase:

  • references/operator-mapping.md: Complete Tier 1-4 mapping table with Airflow/DABs YAML examples for every operator type
  • references/dab-schema-reference.md: Condensed DABs YAML schema covering all task types, triggers, clusters, variables, and dynamic value references
  • references/schedule-trigger-mapping.md: Airflow cron-to-Quartz conversion table, preset mappings, sensor-to-trigger mappings, default_args mappings, and Jinja variable conversions
  • references/conversion-examples.md: 4 complete before/after examples (simple ETL, branching, sensor-triggered, multi-system)
  • references/hadoop-migration-guide.md: HDFS path conversion, YARN Spark config cleanup, Hive-to-Unity-Catalog mapping, spark-submit detection in BashOperator/SSHOperator, Sqoop alternatives, and bulk conversion guidance for large DAGs
  • assets/templates/databricks.yml.tmpl: Skeleton bundle configuration template
  • assets/templates/job-resource.yml.tmpl: Skeleton job resource template

Examples

Example: Convert a single DAG file

User says: "Convert this Airflow DAG to a Databricks Asset Bundles" User provides: an Airflow DAG Python file (pasted or referenced via @file)

Result: Standalone DABs project with databricks.yml, resources/<dag_id>_job.yml, src/ notebooks, and MIGRATION_NOTES.md.

Example: Convert with specific target config

User says: "Migrate my_etl_dag.py to DABs targeting our dev workspace at https://my-workspace.databricks.com"

Result: DABs project with workspace URL pre-filled in targets.dev.workspace.host.

Example: Convert multiple DAGs (default -- single bundle)

User says: "Convert all DAGs in the dags/ directory to Databricks Asset Bundles"

Result: A single bundle with one databricks.yml, a separate resources/<dag_id>_job.yml per DAG, source files namespaced under src/<dag_id>/, and a consolidated MIGRATION_NOTES.md. Cross-DAG TriggerDagRunOperator references resolve via ${resources.jobs.<name>.id}.

Example: Convert multiple DAGs into separate bundles (opt-in)

User says: "Convert all DAGs in the dags/ directory into separate bundles, one per DAG"

Result: One bundle directory per DAG, each with its own databricks.yml. Cross-DAG references use hardcoded job IDs with a note in each MIGRATION_NOTES.md.

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract"
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW
Machine Appendix

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-09T02:23:52.950Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Park Peter",
    "href": "https://github.com/park-peter/airflow-to-dabs",
    "sourceUrl": "https://github.com/park-peter/airflow-to-dabs",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-25T02:27:59.188Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "href": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-02-25T02:27:59.188Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub · GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to airflow-to-dabs and adjacent AI workflows.