@github/copilot-sdk 1.0.23-preview.1 → 1.0.23-preview.3

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.
@@ -22,7 +22,7 @@ __export(cliVersion_exports, {
22
22
  COPILOT_CLI_VERSION: () => COPILOT_CLI_VERSION
23
23
  });
24
24
  module.exports = __toCommonJS(cliVersion_exports);
25
- const COPILOT_CLI_VERSION = "1.0.99-1";
25
+ const COPILOT_CLI_VERSION = "1.0.99-3";
26
26
  const COPILOT_CLI_USE_NPM_PACKAGE = false;
27
27
  // Annotate the CommonJS export names for ESM import in node:
28
28
  0 && (module.exports = {
@@ -761,6 +761,22 @@ function createServerRpc(connection) {
761
761
  * @returns Outcome of a catalog.search call: either bounded inert candidates, or one typed refusal. Never a partial success.
762
762
  */
763
763
  search: async (params) => connection.sendRequest("catalog.search", params),
764
+ /**
765
+ * Retrieves one saved feed by its opaque ID, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
766
+ *
767
+ * @param params Retrieves one saved feed by its opaque ID. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
768
+ *
769
+ * @returns Outcome of catalog.getSavedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
770
+ */
771
+ getSavedFeed: async (params) => connection.sendRequest("catalog.getSavedFeed", params),
772
+ /**
773
+ * Retrieves one generated feed by strategy and key, such as telemetry/popular, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
774
+ *
775
+ * @param params Retrieves one generated feed, computed on every request, by strategy and key, such as `telemetry` and `popular`. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
776
+ *
777
+ * @returns Outcome of catalog.getGeneratedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
778
+ */
779
+ getGeneratedFeed: async (params) => connection.sendRequest("catalog.getGeneratedFeed", params),
764
780
  /**
765
781
  * Terminates one retained catalog selection group. A selected outcome returns the native host a fresh single-use candidate handle plus the original searchId for a later explicit mcp.planInstall call; non-selected outcomes release the group without producing a planning input. Candidate state, cards, URLs, credentials and private identifiers remain inside the runtime. The model-facing catalog_select tool projects the result separately and never exposes the candidate handle or searchId.
766
782
  *
@@ -2755,6 +2771,14 @@ function createSessionRpc(connection, sessionId) {
2755
2771
  * @returns Progress information for the task, or null when no task with that ID is tracked.
2756
2772
  */
2757
2773
  getProgress: async (params) => connection.sendRequest("session.tasks.getProgress", { ...params, sessionId }),
2774
+ /**
2775
+ * Reads a detached shell task's output after a cursor, optionally waiting for new output or for the shell to finish.
2776
+ *
2777
+ * @param params Detached shell task to read output from, with an optional cursor and long-poll wait. waitMs defaults to zero (maximum 30000).
2778
+ *
2779
+ * @returns Output a detached shell task wrote after the request cursor, with the cursor for the next read.
2780
+ */
2781
+ readOutput: async (params) => connection.sendRequest("session.tasks.readOutput", { ...params, sessionId }),
2758
2782
  /**
2759
2783
  * Returns the first sync-waiting task that can currently be promoted to background mode.
2760
2784
  *
@@ -1,2 +1,2 @@
1
- export declare const COPILOT_CLI_VERSION = "1.0.99-1";
1
+ export declare const COPILOT_CLI_VERSION = "1.0.99-3";
2
2
  export declare const COPILOT_CLI_USE_NPM_PACKAGE = false;
@@ -1,4 +1,4 @@
1
- const COPILOT_CLI_VERSION = "1.0.99-1";
1
+ const COPILOT_CLI_VERSION = "1.0.99-3";
2
2
  const COPILOT_CLI_USE_NPM_PACKAGE = false;
3
3
  export {
4
4
  COPILOT_CLI_USE_NPM_PACKAGE,
@@ -992,7 +992,11 @@ export type CatalogCapability =
992
992
  /** Understands `installability`, the reviewable `installPlan` and the optional materialisation `handle` on Agent Plugin candidates, and the verified Agent Plugin installation APIs plugins.planInstall and plugins.applyInstall, and Agent Plugin plans from catalog.planInstallFromReference. Requires agent-plugin-discovery; without it, plugin candidates are unchanged. Advertised only by runtimes with the plugin installer linked; acquisition may still be refused as feature-disabled per selected session. */
993
993
  | "agent-plugin-confirmed-installation"
994
994
  /** Understands catalog.planInstallFromReference, which plans installing whatever resource an Agent Finder materialisation reference pins. It plans only kinds whose installation capability the caller also requires: skill-confirmed-installation for Skills, agent-plugin-confirmed-installation for Agent Plugins. Advertised only by runtimes with the Skill installation engine linked. */
995
- | "catalog-reference-installation";
995
+ | "catalog-reference-installation"
996
+ /** Understands catalog.getSavedFeed and catalog.getGeneratedFeed, which retrieve a saved or generated feed with entries projected exactly like catalog.search candidates. Requires catalog-search-credential-required; add catalog-search-session-bound to bind the retrieval to a selected session. */
997
+ | "catalog-feeds"
998
+ /** Understands the optional `categories` filter on catalog.search, which the runtime forwards to the catalog authority. Required to send the filter, so an older runtime refuses the request instead of silently returning unfiltered results. */
999
+ | "catalog-search-categories";
996
1000
  /**
997
1001
  * Bounded extensible wire-feature identifier. Known values are described by `CatalogCapability`; newer callers may send future identifiers so an older runtime can return a typed negotiation refusal instead of failing schema validation. Capability negotiation establishes contract understanding, while each operation's result separately reports runtime availability.
998
1002
  *
@@ -1017,6 +1021,52 @@ export type CatalogContractViolationReason =
1017
1021
  | "duplicate-identity"
1018
1022
  /** A result declared no media type, or one this contract does not model. */
1019
1023
  | "unknown-media-type";
1024
+ /**
1025
+ * Discriminator for an available feed entry
1026
+ *
1027
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1028
+ * via the `definition` "CatalogFeedAvailableStatus".
1029
+ */
1030
+ /** @experimental */
1031
+ export type CatalogFeedAvailableStatus = "available";
1032
+ /**
1033
+ * One feed entry, in its feed position. Only available entries carry a candidate.
1034
+ *
1035
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1036
+ * via the `definition` "CatalogFeedEntry".
1037
+ */
1038
+ /** @experimental */
1039
+ export type CatalogFeedEntry = CatalogFeedAvailableEntry | CatalogFeedUnavailableEntry | CatalogFeedFilteredEntry;
1040
+ /**
1041
+ * Discriminator for an unavailable feed entry
1042
+ *
1043
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1044
+ * via the `definition` "CatalogFeedUnavailableStatus".
1045
+ */
1046
+ /** @experimental */
1047
+ export type CatalogFeedUnavailableStatus = "unavailable";
1048
+ /**
1049
+ * Why a feed entry cannot be presented
1050
+ *
1051
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1052
+ * via the `definition` "CatalogFeedUnavailableReason".
1053
+ */
1054
+ /** @experimental */
1055
+ export type CatalogFeedUnavailableReason =
1056
+ /** The identifier no longer resolves to a resource. */
1057
+ "not-found"
1058
+ /** The resource is of a kind this caller did not negotiate or this runtime does not support. */
1059
+ | "unsupported-kind"
1060
+ /** The resource failed the same validation catalog.search applies, or repeats an earlier entry. */
1061
+ | "invalid-resource";
1062
+ /**
1063
+ * Discriminator for a feed entry filtered by trust tier
1064
+ *
1065
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1066
+ * via the `definition` "CatalogFeedFilteredStatus".
1067
+ */
1068
+ /** @experimental */
1069
+ export type CatalogFeedFilteredStatus = "filtered";
1020
1070
  /**
1021
1071
  * Which kind of opaque handle was presented
1022
1072
  *
@@ -1082,7 +1132,13 @@ export type CatalogInvalidRequestField =
1082
1132
  /** The opaque selection reference was missing or malformed. */
1083
1133
  | "selectionRef"
1084
1134
  /** The terminal selection outcome was missing or unsupported. */
1085
- | "outcome";
1135
+ | "outcome"
1136
+ /** The saved feed ID, or the generated feed strategy or key, was missing or malformed. */
1137
+ | "feed"
1138
+ /** The trust tier filter was empty, repeated a tier or named an unknown tier. */
1139
+ | "trustTiers"
1140
+ /** The category filter was empty, too long, repeated a category or contained a value that is not a lowercase slug. */
1141
+ | "categories";
1086
1142
  /**
1087
1143
  * How a card failed validation
1088
1144
  *
@@ -1231,6 +1287,12 @@ export type CatalogReferenceInstallationFailureReason =
1231
1287
  | "unsupported-resource"
1232
1288
  /** The resource's entrypoint could not be retrieved or verified. */
1233
1289
  | "entrypoint-unavailable"
1290
+ /** GitHub rate limited retrieval from the pinned public source. Retry after retryAfterSeconds when present. */
1291
+ | "source-rate-limited"
1292
+ /** No GitHub sign-in or credential is available, so the caller must sign in. */
1293
+ | "no-credential"
1294
+ /** Agent Finder refused the GitHub credential (HTTP 401, or a 403 without rate-limit evidence); the caller must sign in again. */
1295
+ | "credential-rejected"
1234
1296
  /** The Skill entrypoint is not a valid Skill. */
1235
1297
  | "invalid-skill"
1236
1298
  /** The plugin manifest is not a valid plugin manifest, or the bundle has another manifest that would take precedence over the reviewed one. */
@@ -1262,6 +1324,10 @@ export type CatalogReferenceInstallationOutcome = {
1262
1324
  kind: "plugin-install-planned";
1263
1325
  } | {
1264
1326
  reason: CatalogReferenceInstallationFailureReason;
1327
+ /**
1328
+ * Whole seconds GitHub asked the caller to wait, present only with source-rate-limited.
1329
+ */
1330
+ retryAfterSeconds?: number;
1265
1331
  /**
1266
1332
  * Reference planning outcome discriminator naming the planned kind.
1267
1333
  */
@@ -1407,11 +1473,28 @@ export type PluginInstallationReview = {
1407
1473
  * when this exceeds 262144 UTF-8 bytes; it is never truncated.
1408
1474
  */
1409
1475
  manifestContent: string;
1476
+ /**
1477
+ * MCP servers the verified files declare, exactly as an install of these files loads
1478
+ * them. Omitted when the plugin declares none.
1479
+ */
1480
+ mcpServers?: PluginInstallationMcpServerReview[];
1410
1481
  /**
1411
1482
  * Exact reviewed Agent Plugin installation action.
1412
1483
  */
1413
1484
  action: "install";
1414
1485
  };
1486
+ /**
1487
+ * How a reviewed plugin's MCP server is reached.
1488
+ *
1489
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1490
+ * via the `definition` "PluginInstallationMcpTransport".
1491
+ */
1492
+ /** @experimental */
1493
+ export type PluginInstallationMcpTransport =
1494
+ /** An HTTP or SSE server reached over the network, which may ask the user to sign in. */
1495
+ "remote"
1496
+ /** A command the plugin runs on this machine. */
1497
+ | "local";
1415
1498
  /**
1416
1499
  * Planning result for a materialisation reference with the honoured contract, or a typed refusal.
1417
1500
  *
@@ -1426,25 +1509,15 @@ export type CatalogReferenceInstallationResult = {
1426
1509
  kind: "outcome";
1427
1510
  outcome: CatalogReferenceInstallationOutcome;
1428
1511
  negotiated: CatalogNegotiatedContract;
1429
- } | CatalogNegotiationRefusedError | CatalogInvalidRequestError;
1430
- /**
1431
- * Relationship of the backend-reported count to the complete query result set.
1432
- *
1433
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1434
- * via the `definition` "CatalogSearchTotalCountRelation".
1435
- */
1436
- /** @experimental */
1437
- export type CatalogSearchTotalCountRelation =
1438
- /** No exact/full-query or lower-bound guarantee is available. */
1439
- "unknown";
1512
+ } | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogNetworkFailureError;
1440
1513
  /**
1441
- * Outcome of a catalog.search call: either bounded inert candidates, or one typed refusal. Never a partial success.
1514
+ * Outcome of catalog.getGeneratedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
1442
1515
  *
1443
1516
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1444
- * via the `definition` "CatalogSearchResult".
1517
+ * via the `definition` "CatalogResourceGeneratedFeedResult".
1445
1518
  */
1446
1519
  /** @experimental */
1447
- export type CatalogSearchResult = CatalogSearchSucceeded | CatalogNegotiationRefusedError | CatalogUnsupportedKindError | CatalogInvalidRequestError | CatalogAuthenticationRequiredError | CatalogPolicyRejectedError | CatalogNetworkFailureError | CatalogUnsafeRetrievalError | CatalogMalformedCardError | CatalogContractViolationError | CatalogUnavailableError;
1520
+ export type CatalogResourceGeneratedFeedResult = CatalogGetGeneratedFeedSucceeded | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogAuthenticationRequiredError | CatalogPolicyRejectedError | CatalogNetworkFailureError | CatalogUnsafeRetrievalError | CatalogMalformedCardError | CatalogUnavailableError;
1448
1521
  /**
1449
1522
  * Which hardened-fetch control refused a retrieval
1450
1523
  *
@@ -1482,7 +1555,35 @@ export type CatalogUnavailableReason =
1482
1555
  /** No catalog authority is configured for this runtime. */
1483
1556
  | "authority-not-configured"
1484
1557
  /** The surface is disabled by policy on this runtime. */
1485
- | "disabled-by-policy";
1558
+ | "disabled-by-policy"
1559
+ /** The requested saved feed, or generated feed strategy or key, does not exist. */
1560
+ | "feed-not-found";
1561
+ /**
1562
+ * Outcome of catalog.getSavedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
1563
+ *
1564
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1565
+ * via the `definition` "CatalogResourceSavedFeedResult".
1566
+ */
1567
+ /** @experimental */
1568
+ export type CatalogResourceSavedFeedResult = CatalogGetSavedFeedSucceeded | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogAuthenticationRequiredError | CatalogPolicyRejectedError | CatalogNetworkFailureError | CatalogUnsafeRetrievalError | CatalogMalformedCardError | CatalogUnavailableError;
1569
+ /**
1570
+ * Relationship of the backend-reported count to the complete query result set.
1571
+ *
1572
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1573
+ * via the `definition` "CatalogSearchTotalCountRelation".
1574
+ */
1575
+ /** @experimental */
1576
+ export type CatalogSearchTotalCountRelation =
1577
+ /** No exact/full-query or lower-bound guarantee is available. */
1578
+ "unknown";
1579
+ /**
1580
+ * Outcome of a catalog.search call: either bounded inert candidates, or one typed refusal. Never a partial success.
1581
+ *
1582
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
1583
+ * via the `definition` "CatalogSearchResult".
1584
+ */
1585
+ /** @experimental */
1586
+ export type CatalogSearchResult = CatalogSearchSucceeded | CatalogNegotiationRefusedError | CatalogUnsupportedKindError | CatalogInvalidRequestError | CatalogAuthenticationRequiredError | CatalogPolicyRejectedError | CatalogNetworkFailureError | CatalogUnsafeRetrievalError | CatalogMalformedCardError | CatalogContractViolationError | CatalogUnavailableError;
1486
1587
  /**
1487
1588
  * Terminal outcome declared for a retained catalog selection group
1488
1589
  *
@@ -2852,6 +2953,22 @@ export type SessionLogLevel =
2852
2953
  | "warning"
2853
2954
  /** Error message describing a failure. */
2854
2955
  | "error";
2956
+ /**
2957
+ * Administrator-configured Ensemble preference, independent of execution support.
2958
+ *
2959
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
2960
+ * via the `definition` "ManagedEnsembleTier".
2961
+ */
2962
+ /** @experimental */
2963
+ export type ManagedEnsembleTier =
2964
+ /** Balance efficiency and intelligence. */
2965
+ "balance"
2966
+ /** Prefer higher intelligence. */
2967
+ | "high"
2968
+ /** Prefer maximum intelligence. */
2969
+ | "max"
2970
+ /** Leave tier selection unmanaged without falling back to legacy Auto policy. */
2971
+ | "unmanaged";
2855
2972
  /** @experimental */
2856
2973
  export type ManagedPermissionOperation = {
2857
2974
  /**
@@ -4441,6 +4558,12 @@ export type PluginInstallationFailureReason =
4441
4558
  | "payload-unavailable"
4442
4559
  /** The acquired files no longer match the reviewed descriptor. */
4443
4560
  | "payload-mismatch"
4561
+ /** GitHub rate limited retrieval from the pinned public source; nothing was installed. Retry after retryAfterSeconds when present. */
4562
+ | "source-rate-limited"
4563
+ /** No GitHub sign-in or credential is available, so the caller must sign in. */
4564
+ | "no-credential"
4565
+ /** Agent Finder refused the GitHub credential (HTTP 401, or a 403 without rate-limit evidence); the caller must sign in again. */
4566
+ | "credential-rejected"
4444
4567
  /** Plugin installation storage or admission is busy. */
4445
4568
  | "busy"
4446
4569
  /** A plugin with the same name or install location already exists. */
@@ -4462,6 +4585,10 @@ export type PluginInstallationManagementOutcome = {
4462
4585
  kind: "install-planned";
4463
4586
  } | {
4464
4587
  reason: PluginInstallationFailureReason;
4588
+ /**
4589
+ * Whole seconds GitHub asked the caller to wait, present only with source-rate-limited.
4590
+ */
4591
+ retryAfterSeconds?: number;
4465
4592
  /**
4466
4593
  * Agent Plugin installation management outcome discriminator.
4467
4594
  */
@@ -4481,7 +4608,7 @@ export type PluginInstallationManagementResult = {
4481
4608
  kind: "outcome";
4482
4609
  outcome: PluginInstallationManagementOutcome;
4483
4610
  negotiated: CatalogNegotiatedContract;
4484
- } | CatalogNegotiationRefusedError | CatalogInvalidRequestError;
4611
+ } | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogNetworkFailureError;
4485
4612
  /**
4486
4613
  * Terminal verified Agent Plugin installation result.
4487
4614
  *
@@ -4519,6 +4646,10 @@ export type PluginInstallationOutcome = {
4519
4646
  * Present once an operation has been allocated.
4520
4647
  */
4521
4648
  operationId?: string;
4649
+ /**
4650
+ * Whole seconds GitHub asked the caller to wait, present only with source-rate-limited.
4651
+ */
4652
+ retryAfterSeconds?: number;
4522
4653
  /**
4523
4654
  * Terminal Agent Plugin installation outcome discriminator.
4524
4655
  */
@@ -4538,7 +4669,7 @@ export type PluginInstallationResult = {
4538
4669
  kind: "outcome";
4539
4670
  outcome: PluginInstallationOutcome;
4540
4671
  negotiated: CatalogNegotiatedContract;
4541
- } | CatalogNegotiationRefusedError | CatalogInvalidRequestError;
4672
+ } | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogNetworkFailureError;
4542
4673
  /**
4543
4674
  * Where completed plugin content was staged before atomic promotion.
4544
4675
  *
@@ -5457,6 +5588,12 @@ export type SkillInstallationFailureReason =
5457
5588
  | "payload-unavailable"
5458
5589
  /** The acquired payload no longer matches the reviewed descriptor. */
5459
5590
  | "payload-mismatch"
5591
+ /** GitHub rate limited retrieval from the pinned public source; nothing was installed. Retry after retryAfterSeconds when present. Reported only to callers that require catalog-reference-installation; others receive payload-unavailable. */
5592
+ | "source-rate-limited"
5593
+ /** No GitHub sign-in or credential is available, so the caller must sign in. Reported only to callers that require catalog-reference-installation; others receive policy-context-unavailable. */
5594
+ | "no-credential"
5595
+ /** Agent Finder refused the GitHub credential (HTTP 401, or a 403 without rate-limit evidence); the caller must sign in again. Reported only to callers that require catalog-reference-installation; others receive descriptor-unavailable. */
5596
+ | "credential-rejected"
5460
5597
  /** The retained Skill source changed after planning. */
5461
5598
  | "source-changed"
5462
5599
  /** The selected runtime cannot inspect or control the requested lifecycle operation. */
@@ -5543,6 +5680,10 @@ export type SkillInstallationManagementOutcome = {
5543
5680
  kind: "enabled-changed";
5544
5681
  } | {
5545
5682
  reason: SkillInstallationFailureReason;
5683
+ /**
5684
+ * Whole seconds GitHub asked the caller to wait, present only with source-rate-limited.
5685
+ */
5686
+ retryAfterSeconds?: number;
5546
5687
  /**
5547
5688
  * Skill installation management outcome discriminator.
5548
5689
  */
@@ -5686,6 +5827,10 @@ export type SkillInstallationOutcome = {
5686
5827
  * Present once an operation has been allocated.
5687
5828
  */
5688
5829
  operationId?: string;
5830
+ /**
5831
+ * Whole seconds GitHub asked the caller to wait, present only with source-rate-limited.
5832
+ */
5833
+ retryAfterSeconds?: number;
5689
5834
  /**
5690
5835
  * Terminal Skill installation outcome discriminator.
5691
5836
  */
@@ -5705,7 +5850,7 @@ export type SkillInstallationManagementResult = {
5705
5850
  kind: "outcome";
5706
5851
  outcome: SkillInstallationManagementOutcome;
5707
5852
  negotiated: CatalogNegotiatedContract;
5708
- } | CatalogNegotiationRefusedError | CatalogInvalidRequestError;
5853
+ } | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogNetworkFailureError;
5709
5854
  /**
5710
5855
  * Skill installation result with the honoured contract, or a typed request/negotiation refusal.
5711
5856
  *
@@ -5720,7 +5865,7 @@ export type SkillInstallationResult = {
5720
5865
  kind: "outcome";
5721
5866
  outcome: SkillInstallationOutcome;
5722
5867
  negotiated: CatalogNegotiatedContract;
5723
- } | CatalogNegotiationRefusedError | CatalogInvalidRequestError;
5868
+ } | CatalogNegotiationRefusedError | CatalogInvalidRequestError | CatalogNetworkFailureError;
5724
5869
  /**
5725
5870
  * Result of invoking the slash command (text output, prompt to send to the agent, completion, or subcommand selection).
5726
5871
  *
@@ -8674,7 +8819,7 @@ export interface CatalogAgentPluginCandidate {
8674
8819
  * Publisher taken verbatim from the card. Inert untrusted text.
8675
8820
  */
8676
8821
  publisher?: string;
8677
- source: CatalogPluginRepositorySource;
8822
+ source?: CatalogPluginRepositorySource;
8678
8823
  /**
8679
8824
  * Explicit validated compatibility tags, in canonical order. An empty list means the source declared no recognised compatibility; clients must not infer compatibility from other fields. `canvas-only` requires both `canvas` and `github-copilot`.
8680
8825
  *
@@ -8729,9 +8874,9 @@ export interface CatalogPluginRepositorySource {
8729
8874
  */
8730
8875
  repository: string;
8731
8876
  /**
8732
- * Case-preserving safe relative POSIX path derived from metadata.repoPath.
8877
+ * Case-preserving safe relative POSIX path derived from metadata.repoPath. Absent when the catalog declared sourceSet without repoPath, meaning the plugin is at the repository root; only callers that require agent-plugin-confirmed-installation receive such a source.
8733
8878
  */
8734
- path: string;
8879
+ path?: string;
8735
8880
  }
8736
8881
  /**
8737
8882
  * What installing an Agent Plugin would do, for the user to review and confirm. Provisional: the catalogue install data it is built from is not final.
@@ -8749,20 +8894,18 @@ export interface CatalogAgentPluginInstallPlan {
8749
8894
  */
8750
8895
  sources: [CatalogAgentPluginInstallSource] | [CatalogAgentPluginInstallSource, CatalogAgentPluginInstallSource] | [CatalogAgentPluginInstallSource, CatalogAgentPluginInstallSource, CatalogAgentPluginInstallSource];
8751
8896
  /**
8752
- * The plugin's name, as named in its marketplace or manifest.
8897
+ * The plugin's name, as named in its marketplace or manifest. Omitted from a materialisation-only plan, whose sources are only `materialization`: the verified manifests supply the name in the plugins.planInstall review.
8753
8898
  */
8754
- pluginName: string;
8899
+ pluginName?: string;
8755
8900
  version?: CatalogResourceVersion;
8756
8901
  /**
8757
8902
  * Exact full commit ID to install, in lowercase hex. Always present when the plan has a repository source; a plan with a marketplace source carries at least one of version and commit.
8758
8903
  */
8759
8904
  commit?: string;
8760
8905
  /**
8761
- * Components the plugin contributes, in canonical order.
8762
- *
8763
- * @minItems 1
8906
+ * Components the plugin contributes, in canonical order. Empty only in a materialisation-only plan, where the verified manifests list them in the plugins.planInstall review.
8764
8907
  */
8765
- components: [CatalogAgentPluginComponent, ...CatalogAgentPluginComponent[]];
8908
+ components: CatalogAgentPluginComponent[];
8766
8909
  /**
8767
8910
  * Canvas IDs the plugin contributes. Non-empty exactly when components include `canvas`.
8768
8911
  */
@@ -9181,6 +9324,215 @@ export interface CatalogContractViolationError {
9181
9324
  */
9182
9325
  message: string;
9183
9326
  }
9327
+ /**
9328
+ * An entry whose resource resolves and is presented as the same candidate catalog.search would return.
9329
+ *
9330
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9331
+ * via the `definition` "CatalogFeedAvailableEntry".
9332
+ */
9333
+ /** @experimental */
9334
+ export interface CatalogFeedAvailableEntry {
9335
+ status: CatalogFeedAvailableStatus;
9336
+ /**
9337
+ * The entry's resource identifier as saved in the feed.
9338
+ */
9339
+ identifier: string;
9340
+ candidate: CatalogCandidate;
9341
+ }
9342
+ /**
9343
+ * An entry that cannot be presented, kept in its position so clients decide how to render it.
9344
+ *
9345
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9346
+ * via the `definition` "CatalogFeedUnavailableEntry".
9347
+ */
9348
+ /** @experimental */
9349
+ export interface CatalogFeedUnavailableEntry {
9350
+ status: CatalogFeedUnavailableStatus;
9351
+ /**
9352
+ * The entry's resource identifier as saved in the feed.
9353
+ */
9354
+ identifier: string;
9355
+ reason: CatalogFeedUnavailableReason;
9356
+ }
9357
+ /**
9358
+ * An entry whose resource resolves but is not in one of the requested trust tiers.
9359
+ *
9360
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9361
+ * via the `definition` "CatalogFeedFilteredEntry".
9362
+ */
9363
+ /** @experimental */
9364
+ export interface CatalogFeedFilteredEntry {
9365
+ status: CatalogFeedFilteredStatus;
9366
+ /**
9367
+ * The entry's resource identifier as saved in the feed.
9368
+ */
9369
+ identifier: string;
9370
+ }
9371
+ /**
9372
+ * A generated feed's identity. It has no version; generatedAt is its only freshness signal.
9373
+ *
9374
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9375
+ * via the `definition` "CatalogGeneratedFeedDescription".
9376
+ */
9377
+ /** @experimental */
9378
+ export interface CatalogGeneratedFeedDescription {
9379
+ /**
9380
+ * Generation strategy that was requested.
9381
+ */
9382
+ strategy: string;
9383
+ /**
9384
+ * Feed key that was requested.
9385
+ */
9386
+ key: string;
9387
+ /**
9388
+ * When the feed was computed, as reported by the authority. Omitted when the authority reports no valid timestamp.
9389
+ */
9390
+ generatedAt?: string;
9391
+ }
9392
+ /**
9393
+ * Retrieves one generated feed, computed on every request, by strategy and key, such as `telemetry` and `popular`. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
9394
+ *
9395
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9396
+ * via the `definition` "CatalogGetGeneratedFeedRequest".
9397
+ */
9398
+ /** @experimental */
9399
+ export interface CatalogGetGeneratedFeedRequest {
9400
+ contract: CatalogClientContract;
9401
+ /**
9402
+ * Select an existing attached local session. Requires authenticated, session-bound catalogue support.
9403
+ * The runtime never creates, resumes or reconfigures a session to honour this selector.
9404
+ */
9405
+ policySessionId?: string;
9406
+ /**
9407
+ * Generation strategy, such as `telemetry`.
9408
+ */
9409
+ strategy: string;
9410
+ /**
9411
+ * Feed key within the strategy, such as `popular`.
9412
+ */
9413
+ key: string;
9414
+ /**
9415
+ * Accept only resources currently assessed at one of these trust tiers. Entries whose resource is in another tier, or has none, are returned as filtered in their original position. Omit for an unfiltered feed.
9416
+ *
9417
+ * @minItems 1
9418
+ * @maxItems 2
9419
+ */
9420
+ trustTiers?: [CatalogTrustTier] | [CatalogTrustTier, CatalogTrustTier];
9421
+ }
9422
+ /**
9423
+ * A retrieved generated feed. Entries keep the feed's order and are never more than 100.
9424
+ *
9425
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9426
+ * via the `definition` "CatalogGetGeneratedFeedSucceeded".
9427
+ */
9428
+ /** @experimental */
9429
+ export interface CatalogGetGeneratedFeedSucceeded {
9430
+ /**
9431
+ * Discriminator: the feed was retrieved
9432
+ */
9433
+ kind: "succeeded";
9434
+ /**
9435
+ * Runtime-issued identifier for this retrieval, with the same meaning as a catalog.search searchId, so a plan can be tied to the feed that produced its candidate. Derived from no user, account, device or feed data.
9436
+ */
9437
+ searchId: string;
9438
+ feed: CatalogGeneratedFeedDescription;
9439
+ /**
9440
+ * Feed entries in the feed's order.
9441
+ *
9442
+ * @maxItems 100
9443
+ */
9444
+ entries: CatalogFeedEntry[];
9445
+ negotiated: CatalogNegotiatedContract;
9446
+ }
9447
+ /**
9448
+ * The protocol version and capability set the runtime actually honoured for a successful catalog operation.
9449
+ *
9450
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9451
+ * via the `definition` "CatalogNegotiatedContract".
9452
+ */
9453
+ /** @experimental */
9454
+ export interface CatalogNegotiatedContract {
9455
+ /**
9456
+ * Protocol version of the runtime that served the request.
9457
+ */
9458
+ runtimeProtocolVersion: number;
9459
+ /**
9460
+ * Wire features the runtime understood for this operation. Includes the five original catalog capabilities and only explicitly requested supported additions, in supported order without duplicates. Capabilities that introduce new success-union variants or operations are therefore included only when explicitly required, preserving older protocol-v3 clients. Always a superset of the caller's required features, because any shortfall is a refusal instead. Operation availability remains a separate typed result.
9461
+ */
9462
+ grantedCapabilities: CatalogCapability[];
9463
+ }
9464
+ /**
9465
+ * Retrieves one saved feed by its opaque ID. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
9466
+ *
9467
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9468
+ * via the `definition` "CatalogGetSavedFeedRequest".
9469
+ */
9470
+ /** @experimental */
9471
+ export interface CatalogGetSavedFeedRequest {
9472
+ contract: CatalogClientContract;
9473
+ /**
9474
+ * Select an existing attached local session. Requires authenticated, session-bound catalogue support.
9475
+ * The runtime never creates, resumes or reconfigures a session to honour this selector.
9476
+ */
9477
+ policySessionId?: string;
9478
+ /**
9479
+ * Opaque saved feed ID. Treat it as an indivisible string.
9480
+ */
9481
+ feedId: string;
9482
+ /**
9483
+ * Accept only resources currently assessed at one of these trust tiers. Entries whose resource is in another tier, or has none, are returned as filtered in their original position. Omit for an unfiltered feed.
9484
+ *
9485
+ * @minItems 1
9486
+ * @maxItems 2
9487
+ */
9488
+ trustTiers?: [CatalogTrustTier] | [CatalogTrustTier, CatalogTrustTier];
9489
+ }
9490
+ /**
9491
+ * A retrieved saved feed. Entries keep the feed's order and are never more than 100.
9492
+ *
9493
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9494
+ * via the `definition` "CatalogGetSavedFeedSucceeded".
9495
+ */
9496
+ /** @experimental */
9497
+ export interface CatalogGetSavedFeedSucceeded {
9498
+ /**
9499
+ * Discriminator: the feed was retrieved
9500
+ */
9501
+ kind: "succeeded";
9502
+ /**
9503
+ * Runtime-issued identifier for this retrieval, with the same meaning as a catalog.search searchId, so a plan can be tied to the feed that produced its candidate. Derived from no user, account, device or feed data.
9504
+ */
9505
+ searchId: string;
9506
+ feed: CatalogSavedFeedDescription;
9507
+ /**
9508
+ * Feed entries in the feed's order.
9509
+ *
9510
+ * @maxItems 100
9511
+ */
9512
+ entries: CatalogFeedEntry[];
9513
+ negotiated: CatalogNegotiatedContract;
9514
+ }
9515
+ /**
9516
+ * A saved feed's identity. Its version changes only when the feed's definition is replaced, not when a referenced resource changes.
9517
+ *
9518
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9519
+ * via the `definition` "CatalogSavedFeedDescription".
9520
+ */
9521
+ /** @experimental */
9522
+ export interface CatalogSavedFeedDescription {
9523
+ /**
9524
+ * Opaque feed ID.
9525
+ */
9526
+ id: string;
9527
+ /**
9528
+ * Feed name as saved by its creator. Inert untrusted text.
9529
+ */
9530
+ name: string;
9531
+ /**
9532
+ * Version of the saved feed definition.
9533
+ */
9534
+ version: number;
9535
+ }
9184
9536
  /**
9185
9537
  * A presented handle was not accepted. Handles are runtime-instance scoped, TTL-bound, and single-use, so each way of failing is reported distinctly.
9186
9538
  *
@@ -9270,23 +9622,6 @@ export interface CatalogMaterializationReference {
9270
9622
  */
9271
9623
  bundleDigest: string;
9272
9624
  }
9273
- /**
9274
- * The protocol version and capability set the runtime actually honoured for a successful catalog operation.
9275
- *
9276
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9277
- * via the `definition` "CatalogNegotiatedContract".
9278
- */
9279
- /** @experimental */
9280
- export interface CatalogNegotiatedContract {
9281
- /**
9282
- * Protocol version of the runtime that served the request.
9283
- */
9284
- runtimeProtocolVersion: number;
9285
- /**
9286
- * Wire features the runtime understood for this operation. Includes the five original catalog capabilities and only explicitly requested supported additions, in supported order without duplicates. Capabilities that introduce new success-union variants or operations are therefore included only when explicitly required, preserving older protocol-v3 clients. Always a superset of the caller's required features, because any shortfall is a refusal instead. Operation availability remains a separate typed result.
9287
- */
9288
- grantedCapabilities: CatalogCapability[];
9289
- }
9290
9625
  /**
9291
9626
  * The caller's protocol version or required capabilities cannot be honoured. Returned instead of a partial or ambiguous success.
9292
9627
  *
@@ -9461,6 +9796,12 @@ export interface InstallationCatalogueIdentity {
9461
9796
  */
9462
9797
  source: string;
9463
9798
  trustAtInstall?: CatalogTrustSnapshot;
9799
+ /**
9800
+ * HTTPS URL of the resource's icon on raw.githubusercontent.com, retained from the catalogue
9801
+ * candidate. Untrusted external content: load it without credentials. Omitted when the
9802
+ * candidate had none.
9803
+ */
9804
+ iconUrl?: string;
9464
9805
  }
9465
9806
  /**
9466
9807
  * Source identity retained from Agent Finder and the pinned GitHub descriptor.
@@ -9697,6 +10038,60 @@ export interface PluginInstallationFileReview {
9697
10038
  */
9698
10039
  digest: string;
9699
10040
  }
