@onepointfour-packs/flaredeck-agent 0.2.88 → 0.2.90

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/agent.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk';
2
+ import { cardEnv } from './cardmess.js';
2
3
  import { writeAutoModeSettings } from './automode.js';
3
4
  import { gitGuard } from './gitguard.js';
4
5
  import { limitFromMessage, usageFromMessage, windowsFromRateLimit } from './limits.js';
@@ -89,8 +90,10 @@ export const AGENT_BRIEF = [
89
90
  ' · What you START, you STOP. A scratch database or server you launch yourself is yours to',
90
91
  ' shut down when you are done with it — before the turn that finishes with it ends. Stop',
91
92
  ' the server BEFORE deleting its folder: one left running on a deleted folder wrote 110 GB',
92
- ' of errors in an hour and filled the machine. Name scratch after the card (/tmp/kd1532-…)',
93
- ' so the harness can clear what you miss.',
93
+ ' of errors in an hour and filled the machine. Scratch — a throwaway database, a patch, a',
94
+ ' build log, a copy of the app — goes in $FLAREDECK_SCRATCH (it is also $TMPDIR), never',
95
+ ' straight into /tmp: that folder is this card\'s own, and the harness removes it, and',
96
+ ' stops whatever you left running, when the card\'s checkout is released.',
94
97
  ' · Something that needs DOING and is not yours to do — an email only a person can send, a',
95
98
  ' reply to a customer, a change in a console you cannot open — is not finished by noticing',
96
99
  ' it. In the SAME turn, put it in somebody\'s hands: say on the card exactly what has to be',
@@ -204,7 +207,9 @@ claudeToken) {
204
207
  // per-token key is a bill nobody agreed to — so the key is removed from the environment the
205
208
  // Claude process gets rather than merely warned about. `env` REPLACES the subprocess
206
209
  // environment, so everything else is passed through deliberately.
207
- env: subscriptionEnv(claudeToken),
210
+ // On a card: tagged with its checkout and given a scratch folder of its own, so what it
211
+ // starts and what it scatters can be found and cleared when the checkout goes. See cardmess.ts.
212
+ env: { ...subscriptionEnv(claudeToken), ...(sandbox ? cardEnv(sandbox) : {}) },
208
213
  // Isolation. Without this the agent inherits whatever Claude Code is configured with on this
209
214
  // box — on a developer's machine that meant ten other MCP servers and 473 tools, and Flaredeck
210
215
  // itself then timed out competing with them to connect. An agent must behave the same on every
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,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvF,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,4FAA4F;IAC5F,4FAA4F;IAC5F,8FAA8F;IAC9F,8FAA8F;IAC9F,6CAA6C;IAC7C,4FAA4F;IAC5F,8FAA8F;IAC9F,+FAA+F;IAC/F,4FAA4F;IAC5F,+FAA+F;IAC/F,4FAA4F;IAC5F,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;AACzD;;;;;;;;GAQG;AACH,KAA2C;AAC3C,gGAAgG;AAChG,WAAoB;IAEpB,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,CAAC,WAAW,CAAC;QACjC,6FAA6F;QAC7F,+FAA+F;QAC/F,+FAA+F;QAC/F,qFAAqF;QACrF,0FAA0F;QAC1F,8FAA8F;QAC9F,+FAA+F;QAC/F,iDAAiD;QACjD;;;;;;;;;;;;WAYG;QACH;;;;;;;;;;;;;WAaG;QACH,cAAc,EAAE,mBAAmB;QACnC,+BAA+B,EAAE,IAAI;QACrC,yFAAyF;QACzF,4FAA4F;QAC5F,iFAAiF;QACjF,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACvC,cAAc,EAAE,CAAC,SAAS,CAAC;QAC3B,2FAA2F;QAC3F,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,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,GAAG,KAAK,EAAE,EAAE,SAAS,CAAC;QAC1F,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;QAC/E,wFAAwF;QACxF,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3C,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,CAAC,WAAoB;IAClD;;;;6FAIyF;IACzF,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrF,OAAO;QACL,GAAG,IAAI;QACP;;;;;;;;;;;WAWG;QACH,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,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;AA+DD;;;;;;GAMG;AACH,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACnC,MAAwB,EACxB,QAAiC,EACjC,EAAU,EACV,WAA0B,GAAG,EAAE,GAAE,CAAC;IAElC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,IAAqC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,KAAiC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9H,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACzC,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,qFAAqF;YACrF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrB,yFAAyF;YACzF,8FAA8F;YAC9F,IAAI,CAAC;gBAAC,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAC/F,IAAI,CAAC;gBAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAI,MAAwB,EAAE,GAAW,EAAE,QAAuB,GAAG,EAAE,GAAE,CAAC;IACvG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAyC,IAAI,CAAC;IACtD,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAA4B,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,KAAK,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC;gBAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;YACxF,IAAI,CAAC;gBAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,CAAC;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/F,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAC5B,MAAuD,EACvD,OAAgB,EAChB,OAA+C;AAC/C,kFAAkF;AAClF,QAAiB;IAEjB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,MAA+C,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,QAAQ,CAAC,OAAoC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,OAAoC,CAAC;IACzC,MAAM,QAAQ,GAAG,cAAc,CAC7B,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAE,CAAyB,CAAC,MAAM,CAAC,KAAK,QAAQ,EACtD,sBAAsB;IACtB,8FAA8F;IAC9F,sFAAsF;IACtF,+FAA+F;IAC/F,gFAAgF;IAChF,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;IACF,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QACrC,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;;;;;;;;;WASG;QACH;yGACiG;QACjG,KAAK,MAAM,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACpK,CAAC;QACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM;gBACJ,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN;;+FAEmF;YACnF,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1D,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;wBAAE,SAAS;oBAChD,MAAM;wBACJ,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,KAAK;wBACZ,MAAM;wBACN,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnE,MAAM,EAAE,cAAc;qBACvB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,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,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACvD,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;gBAC1D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,yFAAyF;IACzF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,QAAQ,mFAAmF,EAAE,CAAC;QACnJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3G,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,EAAE,CAA4B,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/H,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const CHECKOUT_TAG = "FLAREDECK_CHECKOUT";
2
+ /**
3
+ * The card's scratch folder. Under /tmp and short on purpose: a database's socket path has a
4
+ * limit of about a hundred characters, and the system's own temp folder on a Mac is most of that.
5
+ */
6
+ export declare function scratchFor(checkout: string): string;
7
+ /** What a session on this checkout runs with. */
8
+ export declare function cardEnv(checkout: string): Record<string, string>;
9
+ export type Tagged = {
10
+ pid: number;
11
+ command: string;
12
+ env: string;
13
+ };
14
+ /** Does this process belong to the card? By its tag, or by naming the checkout or scratch folder. */
15
+ export declare function belongsTo(p: Tagged, checkout: string): boolean;
16
+ /** The agent's own session. While one is alive on the checkout, the card is in use: nothing is cleared. */
17
+ export declare function isSession(p: Tagged): boolean;
18
+ /**
19
+ * This user's processes with their environment. Linux gives it in /proc. macOS gives it through
20
+ * `ps e` for everything but Apple's own binaries (a bare /bin/sh hides it) — which is why the
21
+ * command line is matched as well, and why stopping a shell's children is enough to end it.
22
+ */
23
+ export declare function processes(): Promise<Tagged[]>;
24
+ /**
25
+ * Stop what the card left running and remove its scratch folder. Called just before the checkout
26
+ * itself is removed. Never throws. Returns what it did, for the log.
27
+ */
28
+ export declare function clearCardMess(checkout: string, onStep?: (text: string) => void, list?: () => Promise<Tagged[]>, kill?: (pids: number[]) => Promise<void>): Promise<{
29
+ stopped: number;
30
+ scratch: boolean;
31
+ inUse: boolean;
32
+ }>;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * What a card leaves on the machine besides code — and taking it away when the card's checkout
3
+ * is released. General: it does not know what a project is, what its scratch is called, or what
4
+ * kind of server it runs.
5
+ *
6
+ * A TAG. Every session on a card runs with FLAREDECK_CHECKOUT=<its checkout>. Whatever the
7
+ * agent starts inherits it: a database, a dev server, a watcher, a script left in the
8
+ * background. That is how they are found later — not by name, not by guessing.
9
+ * A FOLDER. The session's TMPDIR is a folder of the card's own (scratchFor). Scratch goes there
10
+ * because that is where "temp" now is; the agent is told so.
11
+ *
12
+ * When the checkout is released (worktree.ts — idle, clean and pushed), everything carrying the
13
+ * tag is stopped FIRST and the folder is removed SECOND. That order is the point: a database left
14
+ * running on a deleted folder is what wrote 110 GB of errors in an hour (13 Oct).
15
+ *
16
+ * Code is never touched here. The checkout is git's and the release rules are worktree.ts's.
17
+ */
18
+ import { execFile } from 'node:child_process';
19
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync } from 'node:fs';
20
+ import { basename } from 'node:path';
21
+ export const CHECKOUT_TAG = 'FLAREDECK_CHECKOUT';
22
+ /**
23
+ * The card's scratch folder. Under /tmp and short on purpose: a database's socket path has a
24
+ * limit of about a hundred characters, and the system's own temp folder on a Mac is most of that.
25
+ */
26
+ export function scratchFor(checkout) {
27
+ return `/tmp/fd-${basename(checkout.replace(/\/+$/, ''))}`;
28
+ }
29
+ /** What a session on this checkout runs with. */
30
+ export function cardEnv(checkout) {
31
+ const scratch = scratchFor(checkout);
32
+ try {
33
+ mkdirSync(scratch, { recursive: true });
34
+ }
35
+ catch { /* the session still runs; scratch falls back to wherever it is put */ }
36
+ return { [CHECKOUT_TAG]: checkout, TMPDIR: scratch, FLAREDECK_SCRATCH: scratch };
37
+ }
38
+ /** Does this process belong to the card? By its tag, or by naming the checkout or scratch folder. */
39
+ export function belongsTo(p, checkout) {
40
+ const scratch = scratchFor(checkout);
41
+ const tagged = (text) => {
42
+ const i = text.indexOf(`${CHECKOUT_TAG}=${checkout}`);
43
+ // The whole path: agent-abc is not agent-abcdef.
44
+ return i >= 0 && !/[^\s\0]/.test(text[i + CHECKOUT_TAG.length + 1 + checkout.length] ?? '');
45
+ };
46
+ if (tagged(p.env) || tagged(p.command))
47
+ return true;
48
+ return [checkout, scratch, `/private${scratch}`].some((path) => {
49
+ const i = p.command.indexOf(path);
50
+ return i >= 0 && !/[A-Za-z0-9_-]/.test(p.command[i + path.length] ?? '');
51
+ });
52
+ }
53
+ /** The agent's own session. While one is alive on the checkout, the card is in use: nothing is cleared. */
54
+ export function isSession(p) {
55
+ return /claude-agent-sdk|flaredeck-agent/.test(p.command.split(/\s+/).slice(0, 2).join(' '));
56
+ }
57
+ const run = (file, args) => new Promise((resolve) => execFile(file, args, { maxBuffer: 64 * 1024 * 1024 }, (_e, stdout) => resolve(String(stdout ?? ''))));
58
+ /**
59
+ * This user's processes with their environment. Linux gives it in /proc. macOS gives it through
60
+ * `ps e` for everything but Apple's own binaries (a bare /bin/sh hides it) — which is why the
61
+ * command line is matched as well, and why stopping a shell's children is enough to end it.
62
+ */
63
+ export async function processes() {
64
+ const out = [];
65
+ if (process.platform === 'linux') {
66
+ for (const name of readdirSync('/proc')) {
67
+ if (!/^\d+$/.test(name))
68
+ continue;
69
+ try {
70
+ const env = readFileSync(`/proc/${name}/environ`, 'utf8');
71
+ const command = readFileSync(`/proc/${name}/cmdline`, 'utf8').replace(/\0/g, ' ').trim();
72
+ if (command)
73
+ out.push({ pid: Number(name), command, env });
74
+ }
75
+ catch { /* not ours, or gone */ }
76
+ }
77
+ return out;
78
+ }
79
+ const uid = String(process.getuid?.() ?? '');
80
+ const text = await run('ps', ['eww', '-U', uid, '-o', 'pid=,command=']);
81
+ for (const line of text.split('\n')) {
82
+ const m = /^\s*(\d+)\s+(.*)$/.exec(line);
83
+ // The environment follows the command on the same line; one string serves for both.
84
+ if (m)
85
+ out.push({ pid: Number(m[1]), command: m[2], env: m[2] });
86
+ }
87
+ return out;
88
+ }
89
+ async function stop(pids) {
90
+ for (const pid of pids) {
91
+ try {
92
+ process.kill(pid, 'SIGTERM');
93
+ }
94
+ catch { /* gone */ }
95
+ }
96
+ await new Promise((r) => setTimeout(r, 4000));
97
+ for (const pid of pids) {
98
+ try {
99
+ process.kill(pid, 0);
100
+ process.kill(pid, 'SIGKILL');
101
+ }
102
+ catch { /* it went */ }
103
+ }
104
+ }
105
+ /**
106
+ * Stop what the card left running and remove its scratch folder. Called just before the checkout
107
+ * itself is removed. Never throws. Returns what it did, for the log.
108
+ */
109
+ export async function clearCardMess(checkout, onStep = () => { }, list = processes, kill = stop) {
110
+ try {
111
+ const mine = (await list()).filter((p) => p.pid !== process.pid && belongsTo(p, checkout));
112
+ // A live session on it means the card is being worked this minute, whatever the clock says.
113
+ if (mine.some((p) => isSession(p) && new RegExp(`${CHECKOUT_TAG}=`).test(p.env)))
114
+ return { stopped: 0, scratch: false, inUse: true };
115
+ if (mine.length)
116
+ await kill(mine.map((p) => p.pid));
117
+ const scratch = scratchFor(checkout);
118
+ const had = existsSync(scratch);
119
+ if (had)
120
+ rmSync(scratch, { recursive: true, force: true });
121
+ if (mine.length || had) {
122
+ onStep(`cleared what ${basename(checkout)} left behind: ${mine.length} process${mine.length === 1 ? '' : 'es'} stopped${had ? ', its scratch folder removed' : ''}`);
123
+ }
124
+ return { stopped: mine.length, scratch: had, inUse: false };
125
+ }
126
+ catch {
127
+ return { stopped: 0, scratch: false, inUse: false };
128
+ }
129
+ }
130
+ //# sourceMappingURL=cardmess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardmess.js","sourceRoot":"","sources":["../src/cardmess.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { imageBlocks } from './images.js';
1
2
  import { buildOptions, GOAL_TURN_CAP, runTask } from './agent.js';
