@compforge/harness-toolbox 0.3.10 → 0.4.0

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 (40) hide show
  1. package/README.md +76 -0
  2. package/dist/{chunk-p6k59m3q.js → chunk-0s27bgga.js} +9 -4
  3. package/dist/{chunk-zhkrydeg.js → chunk-20kv4wc3.js} +4 -1
  4. package/dist/chunk-4ms037k2.js +210 -0
  5. package/dist/{chunk-b7f39m4v.js → chunk-8mb6natq.js} +1 -1
  6. package/dist/chunk-ba883sdp.js +60 -0
  7. package/dist/chunk-ftkrjqkc.js +15 -0
  8. package/dist/{chunk-ahc00qs5.js → chunk-h73h2b7y.js} +5 -5
  9. package/dist/chunk-mxyvpy79.js +62 -0
  10. package/dist/chunk-mzdz6wwc.js +91 -0
  11. package/dist/{chunk-y94xq8b4.js → chunk-y529s0mz.js} +26 -11
  12. package/dist/datasource.js +1 -1
  13. package/dist/errors.d.ts +2 -0
  14. package/dist/errors.js +4 -2
  15. package/dist/file/client.d.ts +17 -0
  16. package/dist/file/client.js +10 -0
  17. package/dist/file/index.d.ts +5 -0
  18. package/dist/file/index.js +24 -0
  19. package/dist/file/local.d.ts +13 -0
  20. package/dist/file/local.js +11 -0
  21. package/dist/file/pod.d.ts +31 -0
  22. package/dist/file/pod.js +11 -0
  23. package/dist/kubernetes/client.d.ts +12 -4
  24. package/dist/kubernetes/client.js +6 -4
  25. package/dist/kubernetes/environment.d.ts +2 -2
  26. package/dist/kubernetes/environment.js +5 -4
  27. package/dist/kubernetes/pod-log-datasource.js +1 -1
  28. package/dist/kubernetes/resource-transport.d.ts +19 -0
  29. package/dist/kubernetes/resource-transport.js +10 -0
  30. package/dist/kubernetes/resources.d.ts +45 -5
  31. package/dist/kubernetes/resources.js +4 -5
  32. package/dist/kubernetes/workload.js +2 -2
  33. package/dist/mysql/client.js +3 -3
  34. package/dist/mysql/index.js +12 -12
  35. package/dist/opensearch/client.js +2 -2
  36. package/dist/opensearch/index.js +7 -7
  37. package/dist/s3/datasource.js +1 -1
  38. package/dist/s3/index.js +1 -1
  39. package/package.json +6 -2
  40. package/dist/chunk-fhtbvj0s.js +0 -89
@@ -1,15 +1,15 @@
1
1
  import {
2
- ServicePortForwarder
3
- } from "./chunk-2171tajs.js";
4
- import {
5
- resourceAccess
6
- } from "./chunk-fhtbvj0s.js";
2
+ KubernetesResourceTransport
3
+ } from "./chunk-4ms037k2.js";
7
4
  import {
8
5
  resolveWorkload
9
- } from "./chunk-p6k59m3q.js";
6
+ } from "./chunk-0s27bgga.js";
7
+ import {
8
+ ServicePortForwarder
9
+ } from "./chunk-2171tajs.js";
10
10
  import {
11
11
  KubernetesError
12
- } from "./chunk-zhkrydeg.js";
12
+ } from "./chunk-20kv4wc3.js";
13
13
  import {
14
14
  KubectlExecutor
15
15
  } from "./chunk-hmah9t8e.js";