10041
+ /**
10042
+ * One MCP server a reviewed plugin declares.
10043
+ *
10044
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
10045
+ * via the `definition` "PluginInstallationMcpServerReview".
10046
+ */
10047
+ /** @experimental */
10048
+ export interface PluginInstallationMcpServerReview {
10049
+ /**
10050
+ * Server name as the plugin declares it.
10051
+ */
10052
+ name: string;
10053
+ transport: PluginInstallationMcpTransport;
10054
+ /**
10055
+ * Host of a remote server's URL.
10056
+ */
10057
+ host?: string;
10058
+ }
10059
+ /**
10060
+ * Retrieval was refused by the runtime's hardened fetch boundary before any request left the process, or before a redirect was followed.
10061
+ *
10062
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
10063
+ * via the `definition` "CatalogUnsafeRetrievalError".
10064
+ */
10065
+ /** @experimental */
10066
+ export interface CatalogUnsafeRetrievalError {
10067
+ /**
10068
+ * Discriminator: retrieval was refused as unsafe
10069
+ */
10070
+ kind: "unsafe-retrieval";
10071
+ reason: CatalogUnsafeRetrievalReason;
10072
+ /**
10073
+ * Human-readable explanation, safe to surface. Never contains the refused URL, nor a query, handle, or secret.
10074
+ */
10075
+ message: string;
10076
+ }
10077
+ /**
10078
+ * The operation is not available on this runtime. Distinct from a network failure: nothing was attempted.
10079
+ *
10080
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
10081
+ * via the `definition` "CatalogUnavailableError".
10082
+ */
10083
+ /** @experimental */
10084
+ export interface CatalogUnavailableError {
10085
+ /**
10086
+ * Discriminator: the operation is not available
10087
+ */
10088
+ kind: "unavailable";
10089
+ reason: CatalogUnavailableReason;
10090
+ /**
10091
+ * Human-readable explanation, safe to surface. Never contains a query, URL, handle, or secret.
10092
+ */
10093
+ message: string;
10094
+ }
9700
10095
  /**
9701
10096
  * An explicit numbered-page request. SDK consumers treat the token as opaque. For bound search, the runtime unwraps an expiring owner-bound reference to the private authority token; only the runtime changes the authority token's targetPage. Legacy unbound navigation keeps its authority-issued token semantics. No snapshot stability is promised.
9702
10097
  *
@@ -9781,6 +10176,13 @@ export interface CatalogSearchRequest {
9781
10176
  * @maxItems 3
9782
10177
  */
