@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/flaredeck.js CHANGED
@@ -83,6 +83,26 @@ export class Flaredeck {
83
83
  async card(idOrCode) {
84
84
  return this.call(`/cards/${encodeURIComponent(idOrCode)}`);
85
85
  }
86
+ /** Whether FlareDeck has this agent paused, and why. See flaredeck-mcp/src/mcp/pause.ts. */
87
+ async pauseState() {
88
+ return (await this.call('/agents/me')).paused ?? null;
89
+ }
90
+ /** Pause this agent: its cards go back to its lead, the lead is told once, assign-card refuses it. */
91
+ async pause(check, reason) {
92
+ return this.call('/agents/me/pause', { method: 'POST', body: JSON.stringify({ check, reason }) });
93
+ }
94
+ /**
95
+ * Resume this agent itself. The server allows it only for walls that clear on their own (disk);
96
+ * anything else comes back `resumed: false` and stays the lead's decision. A server without the
97
+ * route answers 404, which the caller reads the same way.
98
+ */
99
+ async resumeSelf() {
100
+ return this.call('/agents/me/resume', { method: 'POST', body: '{}' });
101
+ }
102
+ /** The wall is gone — tell the lead once. Resuming stays the lead's decision. */
103
+ async ready() {
104
+ await this.call('/agents/me/ready', { method: 'POST', body: '{}' });
105
+ }
86
106
  /** Every board with its lanes (key, name, type, order), as the REST API lists them. */
87
107
  async boards() {
88
108
  return ((await this.call('/boards')).boards ?? []);
@@ -1 +1 @@
1
- {"version":3,"file":"flaredeck.js","sourceRoot":"","sources":["../src/flaredeck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flaredeck.js","sourceRoot":"","sources":["../src/flaredeck.ts"],"names":[],"mappings":"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"}
package/dist/github.d.ts CHANGED
@@ -22,6 +22,8 @@ export type Job = {
22
22
  /** What a pull request targets, from the board's own configuration. */
23
23
  base: string;
24
24
  card: string;
25
+ /** Told when GitHub refuses the login itself — a wall no retry gets past. The harness pauses. */
26
+ onAuthFailure?: (why: string) => void;
25
27
  };
26
28
  /**
27
29
  * Publish a job's branch. Extracted from the tool it used to live inside because the OTHER engine
package/dist/github.js CHANGED
@@ -124,6 +124,7 @@ export async function publishBranch(j) {
124
124
  // only "push_branch failed" will try again, try git, and then go looking for another way —
125
125
  // and none of them can work, because nothing on this machine can authenticate.
126
126
  const why = e instanceof Error ? e.message : String(e);
127
+ j.onAuthFailure?.(why);
127
128
  return {
128
129
  ok: false,
129
130
  text: `STOP — this machine cannot authenticate to GitHub, so nothing can be published from it.\n\n` +
@@ -142,6 +143,9 @@ export async function publishBranch(j) {
142
143
  // Redact before anything is shown: git echoes the remote URL on failure, and that URL now
143
144
  // carries the token.
144
145
  const safe = out.split(token).join('[REDACTED]');
146
+ if (code !== 0 && /Invalid username or token|Authentication failed|Bad credentials|could not read Username/i.test(safe)) {
147
+ j.onAuthFailure?.(safe.split('\n').find((l) => /invalid|authentication|credentials/i.test(l)) ?? safe.slice(0, 200));
148
+ }
145
149
  return code === 0
146
150
  ? { ok: true, text: `Pushed ${branch}.\n${safe}` }
147
151
  : { ok: false, text: `Could not push ${branch}:\n${safe}` };
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,SAAS,GAAG,CACV,OAAe,EACf,IAAc,EACd,GAAW,EACX,KAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,uFAAuF;gBACvF,sFAAsF;gBACtF,yDAAyD;gBACzD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,qFAAqF;gBACrF,mBAAmB,EAAE,GAAG;aACzB;SACF,CAAC,CAAC;QACH,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI;YAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,yEAAyE;AACzE,MAAM,MAAM,GAAG,wFAAwF,CAAC;AAExG;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAAC,CAAM;IACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,wCAAwC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,2EAA2E,EAAE,CAAC;IACtG,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO;YACL,GAAG,EACD,GAAG,CAAC,CAAC,GAAG,UAAU,MAAM,iEAAiE;gBACzF,yDAAyD;SAC5D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;IAC1C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACtC,CAAC,CAAC;AAEH;;;;GAIG;AACH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,CAAM,EAAE,OAAe;IACtD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAE5D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IAE1F,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5F,6FAA6F;QAC7F,gFAAgF;QAChF,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACjG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;IACxF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EACF,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kCAAkC,GAAG;YACvF,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK;YACjG,GAAG,SAAS,CAAC,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAM;IACxC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,0FAA0F;QAC1F,2FAA2F;QAC3F,+EAA+E;QAC/E,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EACF,6FAA6F;gBAC7F,GAAG,GAAG,MAAM;gBACZ,6BAA6B,MAAM,uDAAuD;gBAC1F,yFAAyF;gBACzF,wFAAwF;gBACxF,sFAAsF;SACzF,CAAC;IACJ,CAAC;IACD,2FAA2F;IAC3F,2EAA2E;IAC3E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,0BAA0B,KAAK,GAAG,CAAC,CAAC;IAClF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjG,0FAA0F;IAC1F,qBAAqB;IACrB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,OAAO,IAAI,KAAK,CAAC;QACf,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,MAAM,MAAM,IAAI,EAAE,EAAE;QAClD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,MAAM,MAAM,IAAI,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,GAAqB;AACrB;;;;;GAKG;AACH,KAA8D;IAE9D,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;QACf,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,IAAI,CACF,aAAa,EACb,0FAA0F;gBACxF,wFAAwF;gBACxF,uFAAuF;gBACvF,iCAAiC,EACnC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC,EAAE,EACnG,KAAK,EAAE,IAAI,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,MAAM,CAAE,IAA6B,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5E,IAAI,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC,uDAAuD,EAAE,IAAI,CAAC,CAAC;gBACxF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC5C,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,CACF;YAED,IAAI,CACF,aAAa,EACb,0FAA0F;gBACxF,oDAAoD,EACtD,EAAE,EACF,KAAK,IAAI,EAAE;gBACT,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,CACF;YAED,IAAI,CACF,mBAAmB,EACnB,2FAA2F;gBACzF,0EAA0E,EAC5E;gBACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;gBAC1F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;aAC3E,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;gBACxB,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;gBACpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,CAC7B,IAAI,EACJ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM;oBACpD,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,4BAA4B,CAAC,CAAC,IAAI,EAAE,CAAC,EACzE,CAAC,CAAC,GAAG,EACL,MAAM,CAAC,CAAC,KAAK,EAAE,CAChB,CAAC;gBACF,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mCAAmC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACrF,CAAC,CACF;YAED,GAAG,CAAC,KAAK;gBACP,CAAC,CAAC;oBACE,IAAI,CACF,mBAAmB,EACnB,kFAAkF;wBAChF,kFAAkF;wBAClF,yCAAyC,EAC3C,EAAE,EACF,KAAK,IAAI,EAAE;wBACT,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;wBACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;wBACxC,IAAI,KAAK,IAAI,MAAM;4BAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBAClD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;4BACT,OAAO,GAAG,CACR,GAAG,CAAC,CAAC,GAAG,mEAAmE;gCACzE,mEAAmE,EACrE,IAAI,CACL,CAAC;wBACJ,CAAC;wBACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAEpC,+EAA+E;wBAC/E,iDAAiD;wBACjD,MAAM,OAAO,GAAG,MAAM,GAAG,CACvB,IAAI,CAAC,CAAC,CAAE,EACR,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACjE,CAAC,CAAC,GAAG,EACL,KAAK,CACN,CAAC;wBACF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;4BACvB,OAAO,GAAG,CAAC,oDAAoD,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;wBACtF,CAAC;wBAED,gFAAgF;wBAChF,2EAA2E;wBAC3E,8CAA8C;wBAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAClC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EACpF,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,CACzC,CAAC;wBACF,IAAI,CAAC,QAAQ,CAAC,KAAK;4BAAE,OAAO,GAAG,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;wBAExE,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,IAAI,CAAC,CAAC,CAAE,EACR,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACnE,CAAC,CAAC,GAAG,EACL,KAAK,CACN,CAAC;wBACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACtD,kFAAkF;wBAClF,iFAAiF;wBACjF,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;oBACzF,CAAC,CACF;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,CACF,qBAAqB,EACrB,+EAA+E,EAC/E,EAAE,EACF,KAAK,IAAI,EAAE;gBACT,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;gBACpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,CAC7B,IAAI,EACJ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ;oBAChC,mEAAmE,CAAC,EACrE,CAAC,CAAC,GAAG,EACL,MAAM,CAAC,CAAC,KAAK,EAAE,CAChB,CAAC;gBACF,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC;YACrF,CAAC,CACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,6BAA6B;IAC7B,+BAA+B;IAC/B,4FAA4F;IAC5F,qEAAqE;IACrE,6BAA6B;CAC9B,CAAC"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,16 @@ export declare function freshGitHubToken(tokens: GitHubTokens, onRefreshed: (t:
27
27
  * sign used to be `push_branch failed` — after a card had been read, a worktree cut, the work
28
28
  * done and twenty minutes spent. An agent that cannot publish should not start.
29
29
  *
30
- * A classic token has no expiry and no refresh, so it passes without a call.
30
+ * A token that never expires is still asked about. "Never expires" is not "still valid": GitHub
31
+ * keeps only ten tokens per person per OAuth app and cancels the oldest when an eleventh is
32
+ * issued, so one login on another machine or for another repo quietly kills a token here. That
33
+ * used to pass this check without a call, and every agent on the machine then did a card's
34
+ * work and failed at push_branch with "Invalid username or token".
31
35
  */
32
36
  export declare function canPublish(tokens: GitHubTokens | undefined): Promise<string | null>;
37
+ /**
38
+ * Can this token push to the repository `remote` points at? A valid login is not enough: an
39
+ * organisation can refuse an OAuth app, and a token can lack the repo. Only a definite "no" counts
40
+ * — a network blip or a remote that is not on GitHub says nothing about the token.
41
+ */
42
+ export declare function canPushTo(token: string, remote: string): Promise<string | null>;
@@ -11,8 +11,13 @@
11
11
  */
12
12
  /** Public by design — a device-flow client has no secret, which is why it suits an unattended box. */
13
13
  export const GITHUB_CLIENT_ID = 'Ov23liGPUwgxEVJBsYlU';
14
- /** Read/write on the repos you can reach. Broad; a GitHub App would scope it per repo. */
15
- const SCOPE = 'repo';
14
+ /**
15
+ * Read/write on the repos you can reach, AND on their workflow files. Broad; a GitHub App would
16
+ * scope it per repo. `workflow` is not optional: without it GitHub refuses any push that touches
17
+ * `.github/workflows/`, so a card fixing CI did the work and could not publish it (KD-1397,
18
+ * KD-1310) — and nothing a retry or a different branch does gets past that.
19
+ */
20
+ const SCOPE = 'repo workflow';
16
21
  const form = async (url, body) => {
17
22
  const res = await fetch(url, {
18
23
  method: 'POST',
@@ -95,30 +100,91 @@ export async function freshGitHubToken(tokens, onRefreshed) {
95
100
  * sign used to be `push_branch failed` — after a card had been read, a worktree cut, the work
96
101
  * done and twenty minutes spent. An agent that cannot publish should not start.
97
102
  *
98
- * A classic token has no expiry and no refresh, so it passes without a call.
103
+ * A token that never expires is still asked about. "Never expires" is not "still valid": GitHub
104
+ * keeps only ten tokens per person per OAuth app and cancels the oldest when an eleventh is
105
+ * issued, so one login on another machine or for another repo quietly kills a token here. That
106
+ * used to pass this check without a call, and every agent on the machine then did a card's
107
+ * work and failed at push_branch with "Invalid username or token".
99
108
  */
100
109
  export async function canPublish(tokens) {
101
110
  if (!tokens?.accessToken) {
102
111
  return 'This machine has no GitHub login, so nothing it writes could be published.';
103
112
  }
104
- // A personal access token: nothing to refresh, nothing to check up front.
105
- if (!tokens.expiresAt || !tokens.refreshToken)
113
+ let token = tokens.accessToken;
114
+ if (tokens.expiresAt && tokens.refreshToken && Date.now() >= tokens.expiresAt - EARLY_MS) {
115
+ try {
116
+ token = await freshGitHubToken(tokens, () => { });
117
+ }
118
+ catch (e) {
119
+ return expired(e);
120
+ }
121
+ }
122
+ return gitHubAccepts(token);
123
+ }
124
+ /**
125
+ * Asks GitHub whether it still takes this token. Only a definite refusal counts: a network that
126
+ * is down for a moment says nothing about the token, and refusing to start over it would turn a
127
+ * blip into a dead agent.
128
+ */
129
+ async function gitHubAccepts(token) {
130
+ let status;
131
+ try {
132
+ const res = await fetch('https://api.github.com/user', {
133
+ headers: { Authorization: `Bearer ${token}`, Accept: 'application/vnd.github+json' },
134
+ signal: AbortSignal.timeout(10_000),
135
+ });
136
+ status = res.status;
137
+ }
138
+ catch {
106
139
  return null;
107
- if (Date.now() < tokens.expiresAt - EARLY_MS)
140
+ }
141
+ if (status !== 401)
108
142
  return null;
143
+ return ('GitHub no longer accepts the login stored for this repository (401 Bad credentials), so ' +
144
+ 'nothing the agent writes here could be pushed.\n\n' +
145
+ 'It did not expire. GitHub keeps ten logins per person for this app and cancels the oldest ' +
146
+ 'when another is made, on this machine or any other. Sign in again, or use a classic token, ' +
147
+ 'which does not count towards that limit:\n\n' +
148
+ ' flaredeck-agent login --github\n' +
149
+ ' flaredeck-agent login --github-token ghp_… (classic, repo + workflow scopes)');
150
+ }
151
+ function expired(e) {
152
+ const why = e instanceof Error ? e.message : String(e);
153
+ return (`This machine's GitHub login has expired and cannot renew itself.\n\n${why}\n\n` +
154
+ 'That is not a mistake you made: an OAuth token here is refreshed with a client secret, and ' +
155
+ 'this package is public so it has none. Sign in again, or — better for a machine nobody is ' +
156
+ 'watching — use a classic token, which does not expire:\n\n' +
157
+ ' flaredeck-agent login --github\n' +
158
+ ' flaredeck-agent login --github-token ghp_… (classic, repo + workflow scopes)\n\n' +
159
+ 'Starting without it would mean doing the work and then discovering it cannot be published.');
160
+ }
161
+ /**
162
+ * Can this token push to the repository `remote` points at? A valid login is not enough: an
163
+ * organisation can refuse an OAuth app, and a token can lack the repo. Only a definite "no" counts
164
+ * — a network blip or a remote that is not on GitHub says nothing about the token.
165
+ */
166
+ export async function canPushTo(token, remote) {
167
+ const m = remote.match(/github\.com[/:]([^/]+)\/([^/]+?)(?:\.git)?\/?$/);
168
+ if (!m)
169
+ return null;
170
+ let res;
109
171
  try {
110
- await freshGitHubToken(tokens, () => { });
172
+ res = await fetch(`https://api.github.com/repos/${m[1]}/${m[2]}`, {
173
+ headers: { Authorization: `Bearer ${token}`, Accept: 'application/vnd.github+json' },
174
+ signal: AbortSignal.timeout(10_000),
175
+ });
176
+ }
177
+ catch {
111
178
  return null;
112
179
  }
113
- catch (e) {
114
- const why = e instanceof Error ? e.message : String(e);
115
- return (`This machine's GitHub login has expired and cannot renew itself.\n\n${why}\n\n` +
116
- 'That is not a mistake you made: an OAuth token here is refreshed with a client secret, and ' +
117
- 'this package is public so it has none. Sign in again, or — better for a machine nobody is ' +
118
- 'watching — use a classic token, which does not expire:\n\n' +
119
- ' flaredeck-agent login --github\n' +
120
- ' flaredeck-agent login --github-token ghp_… (classic, repo scope)\n\n' +
121
- 'Starting without it would mean doing the work and then discovering it cannot be published.');
180
+ if (res.status === 401)
181
+ return `GitHub refuses this machine's login (401 Bad credentials).`;
182
+ if (res.status === 404 || res.status === 403) {
183
+ return `GitHub will not show ${m[1]}/${m[2]} to this machine's login (${res.status}) — the account has no access, or the organisation blocks the app.`;
122
184
  }
185
+ const body = (await res.json().catch(() => ({})));
186
+ if (body.permissions && body.permissions.push === false)
187
+ return `This machine's GitHub login can read ${m[1]}/${m[2]} but not push to it.`;
188
+ return null;
123
189
  }
124
190
  //# sourceMappingURL=githubauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"githubauth.js","sourceRoot":"","sources":["../src/githubauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"githubauth.js","sourceRoot":"","sources":["../src/githubauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Everything this agent needs, fetched from FlareDeck at startup.
3
+ *
4
+ * The north star: `flaredeck-agent login` is the ONLY credential step on a machine. Connect
5
+ * Sceneflo once in FlareDeck and every agent has it; rotate a token there and every agent
6
+ * follows; add a machine and it needs nothing but the login. What this replaces is a per-box
7
+ * ritual — `flaredeck-agent connect cnjure …`, `connect sceneflo …`, a providers file, a GitHub
8
+ * token — repeated on every machine and re-done whenever any of it expired.
9
+ *
10
+ * TWO RULES, both of which matter more than they look.
11
+ *
12
+ * FLAREDECK WINS, BUT LOCAL IS NOT IGNORED. A server configured here that FlareDeck does not
13
+ * know about is kept, so a machine can still be pointed at something deliberately — a dev
14
+ * instance, a server nobody else should get. A server FlareDeck DOES know about is replaced
15
+ * outright, because a stale local token silently shadowing the current one is precisely the
16
+ * failure this exists to end.
17
+ *
18
+ * AND BEING UNABLE TO ASK IS NOT THE SAME AS BEING TOLD NOTHING. If FlareDeck cannot be reached
19
+ * the agent keeps whatever it already had and says so. The alternative — treating an unreachable
20
+ * vault as "no servers configured" — would strip every agent of every tool the moment the network
21
+ * hiccuped, which is a far worse outage than a slightly stale list.
22
+ */
23
+ import type { Config } from './config.js';
24
+ export type McpServer = {
25
+ name: string;
26
+ url: string;
27
+ token?: string;
28
+ };
29
+ export type Hydrated = {
30
+ /** The merged list to use. Never shorter than what was configured locally. */
31
+ mcpServers: McpServer[];
32
+ /**
33
+ * Servers the workspace marked REQUIRED that FlareDeck could not give a working token for.
34
+ * Non-empty means: do no work until they are connected. Absent when FlareDeck was unreachable —
35
+ * not knowing is not the same as knowing one is missing.
36
+ */
37
+ missingRequired?: Array<{
38
+ name: string;
39
+ why: string;
40
+ }>;
41
+ /** The workspace's GitHub connection, when it has one — wins over this machine's github.json. */
42
+ github?: {
43
+ token: string;
44
+ login: string | null;
45
+ } | null;
46
+ /** The workspace's model keys (OpenRouter, Gemini) from Secrets. */
47
+ providers?: {
48
+ openrouter?: {
49
+ apiKey: string;
50
+ };
51
+ gemini?: {
52
+ apiKey: string;
53
+ };
54
+ } | null;
55
+ /** What happened, for the log — including nothing, when nothing changed. */
56
+ note?: string;
57
+ };
58
+ /**
59
+ * Fetch this workspace's MCP servers and merge them over the local ones.
60
+ *
61
+ * `fetchConfig` is injected so the merge is testable without a network: the rules above are the
62
+ * part worth testing, and they are decided here rather than by the endpoint.
63
+ */
64
+ export declare function hydrateMcpServers(config: Pick<Config, 'mcpServers'>, fetchConfig: () => Promise<{
65
+ ok: true;
66
+ servers: McpServer[];
67
+ missingRequired?: Array<{
68
+ name: string;
69
+ why: string;
70
+ }>;
71
+ github?: {
72
+ token: string;
73
+ login: string | null;
74
+ } | null;
75
+ providers?: {
76
+ openrouter?: {
77
+ apiKey: string;
78
+ };
79
+ gemini?: {
80
+ apiKey: string;
81
+ };
82
+ } | null;
83
+ } | {
84
+ ok: false;
85
+ why: string;
86
+ }>): Promise<Hydrated>;
87
+ /**
88
+ * The real fetch. Agents-only by construction: this presents the agent's own access token, and
89
+ * the route is not mounted on the browser guard — a person's Firebase token gets a flat 401,
90
+ * because a browser has no business receiving these tokens.
91
+ */
92
+ export declare function mcpConfigFetcher(mcpUrl: string, tenantId: string, auth: () => Promise<string>): () => Promise<{
93
+ ok: true;
94
+ servers: McpServer[];
95
+ missingRequired?: Array<{
96
+ name: string;
97
+ why: string;
98
+ }>;
99
+ github?: {
100
+ token: string;
101
+ login: string | null;
102
+ } | null;
103
+ providers?: {
104
+ openrouter?: {
105
+ apiKey: string;
106
+ };
107
+ gemini?: {
108
+ apiKey: string;
109
+ };
110
+ } | null;
111
+ } | {
112
+ ok: false;
113
+ why: string;
114
+ }>;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Fetch this workspace's MCP servers and merge them over the local ones.
3
+ *
4
+ * `fetchConfig` is injected so the merge is testable without a network: the rules above are the
5
+ * part worth testing, and they are decided here rather than by the endpoint.
6
+ */
7
+ export async function hydrateMcpServers(config, fetchConfig) {
8
+ const local = (config.mcpServers ?? []).filter((s) => s?.name && s?.url);
9
+ let answer;
10
+ try {
11
+ answer = await fetchConfig();
12
+ }
13
+ catch (e) {
14
+ answer = { ok: false, why: e instanceof Error ? e.message : String(e) };
15
+ }
16
+ if (!answer.ok) {
17
+ return {
18
+ mcpServers: local,
19
+ note: local.length
20
+ ? `could not reach FlareDeck for the MCP list (${answer.why}) — keeping the ${local.length} configured on this machine`
21
+ : `could not reach FlareDeck for the MCP list (${answer.why})`,
22
+ };
23
+ }
24
+ const fromFlaredeck = (answer.servers ?? []).filter((s) => s?.name && s?.url);
25
+ const byName = new Map();
26
+ // Local first so FlareDeck's entry overwrites it on a name clash — and so a local-only server
27
+ // survives. Names are the tool prefix, so they are the identity here, matched case-insensitively
28
+ // because the server lowercases them and an older local config may not have.
29
+ for (const s of local)
30
+ byName.set(s.name.toLowerCase(), s);
31
+ const replaced = [];
32
+ for (const s of fromFlaredeck) {
33
+ const key = s.name.toLowerCase();
34
+ if (byName.has(key))
35
+ replaced.push(s.name);
36
+ byName.set(key, s);
37
+ }
38
+ const merged = [...byName.values()];
39
+ const added = fromFlaredeck.length - replaced.length;
40
+ const localOnly = merged.length - fromFlaredeck.length;
41
+ const parts = [];
42
+ if (added > 0)
43
+ parts.push(`${added} from FlareDeck`);
44
+ if (replaced.length)
45
+ parts.push(`${replaced.length} updated (${replaced.join(', ')})`);
46
+ if (localOnly > 0)
47
+ parts.push(`${localOnly} configured only on this machine`);
48
+ return {
49
+ mcpServers: merged,
50
+ missingRequired: answer.missingRequired ?? [],
51
+ github: answer.github ?? null,
52
+ providers: answer.providers ?? null,
53
+ ...(parts.length ? { note: `MCP servers: ${parts.join(', ')}` } : {}),
54
+ };
55
+ }
56
+ /**
57
+ * The real fetch. Agents-only by construction: this presents the agent's own access token, and
58
+ * the route is not mounted on the browser guard — a person's Firebase token gets a flat 401,
59
+ * because a browser has no business receiving these tokens.
60
+ */
61
+ export function mcpConfigFetcher(mcpUrl, tenantId, auth) {
62
+ return async () => {
63
+ try {
64
+ const origin = new URL(mcpUrl).origin;
65
+ const res = await fetch(`${origin}/api/v1/${encodeURIComponent(tenantId)}/mcp/config`, {
66
+ headers: { authorization: `Bearer ${await auth()}` },
67
+ signal: AbortSignal.timeout(15_000),
68
+ });
69
+ const body = (await res.json().catch(() => undefined));
70
+ if (!res.ok)
71
+ return { ok: false, why: String(body?.message ?? `HTTP ${res.status}`) };
72
+ return { ok: true, servers: body?.mcpServers ?? [], missingRequired: body?.missingRequired ?? [], github: body?.github ?? null, providers: body?.providers ?? null };
73
+ }
74
+ catch (e) {
75
+ return { ok: false, why: e instanceof Error ? e.message : String(e) };
76
+ }
77
+ };
78
+ }
79
+ //# sourceMappingURL=hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"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"}