aidp-bundle — resource bundles (Preview)
Deploy/manage AIDP resource bundles. CLI (preferred): the official aidp bundle … CLI
(Oracle-supported, versioned — see references/aidp-cli-map.md):
aidp bundle create | deploy | fetch-deployment-status | purge | sync-bundle.
Fallback: oci raw-request against the same REST Bundle API (auth + base URL in
references/oci-raw-request.md) when the CLI isn't installed.
Self-contained: no MCP and no ai-data-engineer-agent repo required.
Preview + verify-first (no-fabrication):
Bundleis Preview. On this env (20240831,dataLakes) the Bundle resource may be not provisioned — expect a404(wrong version/prefix or feature not enabled in the tenancy). Confirm with a live read-onlygetDeploymentStatusbefore any deploy/purge, and record the result inreferences/rest-endpoint-map.md. Do not present endpoints as confirmed until a live 2xx (or documented 4xx) is recorded.
When to use
- "Deploy these resources together", "promote a bundle", "what's the deployment status", "purge/tear down a bundle".
Commands / endpoints (workspace-scoped; Preview)
CLI (preferred): aidp bundle create · aidp bundle deploy · aidp bundle fetch-deployment-status
(read-only — verify here) · aidp bundle purge · aidp bundle sync-bundle.
Fallback (oci raw-request) — default 20240831, probe 20260430 only after a tenancy upgrade.
Base: https://aidp.<region>.oci.oraclecloud.com/20240831/dataLakes/<DATALAKE_OCID>/…
POST /workspaces/{ws}/bundles— createPOST /workspaces/{ws}/bundles/actions/deploy— deploy all resourcesPOST /workspaces/{ws}/bundles/actions/getDeploymentStatus— status (read-only — verify here)POST /workspaces/{ws}/bundles/actions/purge— destroy deployed resources
A
404(REST) or not-provisioned error (CLI) on any of these means not provisioned in this tenancy (or wrong version/prefix — try the other per references/oci-raw-request.md), not that the request was malformed. Report it as a feature-availability gap, not a failure.
For mutating ops (create / deploy / purge / sync-bundle), persist the request body to .aidp/payloads/
and confirm first — see references/payloads.md.
What a bundle is (manifest + structure)
A bundle is a self-contained, portable package of selected workspace assets (jobs + agent flows) plus their
dependencies and code artifacts, captured so they can be recreated in another workspace/environment. The
manifest is aidp_workbench.yaml at the bundle root; the bundle mirrors the source workspace folder
layout. Dependency references use template variables, e.g. $${jobs.dependencies.training_compute.compute.key},
$${jobs.dependencies.training_job.job.key}, $${jobs.dependencies.training_aicompute.aicompute.key}, plus
$${bundle.root} for artifact paths. (Source: CLI README bundle create long description, lines 180–209.)
Bundles can only be created inside Git-backed workspace folders (CLI README line 180).
Create body (CreateBundleDetails)
POST …/workspaces/{ws}/bundles (CLI: aidp bundle create <AI-DATA-PLATFORM-ID> <WORKSPACE-KEY> --body <JSON>).
Wire fields from SDK create_bundle_details.py:38-50 and bundled_resource.py:39-47:
deploy / fetch-deployment-status / purge / sync-bundle each take only path (the bundle root
folder) — DeployBundleDetails/FetchBundleDeploymentStatusDetails/PurgeBundleDetails/SyncBundleDetails
are all single-field { "path": "<bundle-root>" } (deploy_bundle_details.py:26-32,
fetch_bundle_deployment_status_details.py:26-32, purge_bundle_details.py:26-32,
sync_bundle_details.py:26-32; README:240/267/295/323).
fetch-deployment-status returns BundleDeploymentStatus: status ∈ SUCCEEDED | FAILED |
IN_PROGRESS | NOT_DEPLOYED (bundle_deployment_status.py:18,22,26,30,107), plus timeStarted,
timeCompleted, message, and resources[] (each {type: JOB|AGENTFLOW, key, name} —
bundle_deployed_resource.py:18,22,50).
Promotion (dev → test → prod) — Git + overrides
Promotion is a Git workflow, not a separate API: the whole bundle folder is committed/pushed, pulled into the target workspace, and deployed there; bundles can be promoted across environments (dev → test → prod) via Git (CLI README line 180, "Git integration and promotion").
Environment-specific values are parameterized in the manifest and overridden per environment:
- The manifest declares defaults under
defaults.variables, e.g.job_compute_key: "$${jobs.dependencies.small.compute.key}", referenced in descriptors as$${var.<name>}(e.g."clusterKey": "$${var.job_compute_key}"). (CLI README:180.) - Per-workspace overrides live in
.aidp/overrides.yamlinside the bundle — not committed to Git so the bundle stays portable. When an override is supplied, the referenced dependency (e.g. compute) is not created and the provided value is used; with no override, the system falls back to the manifest default (which may create a bundled dependency). This is what lets prod reuse existing infrastructure while dev creates fresh resources. (CLI README:180.) sync-bundlepreserves.aidp/overrides.yamland.aidp/aidp.state.jsonwhen reconciling against.aidp/resource_origins.yaml— so refreshing source content does not clobber env-specific config (CLI README:309).
Override candidate shapes (SDK models — the request/response objects, not the on-disk yaml): the
BundleOverrides object groups candidates as { compute: [ComputeOverrideItem], aicompute: [AiComputeOverrideItem] }
(bundle_overrides.py:30-37). Each item is
{ name, variableName, defaultValue, overrideValue, jobs|agentflows: [...] }
(compute_override_item.py:42-56, ai_compute_override_item.py:42-56). The create/update-overrides request
wraps it as CreateOrUpdateBundleOverridesDetails{ path, overrides }
(create_or_update_bundle_overrides_details.py:30-37); the read request is
GetBundleOverridesDetails{ path } (get_bundle_overrides_details.py:26-32).
Verify-first (overrides REST surface): the get/update-overrides HTTP endpoints have no
aidp bundleCLI command (CLI README lists only create/deploy/fetch-deployment-status/purge/sync-bundle) and were not live-probed on this env. The override models above are SDK-confirmed, but the exact override action path (e.g.…/bundles/actions/{getOverrides|createOrUpdateOverrides}) is unconfirmed — do not present it as a verified endpoint. For day-to-day promotion, edit.aidp/overrides.yamlin the bundle folder (the Oracle-documented path) rather than calling an unverified override API.
Workflow
- Verify with
aidp bundle fetch-deployment-status(CLI) orgetDeploymentStatus(REST fallback —oci raw-request,--profile DEFAULT→ session fallback). A not-provisioned /404here = Bundle not provisioned → stop and report. - Create the bundle —
CreateBundleDetailsbody above (name/path/bundledResources[{resourceType,resourceKey}]). Bundle folder must be inside a Git-backed workspace path. - Deploy (
{path}) → poll async (202) to terminal viaaidp-observability; report per-resource status fromfetch-deployment-status(SUCCEEDED/FAILED/IN_PROGRESS/NOT_DEPLOYED). - Promote (dev → test → prod): commit/push the bundle folder, pull into the target workspace, set
.aidp/overrides.yamlfor that environment, then deploy there.sync-bundlerefreshes source content while preserving overrides. - Purge (
{path}) only on explicit confirmation — tears down deployed resources (does not delete the bundle files).
Guardrails
deployand especiallypurgeare high-impact — show the resource set and confirm before running.
References
- references/aidp-cli-map.md — skill → official
aidpCLI command map (primary engine) - references/oci-raw-request.md · references/rest-endpoint-map.md
- references/payloads.md — persist + confirm request bodies for mutating ops