@@ -25,6 +25,7 @@ class KubernetesClient {
25
25
  #operations = new Set;
26
26
  #disposal;
27
27
  #resources;
28
+ #transport;
28
29
  constructor(kube, signal, executor, resourceLimits = { timeoutMs: 30000, concurrency: 4, maxBytes: 8 * 1024 * 1024 }, resources) {
29
30
  this.kube = kube;
30
31
  this.resourceLimits = resourceLimits;
@@ -43,10 +44,12 @@ class KubernetesClient {
43
44
  throw new KubernetesError("Workload namespace is required", { kind: "invalid_argument" });
44
45
  if (!environment.trim())
45
46
  throw new KubernetesError("Environment identity is required", { kind: "invalid_argument" });
46
- this.#resources ??= resourceAccess(this.kube, this.signal, this.resourceLimits);
47
- return resolveWorkload(this.#resources, workload, namespace, environment);
47
+ return resolveWorkload(this, workload, namespace, environment);
48
48
  });
49
49
  }
50
+ #resourceAccess() {
51
+ return this.#resources ??= this.#transport = new KubernetesResourceTransport(this.kube, this.signal, this.resourceLimits);
52
+ }
50
53
  #executor(namespace) {
51
54
  let executor = this.#executors.get(namespace);
52
55
  if (!executor) {
@@ -68,8 +71,19 @@ class KubernetesClient {
68
71
  #options(options) {
69
72
  return { ...options, signal: options?.signal ? AbortSignal.any([this.signal, options.signal]) : this.signal };
70
73
  }
71
- run(namespace, command, options) {
72
- return this.#track(() => this.#executor(namespace).run(command, this.#options(options)));
74
+ get(ref, options) {
75
+ return this.#track(() => this.#resourceAccess().get({ ...ref, namespace: ref.namespace ?? this.kube.namespace }, this.#options(options)));
76
+ }
77
+ list(query, options) {
78
+ return this.#track(() => this.#resourceAccess().list({ ...query, namespace: query.namespace ?? this.kube.namespace }, this.#options(options)));
79
+ }
80
+ inNamespace(namespace) {
81
+ if (!namespace.trim())
82
+ throw new KubernetesError("Namespace is required", { kind: "invalid_argument" });
83
+ return {
84
+ get: (ref, options) => this.get({ ...ref, namespace }, options),
85
+ list: (query, options) => this.list({ ...query, namespace }, options)
86
+ };
73
87
  }
74
88
  exec(namespace, target, command, options) {
75
89
  return this.#track(() => this.#executor(namespace).exec(target, command, this.#options(options)));
@@ -101,6 +115,7 @@ class KubernetesClient {
101
115
  forwarder?.stop();
102
116
  }));
103
117
  this.#forwarders.clear();
118
+ this.#transport?.dispose();
104
119
  const errors = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
105
120
  if (errors.length)
106
121
  throw new AggregateError(errors, "Kubernetes client cleanup failed");
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  KubernetesError,
8
8
  ToolboxError
9
- } from "./chunk-zhkrydeg.js";
9
+ } from "./chunk-20kv4wc3.js";
10
10
  export {
11
11
  clientKey,
12
12
  ToolboxError,
package/dist/errors.d.ts CHANGED
@@ -11,6 +11,8 @@ export declare class ToolboxError extends Error {
11
11
  }
12
12
  export declare class KubernetesError extends ToolboxError {
13
13
  }
14
+ export declare class FileError extends ToolboxError {
15
+ }
14
16
  export declare function kubernetesHttpError(status: number): KubernetesError;
15
17
  /**
16
18
  * Normalize a failed kubectl resource request at the transport boundary.
package/dist/errors.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import {
2
+ FileError,
2
3
  KubernetesError,
3
4
  ToolboxError,
4
5
  kubernetesCommandError,
5
6
  kubernetesHttpError
6
- } from "./chunk-zhkrydeg.js";
7
+ } from "./chunk-20kv4wc3.js";
7
8
  export {
8
9
  kubernetesHttpError,
9
10
  kubernetesCommandError,
10
11
  ToolboxError,
11
- KubernetesError
12
+ KubernetesError,
13
+ FileError
12
14
  };
@@ -0,0 +1,17 @@
1
+ import type { FileClient, FileReadOptions } from "@compforge/harness-common";
2
+ export interface FileClientOptions {
3
+ concurrency: number;
4
+ }
5
+ export declare function fileClientOptions(options: FileClientOptions): Readonly<FileClientOptions>;
6
+ /** Shared limits and lifecycle; transports stream bytes and own per-read resource cleanup. */
7
+ export declare abstract class BoundedFileClient implements FileClient {
8
+ #private;
9
+ readonly path: string;
10
+ constructor(path: string, options: FileClientOptions, signal: AbortSignal);
11
+ initialize(): Promise<void>;
12
+ protected initializeAccess(): Promise<void>;
13
+ protected abstract capture(signal: AbortSignal, limits: Pick<FileReadOptions, "maxBytes" | "timeoutMs">, receive: (bytes: Uint8Array) => void): Promise<void>;
14
+ /** @spec Limits apply while streaming; a failed read never publishes partial bytes. */
15
+ read(options: FileReadOptions): Promise<Uint8Array>;
16
+ dispose(): Promise<void>;
17
+ }
@@ -0,0 +1,10 @@
1
+ import {
2
+ BoundedFileClient,
3
+ fileClientOptions
4
+ } from "../chunk-mzdz6wwc.js";
5
+ import"../chunk-20kv4wc3.js";
6
+ import"../chunk-v3hxvnrc.js";
7
+ export {
8
+ fileClientOptions,
9
+ BoundedFileClient
10
+ };
@@ -0,0 +1,5 @@
1
+ export { FileDataSource, type FileClient, type FileReadOptions } from "@compforge/harness-common";
2
+ export { FileError } from "../errors";
3
+ export type { FileClientOptions } from "./client";
4
+ export { LocalFileDataSource, LocalFileClient } from "./local";
5
+ export { PodFileDataSource, PodFileClient, type PodFileTarget } from "./pod";
@@ -0,0 +1,24 @@
1
+ import {
2
+ PodFileClient,
3
+ PodFileDataSource
4
+ } from "../chunk-mxyvpy79.js";
5
+ import {
6
+ LocalFileClient,
7
+ LocalFileDataSource
8
+ } from "../chunk-ba883sdp.js";
9
+ import"../chunk-mzdz6wwc.js";
10
+ import {
11
+ FileError
12
+ } from "../chunk-20kv4wc3.js";
13
+ import"../chunk-v3hxvnrc.js";
14
+
15
+ // src/file/index.ts
16
+ import { FileDataSource } from "@compforge/harness-common";
17
+ export {
18
+ PodFileDataSource,
19
+ PodFileClient,
20
+ LocalFileDataSource,
21
+ LocalFileClient,
22
+ FileError,
23
+ FileDataSource
24
+ };
@@ -0,0 +1,13 @@
1
+ import { FileDataSource, type ClientManager, type FileReadOptions } from "@compforge/harness-common";
2
+ import { BoundedFileClient, type FileClientOptions } from "./client";
3
+ export declare class LocalFileClient extends BoundedFileClient {
4
+ protected capture(signal: AbortSignal, limits: Pick<FileReadOptions, "maxBytes" | "timeoutMs">, receive: (bytes: Uint8Array) => void): Promise<void>;
5
+ }
6
+ /** @spec Resolve relative paths once at declaration; reads reopen the path to observe replaced mounted files. */
7
+ export declare class LocalFileDataSource extends FileDataSource<LocalFileClient> {
8
+ #private;
9
+ readonly path: string;
10
+ readonly clientKey: string;
11
+ constructor(path: string, options: FileClientOptions);
12
+ createClient(_clients: Pick<ClientManager, "get">, signal: AbortSignal): LocalFileClient;
13
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ LocalFileClient,
3
+ LocalFileDataSource
4
+ } from "../chunk-ba883sdp.js";
5
+ import"../chunk-mzdz6wwc.js";
6
+ import"../chunk-20kv4wc3.js";
7
+ import"../chunk-v3hxvnrc.js";
8
+ export {
9
+ LocalFileDataSource,
10
+ LocalFileClient
11
+ };
@@ -0,0 +1,31 @@
1
+ import { FileDataSource, type ClientManager, type ClientProvider, type FileReadOptions } from "@compforge/harness-common";
2
+ import type { KubernetesClient } from "../kubernetes/client";
3
+ import { BoundedFileClient, type FileClientOptions } from "./client";
4
+ export interface PodFileTarget {
5
+ namespace: string;
6
+ pod: string;
7
+ container: string;
8
+ }
9
+ export type PodFileAccess = Pick<KubernetesClient, "initialize" | "dispose" | "exec">;
10
+ export declare class PodFileClient extends BoundedFileClient {
11
+ #private;
12
+ readonly target: Readonly<PodFileTarget>;
13
+ private readonly acquire;
14
+ constructor(path: string, target: Readonly<PodFileTarget>, options: FileClientOptions, signal: AbortSignal, acquire: () => Promise<PodFileAccess>);
15
+ protected initializeAccess(): Promise<void>;
16
+ protected capture(signal: AbortSignal, limits: Pick<FileReadOptions, "maxBytes" | "timeoutMs">, receive: (bytes: Uint8Array) => void): Promise<void>;
17
+ }
18
+ /**
19
+ * @spec One explicit Pod/container/path per source; workload discovery and replica traversal belong to callers.
20
+ * @rule Borrow Kubernetes access from the root manager; file clients never dispose that shared dependency.
21
+ * @see {@link component://../../../docs/toolbox.md}
22
+ */
23
+ export declare class PodFileDataSource extends FileDataSource<PodFileClient> {
24
+ #private;
25
+ private readonly kubernetes;
26
+ readonly path: string;
27
+ readonly target: Readonly<PodFileTarget>;
28
+ readonly clientKey: string;
29
+ constructor(kubernetes: ClientProvider<PodFileAccess>, target: PodFileTarget, path: string, options: FileClientOptions);
30
+ createClient(clients: Pick<ClientManager, "get">, signal: AbortSignal): PodFileClient;
31
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ PodFileClient,
3
+ PodFileDataSource
4
+ } from "../chunk-mxyvpy79.js";
5
+ import"../chunk-mzdz6wwc.js";
6
+ import"../chunk-20kv4wc3.js";
7
+ import"../chunk-v3hxvnrc.js";
8
+ export {
9
+ PodFileDataSource,
10
+ PodFileClient
11
+ };
@@ -1,21 +1,29 @@
1
1
  import type { Client } from "../client";
2
- import { type Executor, type KubectlOptions, type ExecTarget, type RunOptions } from "./executor";
2
+ import { type Executor, type ExecTarget, type RunOptions } from "./executor";
3
3
  import type { KubernetesEndpoint } from "./endpoint";
4
4
  import type { Workload, WorkloadInstance } from "@compforge/harness-common";
5
- import { type ResourceAccess, type ResourceLimits } from "./resources";
5
+ import type { ResourceAccess, ResourceLimits, ResourceRef, ResourceListQuery, ResourceRequestOptions, NamespaceResources } from "./resources";
6
+ import { type KubernetesConnectionOptions } from "./resource-transport";
6
7
  /** Owns cluster transports; protocol callers borrow this client without closing it. */
7
8
  export declare class KubernetesClient implements Client {
8
9
  #private;
9
10
  private readonly kube;
10
11
  private readonly resourceLimits;
11
12
  readonly signal: AbortSignal;
12
- constructor(kube: KubectlOptions & {
13
+ constructor(kube: KubernetesConnectionOptions & {
13
14
  namespace: string;
14
15
  }, signal?: AbortSignal, executor?: Executor, resourceLimits?: ResourceLimits, resources?: ResourceAccess);
15
16
  initialize(): Promise<void>;
16
17
  /** environment is a stable target ID from the caller's registry, not access configuration. */
17
18
  resolveWorkload(workload: Workload, environment: string): Promise<WorkloadInstance[]>;
18
- run(namespace: string, command: string[], options?: RunOptions): Promise<import("./executor").ExecResult>;
19
+ /**
20
+ * @spec Resource operations return API objects and structured errors, sharing one root HTTP transport.
21
+ * @rule Namespace views borrow the root lifecycle; reads never fall back to command execution.
22
+ * @see {@link docs/toolbox.md}
23
+ */
24
+ get(ref: ResourceRef, options?: ResourceRequestOptions): Promise<import("./resources").Resource>;
25
+ list(query: ResourceListQuery, options?: ResourceRequestOptions): Promise<import("./resources").ResourceList>;
26
+ inNamespace(namespace: string): NamespaceResources;
19
27
  exec(namespace: string, target: ExecTarget, command: string[], options?: RunOptions): Promise<import("./executor").ExecResult>;
20
28
  forward(namespace: string, target: KubernetesEndpoint): Promise<import("./service-port-forward").ForwardedEndpoint>;
21
29
  dispose(): Promise<void>;
@@ -1,12 +1,14 @@
1
1
  import {
2
2
  KubernetesClient
3
- } from "../chunk-y94xq8b4.js";
3
+ } from "../chunk-y529s0mz.js";
4
+ import"../chunk-4ms037k2.js";
5
+ import"../chunk-0s27bgga.js";
4
6
  import"../chunk-2171tajs.js";
5
7
  import"../chunk-j46x7j7c.js";
6
8
  import"../chunk-6fnhzhdb.js";
7
- import"../chunk-fhtbvj0s.js";
8
- import"../chunk-p6k59m3q.js";
9
- import"../chunk-zhkrydeg.js";
9
+ import"../chunk-ftkrjqkc.js";
10
+ import"../chunk-a9htb6cr.js";
11
+ import"../chunk-20kv4wc3.js";
10
12
  import"../chunk-v3hxvnrc.js";
11
13
  import"../chunk-631vce5z.js";
12
14
  import"../chunk-hmah9t8e.js";
@@ -1,7 +1,7 @@
1
1
  import { type ClientProvider, type ClientManager } from "../client";
2
2
  import type { Environment } from "@compforge/harness-common";
3
3
  import { KubernetesClient } from "./client";
4
- import type { KubectlOptions } from "./executor";
4
+ import type { KubernetesConnectionOptions } from "./resource-transport";
5
5
  import type { ResourceLimits } from "./resources";
6
6
  /** Cluster access is a client provider; the execution owns client lifetime. */
7
7
  export declare class KubernetesEnvironment implements Environment, ClientProvider<KubernetesClient> {
@@ -11,7 +11,7 @@ export declare class KubernetesEnvironment implements Environment, ClientProvide
11
11
  readonly clientKey: string;
12
12
  /** Deployment metadata only; not part of client reuse or access configuration. */
13
13
  readonly imageRegistry?: string;
14
- constructor(name: string, kube: KubectlOptions & {
14
+ constructor(name: string, kube: KubernetesConnectionOptions & {
15
15
  namespace: string;
16
16
  imageRegistry?: string;
17
17
  }, limits: ResourceLimits);
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  KubernetesClient
3
- } from "../chunk-y94xq8b4.js";
3
+ } from "../chunk-y529s0mz.js";
4
+ import"../chunk-4ms037k2.js";
5
+ import"../chunk-0s27bgga.js";
4
6
  import"../chunk-2171tajs.js";
5
7
  import"../chunk-j46x7j7c.js";
6
8
  import"../chunk-6fnhzhdb.js";
7
- import"../chunk-fhtbvj0s.js";
8
- import"../chunk-p6k59m3q.js";
9
+ import"../chunk-ftkrjqkc.js";
9
10
  import {
10
11
  clientKey
11
12
  } from "../chunk-a9htb6cr.js";
12
- import"../chunk-zhkrydeg.js";
13
+ import"../chunk-20kv4wc3.js";
13
14
  import"../chunk-v3hxvnrc.js";
14
15
  import"../chunk-631vce5z.js";
15
16
  import"../chunk-hmah9t8e.js";
@@ -8,7 +8,7 @@ import"../chunk-a9htb6cr.js";
8
8
  import {
9
9
  clientKey
10
10
  } from "../chunk-z5pm2emz.js";
11
- import"../chunk-zhkrydeg.js";
11
+ import"../chunk-20kv4wc3.js";
12
12
  import"../chunk-v3hxvnrc.js";
13
13
 
14
14
  // src/kubernetes/pod-log-datasource.ts
@@ -0,0 +1,19 @@
1
+ import { type Resource, type ResourceAccess, type ResourceList, type ResourceListQuery, type ResourceRef, type ResourceRequestOptions, type ResourceLimits } from "./resources";
2
+ export interface KubernetesConnectionOptions {
3
+ kubeconfig?: string;
4
+ context?: string;
5
+ }
6
+ /**
7
+ * @spec One root transport owns HTTP connections across resource kinds and namespaces.
8
+ * @rule Credentials refresh per request; TLS/proxy changes retire the old pool after its active reads finish.
9
+ * @rule Deadlines cover queueing, authentication and response consumption; failed requests are never replayed.
10
+ * @see {@link docs/toolbox.md}
11
+ */
12
+ export declare class KubernetesResourceTransport implements ResourceAccess {
13
+ #private;
14
+ private readonly limits;
15
+ constructor(options: KubernetesConnectionOptions, signal: AbortSignal, limits: ResourceLimits);
16
+ get(ref: ResourceRef, options?: ResourceRequestOptions): Promise<Resource>;
17
+ list(query: ResourceListQuery, options?: ResourceRequestOptions): Promise<ResourceList>;
18
+ dispose(): void;
19
+ }
@@ -0,0 +1,10 @@
1
+ import {
2
+ KubernetesResourceTransport
3
+ } from "../chunk-4ms037k2.js";
4
+ import"../chunk-ftkrjqkc.js";
5
+ import"../chunk-a9htb6cr.js";
6
+ import"../chunk-20kv4wc3.js";
7
+ import"../chunk-v3hxvnrc.js";
8
+ export {
9
+ KubernetesResourceTransport
10
+ };
@@ -1,23 +1,63 @@
1
- import type { KubectlOptions } from "./executor";
1
+ /** API resource names are plural REST names, not Kind names or kubectl aliases. */
2
+ export interface ResourceQuery {
3
+ apiVersion: string;
4
+ resource: string;
5
+ namespace?: string;
6
+ }
7
+ export interface ResourceRef extends ResourceQuery {
8
+ name: string;
9
+ }
10
+ export interface ResourceListQuery extends ResourceQuery {
11
+ labelSelector?: string;
12
+ fieldSelector?: string;
13
+ limit?: number;
14
+ continue?: string;
15
+ }
16
+ /** Preserve the server manifest; consumers own projections into domain models. */
2
17
  export interface Resource {
18
+ [field: string]: unknown;
19
+ apiVersion?: string;
20
+ kind?: string;
3
21
  metadata?: {
4
22
  name?: string;
5
23
  namespace?: string;
6
24
  uid?: string;
25
+ [field: string]: unknown;
7
26
  };
8
27
  spec?: {
9
28
  selector?: unknown;
29
+ [field: string]: unknown;
10
30
  };
11
- items?: Resource[];
31
+ }
32
+ export interface ResourceList {
33
+ apiVersion?: string;
12
34
  kind?: string;
35
+ metadata?: {
36
+ continue?: string;
37
+ resourceVersion?: string;
38
+ [field: string]: unknown;
39
+ };
40
+ items: Resource[];
41
+ [field: string]: unknown;
42
+ }
43
+ export interface ResourceRequestOptions {
44
+ signal?: AbortSignal;
45
+ /** Total budget, including capacity wait, authentication and response consumption. */
46
+ timeoutMs?: number;
13
47
  }
14
48
  export interface ResourceAccess {
15
- get(namespace: string, resource: string, name?: string, selector?: string): Promise<Resource>;
49
+ get(ref: ResourceRef, options?: ResourceRequestOptions): Promise<Resource>;
50
+ list(query: ResourceListQuery, options?: ResourceRequestOptions): Promise<ResourceList>;
16
51
  }
17
52
  export interface ResourceLimits {
18
53
  timeoutMs: number;
19
54
  concurrency: number;
20
55
  maxBytes: number;
21
56
  }
22
- /** Native JSON reads use the same client-node auth/TLS path as native Pod logs. */
23
- export declare function resourceAccess(options: KubectlOptions, signal: AbortSignal, limits: ResourceLimits): ResourceAccess;
57
+ /** Namespace views borrow the root client and cannot close it or override their scope. */
58
+ export interface NamespaceResources {
59
+ get(ref: Omit<ResourceRef, "namespace">, options?: ResourceRequestOptions): Promise<Resource>;
60
+ list(query: Omit<ResourceListQuery, "namespace">, options?: ResourceRequestOptions): Promise<ResourceList>;
61
+ }
62
+ /** Explicit scope avoids interpreting an omitted namespace as a cluster-wide list. */
63
+ export declare function resourcePath(query: ResourceQuery, name?: string): string;
@@ -1,8 +1,7 @@
1
1
  import {
2
- resourceAccess
3
- } from "../chunk-fhtbvj0s.js";
4
- import"../chunk-zhkrydeg.js";
5
- import"../chunk-v3hxvnrc.js";
2
+ resourcePath
3
+ } from "../chunk-ftkrjqkc.js";
4
+ import"../chunk-20kv4wc3.js";
6
5
  export {
7
- resourceAccess
6
+ resourcePath
8
7
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveWorkload
3
- } from "../chunk-p6k59m3q.js";
4
- import"../chunk-zhkrydeg.js";
3
+ } from "../chunk-0s27bgga.js";
4
+ import"../chunk-20kv4wc3.js";
5
5
  export {
6
6
  resolveWorkload
7
7
  };
@@ -2,11 +2,11 @@ import {
2
2
  MysqlClient,
3
3
  MysqlDatabase,
4
4
  openMysql
5
- } from "../chunk-ahc00qs5.js";
5
+ } from "../chunk-h73h2b7y.js";
6
+ import"../chunk-m91t44jh.js";
6
7
  import"../chunk-age65q4n.js";
7
8
  import"../chunk-136egyff.js";
8
- import"../chunk-m91t44jh.js";
9
- import"../chunk-zhkrydeg.js";
9
+ import"../chunk-20kv4wc3.js";
10
10
  import"../chunk-v3hxvnrc.js";
11
11
  import"../chunk-h8fwx0k7.js";
12
12
  import"../chunk-wv4jwhvj.js";
@@ -1,12 +1,3 @@
1
- import {
2
- parseMysqlEnvTarget
3
- } from "../chunk-qq77x9ek.js";
4
- import {
5
- limitedRows,
6
- limitedStatement,
7
- queryLimited
8
- } from "../chunk-1gyshqd9.js";
9
- import"../chunk-pfar9cm3.js";
10
1
  import {
11
2
  withReadScope
12
3
  } from "../chunk-4sqvppz7.js";
@@ -14,11 +5,20 @@ import {
14
5
  MysqlClient,
15
6
  MysqlDatabase,
16
7
  openMysql
17
- } from "../chunk-ahc00qs5.js";
8
+ } from "../chunk-h73h2b7y.js";
9
+ import"../chunk-m91t44jh.js";
18
10
  import"../chunk-age65q4n.js";
