@grackle-ai/adapter-sdk 0.166.0 → 0.167.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.
- package/dist/base-adapter.d.ts +85 -0
- package/dist/base-adapter.d.ts.map +1 -0
- package/dist/base-adapter.js +112 -0
- package/dist/base-adapter.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { EnvironmentAdapter, PowerLineConnection, ProvisionEvent } from "./adapter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Lifecycle state for a single environment managed by an adapter.
|
|
4
|
+
*
|
|
5
|
+
* - `idle` — no active infrastructure or connection.
|
|
6
|
+
* - `provisioning` — provision or reconnect in progress (mutex held).
|
|
7
|
+
* - `provisioned` — infrastructure ready, not yet connected.
|
|
8
|
+
* - `connected` — gRPC connection to PowerLine is established.
|
|
9
|
+
*/
|
|
10
|
+
export type AdapterLifecycleState = "idle" | "provisioning" | "provisioned" | "connected";
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for environment adapters that enforces lifecycle state
|
|
13
|
+
* transitions and prevents concurrent operations on the same environment.
|
|
14
|
+
*
|
|
15
|
+
* Subclasses implement the `do*` template methods; {@link BaseAdapter} wraps
|
|
16
|
+
* each with state guards and a per-environment mutex.
|
|
17
|
+
*
|
|
18
|
+
* The {@link EnvironmentAdapter} interface is unchanged — callers see the
|
|
19
|
+
* same API. `reconnect` is NOT defined here because
|
|
20
|
+
* {@link reconnectOrProvision} checks `adapter.reconnect` to decide whether
|
|
21
|
+
* to attempt fast reconnect. Subclasses that support reconnect should define
|
|
22
|
+
* their own `reconnect` method and use `withProvisionLock` for the
|
|
23
|
+
* same mutex/state semantics as `provision`.
|
|
24
|
+
*/
|
|
25
|
+
export declare abstract class BaseAdapter implements EnvironmentAdapter {
|
|
26
|
+
abstract type: string;
|
|
27
|
+
private readonly states;
|
|
28
|
+
private readonly locks;
|
|
29
|
+
/** Return the lifecycle state for an environment (`idle` if unknown). */
|
|
30
|
+
getState(environmentId: string): AdapterLifecycleState;
|
|
31
|
+
/**
|
|
32
|
+
* Provision infrastructure and yield progress events.
|
|
33
|
+
*
|
|
34
|
+
* Acquires a per-environment mutex for the duration of provisioning.
|
|
35
|
+
* On success the state moves to `provisioned`; on error it resets to `idle`.
|
|
36
|
+
*/
|
|
37
|
+
provision(environmentId: string, config: Record<string, unknown>, powerlineToken: string): AsyncGenerator<ProvisionEvent>;
|
|
38
|
+
/**
|
|
39
|
+
* Establish a connection to the PowerLine.
|
|
40
|
+
*
|
|
41
|
+
* Allowed from any non-locked state. Docker attach calls this from `idle`
|
|
42
|
+
* after a server restart (re-resolves connectivity on the fly).
|
|
43
|
+
*/
|
|
44
|
+
connect(environmentId: string, config: Record<string, unknown>, powerlineToken: string): Promise<PowerLineConnection>;
|
|
45
|
+
/**
|
|
46
|
+
* Release connection resources. Idempotent — safe to call from any
|
|
47
|
+
* non-locked state. Throws if a provision/reconnect is in progress to
|
|
48
|
+
* prevent tearing down resources while they are being set up.
|
|
49
|
+
*/
|
|
50
|
+
disconnect(environmentId: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Stop the environment's compute. Idempotent — resets state to `idle`.
|
|
53
|
+
* Throws if a provision/reconnect is in progress.
|
|
54
|
+
*/
|
|
55
|
+
stop(environmentId: string, config: Record<string, unknown>): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Destroy the environment's compute. Idempotent — removes all state.
|
|
58
|
+
* Throws if a provision/reconnect is in progress.
|
|
59
|
+
*/
|
|
60
|
+
destroy(environmentId: string, config: Record<string, unknown>): Promise<void>;
|
|
61
|
+
/** Return true if the PowerLine is reachable. Subclasses must implement. */
|
|
62
|
+
abstract healthCheck(connection: PowerLineConnection): Promise<boolean>;
|
|
63
|
+
protected abstract doProvision(environmentId: string, config: Record<string, unknown>, powerlineToken: string): AsyncGenerator<ProvisionEvent>;
|
|
64
|
+
protected abstract doConnect(environmentId: string, config: Record<string, unknown>, powerlineToken: string): Promise<PowerLineConnection>;
|
|
65
|
+
protected abstract doDisconnect(environmentId: string): Promise<void>;
|
|
66
|
+
protected abstract doStop(environmentId: string, config: Record<string, unknown>): Promise<void>;
|
|
67
|
+
protected abstract doDestroy(environmentId: string, config: Record<string, unknown>): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Wrap an async generator (provision or reconnect) with the lifecycle mutex.
|
|
70
|
+
*
|
|
71
|
+
* Acquires a per-environment lock, sets state to `provisioning`, yields all
|
|
72
|
+
* events from the wrapped generator, then sets state to `provisioned`.
|
|
73
|
+
* On error the state resets to `idle`. Subclasses that support `reconnect`
|
|
74
|
+
* should use this in their own `reconnect` method:
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* public async *reconnect(envId, config, token) {
|
|
78
|
+
* yield* this.withProvisionLock(envId, this.doReconnect(envId, config, token));
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
protected withProvisionLock(environmentId: string, generator: AsyncGenerator<ProvisionEvent>): AsyncGenerator<ProvisionEvent>;
|
|
83
|
+
private assertNotLocked;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../src/base-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;AAE1F;;;;;;;;;;;;;GAaG;AACH,8BAAsB,WAAY,YAAW,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGnB;IACJ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IAExD,yEAAyE;IAClE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IAM7D;;;;;OAKG;IACW,SAAS,CACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC;IAOjC;;;;;OAKG;IACU,OAAO,CAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAO/B;;;;OAIG;IACU,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D;;;OAGG;IACU,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF;;;OAGG;IACU,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3F,4EAA4E;aAC5D,WAAW,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9E,SAAS,CAAC,QAAQ,CAAC,WAAW,CAC5B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAC1B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAE/B,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAErE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAC1B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;;;;;OAaG;cACc,iBAAiB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,GACxC,cAAc,CAAC,cAAc,CAAC;IAiBjC,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for environment adapters that enforces lifecycle state
|
|
3
|
+
* transitions and prevents concurrent operations on the same environment.
|
|
4
|
+
*
|
|
5
|
+
* Subclasses implement the `do*` template methods; {@link BaseAdapter} wraps
|
|
6
|
+
* each with state guards and a per-environment mutex.
|
|
7
|
+
*
|
|
8
|
+
* The {@link EnvironmentAdapter} interface is unchanged — callers see the
|
|
9
|
+
* same API. `reconnect` is NOT defined here because
|
|
10
|
+
* {@link reconnectOrProvision} checks `adapter.reconnect` to decide whether
|
|
11
|
+
* to attempt fast reconnect. Subclasses that support reconnect should define
|
|
12
|
+
* their own `reconnect` method and use `withProvisionLock` for the
|
|
13
|
+
* same mutex/state semantics as `provision`.
|
|
14
|
+
*/
|
|
15
|
+
export class BaseAdapter {
|
|
16
|
+
states = new Map();
|
|
17
|
+
locks = new Set();
|
|
18
|
+
/** Return the lifecycle state for an environment (`idle` if unknown). */
|
|
19
|
+
getState(environmentId) {
|
|
20
|
+
return this.states.get(environmentId) ?? "idle";
|
|
21
|
+
}
|
|
22
|
+
// ─── Guarded lifecycle methods ──────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Provision infrastructure and yield progress events.
|
|
25
|
+
*
|
|
26
|
+
* Acquires a per-environment mutex for the duration of provisioning.
|
|
27
|
+
* On success the state moves to `provisioned`; on error it resets to `idle`.
|
|
28
|
+
*/
|
|
29
|
+
async *provision(environmentId, config, powerlineToken) {
|
|
30
|
+
yield* this.withProvisionLock(environmentId, this.doProvision(environmentId, config, powerlineToken));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Establish a connection to the PowerLine.
|
|
34
|
+
*
|
|
35
|
+
* Allowed from any non-locked state. Docker attach calls this from `idle`
|
|
36
|
+
* after a server restart (re-resolves connectivity on the fly).
|
|
37
|
+
*/
|
|
38
|
+
async connect(environmentId, config, powerlineToken) {
|
|
39
|
+
this.assertNotLocked(environmentId);
|
|
40
|
+
const conn = await this.doConnect(environmentId, config, powerlineToken);
|
|
41
|
+
this.states.set(environmentId, "connected");
|
|
42
|
+
return conn;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Release connection resources. Idempotent — safe to call from any
|
|
46
|
+
* non-locked state. Throws if a provision/reconnect is in progress to
|
|
47
|
+
* prevent tearing down resources while they are being set up.
|
|
48
|
+
*/
|
|
49
|
+
async disconnect(environmentId) {
|
|
50
|
+
this.assertNotLocked(environmentId);
|
|
51
|
+
await this.doDisconnect(environmentId);
|
|
52
|
+
if (this.getState(environmentId) === "connected") {
|
|
53
|
+
this.states.set(environmentId, "idle");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stop the environment's compute. Idempotent — resets state to `idle`.
|
|
58
|
+
* Throws if a provision/reconnect is in progress.
|
|
59
|
+
*/
|
|
60
|
+
async stop(environmentId, config) {
|
|
61
|
+
this.assertNotLocked(environmentId);
|
|
62
|
+
await this.doStop(environmentId, config);
|
|
63
|
+
this.states.set(environmentId, "idle");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Destroy the environment's compute. Idempotent — removes all state.
|
|
67
|
+
* Throws if a provision/reconnect is in progress.
|
|
68
|
+
*/
|
|
69
|
+
async destroy(environmentId, config) {
|
|
70
|
+
this.assertNotLocked(environmentId);
|
|
71
|
+
await this.doDestroy(environmentId, config);
|
|
72
|
+
this.states.delete(environmentId);
|
|
73
|
+
}
|
|
74
|
+
// ─── Lock helper for subclass reconnect ─────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Wrap an async generator (provision or reconnect) with the lifecycle mutex.
|
|
77
|
+
*
|
|
78
|
+
* Acquires a per-environment lock, sets state to `provisioning`, yields all
|
|
79
|
+
* events from the wrapped generator, then sets state to `provisioned`.
|
|
80
|
+
* On error the state resets to `idle`. Subclasses that support `reconnect`
|
|
81
|
+
* should use this in their own `reconnect` method:
|
|
82
|
+
*
|
|
83
|
+
* ```ts
|
|
84
|
+
* public async *reconnect(envId, config, token) {
|
|
85
|
+
* yield* this.withProvisionLock(envId, this.doReconnect(envId, config, token));
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
async *withProvisionLock(environmentId, generator) {
|
|
90
|
+
this.assertNotLocked(environmentId);
|
|
91
|
+
this.locks.add(environmentId);
|
|
92
|
+
this.states.set(environmentId, "provisioning");
|
|
93
|
+
try {
|
|
94
|
+
yield* generator;
|
|
95
|
+
this.states.set(environmentId, "provisioned");
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
this.states.set(environmentId, "idle");
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
this.locks.delete(environmentId);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ─── Internals ──────────────────────────────────────────────
|
|
106
|
+
assertNotLocked(environmentId) {
|
|
107
|
+
if (this.locks.has(environmentId)) {
|
|
108
|
+
throw new Error(`Operation already in progress for environment ${environmentId} (state: ${this.getState(environmentId)})`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=base-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../src/base-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { FatalAdapterError } from "./fatal-error.js";
|
|
|
3
3
|
export { defaultLogger } from "./logger.js";
|
|
4
4
|
export type { PowerLineConnection, ProvisionEvent, BaseEnvironmentConfig, EnvironmentAdapter, } from "./adapter.js";
|
|
5
5
|
export { reconnectOrProvision } from "./adapter.js";
|
|
6
|
+
export type { AdapterLifecycleState } from "./base-adapter.js";
|
|
7
|
+
export { BaseAdapter } from "./base-adapter.js";
|
|
6
8
|
export type { RemoteExecutor } from "./remote-executor.js";
|
|
7
9
|
export type { RemoteTunnel, TunnelProcessFactory, TunnelPortProbe } from "./tunnel.js";
|
|
8
10
|
export { ProcessTunnel } from "./tunnel.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG/F,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGnF,OAAO,EACL,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAMpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKpF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG/F,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGnF,OAAO,EACL,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAMpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKpF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export { FatalAdapterError } from "./fatal-error.js";
|
|
3
3
|
export { defaultLogger } from "./logger.js";
|
|
4
4
|
export { reconnectOrProvision } from "./adapter.js";
|
|
5
|
+
export { BaseAdapter } from "./base-adapter.js";
|
|
5
6
|
export { ProcessTunnel } from "./tunnel.js";
|
|
6
7
|
export { registerTunnel, getTunnel, closeTunnel, closeAllTunnels } from "./tunnel-registry.js";
|
|
7
8
|
export { createAhpHostTransport, connectThroughTunnel, waitForLocalPort, TCP_PORT_PROBER, } from "./connect.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,gEAAgE;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,gEAAgE;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI/F,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAItF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,+DAA+D;AAC/D,OAAO,EACL,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAoBpB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMpF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/adapter-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.167.0",
|
|
4
4
|
"description": "SDK for building Grackle environment adapters",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,15 +28,16 @@
|
|
|
28
28
|
"dist/"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@grackle-ai/common": "0.
|
|
32
|
-
"@grackle-ai/ahp": "0.
|
|
33
|
-
"@grackle-ai/ahp
|
|
31
|
+
"@grackle-ai/common": "0.167.0",
|
|
32
|
+
"@grackle-ai/ahp-transport": "0.167.0",
|
|
33
|
+
"@grackle-ai/ahp": "0.167.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@rushstack/heft": "1.2.7",
|
|
37
37
|
"@types/node": "^22.0.0",
|
|
38
|
-
"@vitest/coverage-v8": "^
|
|
39
|
-
"vitest": "^
|
|
38
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
39
|
+
"vitest": "^4.1.0",
|
|
40
|
+
"@vitest/spy": "^4.1.0",
|
|
40
41
|
"@grackle-ai/heft-rig": "0.0.1"
|
|
41
42
|
},
|
|
42
43
|
"scripts": {
|