9783
10178
  kinds?: [CatalogCandidateKind] | [CatalogCandidateKind, CatalogCandidateKind] | [CatalogCandidateKind, CatalogCandidateKind, CatalogCandidateKind];
10179
+ /**
10180
+ * Restrict results to resources in at least one of these server-defined workflow categories, such as `design` or `test`. Requires the `catalog-search-categories` capability. Each value is a lowercase slug; the known set is not exhaustive, and a category the server does not recognise matches nothing. Omit to search every category.
10181
+ *
10182
+ * @minItems 1
10183
+ * @maxItems 10
10184
+ */
10185
+ categories?: [string] | [string, string] | [string, string, string] | [string, string, string, string] | [string, string, string, string, string] | [string, string, string, string, string, string] | [string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string];
9784
10186
  page?: CatalogSearchPage;
9785
10187
  }
9786
10188
  /**
@@ -9837,42 +10239,6 @@ export interface CatalogUnsupportedKindError {
9837
10239
  */
9838
10240
  message: string;
9839
10241
  }
9840
- /**
9841
- * Retrieval was refused by the runtime's hardened fetch boundary before any request left the process, or before a redirect was followed.
9842
- *
9843
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9844
- * via the `definition` "CatalogUnsafeRetrievalError".
9845
- */
9846
- /** @experimental */
9847
- export interface CatalogUnsafeRetrievalError {
9848
- /**
9849
- * Discriminator: retrieval was refused as unsafe
9850
- */
9851
- kind: "unsafe-retrieval";
9852
- reason: CatalogUnsafeRetrievalReason;
9853
- /**
9854
- * Human-readable explanation, safe to surface. Never contains the refused URL, nor a query, handle, or secret.
9855
- */
9856
- message: string;
9857
- }
9858
- /**
9859
- * The operation is not available on this runtime. Distinct from a network failure: nothing was attempted.
9860
- *
9861
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
9862
- * via the `definition` "CatalogUnavailableError".
9863
- */
9864
- /** @experimental */
9865
- export interface CatalogUnavailableError {
9866
- /**
9867
- * Discriminator: the operation is not available
9868
- */
9869
- kind: "unavailable";
9870
- reason: CatalogUnavailableReason;
9871
- /**
9872
- * Human-readable explanation, safe to surface. Never contains a query, URL, handle, or secret.
9873
- */
9874
- message: string;
9875
- }
9876
10242
  /**
9877
10243
  * The caller cancelled the selection interaction and the retained search state was released.
9878
10244
  *
@@ -14194,6 +14560,32 @@ export interface InstalledPluginInfo {
14194
14560
  * Whether the managed desired plugin currently has an installed or live record. Set to false for a managed desired entry retained in the listing after installation or reconciliation failed.
14195
14561
  */
