@compforge/harness-toolbox 0.4.8 → 0.5.1

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.
Files changed (70) hide show
  1. package/README.md +41 -9
  2. package/dist/{chunk-1ts7pswj.js → chunk-0d8vs5q8.js} +33 -2
  3. package/dist/{chunk-h8fwx0k7.js → chunk-18gcp0ck.js} +32 -7
  4. package/dist/{chunk-35cjec9z.js → chunk-3b877a0y.js} +6 -6
  5. package/dist/{chunk-gm4swndx.js → chunk-43mcyrh4.js} +14 -24
  6. package/dist/chunk-56fev9np.js +142 -0
  7. package/dist/{chunk-zp1s833x.js → chunk-7m95c7pn.js} +26 -13
  8. package/dist/{chunk-f3vq900j.js → chunk-92aacbwh.js} +1 -1
  9. package/dist/{chunk-x4ntb898.js → chunk-c2b2jwm4.js} +18 -18
  10. package/dist/chunk-ehmx0yhp.js +52 -0
  11. package/dist/{chunk-t4hrnaj0.js → chunk-ex429qjt.js} +22 -20
  12. package/dist/{chunk-m391jmpw.js → chunk-hbhbragw.js} +9 -9
  13. package/dist/{chunk-fqrknvr8.js → chunk-kap6ka3n.js} +27 -12
  14. package/dist/{chunk-vymm4g9h.js → chunk-kxpecgy7.js} +106 -37
  15. package/dist/{chunk-nftzckdy.js → chunk-mvkxs8d0.js} +17 -2
  16. package/dist/{chunk-f98qrpx1.js → chunk-njs48b51.js} +28 -27
  17. package/dist/chunk-sb5qzv37.js +62 -0
  18. package/dist/{chunk-dx6yvj81.js → chunk-xhfbark7.js} +1 -1
  19. package/dist/chunk-z8e1ckkq.js +16 -0
  20. package/dist/connection/acquire.d.ts +3 -4
  21. package/dist/connection/acquire.js +2 -4
  22. package/dist/datasource.d.ts +0 -6
  23. package/dist/file/client.js +2 -2
  24. package/dist/file/index.js +4 -4
  25. package/dist/file/local.js +3 -3
  26. package/dist/file/pod.js +3 -3
  27. package/dist/http/client.d.ts +15 -0
  28. package/dist/http/client.js +21 -0
  29. package/dist/http/handler.d.ts +10 -0
  30. package/dist/http/handler.js +6 -0
  31. package/dist/http/index.d.ts +2 -0
  32. package/dist/http/index.js +21 -0
  33. package/dist/http/types.d.ts +34 -0
  34. package/dist/http/types.js +0 -0
  35. package/dist/kubernetes/client.js +9 -9
  36. package/dist/kubernetes/environment.js +9 -9
  37. package/dist/kubernetes/exec-transport.js +2 -2
  38. package/dist/kubernetes/pod-log-datasource.js +1 -1
  39. package/dist/kubernetes/port-forward.d.ts +4 -0
  40. package/dist/kubernetes/port-forward.js +1 -1
  41. package/dist/kubernetes/resource-transport.js +2 -2
  42. package/dist/kubernetes/service-port-forward.d.ts +3 -2
  43. package/dist/kubernetes/service-port-forward.js +2 -2
  44. package/dist/mysql/client.d.ts +7 -7
  45. package/dist/mysql/client.js +12 -7
  46. package/dist/mysql/index.js +16 -11
  47. package/dist/opensearch/client.d.ts +14 -4
  48. package/dist/opensearch/client.js +15 -8
  49. package/dist/opensearch/index.js +15 -8
  50. package/dist/redis/client.d.ts +7 -6
  51. package/dist/redis/client.js +12 -7
  52. package/dist/redis/index.js +16 -11
  53. package/dist/s3/client.d.ts +5 -3
  54. package/dist/s3/client.js +16 -2
  55. package/dist/s3/datasource.js +15 -8
  56. package/dist/s3/handler.d.ts +2 -3
  57. package/dist/s3/handler.js +2 -1
  58. package/dist/s3/index.js +15 -8
  59. package/dist/transport/index.d.ts +18 -8
  60. package/dist/transport/index.js +17 -4
  61. package/dist/transport/lifecycle.d.ts +22 -0
  62. package/dist/transport/lifecycle.js +8 -0
  63. package/dist/transport/pod-relay.d.ts +7 -4
  64. package/dist/transport/pod-relay.js +6 -3
  65. package/dist/transport/service-port-forward.d.ts +30 -0
  66. package/dist/transport/service-port-forward.js +15 -0
  67. package/package.json +9 -3
  68. package/dist/{chunk-x0yhfg29.js → chunk-5w85c7cs.js} +3 -3
  69. package/dist/{chunk-ww11q58v.js → chunk-rncagjbc.js} +3 -3
  70. package/dist/{chunk-r3rnsvwv.js → chunk-xeft7af0.js} +3 -3
@@ -1,8 +1,8 @@
1
1
  import type { Client } from "../client";
