@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.
@@ -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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"}