14196
14562
  installed?: boolean;
14563
+ /**
14564
+ * Description from the manifest of the installed copy. Present only for a direct install pinned to one GitHub commit, such as a verified install from GitHub.
14565
+ */
14566
+ description?: string;
14567
+ verifiedSource?: InstalledPluginVerifiedSource;
14568
+ /**
14569
+ * HTTPS URL of the plugin's icon on raw.githubusercontent.com, retained from the catalogue entry it was installed from. Untrusted external content: load it without credentials. Present only for a direct install pinned to one GitHub commit whose catalogue entry had an icon.
14570
+ */
14571
+ iconUrl?: string;
14572
+ }
14573
+ /**
14574
+ * The GitHub repository and commit an installed plugin is pinned to.
14575
+ *
14576
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
14577
+ * via the `definition` "InstalledPluginVerifiedSource".
14578
+ */
14579
+ /** @experimental */
14580
+ export interface InstalledPluginVerifiedSource {
14581
+ /**
14582
+ * GitHub repository in `owner/repo` form.
14583
+ */
14584
+ repository: string;
14585
+ /**
14586
+ * Full 40-character hexadecimal commit SHA the plugin is pinned to.
14587
+ */
14588
+ revision: string;
14197
14589
  }
14198
14590
  /**
14199
14591
  * Canonical file or directory where custom instructions can be discovered or created, with location, kind, preference, and project path.
@@ -14892,6 +15284,7 @@ export interface ManagedSettingsValues {
14892
15284
  */
