@grackle-ai/adapter-sdk 0.132.2 → 0.133.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/adapter.d.ts +14 -10
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js.map +1 -1
- package/dist/ahp-host-transport.d.ts +124 -0
- package/dist/ahp-host-transport.d.ts.map +1 -0
- package/dist/ahp-host-transport.js +413 -0
- package/dist/ahp-host-transport.js.map +1 -0
- package/dist/connect.d.ts +34 -8
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +79 -35
- package/dist/connect.js.map +1 -1
- package/dist/host-transport.d.ts +15 -27
- package/dist/host-transport.d.ts.map +1 -1
- package/dist/host-transport.js +15 -12
- package/dist/host-transport.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/shared-operations.js +1 -1
- package/dist/shared-operations.js.map +1 -1
- package/package.json +4 -6
- package/dist/grpc-host-transport.d.ts +0 -77
- package/dist/grpc-host-transport.d.ts.map +0 -1
- package/dist/grpc-host-transport.js +0 -168
- package/dist/grpc-host-transport.js.map +0 -1
|
@@ -1,168 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-host-transport.js","sourceRoot":"","sources":["../src/grpc-host-transport.ts"],"names":[],"mappings":"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"}
|