11
+ import {
12
+ parseMysqlEnvTarget
13
+ } from "../chunk-qq77x9ek.js";
14
+ import {
15
+ limitedRows,
16
+ limitedStatement,
17
+ queryLimited
18
+ } from "../chunk-1gyshqd9.js";
19
19
  import"../chunk-136egyff.js";
20
- import"../chunk-m91t44jh.js";
21
- import"../chunk-zhkrydeg.js";
20
+ import"../chunk-pfar9cm3.js";
21
+ import"../chunk-20kv4wc3.js";
22
22
  import"../chunk-v3hxvnrc.js";
23
23
  import"../chunk-h8fwx0k7.js";
24
24
  import"../chunk-wv4jwhvj.js";
@@ -3,8 +3,8 @@ import {
3
3
  OpenSearchEngine,
4
4
  isOpenSearchReadApi,
5
5
  openOpenSearch
6
- } from "../chunk-b7f39m4v.js";
7
- import"../chunk-zhkrydeg.js";
6
+ } from "../chunk-8mb6natq.js";
7
+ import"../chunk-20kv4wc3.js";
8
8
  import"../chunk-h8fwx0k7.js";
9
9
  import"../chunk-wv4jwhvj.js";
10
10
  import"../chunk-631vce5z.js";
@@ -1,9 +1,3 @@
1
- import {
2
- OpenSearchClient,
3
- OpenSearchEngine,
4
- isOpenSearchReadApi,
5
- openOpenSearch
6
- } from "../chunk-b7f39m4v.js";
7
1
  import {
8
2
  searchAfterPages
9
3
  } from "../chunk-99p0zt4f.js";
