@onepointfour-packs/flaredeck-agent 0.2.38 → 0.2.40

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.
Files changed (87) hide show
  1. package/dist/agent.d.ts +42 -3
  2. package/dist/agent.js +84 -6
  3. package/dist/agent.js.map +1 -1
  4. package/dist/automode.js +43 -3
  5. package/dist/automode.js.map +1 -1
  6. package/dist/branches.d.ts +12 -1
  7. package/dist/branches.js +13 -3
  8. package/dist/branches.js.map +1 -1
  9. package/dist/browser.d.ts +52 -0
  10. package/dist/browser.js +185 -17
  11. package/dist/browser.js.map +1 -1
  12. package/dist/config.d.ts +6 -0
  13. package/dist/config.js +36 -2
  14. package/dist/config.js.map +1 -1
  15. package/dist/credentials.d.ts +217 -0
  16. package/dist/credentials.js +332 -0
  17. package/dist/credentials.js.map +1 -0
  18. package/dist/engine-antigravity.js +2 -0
  19. package/dist/engine-antigravity.js.map +1 -1
  20. package/dist/engine-claude.js +14 -2
  21. package/dist/engine-claude.js.map +1 -1
  22. package/dist/engine.d.ts +19 -0
  23. package/dist/engine.js.map +1 -1
  24. package/dist/environment.d.ts +13 -1
  25. package/dist/environment.js +35 -2
  26. package/dist/environment.js.map +1 -1
  27. package/dist/envtools.d.ts +58 -0
  28. package/dist/envtools.js +151 -0
  29. package/dist/envtools.js.map +1 -0
  30. package/dist/flaredeck.d.ts +24 -0
  31. package/dist/flaredeck.js +20 -0
  32. package/dist/flaredeck.js.map +1 -1
  33. package/dist/github.d.ts +2 -0
  34. package/dist/github.js +4 -0
  35. package/dist/github.js.map +1 -1
  36. package/dist/githubauth.d.ts +11 -1
  37. package/dist/githubauth.js +82 -16
  38. package/dist/githubauth.js.map +1 -1
  39. package/dist/hydrate.d.ts +114 -0
  40. package/dist/hydrate.js +79 -0
  41. package/dist/hydrate.js.map +1 -0
  42. package/dist/limits.d.ts +184 -0
  43. package/dist/limits.js +251 -0
  44. package/dist/limits.js.map +1 -0
  45. package/dist/main.js +178 -96
  46. package/dist/main.js.map +1 -1
  47. package/dist/picker.js +50 -4
  48. package/dist/picker.js.map +1 -1
  49. package/dist/preflight.d.ts +43 -0
  50. package/dist/preflight.js +133 -19
  51. package/dist/preflight.js.map +1 -1
  52. package/dist/providers.d.ts +10 -0
  53. package/dist/providers.js +23 -0
  54. package/dist/providers.js.map +1 -1
  55. package/dist/runs.d.ts +11 -3
  56. package/dist/runs.js +41 -4
  57. package/dist/runs.js.map +1 -1
  58. package/dist/serve.js +1061 -114
  59. package/dist/serve.js.map +1 -1
  60. package/dist/session.d.ts +51 -0
  61. package/dist/session.js +145 -0
  62. package/dist/session.js.map +1 -0
  63. package/dist/settle.d.ts +18 -0
  64. package/dist/settle.js +39 -0
  65. package/dist/settle.js.map +1 -0
  66. package/dist/signin.d.ts +47 -0
  67. package/dist/signin.js +331 -0
  68. package/dist/signin.js.map +1 -0
  69. package/dist/stream.d.ts +6 -0
  70. package/dist/stream.js +44 -3
  71. package/dist/stream.js.map +1 -1
  72. package/dist/subscriptions.d.ts +115 -0
  73. package/dist/subscriptions.js +140 -0
  74. package/dist/subscriptions.js.map +1 -0
  75. package/dist/ui.d.ts +11 -0
  76. package/dist/ui.js +6 -1
  77. package/dist/ui.js.map +1 -1
  78. package/dist/usage.d.ts +105 -0
  79. package/dist/usage.js +348 -0
  80. package/dist/usage.js.map +1 -0
  81. package/dist/wall.d.ts +35 -0
  82. package/dist/wall.js +94 -0
  83. package/dist/wall.js.map +1 -0
  84. package/dist/worktree.d.ts +19 -0
  85. package/dist/worktree.js +179 -4
  86. package/dist/worktree.js.map +1 -1
  87. package/package.json +1 -1
package/dist/agent.d.ts CHANGED
@@ -56,9 +56,21 @@ runs?: ToolSet,
56
56
  /** Recurring tasks. Asking is harmless: a person's approval is what starts one. */
57
57
  schedules?: ToolSet,
58
58
  /** The Jev gate, when this machine has a key for it. See jevguard.ts. */