14893
15285
  model?: string;
14894
15286
  autoTier?: AutoTier;
15287
+ ensembleTier?: ManagedEnsembleTier;
14895
15288
  /**
14896
15289
  * Managed reasoning-effort default for the managed concrete model. The runtime clamps it to an entitled effort when model availability is known.
14897
15290
  */
@@ -14908,6 +15301,7 @@ export interface ManagedSettingsValues {
14908
15301
  export interface ManagedSettingsMeta {
14909
15302
  model?: ManagedSettingMeta;
14910
15303
  autoTier?: ManagedSettingMeta;
15304
+ ensembleTier?: ManagedSettingMeta;
14911
15305
  effortLevel?: ManagedSettingMeta;
14912
15306
  contextTier?: ManagedSettingMeta;
14913
15307
  }
@@ -25396,6 +25790,10 @@ export interface SessionOpenOptions {
25396
25790
  * @experimental
25397
25791
  */
25398
25792
  additionalContentExclusionPolicies?: SessionOpenOptionsAdditionalContentExclusionPolicy[];
25793
+ /**
25794
+ * Live gate for repository-origin file hooks, including the primary repository, trusted repository-configured roots, and accepted startup additional directories (including CLI --add-dir). False suppresses these hooks; explicit hookDirectories and SDK callbacks are independent. Additional-root eligibility and the DISABLE_ADDITIONAL_DIRECTORY_HOOKS escape hatch are captured at create/cold resume, not expanded by later grants or feature-flag changes. Discovery uses containing Git roots, so supply only trusted repositories: commands and prompts need no further approval. Policy, hook-disable settings, and sandbox rules still apply. Provider-backed sessions skip repository hooks with a warning on omission, skip silently on false, and reject explicit true.
25795
+ */
25796
+ enableFileHooks?: boolean;
25399
25797
  memory?: MemoryConfiguration;
25400
25798
  /**
25401
25799
  * Capabilities enabled for this session.
@@ -28496,6 +28894,20 @@ export interface TasksGetProgressResult {
28496
28894
  */
28497
28895
  progress?: TaskProgress | null;
28498
28896
  }
28897
+ /**
28898
+ * How a shell task ended, reported with the read that reaches the end of its output.
28899
+ *
28900
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28901
+ * via the `definition` "TaskShellOutputExit".
28902
+ */
28903
+ /** @experimental */
28904
+ export interface TaskShellOutputExit {
28905
+ status: TaskStatus;
28906
+ /**
28907
+ * Process exit code, when the runtime recorded one. Absent when the shell was stopped before reporting an exit code.
28908
+ */
28909
+ exitCode?: number;
28910
+ }
28499
28911
  /**
28500
28912
  * The promoted task as it now exists in background mode, omitted if no promotable task was waiting.
28501
28913
  *
@@ -28532,6 +28944,45 @@ export interface TasksPromoteToBackgroundResult {
28532
28944
  */
28533
28945
  promoted: boolean;
28534
28946
  }