@@ -11,7 +5,13 @@ import {
11
5
  parseOpenSearchEndpoint
12
6
  } from "../chunk-s1sjyem7.js";
13
7
  import"../chunk-djk4kmxb.js";
14
- import"../chunk-zhkrydeg.js";
8
+ import {
9
+ OpenSearchClient,
10
+ OpenSearchEngine,
11
+ isOpenSearchReadApi,
12
+ openOpenSearch
13
+ } from "../chunk-8mb6natq.js";
14
+ import"../chunk-20kv4wc3.js";
15
15
  import"../chunk-h8fwx0k7.js";
16
16
  import"../chunk-wv4jwhvj.js";
17
17
  import"../chunk-631vce5z.js";
@@ -2,7 +2,7 @@ import {
2
2
  S3DataSource
3
3
  } from "../chunk-35cjec9z.js";
4
4
  import"../chunk-z5pm2emz.js";
5
- import"../chunk-zhkrydeg.js";
5
+ import"../chunk-20kv4wc3.js";
6
6
  import"../chunk-zp1s833x.js";
7
7
  import"../chunk-v3hxvnrc.js";
8
8
  import"../chunk-x4ntb898.js";
package/dist/s3/index.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  S3DataSource
3
3
  } from "../chunk-35cjec9z.js";
4
4
  import"../chunk-z5pm2emz.js";
5
- import"../chunk-zhkrydeg.js";
5
+ import"../chunk-20kv4wc3.js";
6
6
  import {
7
7
  S3Client
8
8
  } from "../chunk-zp1s833x.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compforge/harness-toolbox",
3
- "version": "0.3.10",
3
+ "version": "0.4.0",
4
4
  "description": "Shared infrastructure clients, transports and bounded data capture",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -88,6 +88,10 @@
88
88
  "./data-loader": {
89
89
  "types": "./dist/data-loader.d.ts",
90
90
  "import": "./dist/data-loader.js"
91
+ },
92
+ "./file": {
93
+ "types": "./dist/file/index.d.ts",
94
+ "import": "./dist/file/index.js"
91
95
  }
92
96
  },
93
97
  "files": [
@@ -95,7 +99,7 @@
95
99
  "README.md"
96
100
  ],
97
101
  "dependencies": {
98
- "@compforge/harness-common": "0.3.0",
102
+ "@compforge/harness-common": "0.5.3",
99
103
  "@aws-sdk/client-s3": "3.1133.0",
100
104
  "@kubernetes/client-node": "1.4.0",
101
105
  "@opensearch-project/opensearch": "3.6.0",