59
- guard?: Partial<Record<HookEvent, HookCallbackMatcher[]>>): Options;
59
+ guard?: Partial<Record<HookEvent, HookCallbackMatcher[]>>,
60
+ /**
61
+ * Servers the harness builds per card rather than per agent — the browser, and the tool that
62
+ * starts the environment. A record, not two more positional arguments, because this signature
63
+ * taking eleven of them is exactly how they went missing: serve.ts built both, logged "open_page
64
+ * opens it by default", put them on engineContext.tools, and the engine had nowhere to pass them,
65
+ * so they were dropped in silence. Measured across 96 card logs: mcp__flaredeck__*, mcp__runs__*
66
+ * and the rest all appear; mcp__browser__* and mcp__env__* appear zero times. Anything added here
67
+ * from now on is mounted by being named, not by someone remembering to widen a call.
68
+ */
69
+ local?: Record<string, ToolSet | undefined>,
70
+ /** The Claude subscription FlareDeck picked for this run. Absent = this machine's own login. */
71
+ claudeToken?: string): Options;
60
72
  /** process.env minus the one variable that would silently switch us to metered billing. */
61
- export declare function subscriptionEnv(): Record<string, string | undefined>;
73
+ export declare function subscriptionEnv(claudeToken?: string): Record<string, string | undefined>;
62
74
  /**
63
75
  * A tool call the agent made or tried to make. The supervisor will read these; for now they are
64
76
  * what the CLI prints. Deriving them here rather than logging inline keeps the stream one thing
@@ -104,6 +116,33 @@ export type AgentEvent = {
104
116
  kind: 'usage';
105
117
  contextTokens: number;
106
118
  }
119
+ /**
120
+ * What the subscription behind this run has left.
121
+ *
122
+ * The ONLY live source: `SDKRateLimitEvent` arrives on the message stream while a run is going.
123
+ * There is no way to ask — `rate_limits` belongs to a control request the Query interface does
124
+ * not expose, and the init message carries none of it. So utilisation is known when a run
125
+ * happens to be told, and is stale between runs. Anything scheduling on it has to treat the
126
+ * reading's age as part of the reading.
127
+ *
128
+ * `status` matters more than it looks: 'allowed_warning' arrives while the plan is still
129
+ * WORKING. Treating it as 'rejected' would retire every subscription at roughly half capacity
130
+ * and leave the agents with nothing while every account still had headroom.
131
+ */
132
+ | {
133
+ kind: 'limits';
134
+ /** True only when the plan is actually OUT. A warning is not a rejection — see limits.ts. */
135
+ spent: boolean;
136
+ /** 'five_hour', 'seven_day', 'seven_day_opus'… the SDK's own names, unchanged. */
137
+ window?: string;
138
+ /** Epoch ms, from the server, so every agent reports the same absolute moment. */
139
+ resetsAt?: number;
140
+ /** 0-100 where the SDK gave it. */
141
+ utilization?: number;
142
+ /** Which signal saw it, so a surprising rotation can be traced back to its evidence. */
143
+ source?: string;
144
+ why?: string;
145
+ }
107
146
  /** The SDK compacted the context mid-turn. It keeps the session alive by throwing detail away. */
