@onepointfour-packs/flaredeck-agent 0.2.211 → 0.2.213

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/warm.d.ts ADDED
@@ -0,0 +1,97 @@
1
+ import { query, type Options, type SDKMessage } from '@anthropic-ai/claude-agent-sdk';
2
+ /**
3
+ * One Claude session kept running between turns.
4
+ *
5
+ * Every turn started a new Claude process and connected every tool server again — about four
6
+ * seconds before the model read a word, on each question typed at the pane and each comment on a
7
+ * card (FRIDAY, 30 Oct: 12:18:28 → 12:18:32). The conversation was resumed from disk each time.
8
+ * Now the process that finished a turn is kept, and the next turn on the same session is sent to
9
+ * it as a new message.
10
+ *
11
+ * Kept only when nothing could be different about it:
12
+ * · the same session, resumed (not forked), with no /goal;
13
+ * · the same checkout, subscription and settings — everything in the options but the tool
14
+ * servers, the model and the callbacks (see signatureOf);
15
+ * · nothing it started still running when its turn ended.
16
+ * The tool servers are swapped in for the new turn (setMcpServers: the same object or the same
17
+ * address is left alone), the model is set, and the permission check and the hooks are reached
18
+ * through the session to whichever turn is current — the session holds trampolines, never the
19
+ * first turn's functions.
20
+ *
21
+ * ONE at most, and closed before any other session starts. A session left open holds the
22
+ * harness's in-process tool servers, and the next session could not connect to them: FRIDAY lost
23
+ * send_file and every harness tool after its first turn (15 Oct). Also closed when the card's
24
+ * session closes (release) and after WARM_IDLE_MS idle.
25
+ *
26
+ * FLAREDECK_AGENT_WARM=0 turns it off.
27
+ */
28
+ export declare const WARM_IDLE_MS: number;
29
+ export declare const warmEnabled: () => boolean;
30
+ /** A queue read as an endless prompt: what is pushed is sent, and it ends only when closed. */
31
+ export declare function inbox<T>(): {
32
+ push(m: T): void;
33
+ end(): void;
34
+ /** End with an error, which the reader gets once it has read what came before. */
35
+ fail(e: unknown): void;
36
+ readonly ended: boolean;
37
+ [Symbol.asyncIterator](): AsyncGenerator<T>;
38
+ };
39
+ export type Inbox<T> = ReturnType<typeof inbox<T>>;
40
+ /**
41
+ * What must be the same for a turn to go to a kept session. Everything in the options except what
42
+ * is handed over per turn: tool servers (by name and address only), the model, resume, and the
43
+ * callbacks. The hooks count by shape — a different set of guards is a different session.
44
+ */
45
+ export declare function signatureOf(o: Options): string;
46
+ /** The options a kept session starts with: its callbacks reach whichever turn is current. */
47
+ export declare function trampolined(o: Options, current: {
48
+ options: Options;
49
+ }): Options;
50
+ export type UserMessage = {
51
+ type: 'user';
52
+ message: {
53
+ role: 'user';
54
+ content: unknown;
55
+ };
56
+ parent_tool_use_id: null;
57
+ origin?: {
58
+ kind: 'human';
59
+ };
60
+ priority?: 'next';
61
+ };
62
+ export declare const userMessage: (content: unknown, steer?: boolean) => UserMessage;
63
+ export declare class WarmSession {
64
+ readonly signature: string;
65
+ private onClosed;
66
+ readonly input: {
67
+ push(m: UserMessage): void;
68
+ end(): void;
69
+ /** End with an error, which the reader gets once it has read what came before. */
70
+ fail(e: unknown): void;
71
+ readonly ended: boolean;
72
+ [Symbol.asyncIterator](): AsyncGenerator<UserMessage, any, any>;
73
+ };
74
+ readonly query: ReturnType<typeof query>;
75
+ readonly current: {
76
+ options: Options;
77
+ };
78
+ /** The session's id, from its first message. */
79
+ id: string;
80
+ /** Its first message, given again at the start of every later turn so the harness sees it ready. */
81
+ init: SDKMessage | null;
82
+ busy: boolean;
83
+ dead: boolean;
84
+ model: string | undefined;
85
+ private sink;
86
+ private idle;
87
+ /** Why the process went, when it went with an error: the turn reading it gets that error. */
88
+ private error;
89
+ constructor(signature: string, options: Options, first: unknown, onClosed?: (w: WarmSession) => void);
90
+ /** Every message goes to the turn reading it; between turns there is no reader, and nothing should arrive. */
91
+ private pump;
92
+ /** A turn's messages: from now until the reader stops. A later turn starts with the session's first message again. */
93
+ begin(again?: boolean): AsyncIterable<SDKMessage>;
94
+ /** The turn is over. Kept, it waits for the next one; otherwise it is closed. */
95
+ ended(keep: boolean): void;
96
+ close(): void;
97
+ }
package/dist/warm.js ADDED
@@ -0,0 +1,187 @@
1
+ import { query } from '@anthropic-ai/claude-agent-sdk';
2
+ /**
3
+ * One Claude session kept running between turns.
4
+ *
5
+ * Every turn started a new Claude process and connected every tool server again — about four
6
+ * seconds before the model read a word, on each question typed at the pane and each comment on a
7
+ * card (FRIDAY, 30 Oct: 12:18:28 → 12:18:32). The conversation was resumed from disk each time.
8
+ * Now the process that finished a turn is kept, and the next turn on the same session is sent to
9
+ * it as a new message.
10
+ *
11
+ * Kept only when nothing could be different about it:
12
+ * · the same session, resumed (not forked), with no /goal;
13
+ * · the same checkout, subscription and settings — everything in the options but the tool
14
+ * servers, the model and the callbacks (see signatureOf);
15
+ * · nothing it started still running when its turn ended.
16
+ * The tool servers are swapped in for the new turn (setMcpServers: the same object or the same
17
+ * address is left alone), the model is set, and the permission check and the hooks are reached
18
+ * through the session to whichever turn is current — the session holds trampolines, never the
19
+ * first turn's functions.
20
+ *
21
+ * ONE at most, and closed before any other session starts. A session left open holds the
22
+ * harness's in-process tool servers, and the next session could not connect to them: FRIDAY lost
23
+ * send_file and every harness tool after its first turn (15 Oct). Also closed when the card's
24
+ * session closes (release) and after WARM_IDLE_MS idle.
25
+ *
26
+ * FLAREDECK_AGENT_WARM=0 turns it off.
27
+ */
28
+ export const WARM_IDLE_MS = Number(process.env['FLAREDECK_AGENT_WARM_IDLE_MS']) > 0 ? Number(process.env['FLAREDECK_AGENT_WARM_IDLE_MS']) : 10 * 60_000;
29
+ export const warmEnabled = () => process.env['FLAREDECK_AGENT_WARM'] !== '0';
30
+ /** A queue read as an endless prompt: what is pushed is sent, and it ends only when closed. */
31
+ export function inbox() {
32
+ const q = [];
33
+ let wake = null;
34
+ let done = false;
35
+ let failed = null;
36
+ return {
37
+ push(m) { if (done)
38
+ return; q.push(m); wake?.(); wake = null; },
39
+ end() { done = true; wake?.(); wake = null; },
40
+ /** End with an error, which the reader gets once it has read what came before. */
41
+ fail(e) { failed = e ?? new Error('the session ended'); done = true; wake?.(); wake = null; },
42
+ get ended() { return done; },
43
+ async *[Symbol.asyncIterator]() {
44
+ for (;;) {
45
+ while (q.length)
46
+ yield q.shift();
47
+ if (failed)
48
+ throw failed;
49
+ if (done)
50
+ return;
51
+ await new Promise((r) => { wake = r; });
52
+ }
53
+ },
54
+ };
55
+ }
56
+ /**
57
+ * What must be the same for a turn to go to a kept session. Everything in the options except what
58
+ * is handed over per turn: tool servers (by name and address only), the model, resume, and the
59
+ * callbacks. The hooks count by shape — a different set of guards is a different session.
60
+ */
61
+ export function signatureOf(o) {
62
+ const skip = new Set(['resume', 'forkSession', 'model', 'mcpServers', 'hooks', 'canUseTool']);
63
+ const rest = {};
64
+ for (const [k, v] of Object.entries(o))
65
+ if (!skip.has(k) && typeof v !== 'function')
66
+ rest[k] = v;
67
+ const servers = Object.entries(o.mcpServers ?? {})
68
+ .map(([n, c]) => [n, c.type === 'sdk' ? 'sdk' : `${c.type ?? 'stdio'}:${c.url ?? ''}`])
69
+ .sort();
70
+ const hooks = Object.entries(o.hooks ?? {}).map(([ev, ms]) => [ev, (ms ?? []).map((m) => [m.matcher ?? '', m.hooks.length])]).sort();
71
+ return JSON.stringify({ rest, servers, hooks }, (_k, v) => (typeof v === 'function' ? undefined : v));
72
+ }
73
+ /** The options a kept session starts with: its callbacks reach whichever turn is current. */
74
+ export function trampolined(o, current) {
75
+ const hooks = {};
76
+ for (const [ev, ms] of Object.entries(o.hooks ?? {})) {
77
+ hooks[ev] = (ms ?? []).map((m, i) => ({
78
+ ...m,
79
+ hooks: m.hooks.map((_h, j) => ((...a) => current.options.hooks[ev][i].hooks[j](...a))),
80
+ }));
81
+ }
82
+ return {
83
+ ...o,
84
+ hooks,
85
+ ...(o.canUseTool ? { canUseTool: (...a) => current.options.canUseTool(...a) } : {}),
86
+ };
87
+ }
88
+ export const userMessage = (content, steer = false) => ({
89
+ type: 'user', message: { role: 'user', content }, parent_tool_use_id: null,
90
+ ...(steer ? { origin: { kind: 'human' }, priority: 'next' } : {}),
91
+ });
92
+ export class WarmSession {
93
+ signature;
94
+ onClosed;
95
+ input = inbox();
96
+ query;
97
+ current;
98
+ /** The session's id, from its first message. */
99
+ id = '';
100
+ /** Its first message, given again at the start of every later turn so the harness sees it ready. */
101
+ init = null;
102
+ busy = false;
103
+ dead = false;
104
+ model;
105
+ sink = null;
106
+ idle = null;
107
+ /** Why the process went, when it went with an error: the turn reading it gets that error. */
108
+ error = null;
109
+ constructor(signature, options, first, onClosed = () => { }) {
110
+ this.signature = signature;
111
+ this.onClosed = onClosed;
112
+ this.current = { options };
113
+ this.model = options.model;
114
+ this.input.push(userMessage(first));
115
+ this.query = query({ prompt: this.input, options: trampolined(options, this.current) });
116
+ void this.pump();
117
+ }
118
+ /** Every message goes to the turn reading it; between turns there is no reader, and nothing should arrive. */
119
+ async pump() {
120
+ try {
121
+ for await (const m of this.query) {
122
+ const r = m;
123
+ if (!this.init && r['type'] === 'system' && r['subtype'] === 'init') {
124
+ this.init = m;
125
+ this.id = String(r['session_id'] ?? '');
126
+ }
127
+ this.sink?.push(m);
128
+ }
129
+ }
130
+ catch (e) {
131
+ this.error = e;
132
+ }
133
+ this.dead = true;
134
+ if (this.error)
135
+ this.sink?.fail(this.error);
136
+ else
137
+ this.sink?.end();
138
+ this.close();
139
+ }
140
+ /** A turn's messages: from now until the reader stops. A later turn starts with the session's first message again. */
141
+ begin(again = false) {
142
+ if (this.idle) {
143
+ clearTimeout(this.idle);
144
+ this.idle = null;
145
+ }
146
+ this.busy = true;
147
+ const sink = inbox();
148
+ this.sink = sink;
149
+ if (again && this.init)
150
+ sink.push(this.init);
151
+ if (this.dead) {
152
+ if (this.error)
153
+ sink.fail(this.error);
154
+ else
155
+ sink.end();
156
+ }
157
+ return sink;
158
+ }
159
+ /** The turn is over. Kept, it waits for the next one; otherwise it is closed. */
160
+ ended(keep) {
161
+ this.sink?.end();
162
+ this.sink = null;
163
+ this.busy = false;
164
+ if (!keep || this.dead) {
165
+ this.close();
166
+ return;
167
+ }
168
+ this.idle = setTimeout(() => this.close(), WARM_IDLE_MS);
169
+ this.idle.unref?.();
170
+ }
171
+ close() {
172
+ if (this.idle) {
173
+ clearTimeout(this.idle);
174
+ this.idle = null;
175
+ }
176
+ this.dead = true;
177
+ this.input.end();
178
+ try {
179
+ this.query.close();
180
+ }
181
+ catch { /* already gone */ }
182
+ const told = this.onClosed;
183
+ this.onClosed = () => { };
184
+ told(this);
185
+ }
186
+ }
187
+ //# sourceMappingURL=warm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warm.js","sourceRoot":"","sources":["../src/warm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onepointfour-packs/flaredeck-agent",
3
- "version": "0.2.211",
3
+ "version": "0.2.213",
4
4
  "description": "Run a FlareDeck agent on your own machine: it picks up cards assigned to it, works each one in a checkout of its own, and reports back on the card.",
5
5
  "type": "module",
6
6
  "bin": {