2
3
  /**
3
4
  * The Claude Agent SDK, behind the common interface.
@@ -47,13 +48,16 @@ export class ClaudeEngine {
47
48
  * back on. The agent then concludes FlareDeck is down. 'next' lands at the tool boundary
48
49
  * with nothing cut off.
49
50
  */
50
- async steer(text) {
51
+ async steer(text, images) {
51
52
  if (!live?.streamInput)
52
53
  return false;
54
+ // A pasted picture goes in the message as a picture. See images.ts.
55
+ const pictures = images?.length ? imageBlocks(images).blocks : [];
56
+ const content = pictures.length ? [{ type: 'text', text }, ...pictures] : text;
53
57
  await live.streamInput((async function* () {
54
58
  yield {
55
59
  type: 'user',
56
- message: { role: 'user', content: text },
60
+ message: { role: 'user', content },
57
61
  parent_tool_use_id: null,
58
62
  // Always human: BOTH existing callers stamp it that way on purpose — a line typed
59
63
  // at the pane and the harness's own wrap-up nudge each deserve a person's weight,
@@ -1 +1 @@
1
- {"version":3,"file":"engine-claude.js","sourceRoot":"","sources":["../src/engine-claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-claude.js","sourceRoot":"","sources":["../src/engine-claude.ts"],"names":[],"mappings":"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"}
package/dist/engine.d.ts CHANGED
@@ -133,7 +133,8 @@ export type EngineRun = {
133
133
  * checks gets to say "this engine can't be steered" rather than silently dropping what was
134
134
  * typed, which is the sort of thing nobody notices until it matters.
135
135
  */
136
- steer(text: string): Promise<boolean>;
136
+ /** `images` are files the person pasted with the line; an engine that cannot show them ignores them. */
137
+ steer(text: string, images?: string[]): Promise<boolean>;
137
138
  /** Stop this turn. */
138
139
  stop(): Promise<void>;
139
140
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAmJA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAA6C;IAC3E,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjG,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtE,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACjC,CAAC;IACD,6FAA6F;IAC7F,4EAA4E;IAC5E,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,oCAAoC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAoJA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAA6C;IAC3E,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjG,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtE,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACjC,CAAC;IACD,6FAA6F;IAC7F,4EAA4E;IAC5E,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,oCAAoC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;CAAG"}
@@ -0,0 +1,29 @@
1
+ /** The API's own limit per image is 5 MB; a screenshot is a fraction of that. */
2
+ export declare const MAX_IMAGE_BYTES: number;
3
+ export declare const MAX_IMAGES = 6;
4
+ export type Attached = {
5
+ /** What the person typed, with each picture's path replaced by "[Image #n]". */
6
+ text: string;
7
+ /** The files, in order — #1 first. */
8
+ paths: string[];
9
+ };
10
+ /** Find the image files named in a typed line. A path that is not a file there is left as text. */
11
+ export declare function findImages(typed: string, isFile?: (path: string) => boolean): Attached;
12
+ export type ImageBlock = {
13
+ type: 'image';
14
+ source: {
15
+ type: 'base64';
16
+ media_type: string;
17
+ data: string;
18
+ };
19
+ };
20
+ /** The pictures as message content. One that cannot be read, or is too big, is skipped and named. */
21
+ export declare function imageBlocks(paths: string[]): {
22
+ blocks: ImageBlock[];
23
+ skipped: string[];
24
+ };
25
+ /**
26
+ * For a line that starts a NEW turn, where the prompt is text: the pictures are named so the
27
+ * agent opens them itself, which its Read tool does as pictures.
28
+ */
29
+ export declare function namedForAgent(a: Attached): string;
package/dist/images.js ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * An image pasted into the pane reaches the agent as an image, the way it does in Claude Code.
3
+ *
4
+ * A terminal cannot paste a picture: what arrives is the path of the file the terminal saved it
5
+ * to ("/var/folders/…/clipboard-2026-10-13-123006.png"), or of a screenshot dragged in. Sent on
6
+ * as text, the agent got a path and had to work out that it should go and open it — and a session
7
+ * confined to its checkout might not be allowed to. So the path is recognised here, the file is
8
+ * read, and the picture goes in the message itself; the pane shows "[Image #1]" in its place.
9
+ */
10
+ import { existsSync, readFileSync, statSync } from 'node:fs';
11
+ import { homedir } from 'node:os';
12
+ const TYPES = { png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', gif: 'image/gif', webp: 'image/webp' };
13
+ /** The API's own limit per image is 5 MB; a screenshot is a fraction of that. */
14
+ export const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
15
+ export const MAX_IMAGES = 6;
16
+ // A path: quoted, or bare with spaces escaped by a backslash, as a terminal pastes a dragged file.
17
+ const PATH = /"((?:~|\/)[^"\n]+?\.(?:png|jpe?g|gif|webp))"|'((?:~|\/)[^'\n]+?\.(?:png|jpe?g|gif|webp))'|(?<![^\s"'(])((?:~|\/)(?:\\ |[^\s"'])+?\.(?:png|jpe?g|gif|webp))(?=$|[\s,.;:)!?])/gi;
18
+ /** Find the image files named in a typed line. A path that is not a file there is left as text. */
19
+ export function findImages(typed, isFile = (p) => { try {
20
+ return existsSync(p) && statSync(p).isFile();
21
+ }
22
+ catch {
23
+ return false;
24
+ } }) {
25
+ const paths = [];
26
+ const text = typed.replace(PATH, (whole, dq, sq, bare) => {
27
+ const raw = dq ?? sq ?? (bare ?? '').replace(/\\ /g, ' ');
28
+ const path = raw.startsWith('~') ? homedir() + raw.slice(1) : raw;
29
+ if (paths.length >= MAX_IMAGES || !isFile(path))
30
+ return whole;
31
+ let n = paths.indexOf(path);
32
+ if (n < 0) {
33
+ paths.push(path);
34
+ n = paths.length - 1;
35
+ }
36
+ return `[Image #${n + 1}]`;
37
+ });
38
+ return { text, paths };
39
+ }
40
+ /** The pictures as message content. One that cannot be read, or is too big, is skipped and named. */
41
+ export function imageBlocks(paths) {
42
+ const blocks = [];
43
+ const skipped = [];
44
+ for (const path of paths) {
45
+ try {
46
+ const type = TYPES[path.split('.').pop().toLowerCase()];
47
+ const data = readFileSync(path);
48
+ if (!type || data.length > MAX_IMAGE_BYTES) {
49
+ skipped.push(path);
50
+ continue;
51
+ }
52
+ blocks.push({ type: 'image', source: { type: 'base64', media_type: type, data: data.toString('base64') } });
53
+ }
54
+ catch {
55
+ skipped.push(path);
56
+ }
57
+ }
58
+ return { blocks, skipped };
59
+ }
60
+ /**
61
+ * For a line that starts a NEW turn, where the prompt is text: the pictures are named so the
62
+ * agent opens them itself, which its Read tool does as pictures.
63
+ */
64
+ export function namedForAgent(a) {
65
+ if (!a.paths.length)
66
+ return a.text;
67
+ return `${a.text}\n\nThe person attached ${a.paths.length === 1 ? 'a picture' : `${a.paths.length} pictures`}. Open ${a.paths.length === 1 ? 'it' : 'each'} with Read before you answer — it is what they are asking about:\n` +
68
+ a.paths.map((p, i) => ` [Image #${i + 1}] ${p}`).join('\n');
69
+ }
70
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,KAAK,GAA2B,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACxI,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAE5B,mGAAmG;AACnG,MAAM,IAAI,GAAG,+KAA+K,CAAC;AAS7L,mGAAmG;AACnG,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,SAAoC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,KAAK,CAAC;AAAC,CAAC,CAAC,CAAC;IACpK,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAW,EAAE,EAAW,EAAE,IAAa,EAAE,EAAE;QAClF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAAC,CAAC;QACtD,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAID,qGAAqG;AACrG,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9G,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IACnC,OAAO,GAAG,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,oEAAoE;QAC5N,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC"}
package/dist/serve.js CHANGED
@@ -7,6 +7,7 @@ import { GIT_TOOL_NAMES, githubTools, publishBranch } from './github.js';
7
7
  import { freshGitHubToken } from './githubauth.js';
8
8
  import { answerFrom, createPresence, heldFor, modeCommand } from './presence.js';
9
9
  import { codePrefix, SCRATCH_SWEEP_EVERY_MS, sweepScratch } from './scratch.js';
10
+ import { findImages, namedForAgent } from './images.js';
10
11
  import { loadBaseBranch, loadMergeConfig, preflight, preflightBrief } from './preflight.js';
11
12
  import { pushStatus, StatusTracker } from './status.js';
12
13
  import { dispatchDecision, fetchTeam, myTeam, teamTools, TEAM_TOOL_NAMES } from './team.js';
@@ -1376,7 +1377,9 @@ export async function serve(opts) {
1376
1377
  shell(command);
1377
1378
  return;
1378
1379
  }
1379
- log('you', text);
1380
+ // A pasted picture arrives as the path the terminal saved it to. See images.ts.
1381
+ const attached = findImages(text);
1382
+ log('you', attached.text);
1380
1383
  if (liveRun) {
1381
1384
  // Stamped human: the SDK treats an unattributed message as untrusted, and rightly — a line
1382
1385
  // someone typed here deserves more weight than a comment left on a card by anyone.
@@ -1391,20 +1394,20 @@ export async function serve(opts) {
1391
1394
  it will not take the line, it is not running: answer it as a question instead of
1392
1395
  dropping what the person typed. */
1393
1396
  const run = liveRun;
1394
- void run.steer(text).then((heard) => {
1397
+ void run.steer(attached.text, attached.paths).then((heard) => {
1395
1398
  if (heard !== false)
1396
1399
  return;
1397
1400
  if (liveRun === run)
1398
1401
  liveRun = null;
1399
- ask(text);
1402
+ ask(namedForAgent(attached));
1400
1403
  }).catch(() => {
1401
1404
  if (liveRun === run)
1402
1405
  liveRun = null;
1403
- ask(text);
1406
+ ask(namedForAgent(attached));
1404
1407
  });
1405
1408
  }
1406
1409
  else {
1407
- ask(text);
1410
+ ask(namedForAgent(attached));
1408
1411
  }
1409
1412
  };
1410
1413
  /** One session per card, so an agent picking a card back up remembers starting it. */