2
2
  import type { Connection, ConnectionOptions } from "mysql2/promise";
3
3
  import type { Database, DatabaseTarget, DatabaseRow, DatabaseQueryLimits, DatabaseQueryResult, SqlStatement } from "./types";
4
- import type { ConnectionSource, ClientLifecycle } from "../datasource";
5
- import { type Transport } from "../transport";
4
+ import type { ClientLifecycle } from "../datasource";
5
+ import { Transport, type TransportPath } from "../transport";
6
6
  export interface MysqlDatabaseOptions extends ClientLifecycle {
7
7
  /** Per-route mapping and handshake budget. */
8
8
  connectTimeoutMs: number;
@@ -18,10 +18,9 @@ type ConnectionFactory = (options: ConnectionOptions, signal?: AbortSignal) => P
18
18
  */
19
19
  export declare class MysqlDatabase implements Database {
20
20
  #private;
21
- private readonly transports;
22
21
  private readonly options;
23
22
  private readonly connect;
24
- constructor(transports: readonly Transport[], options: MysqlDatabaseOptions, connect?: ConnectionFactory);
23
+ constructor(transport: Transport | readonly TransportPath[], options: MysqlDatabaseOptions, connect?: ConnectionFactory);
25
24
  query(target: DatabaseTarget, sql: string, values: readonly unknown[]): Promise<DatabaseRow[]>;
26
25
  /**
27
26
  * Independent statements in submission order, one session: a Pod transport pays the exec
@@ -38,14 +37,15 @@ export declare class MysqlDatabase implements Database {
38
37
  /** A datasource-bound MySQL client; the protocol adapter still supports explicit multi-target diagnostics. */
39
38
  export declare class MysqlClient<Target extends DatabaseTarget = DatabaseTarget> implements Client {
40
39
  #private;
41
- private readonly source;
40
+ private readonly configuration;
41
+ private readonly transport;
42
42
  private readonly options;
43
43
  readonly signal: AbortSignal;
44
- constructor(source: ConnectionSource<Target>, options: MysqlDatabaseOptions);
44
+ constructor(configuration: Target | (() => Promise<Target>), transport: Transport, options: MysqlDatabaseOptions);
45
45
  initialize(): Promise<void>;
46
46
  get database(): MysqlDatabase;
47
47
  get target(): Target;
48
48
  dispose(): Promise<void>;
49
49
  }
50
- export declare function openMysql<Target extends DatabaseTarget>(source: ConnectionSource<Target>, options: MysqlDatabaseOptions): Promise<MysqlClient<Target>>;
50
+ export declare function openMysql<Target extends DatabaseTarget>(configuration: Target | (() => Promise<Target>), transport: Transport, options: MysqlDatabaseOptions): Promise<MysqlClient<Target>>;
51
51
  export {};
@@ -2,19 +2,24 @@ import {
2
2
  MysqlClient,
3
3
  MysqlDatabase,
4
4
  openMysql
5
- } from "../chunk-t4hrnaj0.js";
5
+ } from "../chunk-ex429qjt.js";
6
6
  import"../chunk-m91t44jh.js";
7
7
  import"../chunk-db4an9td.js";
8
8
  import"../chunk-835fssgz.js";
9
- import"../chunk-gm4swndx.js";
10
- import"../chunk-rkt41za2.js";
9
+ import"../chunk-18gcp0ck.js";
10
+ import"../chunk-kap6ka3n.js";
11
11
  import"../chunk-v3hxvnrc.js";
12
- import"../chunk-h8fwx0k7.js";
13
- import"../chunk-fqrknvr8.js";
14
- import"../chunk-nftzckdy.js";
12
+ import"../chunk-ssj93brx.js";
13
+ import"../chunk-ehmx0yhp.js";
14
+ import"../chunk-0d8vs5q8.js";
15
+ import"../chunk-xgnz10sr.js";
16
+ import"../chunk-6fnhzhdb.js";
17
+ import"../chunk-mvkxs8d0.js";
15
18
  import"../chunk-rq5fc007.js";
16
19
  import"../chunk-9shz0bw1.js";
17
- import"../chunk-ssj93brx.js";
20
+ import"../chunk-sb5qzv37.js";
21
+ import"../chunk-43mcyrh4.js";
22
+ import"../chunk-rkt41za2.js";
18
23
  export {
19
24
  openMysql,
20
25
  MysqlDatabase,
@@ -1,12 +1,8 @@
1
- import"../chunk-pfar9cm3.js";
2
- import {
3
- withReadScope
4
- } from "../chunk-4sqvppz7.js";
5
1
  import {
6
2
  MysqlClient,
7
3
  MysqlDatabase,
8
4
  openMysql
9
- } from "../chunk-t4hrnaj0.js";
5
+ } from "../chunk-ex429qjt.js";
10
6
  import"../chunk-m91t44jh.js";
11
7
  import"../chunk-db4an9td.js";
12
8
  import {
@@ -18,15 +14,24 @@ import {
18
14
  queryLimited
19
15
  } from "../chunk-1gyshqd9.js";
20
16
  import"../chunk-835fssgz.js";
21
- import"../chunk-gm4swndx.js";
22
- import"../chunk-rkt41za2.js";
17
+ import"../chunk-pfar9cm3.js";
18
+ import {
19
+ withReadScope
20
+ } from "../chunk-4sqvppz7.js";
21
+ import"../chunk-18gcp0ck.js";
22
+ import"../chunk-kap6ka3n.js";
23
23
  import"../chunk-v3hxvnrc.js";
24
- import"../chunk-h8fwx0k7.js";
25
- import"../chunk-fqrknvr8.js";
26
- import"../chunk-nftzckdy.js";
24
+ import"../chunk-ssj93brx.js";
25
+ import"../chunk-ehmx0yhp.js";
26
+ import"../chunk-0d8vs5q8.js";
27
+ import"../chunk-xgnz10sr.js";
28
+ import"../chunk-6fnhzhdb.js";
29
+ import"../chunk-mvkxs8d0.js";
27
30
  import"../chunk-rq5fc007.js";
28
31
  import"../chunk-9shz0bw1.js";
29
- import"../chunk-ssj93brx.js";
32
+ import"../chunk-sb5qzv37.js";
33
+ import"../chunk-43mcyrh4.js";
34
+ import"../chunk-rkt41za2.js";
30
35
  export {
31
36
  withReadScope,
32
37
  queryLimited,
@@ -1,6 +1,9 @@
1
1
  import type { Client as ManagedClient } from "../client";
2
- import type { ConnectionSource, ClientLifecycle } from "../datasource";
2
+ import type { ClientLifecycle } from "../datasource";
3
+ import { Transport } from "../transport";
3
4
  import type { SearchEngine, SearchQuery, SearchResult } from "./types";
5
+ /** IP targets retain their address identity but never send an IP literal as TLS SNI. */
6
+ export declare function openSearchServername(host?: string): string | undefined;
4
7
  export interface OpenSearchAuth {
5
8
  username?: string;
6
9
  password?: string;
@@ -17,6 +20,10 @@ export interface OpenSearchOptions {
17
20
  acquireTimeoutMs?: number;
18
21
  /** Original TLS identity when a transport maps the socket to localhost. */
19
22
  servername?: string;
23
+ /** Only endpoints without an explicit scheme permit HTTP/HTTPS discovery. */
24
+ preferredScheme?: "http" | "https";
25
+ /** Original HTTP authority when dialing a forwarded address. */
26
+ authority?: string;
20
27
  }
21
28
  export interface OpenSearchClientApi {
22
29
  count(params: Record<string, unknown>): Promise<{
@@ -55,6 +62,7 @@ export interface OpenSearchReadApi extends SearchEngine {
55
62
  export declare function isOpenSearchReadApi(search: SearchEngine): search is OpenSearchReadApi;
56
63
  /** Official OpenSearch client behind the engine-neutral SearchEngine contract. */
57
64
  export declare class OpenSearchEngine implements OpenSearchReadApi {
65
+ #private;
58
66
  private readonly options;
59
67
  private readonly client;
60
68
  constructor(options: OpenSearchOptions, client?: OpenSearchClientApi);
@@ -72,10 +80,12 @@ export declare class OpenSearchEngine implements OpenSearchReadApi {
72
80
  */
73
81
  export declare class OpenSearchClient implements ManagedClient, OpenSearchReadApi {
74
82
  #private;
75
- private readonly source;
83
+ private readonly configuration;
84
+ private readonly transport;
76
85
  private readonly lifecycle;
77
86
  readonly signal: AbortSignal;
78
- constructor(source: ConnectionSource<OpenSearchOptions>, lifecycle?: OpenSearchLifecycle);
87
+ get node(): string | undefined;
88
+ constructor(configuration: OpenSearchOptions | (() => Promise<OpenSearchOptions>), transport: Transport, lifecycle?: OpenSearchLifecycle);
79
89
  initialize(): Promise<void>;
80
90
  count(index: string, query: SearchQuery): Promise<number>;
81
91
  search(index: string, body: SearchQuery): Promise<SearchResult>;
@@ -84,4 +94,4 @@ export declare class OpenSearchClient implements ManagedClient, OpenSearchReadAp
84
94
  close(): Promise<void>;
85
95
  dispose(): Promise<void>;
86
96
  }
87
- export declare function openOpenSearch(source: ConnectionSource<OpenSearchOptions>, lifecycle?: OpenSearchLifecycle): Promise<OpenSearchClient>;
97
+ export declare function openOpenSearch(configuration: OpenSearchOptions | (() => Promise<OpenSearchOptions>), transport: Transport, lifecycle?: OpenSearchLifecycle): Promise<OpenSearchClient>;
@@ -3,17 +3,24 @@ import {
3
3
  OpenSearchEngine,
4
4
  describeOpenSearchError,
5
5
  isOpenSearchReadApi,
6
- openOpenSearch
7
- } from "../chunk-vymm4g9h.js";
8
- import"../chunk-gm4swndx.js";
9
- import"../chunk-rkt41za2.js";
10
- import"../chunk-h8fwx0k7.js";
11
- import"../chunk-fqrknvr8.js";
12
- import"../chunk-nftzckdy.js";
6
+ openOpenSearch,
7
+ openSearchServername
8
+ } from "../chunk-kxpecgy7.js";
9
+ import"../chunk-18gcp0ck.js";
10
+ import"../chunk-kap6ka3n.js";
11
+ import"../chunk-ssj93brx.js";
12
+ import"../chunk-ehmx0yhp.js";
13
+ import"../chunk-0d8vs5q8.js";
14
+ import"../chunk-xgnz10sr.js";
15
+ import"../chunk-6fnhzhdb.js";
16
+ import"../chunk-mvkxs8d0.js";
13
17
  import"../chunk-rq5fc007.js";
14
18
  import"../chunk-9shz0bw1.js";
15
- import"../chunk-ssj93brx.js";
19
+ import"../chunk-sb5qzv37.js";
20
+ import"../chunk-43mcyrh4.js";
21
+ import"../chunk-rkt41za2.js";
16
22
  export {
23
+ openSearchServername,
17
24
  openOpenSearch,
18
25
  isOpenSearchReadApi,
19
26
  describeOpenSearchError,
@@ -10,19 +10,26 @@ import {
10
10
  OpenSearchEngine,
11
11
  describeOpenSearchError,
12
12
  isOpenSearchReadApi,
13
- openOpenSearch
14
- } from "../chunk-vymm4g9h.js";
15
- import"../chunk-gm4swndx.js";
16
- import"../chunk-rkt41za2.js";
17
- import"../chunk-h8fwx0k7.js";
18
- import"../chunk-fqrknvr8.js";
19
- import"../chunk-nftzckdy.js";
13
+ openOpenSearch,
14
+ openSearchServername
15
+ } from "../chunk-kxpecgy7.js";
16
+ import"../chunk-18gcp0ck.js";
17
+ import"../chunk-kap6ka3n.js";
18
+ import"../chunk-ssj93brx.js";
19
+ import"../chunk-ehmx0yhp.js";
20
+ import"../chunk-0d8vs5q8.js";
21
+ import"../chunk-xgnz10sr.js";
22
+ import"../chunk-6fnhzhdb.js";
23
+ import"../chunk-mvkxs8d0.js";
20
24
  import"../chunk-rq5fc007.js";
21
25
  import"../chunk-9shz0bw1.js";
22
- import"../chunk-ssj93brx.js";
26
+ import"../chunk-sb5qzv37.js";
27
+ import"../chunk-43mcyrh4.js";
28
+ import"../chunk-rkt41za2.js";
23
29
  export {
24
30
  searchAfterPages,
25
31
  parseOpenSearchEndpoint,
32
+ openSearchServername,
26
33
  openOpenSearch,
27
34
  isOpenSearchReadApi,
28
35
  describeOpenSearchError,
@@ -1,6 +1,6 @@
1
1
  import type { Client } from "../client";
2
- import type { ConnectionSource, ClientLifecycle } from "../datasource";
3
- import { type TcpTransport } from "../transport";
2
+ import type { ClientLifecycle } from "../datasource";
3
+ import { Transport, type TcpTransport } from "../transport";
4
4
  import { type RedisTopologyConfig, type RedisTopology } from "./topology";
5
5
  import { createClient, type RedisClientType } from "@redis/client";
6
6
  export interface RedisEndpoint {
@@ -86,7 +86,7 @@ export declare class RedisAccess implements RedisAccessApi {
86
86
  private readonly baseConfig;
87
87
  private readonly connectionFactory;
88
88
  private readonly lifecycle;
89
- constructor(transports: TcpTransport | readonly TcpTransport[], baseConfig: Omit<RedisConnectionConfig, "database">, connectionFactory?: RedisConnectionFactory, lifecycle?: ClientLifecycle);
89
+ constructor(transports: Transport | TcpTransport | readonly TcpTransport[], baseConfig: Omit<RedisConnectionConfig, "database">, connectionFactory?: RedisConnectionFactory, lifecycle?: ClientLifecycle);
90
90
  connection(endpoint: RedisEndpoint, database: number, credentials?: RedisCredentials): Promise<RedisManagedConnection>;
91
91
  close(): Promise<void>;
92
92
  }
@@ -94,10 +94,11 @@ export declare class RedisAccess implements RedisAccessApi {
94
94
  export type RedisDataSourceTarget = RedisConnectionConfig & RedisTopologyConfig;
95
95
  export declare class RedisClient implements Client {
96
96
  #private;
97
- private readonly source;
97
+ private readonly configuration;
98
+ private readonly transport;
98
99
  private readonly lifecycle;
99
100
  readonly signal: AbortSignal;
100
- constructor(source: ConnectionSource<RedisDataSourceTarget>, lifecycle?: ClientLifecycle);
101
+ constructor(configuration: RedisDataSourceTarget | (() => Promise<RedisDataSourceTarget>), transport: Transport, lifecycle?: ClientLifecycle);
101
102
  initialize(): Promise<void>;
102
103
  get access(): RedisAccess;
103
104
  /** Refresh topology for this observation, while retaining reusable node connections. */
@@ -105,5 +106,5 @@ export declare class RedisClient implements Client {
105
106
  get target(): RedisDataSourceTarget;
106
107
  dispose(): Promise<void>;
107
108
  }
108
- export declare function openRedis(source: ConnectionSource<RedisDataSourceTarget>, lifecycle?: ClientLifecycle): Promise<RedisClient>;
109
+ export declare function openRedis(configuration: RedisDataSourceTarget | (() => Promise<RedisDataSourceTarget>), transport: Transport, lifecycle?: ClientLifecycle): Promise<RedisClient>;
109
110
  export {};
@@ -4,16 +4,21 @@ import {
4
4
  RedisConnection,
5
5
  openRedis,
6
6
  parseRedisInfo
7
- } from "../chunk-f98qrpx1.js";
8
- import"../chunk-gm4swndx.js";
7
+ } from "../chunk-njs48b51.js";
9
8
  import"../chunk-5tbzf9wd.js";
10
- import"../chunk-rkt41za2.js";
11
- import"../chunk-h8fwx0k7.js";
12
- import"../chunk-fqrknvr8.js";
13
- import"../chunk-nftzckdy.js";
9
+ import"../chunk-18gcp0ck.js";
10
+ import"../chunk-kap6ka3n.js";
11
+ import"../chunk-ssj93brx.js";
12
+ import"../chunk-ehmx0yhp.js";
13
+ import"../chunk-0d8vs5q8.js";
14
+ import"../chunk-xgnz10sr.js";
15
+ import"../chunk-6fnhzhdb.js";
16
+ import"../chunk-mvkxs8d0.js";
14
17
  import"../chunk-rq5fc007.js";
15
18
  import"../chunk-9shz0bw1.js";
16
- import"../chunk-ssj93brx.js";
19
+ import"../chunk-sb5qzv37.js";
20
+ import"../chunk-43mcyrh4.js";
21
+ import"../chunk-rkt41za2.js";
17
22
  export {
18
23
  parseRedisInfo,
19
24
  openRedis,
@@ -1,25 +1,30 @@
1
+ import {
2
+ collectRedisKeyStats,
3
+ redisGroupedSampleSizes
4
+ } from "../chunk-jr9y0ghr.js";
1
5
  import {
2
6
  RedisAccess,
3
7
  RedisClient,
4
8
  RedisConnection,
5
9
  openRedis,
6
10
  parseRedisInfo
7
- } from "../chunk-f98qrpx1.js";
8
- import"../chunk-gm4swndx.js";
9
- import {
10
- collectRedisKeyStats,
11
- redisGroupedSampleSizes
12
- } from "../chunk-jr9y0ghr.js";
11
+ } from "../chunk-njs48b51.js";
13
12
  import {
14
13
  discoverRedisTopology
15
14
  } from "../chunk-5tbzf9wd.js";
16
- import"../chunk-rkt41za2.js";
17
- import"../chunk-h8fwx0k7.js";
18
- import"../chunk-fqrknvr8.js";
19
- import"../chunk-nftzckdy.js";
15
+ import"../chunk-18gcp0ck.js";
16
+ import"../chunk-kap6ka3n.js";
17
+ import"../chunk-ssj93brx.js";
18
+ import"../chunk-ehmx0yhp.js";
19
+ import"../chunk-0d8vs5q8.js";
20
+ import"../chunk-xgnz10sr.js";
21
+ import"../chunk-6fnhzhdb.js";
22
+ import"../chunk-mvkxs8d0.js";
20
23
  import"../chunk-rq5fc007.js";
21
24
  import"../chunk-9shz0bw1.js";
22
- import"../chunk-ssj93brx.js";
25
+ import"../chunk-sb5qzv37.js";
26
+ import"../chunk-43mcyrh4.js";
27
+ import"../chunk-rkt41za2.js";
23
28
  export {
24
29
  redisGroupedSampleSizes,
25
30
  parseRedisInfo,
@@ -1,5 +1,6 @@
1
1
  import type { Client } from "../client";
2
- import type { ClientLifecycle, ConnectionSource } from "../datasource";
2
+ import type { ClientLifecycle } from "../datasource";
3
+ import { Transport } from "../transport";
3
4
  import type { S3Target, S3Limits, S3RequestOptions, S3ObjectMetadata, S3ObjectPage, S3BucketPage, S3ObjectRead } from "./types";
4
5
  /**
5
6
  * @spec Read-only S3 operations share a bounded pool; no failed protocol operation is replayed.
@@ -8,11 +9,12 @@ import type { S3Target, S3Limits, S3RequestOptions, S3ObjectMetadata, S3ObjectPa
8
9
  */
9
10
  export declare class S3Client implements Client {
10
11
  #private;
11
- private readonly source;
12
+ private readonly configuration;
13
+ private readonly transport;
12
14
  private readonly limits;
13
15
  private readonly lifecycle;
14
16
  readonly signal: AbortSignal;
15
- constructor(source: ConnectionSource<S3Target>, limits: S3Limits, lifecycle?: ClientLifecycle);
17
+ constructor(configuration: S3Target | (() => Promise<S3Target>), transport: Transport, limits: S3Limits, lifecycle?: ClientLifecycle);
16
18
  initialize(): Promise<void>;
17
19
  /** A failed HEAD remains an error, not a misleading exists=false. */
18
20
  headBucket(bucket: string, options?: S3RequestOptions): Promise<void>;
package/dist/s3/client.js CHANGED
@@ -1,8 +1,22 @@
1
1
  import {
2
2
  S3Client
3
- } from "../chunk-zp1s833x.js";
3
+ } from "../chunk-7m95c7pn.js";
4
+ import"../chunk-18gcp0ck.js";
5
+ import"../chunk-kap6ka3n.js";
4
6
  import"../chunk-v3hxvnrc.js";
5
- import"../chunk-x4ntb898.js";
7
+ import"../chunk-z8e1ckkq.js";
8
+ import"../chunk-c2b2jwm4.js";
9
+ import"../chunk-ssj93brx.js";
10
+ import"../chunk-ehmx0yhp.js";
11
+ import"../chunk-0d8vs5q8.js";
12
+ import"../chunk-xgnz10sr.js";
13
+ import"../chunk-6fnhzhdb.js";
14
+ import"../chunk-mvkxs8d0.js";
15
+ import"../chunk-rq5fc007.js";
16
+ import"../chunk-9shz0bw1.js";
17
+ import"../chunk-sb5qzv37.js";
18
+ import"../chunk-43mcyrh4.js";
19
+ import"../chunk-rkt41za2.js";
6
20
  export {
7
21
  S3Client
8
22
  };
@@ -1,17 +1,24 @@
1
1
  import {
2
2
  S3DataSource
3
- } from "../chunk-35cjec9z.js";
3
+ } from "../chunk-3b877a0y.js";
4
4
  import"../chunk-z5pm2emz.js";
5
- import"../chunk-rkt41za2.js";
6
- import"../chunk-zp1s833x.js";
5
+ import"../chunk-7m95c7pn.js";
6
+ import"../chunk-18gcp0ck.js";
7
+ import"../chunk-kap6ka3n.js";
7
8
  import"../chunk-v3hxvnrc.js";
8
- import"../chunk-x4ntb898.js";
9
- import"../chunk-h8fwx0k7.js";
10
- import"../chunk-fqrknvr8.js";
11
- import"../chunk-nftzckdy.js";
9
+ import"../chunk-z8e1ckkq.js";
10
+ import"../chunk-c2b2jwm4.js";
11
+ import"../chunk-ssj93brx.js";
12
+ import"../chunk-ehmx0yhp.js";
13
+ import"../chunk-0d8vs5q8.js";
14
+ import"../chunk-xgnz10sr.js";
15
+ import"../chunk-6fnhzhdb.js";
16
+ import"../chunk-mvkxs8d0.js";
12
17
  import"../chunk-rq5fc007.js";
13
18
  import"../chunk-9shz0bw1.js";
14
- import"../chunk-ssj93brx.js";
19
+ import"../chunk-sb5qzv37.js";
20
+ import"../chunk-43mcyrh4.js";
21
+ import"../chunk-rkt41za2.js";
15
22
  export {
16
23
  S3DataSource
17
24
  };
@@ -1,10 +1,9 @@
1
- import { NodeHttpHandler } from "@smithy/node-http-handler";
2
1
  import type { Endpoint } from "../transport";
3
2
  import type { S3Limits, S3Target } from "./types";
4
- /** Routing changes only the socket destination, never the signed HTTP Host or TLS identity. */
3
+ /** Signing precedes the HTTP handler; routing must preserve the signed Host and TLS identity. */
5
4
  export declare function s3Handler(target: S3Target, route: Endpoint, limits: S3Limits): {
6
5
  handler: {
7
- handle(request: Parameters<NodeHttpHandler["handle"]>[0], options: Parameters<NodeHttpHandler["handle"]>[1]): Promise<{
6
+ handle(request: Parameters<import("@smithy/node-http-handler").NodeHttpHandler["handle"]>[0], options: Parameters<import("@smithy/node-http-handler").NodeHttpHandler["handle"]>[1]): Promise<{
8
7
  response: import("@smithy/core/transport").HttpResponse;
9
8
  }>;
10
9
  destroy(): void;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  s3Handler
3
- } from "../chunk-x4ntb898.js";
3
+ } from "../chunk-z8e1ckkq.js";
4
+ import"../chunk-c2b2jwm4.js";
4
5
  export {
5
6
  s3Handler
6
7
  };
package/dist/s3/index.js CHANGED
@@ -1,19 +1,26 @@
1
1
  import {
2
2
  S3DataSource
3
- } from "../chunk-35cjec9z.js";
3
+ } from "../chunk-3b877a0y.js";
4
4
  import"../chunk-z5pm2emz.js";
5
- import"../chunk-rkt41za2.js";
6
5
  import {
7
6
  S3Client
8
- } from "../chunk-zp1s833x.js";
7
+ } from "../chunk-7m95c7pn.js";
8
+ import"../chunk-18gcp0ck.js";
9
+ import"../chunk-kap6ka3n.js";
9
10
  import"../chunk-v3hxvnrc.js";
10
- import"../chunk-x4ntb898.js";
11
- import"../chunk-h8fwx0k7.js";
12
- import"../chunk-fqrknvr8.js";
13
- import"../chunk-nftzckdy.js";
11
+ import"../chunk-z8e1ckkq.js";
12
+ import"../chunk-c2b2jwm4.js";
13
+ import"../chunk-ssj93brx.js";
14
+ import"../chunk-ehmx0yhp.js";
15
+ import"../chunk-0d8vs5q8.js";
16
+ import"../chunk-xgnz10sr.js";
17
+ import"../chunk-6fnhzhdb.js";
18
+ import"../chunk-mvkxs8d0.js";
14
19
  import"../chunk-rq5fc007.js";
15
20
  import"../chunk-9shz0bw1.js";
16
- import"../chunk-ssj93brx.js";
21
+ import"../chunk-sb5qzv37.js";
22
+ import"../chunk-43mcyrh4.js";
23
+ import"../chunk-rkt41za2.js";
17
24
  export {
18
25
  S3DataSource,
19
26
  S3Client
@@ -1,3 +1,7 @@
1
+ import { Transport } from "./lifecycle";
2
+ import type { ConnectionAttempt } from "../connection/acquire";
3
+ export { Transport } from "./lifecycle";
4
+ /** Dial address only. Protocol identity remains with the client, never inferred from a forwarded address. */
1
5
  export interface Endpoint {
2
6
  host: string;
3
7
  port: number;
@@ -6,20 +10,24 @@ export interface Endpoint {
6
10
  export interface TcpTransport {
7
11
  readonly kind: "tcp";
8
12
  readonly name: string;
9
- connect(endpoint: Endpoint): Promise<Endpoint>;
13
+ connect(endpoint: Endpoint, attempt?: ConnectionAttempt): Promise<Endpoint>;
10
14
  }
11
- export declare class DirectTransport implements TcpTransport {
15
+ export declare class DirectTransport extends Transport implements TcpTransport {
12
16
  readonly kind = "tcp";
13
17
  readonly name = "direct";
14
- connect(endpoint: Endpoint): Promise<Endpoint>;
18
+ protected paths(): readonly TransportPath[];
19
+ connect(endpoint: Endpoint, attempt?: ConnectionAttempt): Promise<Endpoint>;
15
20
  }
16
21
  /** The supplied forwarder owns port allocation and cleanup; external endpoints may stay direct. */
17
- export declare class PortForwardTransport implements TcpTransport {
22
+ export declare class PortForwardTransport extends Transport implements TcpTransport {
18
23
  private readonly forward;
24
+ private readonly release?;
19
25
  readonly kind = "tcp";
20
26
  readonly name = "port-forward";
21
- constructor(forward: (endpoint: Endpoint) => Promise<Endpoint>);
22
- connect(endpoint: Endpoint): Promise<Endpoint>;
27
+ constructor(forward: (endpoint: Endpoint, attempt?: ConnectionAttempt) => Promise<Endpoint>, release?: (() => void | Promise<void>) | undefined, signal?: AbortSignal);
28
+ protected paths(): readonly TransportPath[];
29
+ connect(endpoint: Endpoint, attempt?: ConnectionAttempt): Promise<Endpoint>;
30
+ protected close(): Promise<void>;
23
31
  }
24
32
  export interface PodRunOptions {
25
33
  stdin: string;
@@ -27,15 +35,17 @@ export interface PodRunOptions {
27
35
  }
28
36
  export type PodRunner = (command: readonly string[], options: PodRunOptions) => Promise<string>;
29
37
  /** A Python-capable Pod path. Protocol code supplies the script; the host enforces access. */
30
- export declare class PodPythonTransport {
38
+ export declare class PodPythonTransport extends Transport {
31
39
  private readonly exec;
32
40
  private readonly python;
33
41
  readonly kind = "python";
34
42
  readonly name = "pod-python";
35
43
  constructor(exec: PodRunner, python?: string);
44
+ protected paths(): readonly TransportPath[];
36
45
  run(script: string, input: unknown, timeoutMs: number): Promise<string>;
37
46
  }
38
- export type Transport = TcpTransport | PodPythonTransport;
47
+ export type TransportPath = TcpTransport | PodPythonTransport;
39
48
  /** Only failure to establish a connection permits a route change; never replay protocol operations. */
40
49
  export declare function isConnectionNetworkError(error: unknown): boolean;
41
50
  export { PodRelayTransport, type PodRelayOptions } from "./pod-relay";
51
+ export { ServicePortForwardTransport } from "./service-port-forward";
@@ -3,16 +3,29 @@ import {
3
3
  PodPythonTransport,
4
4
  PortForwardTransport,
5
5
  isConnectionNetworkError
6
- } from "../chunk-h8fwx0k7.js";
6
+ } from "../chunk-18gcp0ck.js";
7
7
  import {
8
8
  PodRelayTransport
9
- } from "../chunk-fqrknvr8.js";
10
- import"../chunk-nftzckdy.js";
9
+ } from "../chunk-kap6ka3n.js";
10
+ import"../chunk-ssj93brx.js";
11
+ import {
12
+ ServicePortForwardTransport
13
+ } from "../chunk-ehmx0yhp.js";
14
+ import"../chunk-0d8vs5q8.js";
15
+ import"../chunk-xgnz10sr.js";
16
+ import"../chunk-6fnhzhdb.js";
17
+ import"../chunk-mvkxs8d0.js";
11
18
  import"../chunk-rq5fc007.js";
12
19
  import"../chunk-9shz0bw1.js";
13
- import"../chunk-ssj93brx.js";
20
+ import {
21
+ Transport
22
+ } from "../chunk-sb5qzv37.js";
23
+ import"../chunk-43mcyrh4.js";
24
+ import"../chunk-rkt41za2.js";
14
25
  export {
15
26
  isConnectionNetworkError,
27
+ Transport,
28
+ ServicePortForwardTransport,
16
29
  PortForwardTransport,
17
30
  PodRelayTransport,
18
31
  PodPythonTransport,
@@ -0,0 +1,22 @@
1
+ import type { Client } from "../client";
2
+ import { type Acquisition } from "../connection/acquire";
3
+ import type { TransportPath } from "./index";
4
+ /**
5
+ * @spec A transport selects and prepares access paths; protocol establishment is supplied by the client.
6
+ * @rule Borrowed routes are never disposed by their consumers. Register resource-owning routes with ClientManager.
7
+ * @see {@link component://docs/toolbox.md}
8
+ */
9
+ export declare class Transport implements Client {
10
+ #private;
11
+ private readonly candidates;
12
+ /** Root cancellation stops borrowers; only this transport's disposal tears down shared resources. */
13
+ protected readonly resourceSignal: AbortSignal;
14
+ readonly signal: AbortSignal;
15
+ constructor(candidates?: readonly TransportPath[], signal?: AbortSignal);
16
+ protected paths(): readonly TransportPath[];
17
+ initialize(): Promise<void>;
18
+ /** Internal handshake collaboration: only establishment errors can select another path. */
19
+ acquire<C>(options: Acquisition<TransportPath, C>): Promise<C>;
20
+ protected close(): Promise<void>;
21
+ dispose(): Promise<void>;
22
+ }
@@ -0,0 +1,8 @@
1
+ import {
2
+ Transport
3
+ } from "../chunk-sb5qzv37.js";
4
+ import"../chunk-43mcyrh4.js";
5
+ import"../chunk-rkt41za2.js";
6
+ export {
7
+ Transport
8
+ };
@@ -1,7 +1,9 @@
1
1
  import type { Client } from "../client";
2
2
  import { type Executor, type KubectlOptions } from "../kubernetes/executor";
3
3
  import { type StartPortForward } from "../kubernetes/port-forward";
4
- import type { Endpoint, TcpTransport } from "./index";
4
+ import { Transport } from "./lifecycle";
5
+ import type { Endpoint, TcpTransport, TransportPath } from "./index";
6
+ import type { ConnectionAttempt } from "../connection/acquire";
5
7
  export interface PodRelayOptions extends KubectlOptions {
6
8
  namespace: string;
7
9
  /** Restrict eligible existing Pods without coupling callers to the relay runtime. */
@@ -16,7 +18,7 @@ export interface PodRelayOptions extends KubectlOptions {
16
18
  /** Execution-scoped TCP transport borrowed by all Service clients; only its root owner disposes it.
17
19
  * Python is private. Requires list pods, pods/exec and pods/portforward, never pods/create.
18
20
  */
19
- export declare class PodRelayTransport implements TcpTransport, Client {
21
+ export declare class PodRelayTransport extends Transport implements TcpTransport, Client {
20
22
  #private;
21
23
  private readonly options;
22
24
  readonly kind = "tcp";
@@ -25,7 +27,8 @@ export declare class PodRelayTransport implements TcpTransport, Client {
25
27
  executor?: Executor;
26
28
  startForward?: StartPortForward;
27
29
  });
30
+ protected paths(): readonly TransportPath[];
28
31
  initialize(): Promise<void>;
29
- connect(endpoint: Endpoint): Promise<Endpoint>;
30
- dispose(): Promise<void>;
32
+ connect(endpoint: Endpoint, attempt?: ConnectionAttempt): Promise<Endpoint>;
33
+ protected close(): Promise<void>;
31
34
  }