@epilot/cli 0.1.53 → 0.1.55

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
@@ -29,7 +29,7 @@ npm install -g @epilot/cli
29
29
 
30
30
  <!-- usage-help -->
31
31
  ```
32
- epilot v0.1.53 — CLI for epilot APIs
32
+ epilot v0.1.55 — CLI for epilot APIs
33
33
 
34
34
  USAGE
35
35
  epilot <api> <operationId> [params...] [flags]
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Integration Toolkit API",
5
- "version": "1.2.0",
5
+ "version": "1.3.0",
6
6
  "description": "API for integrating with external systems in a standardised way."
7
7
  },
8
8
  "tags": [
@@ -3100,11 +3100,11 @@
3100
3100
  }
3101
3101
  },
3102
3102
  "502": {
3103
- "description": "Upstream error from the proxied target",
3103
+ "description": "Upstream failure: epilot could not obtain an HTTP response from the proxied target\n(e.g. TLS handshake failure, connection refused/reset, DNS failure or timeout).\nThe body's `code`/`reason` identify the underlying cause, distinguishing a\nremote-side problem from an epilot-side one. When the target *does* answer with\nits own status, that status and body are passed through unchanged via\n`SecureProxyResponse` instead.\n",
3104
3104
  "content": {
3105
3105
  "application/json": {
3106
3106
  "schema": {
3107
- "$ref": "#/components/schemas/ErrorResponseBase"
3107
+ "$ref": "#/components/schemas/SecureProxyUpstreamError"
3108
3108
  }
3109
3109
  }
3110
3110
  }
@@ -5856,7 +5856,32 @@
5856
5856
  "description": "Response headers from upstream"
5857
5857
  },
5858
5858
  "body": {
5859
- "description": "Response body from upstream"
5859
+ "description": "Response body from upstream. When `status_code` is 502 and the target never produced an HTTP response (TLS/connection/DNS failure or timeout), this is a `SecureProxyUpstreamError` describing the underlying cause."
5860
+ }
5861
+ }
5862
+ },
5863
+ "SecureProxyUpstreamError": {
5864
+ "type": "object",
5865
+ "description": "Error payload returned when epilot could not obtain an HTTP response from the proxied target. The failure is epilot-generated (HTTP 502) but the cause is usually remote-side; `code`/`reason` make that attributable.",
5866
+ "required": [
5867
+ "message"
5868
+ ],
5869
+ "properties": {
5870
+ "message": {
5871
+ "type": "string",
5872
+ "description": "Short error category.",
5873
+ "enum": [
5874
+ "Upstream network error",
5875
+ "Upstream error"
5876
+ ]
5877
+ },
5878
+ "code": {
5879
+ "type": "string",
5880
+ "description": "Underlying Node.js/axios error code when available (e.g. `UNABLE_TO_VERIFY_LEAF_SIGNATURE`, `ECONNREFUSED`, `ETIMEDOUT`, `ENOTFOUND`)."
5881
+ },
5882
+ "reason": {
5883
+ "type": "string",
5884
+ "description": "Human-readable explanation, present only for well-known codes (TLS/certificate, DNS and connection failures)."
5860
5885
  }
5861
5886
  }
5862
5887
  },
@@ -6908,7 +6933,7 @@
6908
6933
  "block"
6909
6934
  ],
6910
6935
  "default": "dead_letter",
6911
- "description": "What happens when an item exhausts max_delivery_attempts: dead_letter routes the exhausted item to the dead-letter queue; block halts the queue until operator/consumer action. Enforcement lands with the queue consumer (Phase 10) this field defines the contract."
6936
+ "description": "What happens when an item exhausts max_delivery_attempts: dead_letter routes the exhausted item to the dead-letter queue and advances past it so the stream keeps flowing; block halts the queue at that item until operator/consumer action removes it."
6912
6937
  },
6913
6938
  "max_delivery_attempts": {
6914
6939
  "type": "integer",
@@ -742,25 +742,14 @@
742
742
  },
743
743
  "RestoreSnapshotRequest": {
744
744
  "type": "object",
745
- "description": "Skipped resources surface under `Operation.skipped`. All filters default\nto the open setting (apply everything), which keeps Config Hub's manual-\nrestore semantics unchanged.\n",
745
+ "description": "Apply a captured snapshot to its source org. snapshot-api applies the\nmanifest verbatim minus any target ids the caller pre-decided to skip.\nDrift detection (skip modified-since-install) is the caller's\nresponsibility — blueprint-manifest-api owns that logic for blueprint\nrestores; Config Hub's manual restore just omits the field.\n",
746
746
  "properties": {
747
- "preserve_modified": {
748
- "type": "boolean",
749
- "default": false,
750
- "description": "When `true`, skip captured resources whose live payload's content\nfingerprint diverges from the capture-time fingerprint stored on\nthe manifest entry. Self-contained: snapshot-api fetches and hashes\nthe live payload itself; no cross-service lookup. Surfaces under\n`Operation.skipped` with `reason: 'modified'`. Legacy snapshots\ncaptured before fingerprints were stored fail open (applied).\n"
751
- },
752
- "preserve_co_owned": {
753
- "type": "boolean",
754
- "default": false,
755
- "deprecated": true,
756
- "description": "Deprecated. Accepted for back-compat but treated as a no-op.\nCo-ownership is now expressed via `exclude_target_ids` — the caller\n(typically blueprint-manifest-api) computes which targets to skip\nfrom its own data and passes the list. snapshot-api no longer\nreaches into BMA's lineage table.\n"
757
- },
758
747
  "exclude_target_ids": {
759
748
  "type": "array",
760
749
  "items": {
761
750
  "type": "string"
762
751
  },
763
- "description": "Target ids the caller has decided not to restore. snapshot-api\napplies the manifest minus these ids and reports them under\n`Operation.skipped` with `reason: 'co_owned'` (the only current\nproducer of exclude lists is BMA's revert flow, which uses this to\nhonor multi-blueprint ownership).\n"
752
+ "description": "Target ids the caller has decided not to restore. snapshot-api\napplies the manifest minus these ids. Drops are silent the\ncaller supplied the list and already knows.\n"
764
753
  }
765
754
  }
766
755
  },
@@ -914,40 +903,13 @@
914
903
  "partial",
915
904
  "failed"
916
905
  ],
917
- "description": "`partial` indicates the operation completed but skipped at least\none resource see `skipped`. Only populated by restores triggered\nwith `mode: 'preserve_edits'`.\n"
906
+ "description": "`partial` indicates `engine.apply` reported a partial success\n(one or more resources failed individually) but the operation\nas a whole did not fail.\n"
918
907
  },
919
908
  "error": {
920
909
  "type": "string"
921
910
  },
922
911
  "triggered_by": {
923
912
  "$ref": "#/components/schemas/CallerIdentity"
924
- },
925
- "skipped": {
926
- "type": "array",
927
- "description": "Per-resource skips, populated only for restores triggered with\n`mode: 'preserve_edits'`. Empty / absent for Config Hub's\ndefault overwrite-mode restores.\n",
928
- "items": {
929
- "$ref": "#/components/schemas/SkippedResource"
930
- }
931
- }
932
- }
933
- },
934
- "SkippedResource": {
935
- "type": "object",
936
- "required": [
937
- "lineage_id",
938
- "reason"
939
- ],
940
- "properties": {
941
- "lineage_id": {
942
- "type": "string"
943
- },
944
- "reason": {
945
- "type": "string",
946
- "enum": [
947
- "modified",
948
- "co_owned"
949
- ],
950
- "description": "- `modified` — current destination payload's fingerprint differs\n from the install-time fingerprint on the lineage row.\n- `co_owned` — lineage row has ≥2 distinct\n `blueprint_instance_ids`; restoring would unilaterally affect\n another blueprint instance's contribution.\n"
951
913
  }
952
914
  }
953
915
  },
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
11
11
  var main = defineCommand({
12
12
  meta: {
13
13
  name: "epilot",
14
- version: "0.1.53",
14
+ version: "0.1.55",
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-4HOIJNFX.js").then((m) => m.default),
34
- upgrade: () => import("../upgrade-EOOFF7TP.js").then((m) => m.default),
34
+ upgrade: () => import("../upgrade-SJPZVQ2P.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.53" : (await null).default.version;
137
+ var VERSION = true ? "0.1.55" : (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.53";
75
+ if (true) return "0.1.55";
76
76
  try {
77
77
  const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
78
78
  encoding: "utf-8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/cli",
3
- "version": "0.1.53",
3
+ "version": "0.1.55",
4
4
  "description": "CLI for epilot APIs",
5
5
  "type": "module",
6
6
  "bin": {