28947
+ /**
28948
+ * Detached shell task to read output from, with an optional cursor and long-poll wait. waitMs defaults to zero (maximum 30000).
28949
+ *
28950
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28951
+ * via the `definition` "TasksReadOutputRequest".
28952
+ */
28953
+ /** @experimental */
28954
+ export interface TasksReadOutputRequest {
28955
+ /**
28956
+ * Identifier of a detached shell task, as returned by tasks.list
28957
+ */
28958
+ id: string;
28959
+ /**
28960
+ * Opaque cursor returned by an earlier read of the same task. Omit to read from the beginning of the shell's output. If the output no longer reaches the cursor, for example because its log was removed, the request fails; read again without a cursor.
28961
+ */
28962
+ cursor?: string;
28963
+ /**
28964
+ * Milliseconds to wait for new output, or for the shell to finish, when the cursor is already at the end of the available output. 0 (default) returns immediately. Capped at 30000ms.
28965
+ */
28966
+ waitMs?: number;
28967
+ }
28968
+ /**
28969
+ * Output a detached shell task wrote after the request cursor, with the cursor for the next read.
28970
+ *
28971
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28972
+ * via the `definition` "TasksReadOutputResult".
28973
+ */
28974
+ /** @experimental */
28975
+ export interface TasksReadOutputResult {
28976
+ /**
28977
+ * Output after the request cursor, decoded as UTF-8 and redacted. At most 64 KiB per read, so a large backlog takes several reads; the text never splits a character, and text that stops before the end of the output ends at a line break when it contains one. Empty when no new output is available. Detached shells write stdout and stderr to one output, so the text does not separate them.
28978
+ */
28979
+ text: string;
28980
+ /**
28981
+ * Opaque cursor to pass to the next read of this task. Always present, even when no output was returned.
28982
+ */
28983
+ cursor: string;
28984
+ exit?: TaskShellOutputExit;
28985
+ }
28535
28986
  /**
28536
28987
  * Refresh metadata for any detached background shells the runtime knows about. Use after a long pause to pick up exit/output state for shells running outside the agent loop.
28537
28988
  *
@@ -33283,6 +33734,22 @@ export declare function createServerRpc(connection: MessageConnection): {
33283
33734
  * @returns Outcome of a catalog.search call: either bounded inert candidates, or one typed refusal. Never a partial success.
33284
33735
  */
