@grackle-ai/adapter-sdk 0.131.0 → 0.132.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.
- package/dist/adapter.d.ts +8 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js.map +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +92 -63
- package/dist/bootstrap.js.map +1 -1
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +7 -1
- package/dist/connect.js.map +1 -1
- package/dist/grpc-host-transport.d.ts +77 -0
- package/dist/grpc-host-transport.d.ts.map +1 -0
- package/dist/grpc-host-transport.js +168 -0
- package/dist/grpc-host-transport.js.map +1 -0
- package/dist/host-transport.d.ts +184 -0
- package/dist/host-transport.d.ts.map +1 -0
- package/dist/host-transport.js +21 -0
- package/dist/host-transport.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/shared-operations.d.ts.map +1 -1
- package/dist/shared-operations.js +6 -6
- package/dist/shared-operations.js.map +1 -1
- package/dist/tunnel-registry.d.ts.map +1 -1
- package/dist/tunnel-registry.js.map +1 -1
- package/package.json +5 -3
package/dist/adapter.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Client } from "@connectrpc/connect";
|
|
2
2
|
import type { powerline } from "@grackle-ai/common";
|
|
3
3
|
import type { AdapterLogger } from "./logger.js";
|
|
4
|
+
import type { IHostTransport } from "./host-transport.js";
|
|
4
5
|
/** Type-safe ConnectRPC client for the PowerLine gRPC service. */
|
|
5
6
|
export type PowerLineClient = Client<typeof powerline.GracklePowerLine>;
|
|
6
7
|
/** An active connection to a PowerLine, including the gRPC client and port info. */
|
|
@@ -8,6 +9,13 @@ export interface PowerLineConnection {
|
|
|
8
9
|
client: PowerLineClient;
|
|
9
10
|
environmentId: string;
|
|
10
11
|
port: number;
|
|
12
|
+
/**
|
|
13
|
+
* Transport-agnostic host interface (AHP HR8c). One instance per connection,
|
|
14
|
+
* constructed when the connection is established. Consumers use this
|
|
15
|
+
* instead of touching `client` directly so the HR8d wire-flip is a
|
|
16
|
+
* swap of one `IHostTransport` impl for another.
|
|
17
|
+
*/
|
|
18
|
+
transport: IHostTransport;
|
|
11
19
|
}
|
|
12
20
|
/** Progress event emitted during environment provisioning. */
|
|
13
21
|
export interface ProvisionEvent {
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAExE,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,SAAS,CACP,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC,CAAC;IAClC,+EAA+E;IAC/E,OAAO,CACL,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,uFAAuF;IACvF,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gFAAgF;IAChF,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,gEAAgE;IAChE,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,0DAA0D;IAC1D,WAAW,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,gGAAgG;IAChG,SAAS,CAAC,CACR,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAuB,oBAAoB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,OAAO,EACrB,KAAK,GAAE,OAAe,EACtB,MAAM,GAAE,aAA6B,GACpC,cAAc,CAAC,cAAc,CAAC,CAgBhC"}
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAmErD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACzC,aAAqB,EACrB,OAA2B,EAC3B,MAA+B,EAC/B,cAAsB,EACtB,YAAqB,EACrB,QAAiB,KAAK,EACtB,SAAwB,aAAa;IAErC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAChE,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACrC,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,kDAAkD,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA2BjD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,MAAM,GAAE,aAA6B,GACpC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA2BjD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,MAAM,GAAE,aAA6B,GACpC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAaf;AAUD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAmB/C;AAID,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC,CA2FtC;AAID,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC;IACxC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAuB,kBAAkB,CACvC,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,cAAc,CAAC,CAiThC"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -49,13 +49,15 @@ export async function writeRemoteEnvFile(executor, powerlineToken, extraEnv, log
|
|
|
49
49
|
}
|
|
50
50
|
const envFileContentBase64 = Buffer.from(envFileContent, "utf8").toString("base64");
|
|
51
51
|
await executor.exec(`cd ${REMOTE_POWERLINE_DIRECTORY} && node -e "require('fs').writeFileSync('.env.sh',Buffer.from(process.argv[1],'base64').toString('utf8'))" '${shellEscape(envFileContentBase64)}'`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
52
|
-
await executor.exec(`chmod 600 ${REMOTE_POWERLINE_DIRECTORY}/.env.sh`, {
|
|
52
|
+
await executor.exec(`chmod 600 ${REMOTE_POWERLINE_DIRECTORY}/.env.sh`, {
|
|
53
|
+
timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
54
|
+
});
|
|
53
55
|
}
|
|
54
56
|
// ─── Remote Probe ───────────────────────────────────────────
|
|
55
57
|
/** Node.js one-liner that probes the PowerLine port and exits 0/1. */
|
|
56
|
-
const PROBE_SCRIPT = `node -e "const s=require('net').createConnection(${DEFAULT_POWERLINE_PORT},'127.0.0.1');`
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
const PROBE_SCRIPT = `node -e "const s=require('net').createConnection(${DEFAULT_POWERLINE_PORT},'127.0.0.1');` +
|
|
59
|
+
`s.on('connect',()=>{s.destroy();process.exit(0)});` +
|
|
60
|
+
`s.on('error',()=>process.exit(1))"`;
|
|
59
61
|
/**
|
|
60
62
|
* Probe whether the remote PowerLine is listening on its port.
|
|
61
63
|
* Throws if the port is not reachable.
|
|
@@ -80,9 +82,9 @@ export function buildRemoteKillCommand() {
|
|
|
80
82
|
`rm -f "${pidfile}"`,
|
|
81
83
|
].join(" && ");
|
|
82
84
|
// Fallback: port-based kill (for upgrades from before pidfile support)
|
|
83
|
-
const portKill = `fuser -k ${DEFAULT_POWERLINE_PORT}/tcp 2>/dev/null`
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
const portKill = `fuser -k ${DEFAULT_POWERLINE_PORT}/tcp 2>/dev/null` +
|
|
86
|
+
` || lsof -ti:${DEFAULT_POWERLINE_PORT} | xargs kill 2>/dev/null` +
|
|
87
|
+
` || pkill -f "powerline.*${DEFAULT_POWERLINE_PORT}" 2>/dev/null`;
|
|
86
88
|
return `(${pidfileKill}) || (${portKill}) || true`;
|
|
87
89
|
}
|
|
88
90
|
/** Validate and build the node one-liner that spawns a fully detached PowerLine process. */
|
|
@@ -91,14 +93,14 @@ function buildSpawnScript(host) {
|
|
|
91
93
|
throw new Error(`Invalid host address: ${host}`);
|
|
92
94
|
}
|
|
93
95
|
const hostArg = host ? `,'--host=${host}'` : "";
|
|
94
|
-
return (`node -e "`
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
return (`node -e "` +
|
|
97
|
+
`const fs=require('fs');` +
|
|
98
|
+
`const {spawn}=require('child_process');` +
|
|
99
|
+
`const out=fs.openSync(process.argv[3],'w');` +
|
|
100
|
+
`const c=spawn('node',[process.argv[1],'--port=${DEFAULT_POWERLINE_PORT}'${hostArg}],` +
|
|
101
|
+
`{cwd:process.cwd(),detached:true,stdio:['ignore',out,out]});` +
|
|
102
|
+
`fs.writeFileSync(process.argv[2],String(c.pid));` +
|
|
103
|
+
`c.unref();"`);
|
|
102
104
|
}
|
|
103
105
|
/**
|
|
104
106
|
* Ensure the remote PowerLine process is running.
|
|
@@ -119,16 +121,14 @@ function buildSpawnScript(host) {
|
|
|
119
121
|
* and skips npm install, git checks, and artifact copies.
|
|
120
122
|
*/
|
|
121
123
|
export async function startRemotePowerLine(executor, powerlineToken, options = {}) {
|
|
122
|
-
const { extraEnv, workingDirectory, host, autoDetectWorkspace, probeFirst, logger = defaultLogger } = options;
|
|
124
|
+
const { extraEnv, workingDirectory, host, autoDetectWorkspace, probeFirst, logger = defaultLogger, } = options;
|
|
123
125
|
// Validate workingDirectory to prevent shell injection — must be an absolute POSIX path
|
|
124
126
|
if (workingDirectory && !/^\/[\w./-]+$/.test(workingDirectory)) {
|
|
125
127
|
throw new Error(`Invalid working directory: ${workingDirectory}`);
|
|
126
128
|
}
|
|
127
129
|
const envFileContent = buildEnvFileContent(powerlineToken, extraEnv, logger);
|
|
128
130
|
const devMode = isDevMode();
|
|
129
|
-
const entryPoint = devMode
|
|
130
|
-
? "dist/index.js"
|
|
131
|
-
: "node_modules/@grackle-ai/powerline/dist/index.js";
|
|
131
|
+
const entryPoint = devMode ? "dist/index.js" : "node_modules/@grackle-ai/powerline/dist/index.js";
|
|
132
132
|
const absoluteEntryPoint = `${REMOTE_POWERLINE_DIRECTORY}/${entryPoint}`;
|
|
133
133
|
const logFilePath = "$HOME/.grackle/powerline.log";
|
|
134
134
|
const pidFilePath = `${REMOTE_POWERLINE_DIRECTORY}/powerline.pid`;
|
|
@@ -147,10 +147,10 @@ export async function startRemotePowerLine(executor, powerlineToken, options = {
|
|
|
147
147
|
// 1. Env file
|
|
148
148
|
if (envFileContent) {
|
|
149
149
|
const envFileContentBase64 = Buffer.from(envFileContent, "utf8").toString("base64");
|
|
150
|
-
parts.push(`cd ${REMOTE_POWERLINE_DIRECTORY}`
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
150
|
+
parts.push(`cd ${REMOTE_POWERLINE_DIRECTORY}` +
|
|
151
|
+
` && node -e "require('fs').writeFileSync('.env.sh',Buffer.from(process.argv[1],'base64').toString('utf8'))"` +
|
|
152
|
+
` '${shellEscape(envFileContentBase64)}'` +
|
|
153
|
+
` && chmod 600 .env.sh`);
|
|
154
154
|
}
|
|
155
155
|
// 2. Working directory
|
|
156
156
|
let startDirExpr;
|
|
@@ -158,24 +158,24 @@ export async function startRemotePowerLine(executor, powerlineToken, options = {
|
|
|
158
158
|
startDirExpr = workingDirectory;
|
|
159
159
|
}
|
|
160
160
|
else if (autoDetectWorkspace) {
|
|
161
|
-
parts.push(`WD=$(ls -d /workspaces/*/ 2>/dev/null | head -1 | sed "s/\\/$//");`
|
|
162
|
-
|
|
161
|
+
parts.push(`WD=$(ls -d /workspaces/*/ 2>/dev/null | head -1 | sed "s/\\/$//");` +
|
|
162
|
+
` WD=\${WD:-${REMOTE_POWERLINE_DIRECTORY}}`);
|
|
163
163
|
startDirExpr = "$WD";
|
|
164
164
|
}
|
|
165
165
|
else {
|
|
166
166
|
startDirExpr = REMOTE_POWERLINE_DIRECTORY;
|
|
167
167
|
}
|
|
168
168
|
// 3. Source env vars and spawn PowerLine as a detached process.
|
|
169
|
-
const sourceEnv = envFileContent
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
parts.push(`cd "${startDirExpr}" && ${sourceEnv}`
|
|
173
|
-
+ `${buildSpawnScript(host)} "${absoluteEntryPoint}" "${pidFilePath}" "${logFilePath}"`);
|
|
169
|
+
const sourceEnv = envFileContent ? `. ${REMOTE_POWERLINE_DIRECTORY}/.env.sh && ` : "";
|
|
170
|
+
parts.push(`cd "${startDirExpr}" && ${sourceEnv}` +
|
|
171
|
+
`${buildSpawnScript(host)} "${absoluteEntryPoint}" "${pidFilePath}" "${logFilePath}"`);
|
|
174
172
|
// 4. Probe (after a brief pause for the port to bind)
|
|
175
173
|
parts.push(`sleep ${POWERLINE_STARTUP_DELAY_MS / 1000} && ${PROBE_SCRIPT}`);
|
|
176
174
|
const compoundScript = probeFirstPrefix + parts.join(" && ");
|
|
177
175
|
try {
|
|
178
|
-
const stdout = await executor.exec(`bash -c '${shellEscape(compoundScript)}'`, {
|
|
176
|
+
const stdout = await executor.exec(`bash -c '${shellEscape(compoundScript)}'`, {
|
|
177
|
+
timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
178
|
+
});
|
|
179
179
|
if (probeFirst && stdout.includes("__PL_ALIVE__")) {
|
|
180
180
|
logger.info({ port: DEFAULT_POWERLINE_PORT }, "Remote PowerLine was already running");
|
|
181
181
|
return { alreadyRunning: true };
|
|
@@ -196,9 +196,11 @@ export async function startRemotePowerLine(executor, powerlineToken, options = {
|
|
|
196
196
|
export async function* bootstrapPowerLine(executor, powerlineToken, options = {}) {
|
|
197
197
|
const { extraEnv, workingDirectory, host, logger = defaultLogger, isGitHubProviderEnabled, defaultRuntime, } = options;
|
|
198
198
|
// 1. Check Node.js (PowerLine requires >= 22)
|
|
199
|
-
yield { stage: "bootstrapping", message: "Checking Node.js on remote host...", progress: 0.
|
|
199
|
+
yield { stage: "bootstrapping", message: "Checking Node.js on remote host...", progress: 0.1 };
|
|
200
200
|
try {
|
|
201
|
-
const nodeVersionOutput = await executor.exec("node --version", {
|
|
201
|
+
const nodeVersionOutput = await executor.exec("node --version", {
|
|
202
|
+
timeout: SSH_CONNECTIVITY_TIMEOUT_MS,
|
|
203
|
+
});
|
|
202
204
|
const nodeVersion = String(nodeVersionOutput).trim();
|
|
203
205
|
logger.info({ nodeVersion }, "Remote Node.js version");
|
|
204
206
|
const versionMatch = nodeVersion.match(/^v?(\d+)\./);
|
|
@@ -211,9 +213,9 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
211
213
|
}
|
|
212
214
|
}
|
|
213
215
|
catch (error) {
|
|
214
|
-
if (error instanceof Error
|
|
215
|
-
|
|
216
|
-
|
|
216
|
+
if (error instanceof Error &&
|
|
217
|
+
(error.message.startsWith("Unable to parse Node.js version") ||
|
|
218
|
+
error.message.startsWith("Unsupported Node.js version"))) {
|
|
217
219
|
throw error;
|
|
218
220
|
}
|
|
219
221
|
throw new Error("Node.js is not installed or not accessible on the remote host. Install Node.js >= 22 and try again.");
|
|
@@ -247,14 +249,14 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
247
249
|
const devMode = isDevMode();
|
|
248
250
|
if (devMode) {
|
|
249
251
|
// ── Dev mode: copy local monorepo artifacts ──
|
|
250
|
-
yield { stage: "bootstrapping", message: "Creating remote directories...", progress: 0.
|
|
251
|
-
await executor.exec(`mkdir -p ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/common`
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
252
|
+
yield { stage: "bootstrapping", message: "Creating remote directories...", progress: 0.2 };
|
|
253
|
+
await executor.exec(`mkdir -p ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/common` +
|
|
254
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-sdk` +
|
|
255
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-claude-code` +
|
|
256
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-copilot` +
|
|
257
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-codex` +
|
|
258
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-genaiscript` +
|
|
259
|
+
` ${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/runtime-acp`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
258
260
|
// Resolve local artifact paths relative to adapter-sdk's built location.
|
|
259
261
|
// import.meta.dirname = packages/adapter-sdk/dist → up 2 levels → packages/
|
|
260
262
|
const sdkDistDir = resolve(import.meta.dirname);
|
|
@@ -285,19 +287,27 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
285
287
|
}
|
|
286
288
|
}
|
|
287
289
|
// Strip @grackle-ai/* workspace deps, merge in common/mcp deps, then npm install once.
|
|
288
|
-
yield {
|
|
290
|
+
yield {
|
|
291
|
+
stage: "bootstrapping",
|
|
292
|
+
message: "Installing dependencies on remote host...",
|
|
293
|
+
progress: 0.4,
|
|
294
|
+
};
|
|
289
295
|
const extraDepsJson = JSON.stringify(extraDeps).replace(/'/g, "'\\''");
|
|
290
|
-
await executor.exec(`cd ${REMOTE_POWERLINE_DIRECTORY} && node -e "`
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
+
await executor.exec(`cd ${REMOTE_POWERLINE_DIRECTORY} && node -e "` +
|
|
297
|
+
`const p=JSON.parse(require('fs').readFileSync('package.json','utf8'));` +
|
|
298
|
+
`for(const k of Object.keys(p.dependencies||{})){if(k.startsWith('@grackle-ai/'))delete p.dependencies[k];}` +
|
|
299
|
+
`for(const k of Object.keys(p.devDependencies||{})){if(k.startsWith('@grackle-ai/'))delete p.devDependencies[k];}` +
|
|
300
|
+
`Object.assign(p.dependencies||{},JSON.parse(process.argv[1]));` +
|
|
301
|
+
`require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));" '${extraDepsJson}'`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
296
302
|
await executor.exec(`cd ${REMOTE_POWERLINE_DIRECTORY} && npm install --omit=dev --registry=https://registry.npmjs.org`, { timeout: BOOTSTRAP_NPM_INSTALL_TIMEOUT_MS });
|
|
297
303
|
// Copy @grackle-ai/* packages AFTER all npm installs (npm wipes unmanaged dirs)
|
|
298
304
|
for (const [name, dir] of workspacePackages) {
|
|
299
305
|
const remotePkgDir = `${REMOTE_POWERLINE_DIRECTORY}/node_modules/@grackle-ai/${name}`;
|
|
300
|
-
yield {
|
|
306
|
+
yield {
|
|
307
|
+
stage: "bootstrapping",
|
|
308
|
+
message: `Copying @grackle-ai/${name}...`,
|
|
309
|
+
progress: name === "common" ? 0.57 : 0.59,
|
|
310
|
+
};
|
|
301
311
|
await executor.exec(`mkdir -p ${remotePkgDir}`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
302
312
|
await executor.copyTo(join(dir, "dist"), `${remotePkgDir}/dist`);
|
|
303
313
|
await executor.copyTo(join(dir, "package.json"), `${remotePkgDir}/package.json`);
|
|
@@ -306,9 +316,15 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
306
316
|
else {
|
|
307
317
|
// ── Production mode: npm install from registry ──
|
|
308
318
|
const version = getPackageVersion();
|
|
309
|
-
yield { stage: "bootstrapping", message: "Creating remote directories...", progress: 0.
|
|
310
|
-
await executor.exec(`mkdir -p ${REMOTE_POWERLINE_DIRECTORY}`, {
|
|
311
|
-
|
|
319
|
+
yield { stage: "bootstrapping", message: "Creating remote directories...", progress: 0.2 };
|
|
320
|
+
await executor.exec(`mkdir -p ${REMOTE_POWERLINE_DIRECTORY}`, {
|
|
321
|
+
timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
322
|
+
});
|
|
323
|
+
yield {
|
|
324
|
+
stage: "bootstrapping",
|
|
325
|
+
message: `Installing @grackle-ai/powerline@${version}...`,
|
|
326
|
+
progress: 0.25,
|
|
327
|
+
};
|
|
312
328
|
await executor.exec(`cd ${REMOTE_POWERLINE_DIRECTORY} && npm init -y && npm install @grackle-ai/powerline@${version} --omit=dev --registry=https://registry.npmjs.org`, { timeout: BOOTSTRAP_NPM_INSTALL_TIMEOUT_MS });
|
|
313
329
|
}
|
|
314
330
|
logger.info({ devMode }, "PowerLine bootstrap mode");
|
|
@@ -318,9 +334,9 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
318
334
|
const credHelperScript = '#!/bin/sh\ntest "$1" = get || exit 0\necho "username=x-access-token"\necho "password=${GITHUB_TOKEN:-$GH_TOKEN}"\n';
|
|
319
335
|
const credHelperBase64 = Buffer.from(credHelperScript, "utf8").toString("base64");
|
|
320
336
|
const credHelperPath = `${REMOTE_POWERLINE_DIRECTORY}/git-credential-github.sh`;
|
|
321
|
-
await executor.exec(`node -e "require('fs').writeFileSync(process.argv[1],Buffer.from(process.argv[2],'base64').toString('utf8'),{mode:0o755})" `
|
|
322
|
-
|
|
323
|
-
|
|
337
|
+
await executor.exec(`node -e "require('fs').writeFileSync(process.argv[1],Buffer.from(process.argv[2],'base64').toString('utf8'),{mode:0o755})" ` +
|
|
338
|
+
`"${credHelperPath}" '${credHelperBase64}'` +
|
|
339
|
+
` && git config --global credential.helper "${credHelperPath}"`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
324
340
|
logger.info({ path: credHelperPath }, "Git credential helper configured");
|
|
325
341
|
}
|
|
326
342
|
catch (err) {
|
|
@@ -358,10 +374,14 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
358
374
|
runtimeUpToDate = false;
|
|
359
375
|
}
|
|
360
376
|
if (!runtimeUpToDate) {
|
|
361
|
-
yield {
|
|
377
|
+
yield {
|
|
378
|
+
stage: "bootstrapping",
|
|
379
|
+
message: `Installing ${defaultRuntime} runtime...`,
|
|
380
|
+
progress: 0.57,
|
|
381
|
+
};
|
|
362
382
|
// Write package.json and install dependencies when runtime is missing or stale
|
|
363
|
-
await executor.exec(`cd ${runtimeDir}`
|
|
364
|
-
|
|
383
|
+
await executor.exec(`cd ${runtimeDir}` +
|
|
384
|
+
` && node -e "require('fs').writeFileSync('package.json',Buffer.from(process.argv[1],'base64').toString('utf8'))" '${shellEscape(runtimePkgBase64)}'`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
365
385
|
await executor.exec(`cd ${runtimeDir} && npm install --omit=dev --registry=https://registry.npmjs.org`, { timeout: BOOTSTRAP_NPM_INSTALL_TIMEOUT_MS });
|
|
366
386
|
// Write manifest.json for future staleness checks by the PowerLine runtime installer
|
|
367
387
|
await executor.exec(`cd ${runtimeDir} && node -e "require('fs').writeFileSync('manifest.json',Buffer.from(process.argv[1],'base64').toString('utf8'))" '${shellEscape(manifestBase64)}'`, { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
@@ -377,7 +397,11 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
377
397
|
}
|
|
378
398
|
}
|
|
379
399
|
// 5. Kill any existing PowerLine process on the port (with fallbacks)
|
|
380
|
-
yield {
|
|
400
|
+
yield {
|
|
401
|
+
stage: "bootstrapping",
|
|
402
|
+
message: "Stopping any existing PowerLine process...",
|
|
403
|
+
progress: 0.6,
|
|
404
|
+
};
|
|
381
405
|
try {
|
|
382
406
|
await executor.exec(buildRemoteKillCommand(), { timeout: REMOTE_EXEC_DEFAULT_TIMEOUT_MS });
|
|
383
407
|
await sleep(1_000);
|
|
@@ -387,7 +411,12 @@ export async function* bootstrapPowerLine(executor, powerlineToken, options = {}
|
|
|
387
411
|
}
|
|
388
412
|
// 6–8. Write env vars, start process, wait, verify
|
|
389
413
|
yield { stage: "bootstrapping", message: "Starting PowerLine on remote host...", progress: 0.65 };
|
|
390
|
-
await startRemotePowerLine(executor, powerlineToken, {
|
|
414
|
+
await startRemotePowerLine(executor, powerlineToken, {
|
|
415
|
+
extraEnv: enrichedExtraEnv,
|
|
416
|
+
workingDirectory,
|
|
417
|
+
host,
|
|
418
|
+
logger,
|
|
419
|
+
});
|
|
391
420
|
yield { stage: "bootstrapping", message: "PowerLine is running on remote host", progress: 0.75 };
|
|
392
421
|
}
|
|
393
422
|
//# sourceMappingURL=bootstrap.js.map
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/connect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmBjD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,CAsBjB;AAID;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,aAA6B,EACrC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6B9B;AAID,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,uFAAuF;IACvF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE,UAc7B,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
package/dist/connect.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createClient } from "@connectrpc/connect";
|
|
|
2
2
|
import { createGrpcTransport } from "@connectrpc/connect-node";
|
|
3
3
|
import { powerline } from "@grackle-ai/common";
|
|
4
4
|
import { createConnection } from "node:net";
|
|
5
|
+
import { GrpcHostTransport } from "./grpc-host-transport.js";
|
|
5
6
|
import { closeTunnel } from "./tunnel-registry.js";
|
|
6
7
|
import { sleep } from "./utils.js";
|
|
7
8
|
import { defaultLogger } from "./logger.js";
|
|
@@ -51,7 +52,12 @@ export async function connectThroughTunnel(environmentId, localPort, powerlineTo
|
|
|
51
52
|
for (let attempt = 0; attempt < CONNECT_MAX_RETRIES; attempt++) {
|
|
52
53
|
try {
|
|
53
54
|
await client.ping({});
|
|
54
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
client,
|
|
57
|
+
environmentId,
|
|
58
|
+
port: localPort,
|
|
59
|
+
transport: new GrpcHostTransport(client),
|
|
60
|
+
};
|
|
55
61
|
}
|
|
56
62
|
catch (err) {
|
|
57
63
|
lastError = err;
|
package/dist/connect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,+DAA+D;AAE/D,sDAAsD;AACtD,MAAM,sBAAsB,GAAW,KAAK,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,mBAAmB,GAAW,EAAE,CAAC;AAEvC,6CAA6C;AAC7C,MAAM,yBAAyB,GAAW,GAAG,CAAC;AAE9C,iDAAiD;AACjD,MAAM,6BAA6B,GAAW,EAAE,CAAC;AAEjD,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,+DAA+D;AAE/D,sDAAsD;AACtD,MAAM,sBAAsB,GAAW,KAAK,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,mBAAmB,GAAW,EAAE,CAAC;AAEvC,6CAA6C;AAC7C,MAAM,yBAAyB,GAAW,GAAG,CAAC;AAE9C,iDAAiD;AACjD,MAAM,6BAA6B,GAAW,EAAE,CAAC;AAEjD,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,cAAsB,EACtB,OAAgB;IAEhB,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,cAAc,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,OAAO;QACP,YAAY;KACb,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAqB,EACrB,SAAiB,EACjB,cAAsB,EACtB,SAAwB,aAAa,EACrC,OAAgB;IAEhB,MAAM,MAAM,GAAG,qBAAqB,CAAC,oBAAoB,SAAS,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAE/F,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO;gBACL,MAAM;gBACN,aAAa;gBACb,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;aACzC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,8CAA8C,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mCAAmC,mBAAmB,cAAc,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACzI,CAAC;AACJ,CAAC;AAUD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,KAAK,CAAC,IAAY,EAAE,OAAe,WAAW;QAC5C,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAUF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,OAAiC;IAEjC,MAAM,MAAM,GAAG,OAAO,EAAE,UAAU,IAAI,eAAe,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IAExC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,6BAA6B,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAExD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,mCAAmC,6BAA6B,WAAW,CAC9F,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gRPC-backed implementation of {@link IHostTransport} (AHP HR8c).
|
|
3
|
+
*
|
|
4
|
+
* Wraps a {@link PowerLineClient} (ConnectRPC client) and folds each
|
|
5
|
+
* incoming `AgentEvent` through the {@link mapAgentEvent} mapper to produce
|
|
6
|
+
* AHP `StateAction[]`. Per-session {@link MapperContext} state is kept inside
|
|
7
|
+
* this instance so consumers don't need to thread it through their code.
|
|
8
|
+
*
|
|
9
|
+
* @module grpc-host-transport
|
|
10
|
+
*/
|
|
11
|
+
import type { PowerLineClient } from "./adapter.js";
|
|
12
|
+
import type { AuthenticateParams, CreateSessionParams, CreateSessionResult, HostSessionInfo, IHostTransport, ReanimateParams, ServerActionEnvelope } from "./host-transport.js";
|
|
13
|
+
/**
|
|
14
|
+
* gRPC-backed {@link IHostTransport} for a single environment.
|
|
15
|
+
*
|
|
16
|
+
* Lifecycle: one instance per `PowerLineConnection`. The mapper context map
|
|
17
|
+
* is keyed by session URI so multiple sessions on the same environment each
|
|
18
|
+
* get their own turn/tool tracking.
|
|
19
|
+
*/
|
|
20
|
+
export declare class GrpcHostTransport implements IHostTransport {
|
|
21
|
+
/** Underlying ConnectRPC client for the PowerLine gRPC service. */
|
|
22
|
+
private readonly client;
|
|
23
|
+
/**
|
|
24
|
+
* Per-session mapper context. Created lazily on first event per session;
|
|
25
|
+
* cleaned up when the session's stream completes or errors.
|
|
26
|
+
*/
|
|
27
|
+
private readonly mapperContexts;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new gRPC-backed host transport.
|
|
30
|
+
*
|
|
31
|
+
* @param client - The ConnectRPC client to wrap. Typically obtained from
|
|
32
|
+
* {@link createPowerLineClient} or a `PowerLineConnection`.
|
|
33
|
+
*/
|
|
34
|
+
constructor(client: PowerLineClient);
|
|
35
|
+
/**
|
|
36
|
+
* Create a new session via PowerLine's `spawn` RPC.
|
|
37
|
+
*
|
|
38
|
+
* Returns the session URI plus a live stream of {@link ServerActionEnvelope}s.
|
|
39
|
+
* The stream is mapped from the underlying `AgentEvent` stream.
|
|
40
|
+
*/
|
|
41
|
+
createSession(params: CreateSessionParams): CreateSessionResult;
|
|
42
|
+
/**
|
|
43
|
+
* Reanimate a suspended session via PowerLine's `resume` RPC.
|
|
44
|
+
*
|
|
45
|
+
* Returns a live stream of envelopes for the reanimated session. Note that
|
|
46
|
+
* `resume` alone does NOT replay buffered events — call
|
|
47
|
+
* {@link IHostTransport.drainBuffered} first to replay the parked queue,
|
|
48
|
+
* then this method to start the live stream.
|
|
49
|
+
*/
|
|
50
|
+
reanimate(params: ReanimateParams): AsyncIterable<ServerActionEnvelope>;
|
|
51
|
+
/**
|
|
52
|
+
* Drain previously-parked buffered events for a session.
|
|
53
|
+
*
|
|
54
|
+
* Maps to the gRPC `drainBufferedEvents` RPC. The returned stream yields
|
|
55
|
+
* the buffered envelopes and then terminates — it does NOT continue into
|
|
56
|
+
* the live event stream. Callers compose `drainBuffered` + `reanimate`
|
|
57
|
+
* to do recovery.
|
|
58
|
+
*/
|
|
59
|
+
drainBuffered(sessionUri: string): AsyncIterable<ServerActionEnvelope>;
|
|
60
|
+
/** Send input text to a session via PowerLine's `sendInput` RPC. */
|
|
61
|
+
dispatchInput(sessionUri: string, text: string): Promise<void>;
|
|
62
|
+
/** Authenticate credentials via PowerLine's `authenticate` RPC. */
|
|
63
|
+
authenticate(params: AuthenticateParams): Promise<void>;
|
|
64
|
+
/** Dispose a session via PowerLine's `kill` RPC. */
|
|
65
|
+
dispose(sessionUri: string, reason?: string): Promise<void>;
|
|
66
|
+
/** List active sessions via PowerLine's `listSessions` RPC. */
|
|
67
|
+
listSessions(): Promise<HostSessionInfo[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Fold a raw `AgentEvent` stream into `ServerActionEnvelope`s by running
|
|
70
|
+
* each event through the mapper. The per-session `MapperContext` is
|
|
71
|
+
* created/retrieved lazily and removed when the stream completes.
|
|
72
|
+
*/
|
|
73
|
+
private foldStream;
|
|
74
|
+
/** Get an existing or create a fresh `MapperContext` for a session. */
|
|
75
|
+
private getOrCreateContext;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=grpc-host-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-host-transport.d.ts","sourceRoot":"","sources":["../src/grpc-host-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE;;;;;OAKG;gBACgB,MAAM,EAAE,eAAe;IAI1C;;;;;OAKG;IACI,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB;IA2BtE;;;;;;;OAOG;IACI,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAAC,oBAAoB,CAAC;IAU9E;;;;;;;OAOG;IACW,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC;IAQpF,oEAAoE;IACvD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E,mEAAmE;IACtD,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE,oDAAoD;IACvC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE,+DAA+D;IAClD,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IASvD;;;;OAIG;YACY,UAAU;IAmBzB,uEAAuE;IACvE,OAAO,CAAC,kBAAkB;CAc3B"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gRPC-backed implementation of {@link IHostTransport} (AHP HR8c).
|
|
3
|
+
*
|
|
4
|
+
* Wraps a {@link PowerLineClient} (ConnectRPC client) and folds each
|
|
5
|
+
* incoming `AgentEvent` through the {@link mapAgentEvent} mapper to produce
|
|
6
|
+
* AHP `StateAction[]`. Per-session {@link MapperContext} state is kept inside
|
|
7
|
+
* this instance so consumers don't need to thread it through their code.
|
|
8
|
+
*
|
|
9
|
+
* @module grpc-host-transport
|
|
10
|
+
*/
|
|
11
|
+
import { create } from "@bufbuild/protobuf";
|
|
12
|
+
import { powerline, mapAgentEvent } from "@grackle-ai/common";
|
|
13
|
+
/**
|
|
14
|
+
* gRPC-backed {@link IHostTransport} for a single environment.
|
|
15
|
+
*
|
|
16
|
+
* Lifecycle: one instance per `PowerLineConnection`. The mapper context map
|
|
17
|
+
* is keyed by session URI so multiple sessions on the same environment each
|
|
18
|
+
* get their own turn/tool tracking.
|
|
19
|
+
*/
|
|
20
|
+
export class GrpcHostTransport {
|
|
21
|
+
/** Underlying ConnectRPC client for the PowerLine gRPC service. */
|
|
22
|
+
client;
|
|
23
|
+
/**
|
|
24
|
+
* Per-session mapper context. Created lazily on first event per session;
|
|
25
|
+
* cleaned up when the session's stream completes or errors.
|
|
26
|
+
*/
|
|
27
|
+
mapperContexts = new Map();
|
|
28
|
+
/**
|
|
29
|
+
* Create a new gRPC-backed host transport.
|
|
30
|
+
*
|
|
31
|
+
* @param client - The ConnectRPC client to wrap. Typically obtained from
|
|
32
|
+
* {@link createPowerLineClient} or a `PowerLineConnection`.
|
|
33
|
+
*/
|
|
34
|
+
constructor(client) {
|
|
35
|
+
this.client = client;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a new session via PowerLine's `spawn` RPC.
|
|
39
|
+
*
|
|
40
|
+
* Returns the session URI plus a live stream of {@link ServerActionEnvelope}s.
|
|
41
|
+
* The stream is mapped from the underlying `AgentEvent` stream.
|
|
42
|
+
*/
|
|
43
|
+
createSession(params) {
|
|
44
|
+
const spawnReq = create(powerline.SpawnRequestSchema, {
|
|
45
|
+
sessionId: params.sessionId,
|
|
46
|
+
runtime: params.runtime,
|
|
47
|
+
prompt: params.prompt,
|
|
48
|
+
model: params.model,
|
|
49
|
+
maxTurns: params.maxTurns,
|
|
50
|
+
branch: params.branch,
|
|
51
|
+
workingDirectory: params.workingDirectory,
|
|
52
|
+
systemContext: params.systemContext,
|
|
53
|
+
workspaceId: params.workspaceId,
|
|
54
|
+
taskId: params.taskId,
|
|
55
|
+
mcpServersJson: params.mcpServersJson,
|
|
56
|
+
mcpUrl: params.mcpUrl,
|
|
57
|
+
mcpToken: params.mcpToken,
|
|
58
|
+
useWorktrees: params.useWorktrees,
|
|
59
|
+
pipe: params.pipe ?? "",
|
|
60
|
+
scriptContent: params.scriptContent ?? "",
|
|
61
|
+
});
|
|
62
|
+
const grpcStream = this.client.spawn(spawnReq);
|
|
63
|
+
return {
|
|
64
|
+
sessionUri: params.sessionId,
|
|
65
|
+
stream: this.foldStream(params.sessionId, grpcStream),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Reanimate a suspended session via PowerLine's `resume` RPC.
|
|
70
|
+
*
|
|
71
|
+
* Returns a live stream of envelopes for the reanimated session. Note that
|
|
72
|
+
* `resume` alone does NOT replay buffered events — call
|
|
73
|
+
* {@link IHostTransport.drainBuffered} first to replay the parked queue,
|
|
74
|
+
* then this method to start the live stream.
|
|
75
|
+
*/
|
|
76
|
+
reanimate(params) {
|
|
77
|
+
const resumeReq = create(powerline.ResumeRequestSchema, {
|
|
78
|
+
sessionId: params.sessionId,
|
|
79
|
+
runtimeSessionId: params.runtimeSessionId,
|
|
80
|
+
runtime: params.runtime,
|
|
81
|
+
});
|
|
82
|
+
const grpcStream = this.client.resume(resumeReq);
|
|
83
|
+
return this.foldStream(params.sessionId, grpcStream);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Drain previously-parked buffered events for a session.
|
|
87
|
+
*
|
|
88
|
+
* Maps to the gRPC `drainBufferedEvents` RPC. The returned stream yields
|
|
89
|
+
* the buffered envelopes and then terminates — it does NOT continue into
|
|
90
|
+
* the live event stream. Callers compose `drainBuffered` + `reanimate`
|
|
91
|
+
* to do recovery.
|
|
92
|
+
*/
|
|
93
|
+
async *drainBuffered(sessionUri) {
|
|
94
|
+
const drainReq = create(powerline.DrainRequestSchema, {
|
|
95
|
+
sessionId: sessionUri,
|
|
96
|
+
});
|
|
97
|
+
const drainStream = this.client.drainBufferedEvents(drainReq);
|
|
98
|
+
yield* this.foldStream(sessionUri, drainStream);
|
|
99
|
+
}
|
|
100
|
+
/** Send input text to a session via PowerLine's `sendInput` RPC. */
|
|
101
|
+
async dispatchInput(sessionUri, text) {
|
|
102
|
+
await this.client.sendInput(create(powerline.InputMessageSchema, { sessionId: sessionUri, text }));
|
|
103
|
+
}
|
|
104
|
+
/** Authenticate credentials via PowerLine's `authenticate` RPC. */
|
|
105
|
+
async authenticate(params) {
|
|
106
|
+
await this.client.authenticate(create(powerline.AuthenticateRequestSchema, {
|
|
107
|
+
provider: params.provider,
|
|
108
|
+
tokens: params.tokens.map((t) => create(powerline.TokenItemSchema, {
|
|
109
|
+
name: t.name,
|
|
110
|
+
type: t.type,
|
|
111
|
+
envVar: t.envVar ?? "",
|
|
112
|
+
filePath: t.filePath ?? "",
|
|
113
|
+
value: t.value,
|
|
114
|
+
})),
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
/** Dispose a session via PowerLine's `kill` RPC. */
|
|
118
|
+
async dispose(sessionUri, reason) {
|
|
119
|
+
await this.client.kill(create(powerline.KillRequestSchema, { id: sessionUri, reason: reason ?? "" }));
|
|
120
|
+
this.mapperContexts.delete(sessionUri);
|
|
121
|
+
}
|
|
122
|
+
/** List active sessions via PowerLine's `listSessions` RPC. */
|
|
123
|
+
async listSessions() {
|
|
124
|
+
const list = await this.client.listSessions({});
|
|
125
|
+
return list.sessions.map((s) => ({
|
|
126
|
+
sessionId: s.sessionId,
|
|
127
|
+
runtime: s.runtime,
|
|
128
|
+
status: s.status,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Fold a raw `AgentEvent` stream into `ServerActionEnvelope`s by running
|
|
133
|
+
* each event through the mapper. The per-session `MapperContext` is
|
|
134
|
+
* created/retrieved lazily and removed when the stream completes.
|
|
135
|
+
*/
|
|
136
|
+
async *foldStream(sessionUri, grpcStream) {
|
|
137
|
+
const context = this.getOrCreateContext(sessionUri);
|
|
138
|
+
try {
|
|
139
|
+
for await (const event of grpcStream) {
|
|
140
|
+
const idx = context.eventIndex++;
|
|
141
|
+
const { actions } = mapAgentEvent(event, idx, context);
|
|
142
|
+
yield { event, actions };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
// Context lifetime tracks the stream; recover paths create a fresh one
|
|
147
|
+
// on the next drainBuffered/reanimate. Clearing here prevents memory
|
|
148
|
+
// growth for sessions that close cleanly.
|
|
149
|
+
this.mapperContexts.delete(sessionUri);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Get an existing or create a fresh `MapperContext` for a session. */
|
|
153
|
+
getOrCreateContext(sessionUri) {
|
|
154
|
+
let ctx = this.mapperContexts.get(sessionUri);
|
|
155
|
+
if (!ctx) {
|
|
156
|
+
ctx = {
|
|
157
|
+
turnId: undefined,
|
|
158
|
+
openToolCalls: [],
|
|
159
|
+
partCounter: 0,
|
|
160
|
+
eventIndex: 0,
|
|
161
|
+
metaAccumulator: {},
|
|
162
|
+
};
|
|
163
|
+
this.mapperContexts.set(sessionUri, ctx);
|
|
164
|
+
}
|
|
165
|
+
return ctx;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=grpc-host-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-host-transport.js","sourceRoot":"","sources":["../src/grpc-host-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport-agnostic host interface (AHP HR8c).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the PowerLine gRPC client behind an AHP-shaped API so consumers in
|
|
5
|
+
* `@grackle-ai/core` no longer need to import `powerline.*` proto types. HR8d
|
|
6
|
+
* will replace the gRPC implementation with a native AHP host without
|
|
7
|
+
* changing this interface.
|
|
8
|
+
*
|
|
9
|
+
* Each consumer call-site goes through one of these methods:
|
|
10
|
+
* - `createSession` ← `PowerLineClient.spawn`
|
|
11
|
+
* - `reanimate` ← `PowerLineClient.resume`
|
|
12
|
+
* - `drainBuffered` ← `PowerLineClient.drainBufferedEvents`
|
|
13
|
+
* - `dispatchInput` ← `PowerLineClient.sendInput`
|
|
14
|
+
* - `authenticate` ← `PowerLineClient.authenticate`
|
|
15
|
+
* - `dispose` ← `PowerLineClient.kill`
|
|
16
|
+
* - `listSessions` ← `PowerLineClient.listSessions`
|
|
17
|
+
*
|
|
18
|
+
* @module host-transport
|
|
19
|
+
*/
|
|
20
|
+
import type { AgentEventFields } from "@grackle-ai/common";
|
|
21
|
+
import type { StateAction } from "@grackle-ai/ahp";
|
|
22
|
+
/**
|
|
23
|
+
* A single event from a session stream, in HR8c transitional form.
|
|
24
|
+
*
|
|
25
|
+
* Carries both the source `AgentEvent` (so existing event-driven logic in
|
|
26
|
+
* `event-processor.ts` continues to work) and the AHP `StateAction[]`
|
|
27
|
+
* produced by the upstream mapper. HR8d removes `event`/`legacyEvent` once
|
|
28
|
+
* consumers fully consume AHP actions.
|
|
29
|
+
*/
|
|
30
|
+
export interface ServerActionEnvelope {
|
|
31
|
+
/**
|
|
32
|
+
* Source AgentEvent — transitional. Existing consumers in
|
|
33
|
+
* `@grackle-ai/core` drive status/usage/end-reason logic from this. HR8d
|
|
34
|
+
* removes the field; consumers must migrate to AHP actions by then.
|
|
35
|
+
*/
|
|
36
|
+
event: AgentEventFields;
|
|
37
|
+
/** AHP actions derived from the event (possibly empty for carried/dropped). */
|
|
38
|
+
actions: StateAction[];
|
|
39
|
+
}
|
|
40
|
+
/** Parameters for creating a new session via {@link IHostTransport.createSession}. */
|
|
41
|
+
export interface CreateSessionParams {
|
|
42
|
+
/** Server-assigned session ID (becomes the session URI). */
|
|
43
|
+
sessionId: string;
|
|
44
|
+
/** Runtime name (e.g. "claude-code", "copilot"). */
|
|
45
|
+
runtime: string;
|
|
46
|
+
/** User-visible prompt to deliver as the initial turn. */
|
|
47
|
+
prompt: string;
|
|
48
|
+
/** LLM model identifier. */
|
|
49
|
+
model: string;
|
|
50
|
+
/** Maximum agent turns before forced stop. */
|
|
51
|
+
maxTurns: number;
|
|
52
|
+
/** Git branch for worktree creation; empty string skips worktree. */
|
|
53
|
+
branch: string;
|
|
54
|
+
/** Working directory on the remote (defaults to "/workspace"). */
|
|
55
|
+
workingDirectory: string;
|
|
56
|
+
/** System prompt / context injected at session start. */
|
|
57
|
+
systemContext: string;
|
|
58
|
+
/** Workspace identifier (optional, for non-workspace sessions). */
|
|
59
|
+
workspaceId?: string;
|
|
60
|
+
/** Task identifier this session belongs to. */
|
|
61
|
+
taskId: string;
|
|
62
|
+
/** JSON-encoded MCP server configurations. */
|
|
63
|
+
mcpServersJson: string;
|
|
64
|
+
/** MCP broker URL the runtime should connect back to. */
|
|
65
|
+
mcpUrl: string;
|
|
66
|
+
/** Scoped token for the runtime to authenticate to the MCP broker. */
|
|
67
|
+
mcpToken: string;
|
|
68
|
+
/** Whether to use git worktrees. */
|
|
69
|
+
useWorktrees?: boolean;
|
|
70
|
+
/** IPC pipe mode ("sync", "async", "detach", or ""). */
|
|
71
|
+
pipe?: string;
|
|
72
|
+
/** Script content for script personas (optional). */
|
|
73
|
+
scriptContent?: string;
|
|
74
|
+
}
|
|
75
|
+
/** Parameters for reanimating a suspended session. */
|
|
76
|
+
export interface ReanimateParams {
|
|
77
|
+
/** Server session ID matching the prior spawn. */
|
|
78
|
+
sessionId: string;
|
|
79
|
+
/** Runtime-native session ID stored from the prior spawn's `runtime_session_id` event. */
|
|
80
|
+
runtimeSessionId: string;
|
|
81
|
+
/** Runtime name (must match the original spawn). */
|
|
82
|
+
runtime: string;
|
|
83
|
+
}
|
|
84
|
+
/** A single token item delivered via {@link IHostTransport.authenticate}. */
|
|
85
|
+
export interface AuthenticateTokenItem {
|
|
86
|
+
/** Logical name of the token (e.g. "github-token"). */
|
|
87
|
+
name: string;
|
|
88
|
+
/** Delivery kind ("env_var" or "file"). */
|
|
89
|
+
type: string;
|
|
90
|
+
/** Environment variable name (when `type === "env_var"`). */
|
|
91
|
+
envVar?: string;
|
|
92
|
+
/** Target file path on the remote (when `type === "file"`). */
|
|
93
|
+
filePath?: string;
|
|
94
|
+
/** The credential value. */
|
|
95
|
+
value: string;
|
|
96
|
+
}
|
|
97
|
+
/** Parameters for {@link IHostTransport.authenticate}. */
|
|
98
|
+
export interface AuthenticateParams {
|
|
99
|
+
/** Provider identifier (typically the runtime name) the credentials are scoped to. */
|
|
100
|
+
provider: string;
|
|
101
|
+
/** Token items to deliver. */
|
|
102
|
+
tokens: AuthenticateTokenItem[];
|
|
103
|
+
}
|
|
104
|
+
/** A single session entry returned by {@link IHostTransport.listSessions}. */
|
|
105
|
+
export interface HostSessionInfo {
|
|
106
|
+
/** Server session ID. */
|
|
107
|
+
sessionId: string;
|
|
108
|
+
/** Runtime the session is running under. */
|
|
109
|
+
runtime: string;
|
|
110
|
+
/** Current status (runtime-defined). */
|
|
111
|
+
status: string;
|
|
112
|
+
}
|
|
113
|
+
/** Result of {@link IHostTransport.createSession}: URI + live event stream. */
|
|
114
|
+
export interface CreateSessionResult {
|
|
115
|
+
/** Session URI (currently just the sessionId; AHP URI scheme reserved for HR8d). */
|
|
116
|
+
sessionUri: string;
|
|
117
|
+
/** Live stream of envelopes for this session. */
|
|
118
|
+
stream: AsyncIterable<ServerActionEnvelope>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Transport-agnostic host interface (AHP HR8c).
|
|
122
|
+
*
|
|
123
|
+
* All `@grackle-ai/core` consumers obtain an implementation via
|
|
124
|
+
* `GrpcHostTransport(connection)` (this PR) or directly from the AHP host
|
|
125
|
+
* (HR8d). The interface shape stays stable across the swap.
|
|
126
|
+
*/
|
|
127
|
+
export interface IHostTransport {
|
|
128
|
+
/**
|
|
129
|
+
* Create a new session. Returns the session URI plus the live event stream.
|
|
130
|
+
*
|
|
131
|
+
* The stream is returned synchronously alongside the URI (matching gRPC's
|
|
132
|
+
* spawn behavior) to avoid event-buffer complexity. Consumers must begin
|
|
133
|
+
* iterating the stream promptly to avoid back-pressure on the wire.
|
|
134
|
+
*/
|
|
135
|
+
createSession(params: CreateSessionParams): CreateSessionResult;
|
|
136
|
+
/**
|
|
137
|
+
* Reanimate a suspended session, returning its live event stream.
|
|
138
|
+
*
|
|
139
|
+
* Maps directly to `resume`. For recovery flows that also need the
|
|
140
|
+
* previously-parked buffered events, call `drainBuffered` first, then
|
|
141
|
+
* call `reanimate` to start the live stream.
|
|
142
|
+
*/
|
|
143
|
+
reanimate(params: ReanimateParams): AsyncIterable<ServerActionEnvelope>;
|
|
144
|
+
/**
|
|
145
|
+
* Drain previously-parked buffered events for a session.
|
|
146
|
+
*
|
|
147
|
+
* Returns a finite stream of envelopes for events the host has been
|
|
148
|
+
* holding since the consumer disconnected; the stream terminates once
|
|
149
|
+
* the parked queue is exhausted. It does NOT continue into the live
|
|
150
|
+
* event stream — callers compose `drainBuffered` + `reanimate` to do
|
|
151
|
+
* recovery (see `session-recovery.ts`).
|
|
152
|
+
*
|
|
153
|
+
* Note: HR8d's AHP wire will add a true seq-cursor `subscribe` method
|
|
154
|
+
* for "resume from server seq N" semantics. That's intentionally a
|
|
155
|
+
* separate method on this interface; this one stays narrowly scoped to
|
|
156
|
+
* the parked-queue drain that gRPC supports today.
|
|
157
|
+
*/
|
|
158
|
+
drainBuffered(sessionUri: string): AsyncIterable<ServerActionEnvelope>;
|
|
159
|
+
/**
|
|
160
|
+
* Send input text to a session.
|
|
161
|
+
*
|
|
162
|
+
* Bypasses any IDLE guard — the runtime accepts input at any time and picks
|
|
163
|
+
* it up at the next turn boundary. Used by signal delivery and pipe
|
|
164
|
+
* delivery in `@grackle-ai/core`.
|
|
165
|
+
*/
|
|
166
|
+
dispatchInput(sessionUri: string, text: string): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Authenticate credentials for the given runtime/provider.
|
|
169
|
+
*
|
|
170
|
+
* Throws on transport error. Callers in core treat failure as best-effort
|
|
171
|
+
* (log and continue).
|
|
172
|
+
*/
|
|
173
|
+
authenticate(params: AuthenticateParams): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Dispose (terminate) a session.
|
|
176
|
+
*
|
|
177
|
+
* Maps to `kill`. The optional `reason` is currently ignored by the gRPC
|
|
178
|
+
* transport but reserved for future AHP-native disposition semantics.
|
|
179
|
+
*/
|
|
180
|
+
dispose(sessionUri: string, reason?: string): Promise<void>;
|
|
181
|
+
/** List active sessions on the host. */
|
|
182
|
+
listSessions(): Promise<HostSessionInfo[]>;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=host-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-transport.d.ts","sourceRoot":"","sources":["../src/host-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport-agnostic host interface (AHP HR8c).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the PowerLine gRPC client behind an AHP-shaped API so consumers in
|
|
5
|
+
* `@grackle-ai/core` no longer need to import `powerline.*` proto types. HR8d
|
|
6
|
+
* will replace the gRPC implementation with a native AHP host without
|
|
7
|
+
* changing this interface.
|
|
8
|
+
*
|
|
9
|
+
* Each consumer call-site goes through one of these methods:
|
|
10
|
+
* - `createSession` ← `PowerLineClient.spawn`
|
|
11
|
+
* - `reanimate` ← `PowerLineClient.resume`
|
|
12
|
+
* - `drainBuffered` ← `PowerLineClient.drainBufferedEvents`
|
|
13
|
+
* - `dispatchInput` ← `PowerLineClient.sendInput`
|
|
14
|
+
* - `authenticate` ← `PowerLineClient.authenticate`
|
|
15
|
+
* - `dispose` ← `PowerLineClient.kill`
|
|
16
|
+
* - `listSessions` ← `PowerLineClient.listSessions`
|
|
17
|
+
*
|
|
18
|
+
* @module host-transport
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=host-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-transport.js","sourceRoot":"","sources":["../src/host-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { ProcessTunnel } from "./tunnel.js";
|
|
|
10
10
|
export type { TunnelState } from "./tunnel-registry.js";
|
|
11
11
|
export { registerTunnel, getTunnel, closeTunnel, closeAllTunnels } from "./tunnel-registry.js";
|
|
12
12
|
export type { PortProber, WaitForLocalPortOptions } from "./connect.js";
|
|
13
|
-
export { createPowerLineClient, connectThroughTunnel, waitForLocalPort, TCP_PORT_PROBER } from "./connect.js";
|
|
13
|
+
export { createPowerLineClient, connectThroughTunnel, waitForLocalPort, TCP_PORT_PROBER, } from "./connect.js";
|
|
14
14
|
export type { BootstrapOptions, StartRemotePowerLineOptions } from "./bootstrap.js";
|
|
15
15
|
export { bootstrapPowerLine, buildEnvFileContent, startRemotePowerLine, probeRemotePowerLine, writeRemoteEnvFile, buildRemoteKillCommand, } from "./bootstrap.js";
|
|
16
16
|
export { remoteStop, remoteDestroy, remoteHealthCheck } from "./shared-operations.js";
|
|
@@ -18,4 +18,7 @@ export type { ExecResult } from "./exec.js";
|
|
|
18
18
|
export { exec } from "./exec.js";
|
|
19
19
|
export type { ExecFunction, AdapterDependencies } from "./adapter-dependencies.js";
|
|
20
20
|
export { sleep, findFreePort, isDevMode, getPackageVersion, shellEscape, REMOTE_POWERLINE_DIRECTORY, SSH_CONNECTIVITY_TIMEOUT_MS, REMOTE_EXEC_DEFAULT_TIMEOUT_MS, } from "./utils.js";
|
|
21
|
+
export type { AgentEventFields } from "@grackle-ai/common";
|
|
22
|
+
export type { IHostTransport, ServerActionEnvelope, CreateSessionParams, CreateSessionResult, ReanimateParams, AuthenticateParams, AuthenticateTokenItem, HostSessionInfo, } from "./host-transport.js";
|
|
23
|
+
export { GrpcHostTransport } from "./grpc-host-transport.js";
|
|
21
24
|
//# sourceMappingURL=index.d.ts.map
|
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,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,YAAY,EACV,eAAe,EACf,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,
|
|
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,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,YAAY,EACV,eAAe,EACf,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,qBAAqB,EACrB,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,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,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,11 +6,12 @@ export { powerline } from "@grackle-ai/common";
|
|
|
6
6
|
export { reconnectOrProvision } from "./adapter.js";
|
|
7
7
|
export { ProcessTunnel } from "./tunnel.js";
|
|
8
8
|
export { registerTunnel, getTunnel, closeTunnel, closeAllTunnels } from "./tunnel-registry.js";
|
|
9
|
-
export { createPowerLineClient, connectThroughTunnel, waitForLocalPort, TCP_PORT_PROBER } from "./connect.js";
|
|
9
|
+
export { createPowerLineClient, connectThroughTunnel, waitForLocalPort, TCP_PORT_PROBER, } from "./connect.js";
|
|
10
10
|
export { bootstrapPowerLine, buildEnvFileContent, startRemotePowerLine, probeRemotePowerLine, writeRemoteEnvFile, buildRemoteKillCommand, } from "./bootstrap.js";
|
|
11
11
|
// ─── Shared Operations ─────────────────────────────────────
|
|
12
12
|
export { remoteStop, remoteDestroy, remoteHealthCheck } from "./shared-operations.js";
|
|
13
13
|
export { exec } from "./exec.js";
|
|
14
14
|
// ─── Utilities ──────────────────────────────────────────────
|
|
15
15
|
export { sleep, findFreePort, isDevMode, getPackageVersion, shellEscape, REMOTE_POWERLINE_DIRECTORY, SSH_CONNECTIVITY_TIMEOUT_MS, REMOTE_EXEC_DEFAULT_TIMEOUT_MS, } from "./utils.js";
|
|
16
|
+
export { GrpcHostTransport } from "./grpc-host-transport.js";
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
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;AAE5C,iEAAiE;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI/F,OAAO,
|
|
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;AAE5C,iEAAiE;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAOpD,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,qBAAqB,EACrB,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,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAiBpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-operations.d.ts","sourceRoot":"","sources":["../src/shared-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"shared-operations.d.ts","sourceRoot":"","sources":["../src/shared-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,2EAA2E;AAC3E,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBzF"}
|
|
@@ -21,12 +21,12 @@ export async function remoteStop(environmentId, executor, logger = defaultLogger
|
|
|
21
21
|
*/
|
|
22
22
|
export async function remoteDestroy(environmentId, executor, logger = defaultLogger) {
|
|
23
23
|
try {
|
|
24
|
-
await executor.exec(`${buildRemoteKillCommand()}; `
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
await executor.exec(`${buildRemoteKillCommand()}; ` +
|
|
25
|
+
'CRED="$HOME/.claude/.credentials.json"; ' +
|
|
26
|
+
`if [ -L "$CRED" ]; then case "$(readlink "$CRED" 2>/dev/null)" in ${REMOTE_POWERLINE_DIRECTORY}/*) rm -f "$CRED";; esac; fi; ` +
|
|
27
|
+
`HELPER="$(git config --global credential.helper 2>/dev/null || true)"; ` +
|
|
28
|
+
`case "$HELPER" in ${REMOTE_POWERLINE_DIRECTORY}/*) git config --global --unset credential.helper 2>/dev/null || true;; esac; ` +
|
|
29
|
+
`rm -rf ${REMOTE_POWERLINE_DIRECTORY}`);
|
|
30
30
|
}
|
|
31
31
|
catch (err) {
|
|
32
32
|
logger.debug({ environmentId, err }, "Failed to clean up remote PowerLine artifacts");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-operations.js","sourceRoot":"","sources":["../src/shared-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,aAAqB,EACrB,QAAwB,EACxB,SAAwB,aAAa;IAErC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"shared-operations.js","sourceRoot":"","sources":["../src/shared-operations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,aAAqB,EACrB,QAAwB,EACxB,SAAwB,aAAa;IAErC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,EAAE,aAAa,EAAE,GAAG,EAAE,EACtB,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB,EACrB,QAAwB,EACxB,SAAwB,aAAa;IAErC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CACjB,GAAG,sBAAsB,EAAE,IAAI;YAC7B,0CAA0C;YAC1C,qEAAqE,0BAA0B,gCAAgC;YAC/H,yEAAyE;YACzE,qBAAqB,0BAA0B,gFAAgF;YAC/H,UAAU,0BAA0B,EAAE,CACzC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,+CAA+C,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA+B;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,mEAAmE;IACnE,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry.d.ts","sourceRoot":"","sources":["../src/tunnel-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAID,uFAAuF;AACvF,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,aAA6B,GACpC,IAAI,
|
|
1
|
+
{"version":3,"file":"tunnel-registry.d.ts","sourceRoot":"","sources":["../src/tunnel-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAID,uFAAuF;AACvF,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,aAA6B,GACpC,IAAI,CAmBN;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAExE;AAED,6DAA6D;AAC7D,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,MAAM,GAAE,aAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry.js","sourceRoot":"","sources":["../src/tunnel-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,SAAS,GAA6B,IAAI,GAAG,EAAuB,CAAC;AAE3E,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAC5B,aAAqB,EACrB,KAAkB,EAClB,SAAwB,aAAa;IAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"tunnel-registry.js","sourceRoot":"","sources":["../src/tunnel-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,SAAS,GAA6B,IAAI,GAAG,EAAuB,CAAC;AAE3E,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAC5B,aAAqB,EACrB,KAAkB,EAClB,SAAwB,aAAa;IAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,aAAa,EAAE,EACtB,4DAA4D,CAC7D,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3C,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,aAAa,EAAE,EACtB,oEAAoE,CACrE,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,aAAqB;IAC7C,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAwB,aAAa;IACzE,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/adapter-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.132.1",
|
|
4
4
|
"description": "SDK for building Grackle environment adapters",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -31,11 +31,13 @@
|
|
|
31
31
|
"@bufbuild/protobuf": "^2.5.0",
|
|
32
32
|
"@connectrpc/connect": "^2.0.0",
|
|
33
33
|
"@connectrpc/connect-node": "^2.0.0",
|
|
34
|
-
"@grackle-ai/common": "0.
|
|
34
|
+
"@grackle-ai/common": "0.132.1",
|
|
35
|
+
"@grackle-ai/ahp": "0.132.1"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@rushstack/heft": "1.2.7",
|
|
38
39
|
"@types/node": "^22.0.0",
|
|
40
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
39
41
|
"vitest": "^3.1.1",
|
|
40
42
|
"@grackle-ai/heft-rig": "0.0.1"
|
|
41
43
|
},
|
|
@@ -44,6 +46,6 @@
|
|
|
44
46
|
"test": "vitest run",
|
|
45
47
|
"clean": "heft clean",
|
|
46
48
|
"_phase:build": "heft run --only build -- --clean",
|
|
47
|
-
"_phase:test": "vitest run"
|
|
49
|
+
"_phase:test": "vitest run --coverage"
|
|
48
50
|
}
|
|
49
51
|
}
|