@epilot/cli 0.1.121 → 0.1.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -3429,7 +3429,7 @@
|
|
|
3429
3429
|
"post": {
|
|
3430
3430
|
"operationId": "restoreBlueprintDeploymentV3",
|
|
3431
3431
|
"summary": "restoreBlueprintDeploymentV3",
|
|
3432
|
-
"description": "Roll a deployment back to its pre-install state. Two phases:\n\n 1. Upsert — re-applies the captured payloads via snapshot-api's\n `:restore` (server-side; runs config-engine.apply with captured\n target ids pre-seeded). Skipped for pure-create deployments\n whose snapshot was empty.\n 2. Delete sweep — for lineage rows of this blueprint instance not\n present in the snapshot's captured set, deletes the live\n resource via the type's adapter. Co-ownership / drift /\n no-delete-capability skip the entry with the corresponding\n reason.\n\nResolves `(blueprint_id, job_id)` to the entry in\n`Blueprint.deployments[]` and reads its `snapshot_id` and\n`destination_blueprint_id` — the caller never needs to handle\nsnapshot ids directly.\n\nAsync — returns 202 with a job id. Poll the job to track progress.\nThe per-instance lock (`installation_status === 'IN_PROGRESS'`)\
|
|
3432
|
+
"description": "Roll a deployment back to its pre-install state. Two phases:\n\n 1. Upsert — re-applies the captured payloads via snapshot-api's\n `:restore` (server-side; runs config-engine.apply with captured\n target ids pre-seeded). Skipped for pure-create deployments\n whose snapshot was empty.\n 2. Delete sweep — for lineage rows of this blueprint instance not\n present in the snapshot's captured set, deletes the live\n resource via the type's adapter. Co-ownership / drift /\n no-delete-capability skip the entry with the corresponding\n reason.\n\nResolves `(blueprint_id, job_id)` to the entry in\n`Blueprint.deployments[]` and reads its `snapshot_id` and\n`destination_blueprint_id` — the caller never needs to handle\nsnapshot ids directly.\n\nAsync — returns 202 with a job id. Poll the job to track progress.\nThe restore holds its own per-instance lock (`active_restore_job_id`),\nseparate from `installation_status`. Starting a restore is rejected with\n409 when another restore already holds that lock, or when an install is\nrunning (`installation_status === 'IN_PROGRESS'`). Keeping the two locks\ndistinct keeps installs and reverts decoupled: an in-flight or failed\nrestore never overwrites `installation_status`, which keeps reflecting\nthe actual install outcome (and drives the install badge in the\nBlueprints overview) throughout the revert.\n",
|
|
3433
3433
|
"tags": [
|
|
3434
3434
|
"Blueprints"
|
|
3435
3435
|
],
|
|
@@ -4592,6 +4592,17 @@
|
|
|
4592
4592
|
"FAILED"
|
|
4593
4593
|
]
|
|
4594
4594
|
},
|
|
4595
|
+
"active_restore_job_id": {
|
|
4596
|
+
"type": "string",
|
|
4597
|
+
"nullable": true,
|
|
4598
|
+
"description": "ID of the restore (revert) job currently holding a lock on this\nblueprint instance's resources, or null/absent when no revert is\nrunning. Deliberately separate from `installation_status`: installs\nand reverts stay decoupled, so a revert must not overwrite install\nhealth — `installation_status` keeps reflecting the actual install\noutcome (and drives the install badge in the Blueprints overview)\nfor the duration of the revert.\n"
|
|
4599
|
+
},
|
|
4600
|
+
"active_restore_started_at": {
|
|
4601
|
+
"type": "string",
|
|
4602
|
+
"format": "date-time",
|
|
4603
|
+
"nullable": true,
|
|
4604
|
+
"description": "ISO timestamp of when the current restore lock\n(`active_restore_job_id`) was acquired, or null/absent when no revert\nis running. Written and cleared alongside `active_restore_job_id`.\nLets the lock self-expire: a lock older than the staleness threshold\n(whose job never completed the sweep, e.g. the state machine was\naborted) is treated as stale so a new revert can proceed instead of\nbeing blocked forever.\n"
|
|
4605
|
+
},
|
|
4595
4606
|
"created_at": {
|
|
4596
4607
|
"type": "string",
|
|
4597
4608
|
"format": "date-time"
|
|
@@ -5567,6 +5578,15 @@
|
|
|
5567
5578
|
},
|
|
5568
5579
|
"error_message": {
|
|
5569
5580
|
"type": "string"
|
|
5581
|
+
},
|
|
5582
|
+
"error_code": {
|
|
5583
|
+
"type": "string",
|
|
5584
|
+
"description": "Stable machine code for a failed resource, when config-engine threw a\ntyped error. Keys a translation in the Blueprints UI; `error_message`\nis the English fallback when absent or unrecognised.\n"
|
|
5585
|
+
},
|
|
5586
|
+
"error_data": {
|
|
5587
|
+
"type": "object",
|
|
5588
|
+
"additionalProperties": true,
|
|
5589
|
+
"description": "Interpolation values for the translated `error_code` message."
|
|
5570
5590
|
}
|
|
5571
5591
|
}
|
|
5572
5592
|
},
|
|
@@ -5610,7 +5630,10 @@
|
|
|
5610
5630
|
"modified",
|
|
5611
5631
|
"delete_unsupported",
|
|
5612
5632
|
"heuristic_match",
|
|
5613
|
-
"co_owned"
|
|
5633
|
+
"co_owned",
|
|
5634
|
+
"dependency_protected",
|
|
5635
|
+
"already_deleted",
|
|
5636
|
+
"non_revertible"
|
|
5614
5637
|
]
|
|
5615
5638
|
},
|
|
5616
5639
|
"last_synced_at": {
|
|
@@ -5652,6 +5675,29 @@
|
|
|
5652
5675
|
}
|
|
5653
5676
|
}
|
|
5654
5677
|
}
|
|
5678
|
+
},
|
|
5679
|
+
"protected_by": {
|
|
5680
|
+
"type": "array",
|
|
5681
|
+
"description": "Only set when `reason == dependency_protected`. The surviving\nresource(s) whose 'hard' reference to this one is why it wasn't\ndeleted (e.g. a skipped Journey still triggering this Automation).\n",
|
|
5682
|
+
"items": {
|
|
5683
|
+
"type": "object",
|
|
5684
|
+
"required": [
|
|
5685
|
+
"lineage_id",
|
|
5686
|
+
"type"
|
|
5687
|
+
],
|
|
5688
|
+
"properties": {
|
|
5689
|
+
"lineage_id": {
|
|
5690
|
+
"type": "string"
|
|
5691
|
+
},
|
|
5692
|
+
"type": {
|
|
5693
|
+
"type": "string"
|
|
5694
|
+
},
|
|
5695
|
+
"target_id": {
|
|
5696
|
+
"type": "string",
|
|
5697
|
+
"nullable": true
|
|
5698
|
+
}
|
|
5699
|
+
}
|
|
5700
|
+
}
|
|
5655
5701
|
}
|
|
5656
5702
|
}
|
|
5657
5703
|
},
|
|
@@ -6043,10 +6043,15 @@
|
|
|
6043
6043
|
"properties": {
|
|
6044
6044
|
"templates": {
|
|
6045
6045
|
"type": "object",
|
|
6046
|
+
"deprecated": true,
|
|
6046
6047
|
"additionalProperties": {
|
|
6047
6048
|
"type": "string"
|
|
6048
6049
|
},
|
|
6049
|
-
"description": "
|
|
6050
|
+
"description": "DEPRECATED — client-supplied map of content field name to Handlebars template string, resolved per related meter and returned as templates_output on the meter. Use `templates_ref` instead; ignored when `templates_ref` is present and rejected once the org has the `portals-reject-client-templates` flag enabled."
|
|
6051
|
+
},
|
|
6052
|
+
"templates_ref": {
|
|
6053
|
+
"$ref": "#/components/schemas/TemplatesRef",
|
|
6054
|
+
"description": "Reference to the meter selector block whose admin-configured content provides the templates, derived server-side."
|
|
6050
6055
|
}
|
|
6051
6056
|
}
|
|
6052
6057
|
}
|
|
@@ -8521,17 +8526,23 @@
|
|
|
8521
8526
|
},
|
|
8522
8527
|
"templates": {
|
|
8523
8528
|
"type": "object",
|
|
8529
|
+
"deprecated": true,
|
|
8524
8530
|
"additionalProperties": {
|
|
8525
8531
|
"type": "string"
|
|
8526
8532
|
},
|
|
8527
|
-
"description": "
|
|
8533
|
+
"description": "DEPRECATED — client-supplied template map (key to Handlebars template string), resolved per reading. Use `templates_ref` instead; ignored when `templates_ref` is present and rejected once the org has the `portals-reject-client-templates` flag enabled."
|
|
8528
8534
|
},
|
|
8529
8535
|
"counter_templates": {
|
|
8530
8536
|
"type": "object",
|
|
8537
|
+
"deprecated": true,
|
|
8531
8538
|
"additionalProperties": {
|
|
8532
8539
|
"type": "string"
|
|
8533
8540
|
},
|
|
8534
|
-
"description": "
|
|
8541
|
+
"description": "DEPRECATED — client-supplied template map resolved against the counter entity. Use `templates_ref` instead; same deprecation rules as `templates`."
|
|
8542
|
+
},
|
|
8543
|
+
"templates_ref": {
|
|
8544
|
+
"$ref": "#/components/schemas/TemplatesRef",
|
|
8545
|
+
"description": "Reference to the meter reading block whose admin-configured content provides both the per-reading templates (content_top_name, main_content_name, content_bottom_name) and the counter templates (counter_title_name, counter_subtitle_name), derived server-side."
|
|
8535
8546
|
}
|
|
8536
8547
|
}
|
|
8537
8548
|
}
|
|
@@ -9303,7 +9314,7 @@
|
|
|
9303
9314
|
"post": {
|
|
9304
9315
|
"operationId": "interpolatePortalPages",
|
|
9305
9316
|
"summary": "interpolatePortalPages",
|
|
9306
|
-
"description": "Interpolate template variables in portal pages without reading from the database. Accepts pages in the request body and returns them with templates resolved.",
|
|
9317
|
+
"description": "Interpolate template variables in portal pages without reading from the database. Accepts pages in the request body and returns them with templates resolved. Portal Builder preview only: requires a 360 (epilot) token or a `portal_preview` token; plain portal user tokens get 403.",
|
|
9307
9318
|
"tags": [
|
|
9308
9319
|
"ECP Admin"
|
|
9309
9320
|
],
|
|
@@ -13929,9 +13940,36 @@
|
|
|
13929
13940
|
},
|
|
13930
13941
|
"templates": {
|
|
13931
13942
|
"type": "object",
|
|
13943
|
+
"deprecated": true,
|
|
13944
|
+
"description": "DEPRECATED — client-supplied Handlebars templates. Use `templates_ref` instead so templates are derived server-side from admin-authored portal configuration. Ignored when `templates_ref` is present; rejected once the org has the `portals-reject-client-templates` flag enabled.",
|
|
13932
13945
|
"additionalProperties": {
|
|
13933
13946
|
"type": "string"
|
|
13934
13947
|
}
|
|
13948
|
+
},
|
|
13949
|
+
"templates_ref": {
|
|
13950
|
+
"$ref": "#/components/schemas/TemplatesRef"
|
|
13951
|
+
}
|
|
13952
|
+
}
|
|
13953
|
+
},
|
|
13954
|
+
"TemplatesRef": {
|
|
13955
|
+
"type": "object",
|
|
13956
|
+
"description": "Reference to admin-authored portal configuration (a page block or a global search configuration item) from which the API derives Handlebars templates server-side. This replaces client-supplied template strings so portal users can never submit arbitrary templates for resolution. When both a reference and raw `templates` are provided, the reference wins and the raw templates are ignored.",
|
|
13957
|
+
"properties": {
|
|
13958
|
+
"page_id": {
|
|
13959
|
+
"type": "string",
|
|
13960
|
+
"description": "ID of the portal page to derive templates from. When given without `block_id`, templates are derived from every block of the page and returned resolved as a nested map keyed by block id (the entity detail page contract)."
|
|
13961
|
+
},
|
|
13962
|
+
"block_id": {
|
|
13963
|
+
"type": "string",
|
|
13964
|
+
"description": "ID of a block within the page. Templates are derived from the block's content according to its block type (e.g. meter_selector, meter_reading, entity_list)."
|
|
13965
|
+
},
|
|
13966
|
+
"config_id": {
|
|
13967
|
+
"type": "string",
|
|
13968
|
+
"description": "For blocks carrying a per-schema configuration array (entity_list), the id of the configuration item to derive templates from. Requires `page_id` and `block_id`."
|
|
13969
|
+
},
|
|
13970
|
+
"global_search_config_id": {
|
|
13971
|
+
"type": "string",
|
|
13972
|
+
"description": "ID of the portal's `global_search` configuration item to derive search result templates and the group title template from. Mutually exclusive with `page_id`."
|
|
13935
13973
|
}
|
|
13936
13974
|
}
|
|
13937
13975
|
},
|
|
@@ -15773,7 +15811,8 @@
|
|
|
15773
15811
|
},
|
|
15774
15812
|
"templates": {
|
|
15775
15813
|
"type": "object",
|
|
15776
|
-
"
|
|
15814
|
+
"deprecated": true,
|
|
15815
|
+
"description": "DEPRECATED — client-supplied template strings to parse and return as synthetic fields. Supports both string values and nested objects of strings. Use `templates_ref` instead so templates are derived server-side from admin-authored portal configuration; ignored when `templates_ref` is present and rejected once the org has the `portals-reject-client-templates` flag enabled.",
|
|
15777
15816
|
"additionalProperties": {
|
|
15778
15817
|
"oneOf": [
|
|
15779
15818
|
{
|
|
@@ -15797,6 +15836,10 @@
|
|
|
15797
15836
|
}
|
|
15798
15837
|
}
|
|
15799
15838
|
},
|
|
15839
|
+
"templates_ref": {
|
|
15840
|
+
"$ref": "#/components/schemas/TemplatesRef",
|
|
15841
|
+
"description": "Reference to the portal page (or a single block within it) whose admin-configured content provides the templates, derived server-side. With only `page_id`, the derived templates are a nested map keyed by block id, mirroring the entity detail page contract."
|
|
15842
|
+
},
|
|
15800
15843
|
"filters": {
|
|
15801
15844
|
"type": "array",
|
|
15802
15845
|
"description": "Additional filters to apply to the search query",
|
|
@@ -15913,7 +15956,8 @@
|
|
|
15913
15956
|
},
|
|
15914
15957
|
"group_title": {
|
|
15915
15958
|
"type": "string",
|
|
15916
|
-
"
|
|
15959
|
+
"deprecated": true,
|
|
15960
|
+
"description": "DEPRECATED — client-supplied Handlebars template for the group title. Use `templates_ref` (global_search_config_id) instead; overridden when `templates_ref` derives a group title and rejected once the org has the `portals-reject-client-templates` flag enabled.",
|
|
15917
15961
|
"example": "{{customer[Primary].first_name}} {{customer[Primary].last_name}}"
|
|
15918
15962
|
},
|
|
15919
15963
|
"group_size": {
|
|
@@ -15980,7 +16024,8 @@
|
|
|
15980
16024
|
},
|
|
15981
16025
|
"templates": {
|
|
15982
16026
|
"type": "object",
|
|
15983
|
-
"
|
|
16027
|
+
"deprecated": true,
|
|
16028
|
+
"description": "DEPRECATED — client-supplied template strings to parse and return as synthetic fields. Use `templates_ref` instead; ignored when `templates_ref` is present and rejected once the org has the `portals-reject-client-templates` flag enabled.",
|
|
15984
16029
|
"additionalProperties": {
|
|
15985
16030
|
"type": "string"
|
|
15986
16031
|
},
|
|
@@ -15990,6 +16035,10 @@
|
|
|
15990
16035
|
"content_bottom_name": "{{custom_contract_delivery_address}}"
|
|
15991
16036
|
}
|
|
15992
16037
|
},
|
|
16038
|
+
"templates_ref": {
|
|
16039
|
+
"$ref": "#/components/schemas/TemplatesRef",
|
|
16040
|
+
"description": "Reference to admin-authored configuration providing the templates, derived server-side. For the global search block pass `global_search_config_id`; the derived templates also supply the group title template (overriding `group_title`)."
|
|
16041
|
+
},
|
|
15993
16042
|
"filters": {
|
|
15994
16043
|
"type": "array",
|
|
15995
16044
|
"description": "Additional filters to apply to the search query",
|
package/dist/bin/epilot.js
CHANGED
|
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
|
|
|
11
11
|
var main = defineCommand({
|
|
12
12
|
meta: {
|
|
13
13
|
name: "epilot",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.123",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -31,7 +31,7 @@ var main = defineCommand({
|
|
|
31
31
|
profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
|
|
32
32
|
config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
|
|
33
33
|
completion: () => import("../completion-F6MX5VSK.js").then((m) => m.default),
|
|
34
|
-
upgrade: () => import("../upgrade-
|
|
34
|
+
upgrade: () => import("../upgrade-6E2SELZJ.js").then((m) => m.default),
|
|
35
35
|
"access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
|
|
36
36
|
address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
|
|
37
37
|
"address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
|
|
@@ -134,7 +134,7 @@ process.stderr.on("error", (err) => {
|
|
|
134
134
|
if (err.code === "EPIPE") process.exit(0);
|
|
135
135
|
throw err;
|
|
136
136
|
});
|
|
137
|
-
var VERSION = true ? "0.1.
|
|
137
|
+
var VERSION = true ? "0.1.123" : (await null).default.version;
|
|
138
138
|
var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
|
|
139
139
|
process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
|
|
140
140
|
var args = process.argv.slice(2);
|
|
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
var getCurrentVersion = () => {
|
|
75
|
-
if (true) return "0.1.
|
|
75
|
+
if (true) return "0.1.123";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|