33285
33736
  search: (params: CatalogSearchRequest) => Promise<CatalogSearchResult>;
33737
+ /**
33738
+ * Retrieves one saved feed by its opaque ID, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
33739
+ *
33740
+ * @param params Retrieves one saved feed by its opaque ID. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
33741
+ *
33742
+ * @returns Outcome of catalog.getSavedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
33743
+ */
33744
+ getSavedFeed: (params: CatalogGetSavedFeedRequest) => Promise<CatalogResourceSavedFeedResult>;
33745
+ /**
33746
+ * Retrieves one generated feed by strategy and key, such as telemetry/popular, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
33747
+ *
33748
+ * @param params Retrieves one generated feed, computed on every request, by strategy and key, such as `telemetry` and `popular`. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
33749
+ *
33750
+ * @returns Outcome of catalog.getGeneratedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
33751
+ */
33752
+ getGeneratedFeed: (params: CatalogGetGeneratedFeedRequest) => Promise<CatalogResourceGeneratedFeedResult>;
33286
33753
  /**
33287
33754
  * Terminates one retained catalog selection group. A selected outcome returns the native host a fresh single-use candidate handle plus the original searchId for a later explicit mcp.planInstall call; non-selected outcomes release the group without producing a planning input. Candidate state, cards, URLs, credentials and private identifiers remain inside the runtime. The model-facing catalog_select tool projects the result separately and never exposes the candidate handle or searchId.
33288
33755
  *
@@ -34399,6 +34866,14 @@ export declare function createSessionRpc(connection: MessageConnection, sessionI
34399
34866
  * @returns Progress information for the task, or null when no task with that ID is tracked.
34400
34867
  */
34401
34868
  getProgress: (params: TasksGetProgressRequest) => Promise<TasksGetProgressResult>;
34869
+ /**
34870
+ * Reads a detached shell task's output after a cursor, optionally waiting for new output or for the shell to finish.
34871
+ *
34872
+ * @param params Detached shell task to read output from, with an optional cursor and long-poll wait. waitMs defaults to zero (maximum 30000).
34873
+ *
34874
+ * @returns Output a detached shell task wrote after the request cursor, with the cursor for the next read.
34875
+ */
34876
+ readOutput: (params: TasksReadOutputRequest) => Promise<TasksReadOutputResult>;
34402
34877
  /**
34403
34878
  * Returns the first sync-waiting task that can currently be promoted to background mode.
34404
34879
  *
@@ -733,6 +733,22 @@ function createServerRpc(connection) {
733
733
  * @returns Outcome of a catalog.search call: either bounded inert candidates, or one typed refusal. Never a partial success.
734
734
  */
735
735
  search: async (params) => connection.sendRequest("catalog.search", params),
736
+ /**
737
+ * Retrieves one saved feed by its opaque ID, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
738
+ *
739
+ * @param params Retrieves one saved feed by its opaque ID. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
740
+ *
741
+ * @returns Outcome of catalog.getSavedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
742
+ */
743
+ getSavedFeed: async (params) => connection.sendRequest("catalog.getSavedFeed", params),
744
+ /**
745
+ * Retrieves one generated feed by strategy and key, such as telemetry/popular, optionally filtered by trust tier. Requires catalog-feeds and catalog-search-credential-required, and uses the same authority, credential policy, optional session binding and candidate projection as catalog.search, so available entries are the same inert candidates, with the same installability, handles and display metadata, and install through the same confirmed flows. Entries keep the feed's order; an entry the runtime cannot present is returned as unavailable with a reason rather than failing the feed. No anonymous retry. Read-only: nothing is installed, configured, or persisted.
746
+ *
747
+ * @param params Retrieves one generated feed, computed on every request, by strategy and key, such as `telemetry` and `popular`. Requires catalog-feeds and catalog-search-credential-required; add catalog-search-session-bound with policySessionId to retain the selected session's authority for installation, exactly as for catalog.search.
748
+ *
749
+ * @returns Outcome of catalog.getGeneratedFeed: the feed with its entries, or one typed refusal. An entry that cannot be presented never fails the feed.
750
+ */
751
+ getGeneratedFeed: async (params) => connection.sendRequest("catalog.getGeneratedFeed", params),
736
752
  /**
737
753
  * Terminates one retained catalog selection group. A selected outcome returns the native host a fresh single-use candidate handle plus the original searchId for a later explicit mcp.planInstall call; non-selected outcomes release the group without producing a planning input. Candidate state, cards, URLs, credentials and private identifiers remain inside the runtime. The model-facing catalog_select tool projects the result separately and never exposes the candidate handle or searchId.
738
754
  *
@@ -2727,6 +2743,14 @@ function createSessionRpc(connection, sessionId) {
2727
2743
  * @returns Progress information for the task, or null when no task with that ID is tracked.
2728
2744
  */
2729
2745
  getProgress: async (params) => connection.sendRequest("session.tasks.getProgress", { ...params, sessionId }),
2746
+ /**
2747
+ * Reads a detached shell task's output after a cursor, optionally waiting for new output or for the shell to finish.
2748
+ *
2749
+ * @param params Detached shell task to read output from, with an optional cursor and long-poll wait. waitMs defaults to zero (maximum 30000).
2750
+ *
2751
+ * @returns Output a detached shell task wrote after the request cursor, with the cursor for the next read.
2752
+ */
2753
+ readOutput: async (params) => connection.sendRequest("session.tasks.readOutput", { ...params, sessionId }),
2730
2754
  /**
2731
2755
  * Returns the first sync-waiting task that can currently be promoted to background mode.
2732
2756
  *
@@ -786,6 +786,14 @@ export type AssistantUsageApiEndpoint =
786
786
  | "/responses"
787
787
  /** WebSocket Responses API endpoint. */
788
788
  | "ws:/responses";
789
+ /**
790
+ * How the runtime fell back to an uncompressed request body after a compressed body was rejected
791
+ */
792
+ export type ModelCallRequestBodyCompressionFallback =
793
+ /** A compressed body was rejected with HTTP 400 or 415 and this outcome comes from the single uncompressed resend. */
794
+ "retried"
795
+ /** Request body compression was already turned off for the session by an earlier rejection, so the body was sent uncompressed. */
796
+ | "disabled";
789
797
  /**
790
798
  * Content-Encoding applied to the request body sent on the wire
791
799
  */