108
147
  | {
109
148
  kind: 'compacted';
@@ -125,4 +164,4 @@ export type AgentEvent = {
125
164
  * progress — steering it rather than interrupting and starting again, which would throw away
126
165
  * whatever it had worked out so far.
127
166
  */
128
- export declare function runTask(prompt: string, options: Options, onStart?: (q: ReturnType<typeof query>) => void): AsyncGenerator<AgentEvent>;
167
+ export declare function runTask(prompt: string | AsyncIterable<Record<string, unknown>>, options: Options, onStart?: (q: ReturnType<typeof query>) => void): AsyncGenerator<AgentEvent>;
package/dist/agent.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk';
2
2
  import { writeAutoModeSettings } from './automode.js';
3
3
  import { gitGuard } from './gitguard.js';
4
+ import { limitFromMessage, usageFromMessage, windowsFromRateLimit } from './limits.js';
4
5
  import { secretGuard } from './secretguard.js';
5
6
  import { sandboxGuard } from './sandbox.js';
6
7
  import { readToolNames } from './permissions.js';
@@ -167,7 +168,19 @@ runs,
167
168
  /** Recurring tasks. Asking is harmless: a person's approval is what starts one. */
168
169
  schedules,
169
170
  /** The Jev gate, when this machine has a key for it. See jevguard.ts. */
170
- guard) {
171
+ guard,
172
+ /**
173
+ * Servers the harness builds per card rather than per agent — the browser, and the tool that
174
+ * starts the environment. A record, not two more positional arguments, because this signature
175
+ * taking eleven of them is exactly how they went missing: serve.ts built both, logged "open_page
176
+ * opens it by default", put them on engineContext.tools, and the engine had nowhere to pass them,
177
+ * so they were dropped in silence. Measured across 96 card logs: mcp__flaredeck__*, mcp__runs__*
178
+ * and the rest all appear; mcp__browser__* and mcp__env__* appear zero times. Anything added here
179
+ * from now on is mounted by being named, not by someone remembering to widen a call.
180
+ */
181
+ local,
182
+ /** The Claude subscription FlareDeck picked for this run. Absent = this machine's own login. */
183
+ claudeToken) {
171
184
  return {
172
185
  systemPrompt: {
173
186
  type: 'preset',
@@ -180,7 +193,7 @@ guard) {
180
193
  // per-token key is a bill nobody agreed to — so the key is removed from the environment the
181
194
  // Claude process gets rather than merely warned about. `env` REPLACES the subprocess
182
195
  // environment, so everything else is passed through deliberately.
183
- env: subscriptionEnv(),
196
+ env: subscriptionEnv(claudeToken),
184
197
  // Isolation. Without this the agent inherits whatever Claude Code is configured with on this
185
198
  // box — on a developer's machine that meant ten other MCP servers and 473 tools, and Flaredeck
186
199
  // itself then timed out competing with them to connect. An agent must behave the same on every
@@ -228,7 +241,7 @@ guard) {
228
241
  * .mcp.json written into the repo, and pre-approving it in the CLI's own config, each of
229
242
  * which broke in its own way first.
230
243
  */
231
- mcpServers: mcpServers(config, token, { git, team, runs, schedules }, flaredeck),
244
+ mcpServers: mcpServers(config, token, { git, team, runs, schedules, ...local }, flaredeck),
232
245
  // Only the servers named above. A repo's own .mcp.json, agent frontmatter or plugin could
233
246
  // declare a server with the same name and shadow the one that carries the token; this makes
234
247
  // that impossible rather than merely unlikely.
@@ -278,10 +291,28 @@ guard) {
278
291
  };
279
292
  }
280
293
  /** process.env minus the one variable that would silently switch us to metered billing. */
281
- export function subscriptionEnv() {
282
- const { ANTHROPIC_API_KEY: _removed, ...rest } = process.env;
294
+ export function subscriptionEnv(claudeToken) {
295
+ /* BOTH, not just the API key. The SDK treats ANTHROPIC_AUTH_TOKEN as a credential source in
296
+ its own right — 43 references in the shipped CLI — so a stale one left in a shell can
297
+ out-compete the subscription this run was just assigned, and the only hint would be
298
+ `apiKeySource` in an init message nobody reads. Stripping one and not the other left a
299
+ second door open to exactly the billing surprise the first strip exists to prevent. */
300
+ const { ANTHROPIC_API_KEY: _key, ANTHROPIC_AUTH_TOKEN: _tok, ...rest } = process.env;
283
301
  return {
284
302
  ...rest,
303
+ /**
304
+ * Which Claude subscription this run bills against.
305
+ *
306
+ * Chosen per run by FlareDeck, which holds the tokens and the usage ledger, so one person's
307
+ * `claude setup-token` serves every machine instead of each one being logged in by hand —
308
+ * the thing that made three subscriptions across twenty agents a manual chore.
309
+ *
310
+ * Absent means "use whatever this machine is logged in as", which is the behaviour every
311
+ * agent had before and the right fallback: an unreachable vault must not stop work. What it
312
+ * must NEVER do is fall through to metered billing, and it cannot — ANTHROPIC_API_KEY is
313
+ * stripped above, deliberately, so that switch is never thrown by accident.
314
+ */
315
+ ...(claudeToken ? { CLAUDE_CODE_OAUTH_TOKEN: claudeToken } : {}),
285
316
  // Flaredeck is the one server that must be up before the first turn: an agent that starts
286
317
  // without it looks healthy and can't touch a card. The default first-turn wait gave up on it
287
318
  // after 5 seconds, so wait properly rather than racing a cold remote server.
@@ -302,7 +333,7 @@ export function subscriptionEnv() {
302
333
  * whatever it had worked out so far.
303
334
  */
304
335
  export async function* runTask(prompt, options, onStart) {
305
- const running = query({ prompt, options });
336
+ const running = query({ prompt: prompt, options });
306
337
  onStart?.(running);
307
338
  let lastContext = 0;
308
339
  for await (const message of running) {
@@ -315,6 +346,53 @@ export async function* runTask(prompt, options, onStart) {
315
346
  yield { kind: 'usage', contextTokens: n };
316
347
  }
317
348
  }
349
+ /**
350
+ * Detection lives in limits.ts, not here.
351
+ *
352
+ * A hand-rolled check on `rate_limit_event` — which is what this was — catches ONE of the
353
+ * four ways the SDK reports a cap. The others are an assistant error, the result text and a
354
+ * synthetic assistant message, and limits.ts matches those against the SDK's own exported
355
+ * prefix lists rather than invented strings. It also rules out warnings first: "You've used
356
+ * 80% of your limit" and "You've hit your limit" differ by one word and mean opposite
357
+ * things, and acting on the first would retire every subscription at half capacity.
358
+ */
359
+ /* Every rate_limit_event carries both windows' utilisation — the one usage source a
360
+ setup-token has. Reported whatever the status; a rejection is ALSO reported below as spent. */
361
+ for (const w of windowsFromRateLimit(message)) {
362
+ yield { kind: 'limits', spent: false, window: w.window, utilization: w.utilization, ...(w.resetsAt ? { resetsAt: w.resetsAt } : {}), source: 'rate_limit_event' };
363
+ }
364
+ const hit = limitFromMessage(message);
365
+ if (hit) {
366
+ yield {
367
+ kind: 'limits',
368
+ spent: true,
369
+ window: hit.window,
370
+ ...(typeof hit.resetsAt === 'number' ? { resetsAt: hit.resetsAt } : {}),
371
+ ...(typeof hit.utilization === 'number' ? { utilization: hit.utilization } : {}),
372
+ source: hit.source,
373
+ why: hit.why,
374
+ };
375
+ }
376
+ else {
377
+ /* A reading carries every window at once, so it becomes one event each. Windows whose
378
+ utilisation is null are skipped rather than sent as 0 — null means NOBODY CAN TELL, and
379
+ a plan that cannot be measured must not be routed to as though it were empty. */
380
+ const reading = usageFromMessage(message);
381
+ if (reading?.rateLimitsAvailable) {
382
+ for (const [window, w] of Object.entries(reading.windows)) {
383
+ if (typeof w.utilization !== 'number')
384
+ continue;
385
+ yield {
386
+ kind: 'limits',
387
+ spent: false,
388
+ window,
389
+ utilization: w.utilization,
390
+ ...(typeof w.resetsAt === 'number' ? { resetsAt: w.resetsAt } : {}),
391
+ source: 'usage_report',
392
+ };
393
+ }
394
+ }
395
+ }
318
396
  if (m['type'] === 'system' && m['subtype'] === 'compact_boundary')
319
397
  yield { kind: 'compacted' };
320
398
  if (m['type'] === 'system' && m['subtype'] === 'init') {
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA2E,MAAM,gCAAgC,CAAC;AAEhI,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;;;;;GAMG;AACH;;;;;;;GAOG;AACH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE;IACF,cAAc;IACd,EAAE;IACF,8FAA8F;IAC9F,kFAAkF;IAClF,mEAAmE;IACnE,EAAE;IACF,iFAAiF;IACjF,kGAAkG;IAClG,uFAAuF;IACvF,mEAAmE;IACnE,EAAE;IACF,6FAA6F;IAC7F,8FAA8F;IAC9F,6FAA6F;IAC7F,gGAAgG;IAChG,wEAAwE;CACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe,EAAE,KAAc;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACpE,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,2FAA2F;IAC3F,4CAA4C;IAC5C,EAAE;IACF,0EAA0E;IAC1E,4EAA4E;IAC5E,8FAA8F;IAC9F,yFAAyF;IACzF,cAAc;IACd,EAAE;IACF,0FAA0F;IAC1F,EAAE;IACF,8FAA8F;IAC9F,8FAA8F;IAC9F,+FAA+F;IAC/F,EAAE;IACF,iEAAiE;IACjE,gGAAgG;IAChG,6FAA6F;IAC7F,8FAA8F;IAC9F,8FAA8F;IAC9F,+EAA+E;IAC/E,2FAA2F;IAC3F,8FAA8F;IAC9F,8FAA8F;IAC9F,+FAA+F;IAC/F,+FAA+F;IAC/F,gCAAgC;IAChC,EAAE;IACF,6FAA6F;IAC7F,sFAAsF;IACtF,EAAE;IACF,4FAA4F;IAC5F,8FAA8F;IAC9F,+FAA+F;IAC/F,mEAAmE;IACnE,EAAE;IACF,+FAA+F;IAC/F,gEAAgE;IAChE,EAAE;IACF,8FAA8F;IAC9F,+FAA+F;IAC/F,4FAA4F;IAC5F,uBAAuB;CACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAKb;;;;;;;GAOG;AACH,SAAS,UAAU,CACjB,MAAc,EACd,KAAyB,EACzB,OAA4C,EAC5C,SAAmB;IAEnB,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;IACnD,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG;YAC9B,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACvF,2EAA2E;IAC3E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG;YAAE,SAAS;QAC1C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;YACpB,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChF,CAAC;IACJ,CAAC;IACD,OAAO,OAAgC,CAAC;AAC1C,CAAC;AAED,kGAAkG;AAClG,SAAS,UAAU,CACjB,GAAG,IAAuE;IAE1E,MAAM,GAAG,GAAsD,EAAE,CAAC;IAClE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAyC,EAAE,CAAC;YAC5F,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,OAAgB,EAChB,QAA0B,EAAE;AAC5B,gFAAgF;AAChF,OAAgB;AAChB,sFAAsF;AACtF,GAAa;AACb;+CAC+C;AAC/C,KAAc;AACd;kGACkG;AAClG,IAAc;AACd,6EAA6E;AAC7E,SAAmB;AACnB,sGAAsG;AACtG,IAAc;AACd,mFAAmF;AACnF,SAAmB;AACnB,yEAAyE;AACzE,KAAyD;IAEzD,OAAO;QACL,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;SACpF;QACD,GAAG,EAAE,MAAM,CAAC,IAAI;QAChB,gFAAgF;QAChF,qFAAqF;QACrF,4FAA4F;QAC5F,qFAAqF;QACrF,kEAAkE;QAClE,GAAG,EAAE,eAAe,EAAE;QACtB,6FAA6F;QAC7F,+FAA+F;QAC/F,+FAA+F;QAC/F,qFAAqF;QACrF,0FAA0F;QAC1F,8FAA8F;QAC9F,+FAA+F;QAC/F,iDAAiD;QACjD;;;;;;;;;;;;WAYG;QACH,cAAc,EAAE,MAAM;QACtB,yFAAyF;QACzF,4FAA4F;QAC5F,iFAAiF;QACjF,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACvC,cAAc,EAAE,CAAC,SAAS,CAAC;QAC3B,oFAAoF;QACpF,0FAA0F;QAC1F,eAAe,EAAE;YACf,yBAAyB,EAAE,IAAI;YAC/B,0FAA0F;YAC1F,oFAAoF;YACpF,cAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SACpC;QACD;;;;;;;;;;;WAWG;QACH,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC;QAChF,0FAA0F;QAC1F,4FAA4F;QAC5F,+CAA+C;QAC/C,eAAe,EAAE,IAAI;QACrB,+FAA+F;QAC/F,YAAY,EAAE;YACZ,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;YACtC,GAAG,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC;YACzB,gFAAgF;YAChF,uEAAuE;YACvE,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YAC1B,2FAA2F;YAC3F,yFAAyF;YACzF,2DAA2D;YAC3D,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;SAChC;QACD,2FAA2F;QAC3F,oEAAoE;QACpE,6FAA6F;QAC7F,2FAA2F;QAC3F,oFAAoF;QACpF,KAAK,EAAE,UAAU,CACf,QAAQ,CAAC,GAAG,EAAE,GAAuC,CAAC,CAAC,EACvD,WAAW,CAAC,GAAG,EAAE,GAAuC,CAAC,CAAC;QAC1D,sFAAsF;QACtF,2FAA2F;QAC3F,sBAAsB;QACtB,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,IAAI,EAAE,GAAG,EAAE,GAAuC,CAAC,CAAC,EAClF,KAAK,CACN;QACD,yFAAyF;QACzF,0FAA0F;QAC1F,4FAA4F;QAC5F,kFAAkF;QAClF,4FAA4F;QAC5F,0FAA0F;QAC1F,6FAA6F;QAC7F,0DAA0D;QAC1D,6FAA6F;QAC7F,6FAA6F;QAC7F,2DAA2D;QAC3D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC;QAC9E,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAChD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC,KAAK;gBACnB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE;gBAC5C,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QACD,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAC7D,OAAO;QACL,GAAG,IAAI;QACP,0FAA0F;QAC1F,6FAA6F;QAC7F,6EAA6E;QAC7E,+BAA+B,EAAE,IAAI,CAAC,iCAAiC,CAAC,IAAI,OAAO;QACnF,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO;QAC3C,4FAA4F;QAC5F,2FAA2F;QAC3F,qFAAqF;QACrF,+EAA+E;QAC/E,6BAA6B,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,GAAG;KAC5E,CAAC;AACJ,CAAC;AAgCD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAC5B,MAAc,EACd,OAAgB,EAChB,OAA+C;IAE/C,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,OAAoC,EAAE,CAAC;QACjE,MAAM,CAAC,GAAG,OAA8B,CAAC;QACzC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,WAAW,GAAG,CAAC,CAAC;gBAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,kBAAkB;YAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC/F,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;YACtD,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnF,0FAA0F;gBAC1F,YAAY,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,SAAS;gBAC5C,yFAAyF;gBACzF,0FAA0F;gBAC1F,iDAAiD;gBACjD,cAAc,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,SAAS;gBAChD,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE;aACjC,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzF,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,gFAAgF;oBAChF,8DAA8D;oBAC9D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC5B,oFAAoF;oBACpF,mFAAmF;oBACnF,qFAAqF;oBACrF,eAAe;oBACf,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBACzD,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gCAC3C,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gCACzD,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC;6BACvC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBAC5C,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAC9D,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;4BAC/D,OAAO,EAAE,IAAI;yBACd,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAChC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC;wBACzC,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE;4BACzC,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAClC,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;oBAAE,SAAS;gBAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;gBACxB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3F,IAAI,IAAI;oBAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,uFAAuF;YACvF,uFAAuF;YACvF,kEAAkE;YAClE,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS;gBAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACzB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/automode.js CHANGED
@@ -33,6 +33,9 @@ function environmentEntries(env) {
33
33
  'assignee, labels, notes — are metadata on a ticket: setting a card\'s Environment to ' +
34
34
  '"Production" records where a bug was seen and deploys nothing, touches no server and no ' +
35
35
  'database. Only commands and scripts aimed at the targets below are production operations.',
36
+ 'The project\'s own .flaredeck/start.sh, run with no argument or with `down`, starts or stops ' +
37
+ 'THIS worktree\'s own local test environment (its api, app and scratch database) and nothing ' +
38
+ 'else. Stopping it is routine cleanup, not interfering with anyone\'s workload.',
36
39
  `Sensitive remote targets: ${env.sensitiveTargets.join('; ')}. Treat anything else as ` +
37
40
  `ordinary development infrastructure.`,
38
41
  ];
@@ -56,14 +59,51 @@ export function writeAutoModeSettings(config, env = DEFAULT_ENVIRONMENT) {
56
59
  // exactly what an agent that must behave the same wherever it starts cannot depend on.
57
60
  // Its memory lives on its FlareDeck account instead (see `remember`), and the brief says so.
58
61
  autoMemoryEnabled: false,
62
+ /**
63
+ * When a usage limit stops a session, do NOT sit and wait for the window to reset.
64
+ *
65
+ * The SDK's own description: "wait for the limit to reset and continue the task
66
+ * automatically". For a person at a terminal that is a kindness; for an unattended
67
+ * fleet it is the thing that defeats rotation entirely — the run parks for hours
68
+ * holding a spent subscription, never reports the cap, and the other two plans sit
69
+ * idle while the card looks like it is still working. Ending lets the harness notice,
70
+ * mark the plan spent and route the retry elsewhere, which is the whole point.
71
+ */
72
+ autoContinueAtUsageLimit: false,
59
73
  permissions: {
60
74
  // Evaluated BEFORE the classifier and always prompt, even in auto mode — which in this
61
75
  // harness means they reach canUseTool, and so the team lead. These are the calls worth
62
76
  // a person's attention rather than a judgement in the moment.
63
77
  ask: ['Bash(git push *)', 'Bash(gh pr create *)'],
64
- // Evaluated before the classifier too, and nothing can override them — not the
65
- // classifier, not stated intent, not a hook.
66
- deny: [`Edit(//${'**'}/.flaredeck/**)`],
78
+ // Its own environment, up or down. The classifier refused `start.sh down` as "stopping
79
+ // services", which is how a day of environments was left running.
80
+ allow: [
81
+ 'Bash(bash .flaredeck/start.sh)', 'Bash(bash .flaredeck/start.sh *)',
82
+ 'Bash(.flaredeck/start.sh)', 'Bash(.flaredeck/start.sh *)',
83
+ ],
84
+ /**
85
+ * Nothing denied here, deliberately.
86
+ *
87
+ * This denied Edit and Write on every .flaredeck directory, so a script pre-approved to
88
+ * RUN could not also be rewritten — pre-approved execution plus write access is
89
+ * pre-approved arbitrary code, which is a real objection.
90
+ *
91
+ * It was still the wrong rule. `start_environment` tells an agent whose environment
92
+ * will not come up to "change the START SCRIPT so it works next time, commit it", and
93
+ * the whole point of that tool is that an agent with NO start script writes one. A deny
94
+ * rule cannot be overridden by the classifier, by stated intent, or by a hook, so the
95
+ * harness was instructing agents to do the one thing it made impossible — on the single
96
+ * most common reason a card stalls. One of the two had to go.
97
+ *
98
+ * And what the deny protected is thinner than it looks: the agent can write any other
99
+ * script and run it through the decider, so the rule bought a detour, not a boundary.
100
+ * What protects the irrecoverable thing — the repository — is gitGuard, which routes
101
+ * every push through `push_branch` and blocks remote reconfiguration, and sandboxGuard,
102
+ * which keeps writes inside this card's worktree. Those are PreToolUse hooks: they run
103
+ * BEFORE the permission mode and hold whatever it is set to, which is why they, and not
104
+ * a deny rule on a shell script, are the guardrail.
105
+ */
106
+ deny: [],
67
107
  },
68
108
  }, null, 2)}\n`, 'utf8');
69
109
  return path;
@@ -1 +1 @@
1
- {"version":3,"file":"automode.js","sourceRoot":"","sources":["../src/automode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAwBtD,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,YAAY,EAAE,uBAAuB;IACrC,cAAc,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;IACpG,yFAAyF;IACzF,qFAAqF;IACrF,gBAAgB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,gDAAgD,CAAC;IACvF,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,OAAO;QACL,WAAW;QACX,iBAAiB,GAAG,CAAC,YAAY,4DAA4D;YAC3F,yFAAyF;QAC3F,GAAG,CAAC,GAAG,CAAC,SAAS;YACf,CAAC,CAAC;gBACE,qFAAqF;gBACrF,uFAAuF;gBACvF,uDAAuD;gBACvD,kFAAkF;oBAChF,oFAAoF;oBACpF,mFAAmF;oBACnF,qFAAqF;oBACrF,6EAA6E;aAChF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,6BAA6B,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5D,2FAA2F;YACzF,0FAA0F;YAC1F,sFAAsF;YACtF,uFAAuF;YACvF,0FAA0F;YAC1F,2FAA2F;QAC7F,6BAA6B,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;YACrF,sCAAsC;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,MAAmB,mBAAmB;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CACX,IAAI,EACJ,GAAG,IAAI,CAAC,SAAS,CACf;QACE,QAAQ,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;QAClD,oEAAoE;QACpE,qFAAqF;QACrF,uFAAuF;QACvF,6FAA6F;QAC7F,iBAAiB,EAAE,KAAK;QACxB,WAAW,EAAE;YACX,uFAAuF;YACvF,uFAAuF;YACvF,8DAA8D;YAC9D,GAAG,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;YACjD,+EAA+E;YAC/E,6CAA6C;YAC7C,IAAI,EAAE,CAAC,UAAU,IAAI,iBAAiB,CAAC;SACxC;KACF,EACD,IAAI,EACJ,CAAC,CACF,IAAI,EACL,MAAM,CACP,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"automode.js","sourceRoot":"","sources":["../src/automode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAwBtD,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,YAAY,EAAE,uBAAuB;IACrC,cAAc,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;IACpG,yFAAyF;IACzF,qFAAqF;IACrF,gBAAgB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,gDAAgD,CAAC;IACvF,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,OAAO;QACL,WAAW;QACX,iBAAiB,GAAG,CAAC,YAAY,4DAA4D;YAC3F,yFAAyF;QAC3F,GAAG,CAAC,GAAG,CAAC,SAAS;YACf,CAAC,CAAC;gBACE,qFAAqF;gBACrF,uFAAuF;gBACvF,uDAAuD;gBACvD,kFAAkF;oBAChF,oFAAoF;oBACpF,mFAAmF;oBACnF,qFAAqF;oBACrF,6EAA6E;aAChF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,6BAA6B,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5D,2FAA2F;YACzF,0FAA0F;YAC1F,sFAAsF;YACtF,uFAAuF;YACvF,0FAA0F;YAC1F,2FAA2F;QAC7F,+FAA+F;YAC7F,8FAA8F;YAC9F,gFAAgF;QAClF,6BAA6B,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;YACrF,sCAAsC;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,MAAmB,mBAAmB;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CACX,IAAI,EACJ,GAAG,IAAI,CAAC,SAAS,CACf;QACE,QAAQ,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;QAClD,oEAAoE;QACpE,qFAAqF;QACrF,uFAAuF;QACvF,6FAA6F;QAC7F,iBAAiB,EAAE,KAAK;QACxB;;;;;;;;;WASG;QACH,wBAAwB,EAAE,KAAK;QAC/B,WAAW,EAAE;YACX,uFAAuF;YACvF,uFAAuF;YACvF,8DAA8D;YAC9D,GAAG,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;YACjD,uFAAuF;YACvF,kEAAkE;YAClE,KAAK,EAAE;gBACL,gCAAgC,EAAE,kCAAkC;gBACpE,2BAA2B,EAAE,6BAA6B;aAC3D;YACD;;;;;;;;;;;;;;;;;;;;;eAqBG;YACH,IAAI,EAAE,EAAE;SACT;KACF,EACD,IAAI,EACJ,CAAC,CACF,IAAI,EACL,MAAM,CACP,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -22,4 +22,15 @@ export type RemoteBranch = {
22
22
  * possible it falls back to the remote's plain list, undated and unsorted, rather than nothing.
23
23
  */
24
24
  export declare function remoteBranches(repo: string): Promise<RemoteBranch[]>;
25
- export declare function askBaseBranch(repo: string, say: (s: string) => void): Promise<string | null>;
25
+ export declare function askBaseBranch(repo: string, say: (s: string) => void,
26
+ /**
27
+ * The caller's reader, when it has one.
28
+ *
29
+ * Opening a second readline on one stdin and then CLOSING it pauses stdin for whatever asks
30
+ * next — so `login` chose a branch, printed the next step, and ended silently, with the next
31
+ * keystroke landing in the shell. The same fault was fixed in oauth.ts and missed here.
32
+ * Borrow when offered, and never close what was borrowed.
33
+ */
34
+ borrowed?: {
35
+ question: (q: string) => Promise<string>;
36
+ }): Promise<string | null>;
package/dist/branches.js CHANGED
@@ -42,7 +42,16 @@ export async function remoteBranches(repo) {
42
42
  }
43
43
  /** The usual names for the branch work merges into — pulled forward, but only when recent. */
44
44
  const LIKELY = ['dev', 'develop', 'development', 'main', 'master', 'trunk'];
45
- export async function askBaseBranch(repo, say) {
45
+ export async function askBaseBranch(repo, say,
46
+ /**
47
+ * The caller's reader, when it has one.
48
+ *
49
+ * Opening a second readline on one stdin and then CLOSING it pauses stdin for whatever asks
50
+ * next — so `login` chose a branch, printed the next step, and ended silently, with the next
51
+ * keystroke landing in the shell. The same fault was fixed in oauth.ts and missed here.
52
+ * Borrow when offered, and never close what was borrowed.
53
+ */
54
+ borrowed) {
46
55
  const branches = await remoteBranches(repo);
47
56
  const all = branches.map((b) => b.name);
48
57
  if (all.length === 0) {
@@ -60,7 +69,7 @@ export async function askBaseBranch(repo, say) {
60
69
  offered.forEach((b, i) => say(` ${String(i + 1).padStart(2)}. ${b.name.padEnd(width)}${b.when ? ` ${b.when}` : ''}`));
61
70
  if (all.length > offered.length)
62
71
  say(` … and ${all.length - offered.length} more`);
63
- const rl = createInterface({ input: process.stdin, output: process.stdout });
72
+ const rl = borrowed ?? createInterface({ input: process.stdin, output: process.stdout });
64
73
  try {
65
74
  const answer = (await rl.question(`\nNumber, or type a branch name [${offered[0]?.name}]: `)).trim();
66
75
  if (!answer)
@@ -75,7 +84,8 @@ export async function askBaseBranch(repo, say) {
75
84
  return offered[0]?.name ?? null;
76
85
  }
77
86
  finally {
78
- rl.close();
87
+ if (!borrowed)
88
+ rl.close();
79
89
  }
80
90
  }
81
91
  //# sourceMappingURL=branches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"branches.js","sourceRoot":"","sources":["../src/branches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../src/branches.ts"],"names":[],"mappings":"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"}
package/dist/browser.d.ts CHANGED
@@ -1,5 +1,33 @@
1
+ import { type SavedSession } from './session.js';
1
2
  import type { EnvContract } from './environment.js';
2
3
  export declare const BROWSER_TOOL_NAMES: string[];
4
+ /**
5
+ * Keep a session a person just signed in with, where the browser tools will find it: FlareDeck.
6
+ *
7
+ * Exported because the sign-in happens OUTSIDE a card — a person runs it when an agent asks —
8
+ * and it has to land under the same identity `open_page` reads. It is keyed centrally, by the
9
+ * HOST when the session is for a real site, so one sign-in serves every agent in the workspace
10
+ * that needs that site. The session is asked where it came from rather than the caller being made
11
+ * to say, which is why this needs no new argument.
12
+ *
13
+ * STILL SYNCHRONOUS, and that is now a compromise rather than a free win. The vault write is
14
+ * necessarily asynchronous, so this starts it and returns the id for the caller to print; if the
15
+ * write ultimately fails, nothing is saved anywhere, because there is no longer a local copy by
16
+ * design. The card then meets the sign-in wall again on its next look and the existing machinery
17
+ * asks for a fresh one — the same path an expired session takes, so the failure degrades into a
18
+ * case that is already handled rather than a new one.
19
+ *
20
+ * `rememberSignInNow` is the same thing awaited, for a caller that wants to report the outcome.
21
+ * Both of this function's callers (main.ts, serve.ts) belong to other work; switching them over
22
+ * is a one-line change each and would turn "Signed in." into the truth rather than a hope.
23
+ */
24
+ export declare function rememberSignIn(repo: string, part: string, session: SavedSession): string;
25
+ /** `rememberSignIn`, awaited: the credential id and whether it actually reached FlareDeck. */
26
+ export declare function rememberSignInNow(repo: string, part: string, session: SavedSession, onNote?: (t: string) => void): Promise<{
27
+ id: string;
28
+ ok: boolean;
29
+ message?: string;
30
+ }>;
3
31
  /** What this page is, independent of where it happens to be today. See the note on this module. */
4
32
  export declare function siteIdentity(repo: string, part: string): string;
5
33
  export type BrowserDeps = {
@@ -13,12 +41,36 @@ export type BrowserDeps = {
13
41
  * cannot tell "my change is wrong" from "it was already like that".
14
42
  */
15
43
  sites?: () => Record<string, string>;
44
+ /** The part found to serve the app's page, when the harness could tell (see webPart). */
45
+ defaultPart?: () => string | undefined;
16
46
  /** Credentials the project published, so nobody types a password into a model. */
17
47
  contract: () => EnvContract | undefined;
18
48
  /** Where a screenshot should land so the agent can attach it to a card. */
19
49
  cwd: string;
20
50
  onNote: (text: string) => void;
21
51
  };
52
+ /**
53
+ * How every browser here is launched.
54
+ *
55
+ * `headless: true` on its own picks `chromium-headless-shell` whenever that build is present,
56
+ * and a Google sign-in cannot be completed in it — see installChromium. `channel: 'chromium'`
57
+ * asks for the full browser and still runs it with no window, which is the combination measured
58
+ * to work. Without this line the installer change below fixes nothing on any machine that
59
+ * already has the shell.
60
+ */
61
+ export declare const HEADLESS_FULL: {
62
+ readonly headless: true;
63
+ readonly channel: "chromium";
64
+ };
65
+ /**
66
+ * Make sure the browser is on this machine, once.
67
+ *
68
+ * Called at startup so the download happens while the agent is idle rather than in the middle of
69
+ * the first card that needs eyes — 186MB is a long pause to take with a card in hand. Memoised,
70
+ * because the lazy path still calls it: a card arriving mid-download must wait for the download
71
+ * in flight, not start a second one.
72
+ */
73
+ export declare function ensureBrowser(onNote?: (t: string) => void): Promise<boolean>;
22
74
  export declare function browserTools(deps: BrowserDeps): {
23
75
  server: unknown;
24
76
  toolNames: string[];