@@ -6777,6 +6785,12 @@ export interface AssistantUsageData {
6777
6785
  * Serialized (uncompressed) byte length of the request body, before any Content-Encoding. A content-free size signal.
6778
6786
  */
6779
6787
  requestBodyBytes?: number;
6788
+ requestBodyCompressionFallback?: ModelCallRequestBodyCompressionFallback;
6789
+ requestBodyCompressionFallbackFrom?: ModelCallRequestBodyEncoding;
6790
+ /**
6791
+ * HTTP status that rejected the compressed body before the uncompressed resend; present only when requestBodyCompressionFallback is retried
6792
+ */
6793
+ requestBodyCompressionRejectedStatus?: number;
6780
6794
  requestBodyEncoding?: ModelCallRequestBodyEncoding;
6781
6795
  /**
6782
6796
  * Byte length of the request body actually sent on the wire for the attempt that produced this outcome, after any Content-Encoding. Equals requestBodyBytes when the body was not compressed.
@@ -6988,6 +7002,12 @@ export interface ModelCallFailureData {
6988
7002
  * Serialized (uncompressed) byte length of the failed request body, before any Content-Encoding. A content-free size signal.
6989
7003
  */
6990
7004
  requestBodyBytes?: number;
7005
+ requestBodyCompressionFallback?: ModelCallRequestBodyCompressionFallback;
7006
+ requestBodyCompressionFallbackFrom?: ModelCallRequestBodyEncoding;
7007
+ /**
7008
+ * HTTP status that rejected the compressed body before the uncompressed resend; present only when requestBodyCompressionFallback is retried
7009
+ */
7010
+ requestBodyCompressionRejectedStatus?: number;
6991
7011
  requestBodyEncoding?: ModelCallRequestBodyEncoding;
6992
7012
  /**
6993
7013
  * Byte length of the failed request body actually sent on the wire, after any Content-Encoding. Equals requestBodyBytes when the body was not compressed.
@@ -7444,6 +7464,12 @@ export interface ToolShellOutputEvent {
7444
7464
  * Live, append-only shell output. Not persisted or replayed to late subscribers. Text is decoded and redacted per chunk; chunks need not contain complete lines.
7445
7465
  */
7446
7466
  export interface ToolShellOutputData {
7467
+ /**
7468
+ * Experimental HydraFusion attribution of the staged phase whose tool call produced this output. Absent outside a staged phase.
7469
+ *
7470
+ * @experimental
7471
+ */
7472
+ fusion?: FusionAttribution;
7447
7473
  /**
7448
7474
  * Zero-based publication sequence across all output streams for this tool call. Not a byte offset or an OS write-order guarantee.
7449
7475
  */
@@ -9280,6 +9306,12 @@ export interface PermissionRequestedEvent {
9280
9306
  */
9281
9307
  export interface PermissionRequestedData {
9282
9308
  agentMode?: SessionMode;
9309
+ /**
9310
+ * Experimental HydraFusion attribution of the staged phase whose tool call raised this request. Absent outside a staged phase.
9311
+ *
9312
+ * @experimental
9313
+ */
9314
+ fusion?: FusionAttribution;
9283
9315
  /**
9284
9316
  * Delegated agent that owns permission recovery when the owner session multiplexes remote agents. Absent otherwise.
9285
9317
  */
package/package.json CHANGED
@@ -5,8 +5,8 @@
5
5
  "url": "https://github.com/github/copilot-agent-runtime.git",
6
6
  "directory": "src/sdk/nodejs"
7
7
  },
8
- "version": "1.0.23-preview.1",
9
- "copilotCliVersion": "1.0.99-1",
8
+ "version": "1.0.23-preview.3",
9
+ "copilotCliVersion": "1.0.99-3",
10
10
  "description": "TypeScript SDK for programmatic control of GitHub Copilot CLI via JSON-RPC",
11
11
  "main": "./dist/cjs/index.js",
12
12
  "types": "./dist/index.d.ts",
@@ -54,6 +54,7 @@
54
54
  "generate": "cd ../scripts/codegen && npm run generate",
55
55
  "set:cli-version": "node scripts/set-cli-version.js",
56
56
  "update:protocol-version": "tsx scripts/update-protocol-version.ts",
57
+ "vendor:tools": "tsx scripts/vendor-build-tools.ts",
57
58
  "prepublishOnly": "npm run build",
58
59
  "package": "npm run clean && npm run build && node scripts/set-version.js && npm run pack:release && npm version 0.0.0-dev --no-git-tag-version --allow-same-version"
59
60
  },
@@ -72,6 +73,7 @@
72
73
  "zod": "4.3.6"
73
74
  },
74
75
  "devDependencies": {
76
+ "@hpke/core": "^1.9.0",
75
77
  "@microsoft/agent-host-protocol-v09": "npm:@microsoft/agent-host-protocol@0.9.0",
76
78
  "@platformatic/vfs": "^0.3.0",
77
79
  "@types/node": "^25.2.0",
@@ -83,24 +85,26 @@
83
85
  "eslint": "^9.0.0",
84
86
  "file-entry-cache": "file:./scripts/eslint-file-cache",
85
87
  "glob": "^13.0.1",
86
- "hpke-js": "^1.8.0",
87
88
  "json-schema": "^0.4.0",
88
89
  "json-schema-to-typescript": "^15.0.4",
89
- "prettier": "^3.8.1",
90
+ "prettier": "file:../../../third_party/build-tools/prettier-3.8.1",
90
91
  "rimraf": "^6.1.2",
91
92
  "semver": "^7.7.3",
92
93
  "tar": "^7.5.22",
93
- "tsx": "^4.20.6",
94
+ "tsx": "file:../../../third_party/build-tools/tsx-4.22.4",
94
95
  "typescript": "^5.0.0",
96
+ "vite": "file:../../../third_party/build-tools/vite-8.3.4",
95
97
  "vitest": "^4.1.11",
96
98
  "ws": "^8.21.0"
97
99
  },
100
+ "overrides": {
101
+ "file-entry-cache": "$file-entry-cache",
102
+ "prettier": "$prettier",
103
+ "vite": "$vite"
104
+ },
98
105
  "engines": {
99
106
  "node": "^20.19.0 || >=22.12.0"
100
107
  },
101
- "overrides": {
102
- "file-entry-cache": "$file-entry-cache"
103
- },
104
108
  "files": [
105
109
  "dist/**/*",
106
110
  "!dist/tsconfig.tsbuildinfo",
@@ -108,18 +112,18 @@
108
112
  "README.md"
109
113
  ],
110
114
  "copilotRuntime": {
111
- "sourceSha": "7ea4e663f9dbacf776b91d6f8f2ff30b3a5b46eb",
112
- "version": "1.0.99-1",
115
+ "sourceSha": "a408f87a893e2126164b60ef936972cfca65dcf2",
116
+ "version": "1.0.99-3",
113
117
  "visibility": "public"
114
118
  },
115
119
  "optionalDependencies": {
116
- "@github/copilot-sdk-darwin-arm64": "1.0.23-preview.1",
117
- "@github/copilot-sdk-darwin-x64": "1.0.23-preview.1",
118
- "@github/copilot-sdk-linux-arm64": "1.0.23-preview.1",
119
- "@github/copilot-sdk-linux-x64": "1.0.23-preview.1",
120
- "@github/copilot-sdk-linuxmusl-arm64": "1.0.23-preview.1",
121
- "@github/copilot-sdk-linuxmusl-x64": "1.0.23-preview.1",
122
- "@github/copilot-sdk-win32-arm64": "1.0.23-preview.1",
123
- "@github/copilot-sdk-win32-x64": "1.0.23-preview.1"
120
+ "@github/copilot-sdk-darwin-arm64": "1.0.23-preview.3",
121
+ "@github/copilot-sdk-darwin-x64": "1.0.23-preview.3",
122
+ "@github/copilot-sdk-linux-arm64": "1.0.23-preview.3",
123
+ "@github/copilot-sdk-linux-x64": "1.0.23-preview.3",
124
+ "@github/copilot-sdk-linuxmusl-arm64": "1.0.23-preview.3",
125
+ "@github/copilot-sdk-linuxmusl-x64": "1.0.23-preview.3",
126
+ "@github/copilot-sdk-win32-arm64": "1.0.23-preview.3",
127
+ "@github/copilot-sdk-win32-x64": "1.0.23-preview.3"
124
128
  }
125
129
  }