@snoglobe/helios 0.3.4 → 0.3.6

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 (34) hide show
  1. package/dist/cli/export.d.ts +1 -1
  2. package/dist/core/orchestrator.d.ts +2 -1
  3. package/dist/core/orchestrator.d.ts.map +1 -1
  4. package/dist/core/orchestrator.js +18 -17
  5. package/dist/core/orchestrator.js.map +1 -1
  6. package/dist/providers/claude/provider.d.ts +1 -1
  7. package/dist/providers/claude/provider.d.ts.map +1 -1
  8. package/dist/providers/claude/provider.js +21 -5
  9. package/dist/providers/claude/provider.js.map +1 -1
  10. package/dist/providers/openai/provider.d.ts +1 -1
  11. package/dist/providers/openai/provider.d.ts.map +1 -1
  12. package/dist/providers/openai/provider.js +21 -4
  13. package/dist/providers/openai/provider.js.map +1 -1
  14. package/dist/providers/types.d.ts +3 -1
  15. package/dist/providers/types.d.ts.map +1 -1
  16. package/dist/providers/types.js.map +1 -1
  17. package/dist/skills/executor.d.ts.map +1 -1
  18. package/dist/skills/executor.js +10 -4
  19. package/dist/skills/executor.js.map +1 -1
  20. package/dist/store/session-store.d.ts +3 -0
  21. package/dist/store/session-store.d.ts.map +1 -1
  22. package/dist/store/session-store.js +14 -1
  23. package/dist/store/session-store.js.map +1 -1
  24. package/dist/ui/components/input-bar.d.ts.map +1 -1
  25. package/dist/ui/components/input-bar.js +42 -31
  26. package/dist/ui/components/input-bar.js.map +1 -1
  27. package/dist/ui/layout.d.ts.map +1 -1
  28. package/dist/ui/layout.js +48 -47
  29. package/dist/ui/layout.js.map +1 -1
  30. package/dist/ui/panels/conversation.d.ts +4 -6
  31. package/dist/ui/panels/conversation.d.ts.map +1 -1
  32. package/dist/ui/panels/conversation.js +5 -11
  33. package/dist/ui/panels/conversation.js.map +1 -1
  34. package/package.json +1 -1
@@ -52,6 +52,7 @@ async function* runOnce(skill, args, input, provider, tools, orch) {
52
52
  const session = await provider.createSession({
53
53
  systemPrompt,
54
54
  model: skill.config.model ?? undefined,
55
+ ephemeral: true,
55
56
  });
56
57
  const stream = provider.send(session, input, tools);
57
58
  try {
@@ -86,12 +87,17 @@ export async function* executeSkill(skill, args, input, ctx) {
86
87
  yield { type: "error", error: new Error(`No provider available for skill "${skill.name}"`), recoverable: false };
87
88
  return;
88
89
  }
89
- // Check auth for cross-provider skills
90
- if (skill.config.provider === "other") {
91
- if (!(await provider.isAuthenticated())) {
90
+ // Ensure the provider is authenticated (skills can target any provider)
91
+ if (skill.config.provider) {
92
+ try {
93
+ if (!(await provider.isAuthenticated())) {
94
+ await provider.authenticate();
95
+ }
96
+ }
97
+ catch (err) {
92
98
  yield {
93
99
  type: "error",
94
- error: new Error(`Provider "${provider.name}" is not authenticated. Run /switch ${provider.name} first.`),
100
+ error: err instanceof Error ? err : new Error(String(err)),
95
101
  recoverable: false,
96
102
  };
97
103
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/skills/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,uDAAuD;AACvD,SAAS,kBAAkB,CAAC,EAAU,EAAE,MAAoB;IAC1D,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAY,EAAE,IAAkB;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IAClC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IAE9D,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,uDAAuD;AACvD,SAAS,WAAW,CAAC,QAA0B,EAAE,KAAY;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gEAAgE;AAChE,KAAK,SAAS,CAAC,CAAC,OAAO,CACrB,KAAY,EACZ,IAA4B,EAC5B,KAAa,EACb,QAAuB,EACvB,KAAuB,EACvB,IAAkB;IAElB,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE1D,6DAA6D;IAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;QAC3C,YAAY;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS;KACvC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,qFAAqF;QACrF,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrD,yBAAyB;QACzB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,YAAY,GAAG,aAAa,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,KAAY,EACZ,IAA4B,EAC5B,KAAa,EACb,GAAqB;IAErB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACjH,OAAO;IACT,CAAC;IAED,uCAAuC;IACvC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YACxC,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,uCAAuC,QAAQ,CAAC,IAAI,SAAS,CAAC;gBACzG,WAAW,EAAE,KAAK;aACnB,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,iBAAiB;QACjB,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,0DAA0D;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;IAChD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5B,SAAS,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,0CAA0C,CAAC;QACxF,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC;YAC/B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1D,WAAW,EAAE,IAAI;aAClB,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM;QAC/B,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,yBAAyB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB;YAC9E,KAAK,EAAE,yBAAyB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB;SAChF,CAAC;QACF,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAY,EACZ,IAA4B,EAC5B,KAAa,EACb,GAAqB;IAErB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/skills/executor.ts"],"names":[],"mappings":"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"}
@@ -20,11 +20,14 @@ export interface SessionSummary {
20
20
  inputTokens: number;
21
21
  outputTokens: number;
22
22
  }
23
+ /** Create an in-memory session that is NOT persisted to the database. */
24
+ export declare function createEphemeralSession(providerId: string): Session;
23
25
  export declare class SessionStore {
24
26
  private agentId;
25
27
  constructor(agentId?: string);
26
28
  createSession(provider: string, model?: string, providerSessionId?: string): Session;
27
29
  getSession(id: string): Session | null;
30
+ updateProviderSessionId(sessionId: string, providerSessionId: string): void;
28
31
  updateLastActive(sessionId: string): void;
29
32
  addCost(sessionId: string, costUsd: number, inputTokens: number, outputTokens: number): void;
30
33
  addMessage(sessionId: string, role: StoredMessage["role"], content: string, toolCalls?: string, tokenCount?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAAK;IAIxB,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO;IAmBV,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAiBtC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAO5F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAeP,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,aAAa,EAAE;IAmB5D,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE;IAiBnC,oBAAoB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE;CAyCnD"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAAK;IAIxB,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO;IAmBV,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAiBtC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAO5F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAeP,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,aAAa,EAAE;IAmB5D,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE;IAoBnC,oBAAoB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE;CA0CnD"}
@@ -1,6 +1,11 @@
1
1
  import { nanoid } from "nanoid";
2
2
  import { getDb } from "./database.js";
3
3
  import { truncate } from "../ui/format.js";
4
+ /** Create an in-memory session that is NOT persisted to the database. */
5
+ export function createEphemeralSession(providerId) {
6
+ const now = Date.now();
7
+ return { id: `eph-${nanoid()}`, providerId, createdAt: now, lastActiveAt: now };
8
+ }
4
9
  export class SessionStore {
5
10
  agentId;
6
11
  constructor(agentId = "") {
@@ -35,6 +40,10 @@ export class SessionStore {
35
40
  lastActiveAt: row.last_active_at,
36
41
  };
37
42
  }
43
+ updateProviderSessionId(sessionId, providerSessionId) {
44
+ const db = getDb();
45
+ db.prepare("UPDATE sessions SET provider_session_id = ? WHERE id = ?").run(providerSessionId, sessionId);
46
+ }
38
47
  updateLastActive(sessionId) {
39
48
  const db = getDb();
40
49
  db.prepare("UPDATE sessions SET last_active_at = ? WHERE id = ?").run(Date.now(), sessionId);
@@ -66,7 +75,10 @@ export class SessionStore {
66
75
  listSessions(limit = 20) {
67
76
  const db = getDb();
68
77
  const rows = db
69
- .prepare("SELECT * FROM sessions WHERE agent_id = ? ORDER BY last_active_at DESC LIMIT ?")
78
+ .prepare(`SELECT * FROM sessions s
79
+ WHERE s.agent_id = ?
80
+ AND EXISTS (SELECT 1 FROM messages m WHERE m.session_id = s.id)
81
+ ORDER BY s.last_active_at DESC LIMIT ?`)
70
82
  .all(this.agentId, limit);
71
83
  return rows.map((row) => ({
72
84
  id: row.id,
@@ -96,6 +108,7 @@ export class SessionStore {
96
108
  LEFT JOIN messages m ON m.session_id = s.id
97
109
  WHERE s.agent_id = ?
98
110
  GROUP BY s.id
111
+ HAVING COUNT(m.id) > 0
99
112
  ORDER BY s.last_active_at DESC
100
113
  LIMIT ?`)
101
114
  .all(this.agentId, limit);
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input-bar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/input-bar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,QAAgB,EAChB,WAAiC,EACjC,QAAQ,EAAE,YAAY,GACvB,EAAE,aAAa,2CA0Kf"}
1
+ {"version":3,"file":"input-bar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/input-bar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,QAAgB,EAChB,WAAiC,EACjC,QAAQ,EAAE,YAAY,GACvB,EAAE,aAAa,2CAsLf"}
@@ -1,11 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useMemo } from "react";
2
+ import { useState, useMemo, useRef } from "react";
3
3
  import { Box, Text, useInput } from "ink";
4
4
  import { C, G } from "../theme.js";
5
5
  export function InputBar({ onSubmit, disabled = false, placeholder = "send a message...", commands: commandsProp, }) {
6
6
  const COMMANDS = commandsProp ?? [];
7
7
  const [value, setValue] = useState("");
8
+ const valueRef = useRef("");
8
9
  const [cursorPos, setCursorPos] = useState(0);
10
+ // Refs track the real-time value and cursor position across batched input
11
+ // events. Without these, fast typing uses stale closure-captured values.
12
+ const cursorRef = useRef(0);
13
+ const moveCursor = (pos) => { cursorRef.current = pos; setCursorPos(pos); };
14
+ const setVal = (v) => { valueRef.current = v; setValue(v); };
9
15
  const [history, setHistory] = useState([]);
10
16
  const [historyIdx, setHistoryIdx] = useState(-1);
11
17
  const [selectedIdx, setSelectedIdx] = useState(0);
@@ -23,42 +29,45 @@ export function InputBar({ onSubmit, disabled = false, placeholder = "send a mes
23
29
  useInput((input, key) => {
24
30
  if (disabled)
25
31
  return;
32
+ const pos = cursorRef.current;
26
33
  if (key.return) {
27
- if (value.trim()) {
28
- onSubmit(value.trim());
29
- setHistory((prev) => [value.trim(), ...prev]);
30
- setValue("");
31
- setCursorPos(0);
32
- setHistoryIdx(-1);
33
- setSelectedIdx(0);
34
+ const trimmed = valueRef.current.trim();
35
+ if (trimmed) {
36
+ onSubmit(trimmed);
37
+ setHistory((h) => [trimmed, ...h].slice(0, 50));
34
38
  }
39
+ setVal("");
40
+ moveCursor(0);
41
+ setHistoryIdx(-1);
42
+ setSelectedIdx(0);
35
43
  return;
36
44
  }
37
45
  if (key.tab && showMenu) {
38
46
  const cmd = filteredCommands[selectedIdx];
39
47
  if (cmd) {
40
48
  const completed = `/${cmd.name}${cmd.args ? " " : ""}`;
41
- setValue(completed);
42
- setCursorPos(completed.length);
49
+ setVal(completed);
50
+ moveCursor(completed.length);
43
51
  }
44
52
  return;
45
53
  }
46
54
  if (key.backspace || key.delete) {
47
- if (cursorPos > 0) {
48
- setValue((prev) => prev.slice(0, cursorPos - 1) + prev.slice(cursorPos));
49
- setCursorPos((prev) => prev - 1);
55
+ if (pos > 0) {
56
+ const v = valueRef.current;
57
+ setVal(v.slice(0, pos - 1) + v.slice(pos));
58
+ moveCursor(pos - 1);
50
59
  }
51
60
  setSelectedIdx(0);
52
61
  return;
53
62
  }
54
63
  // Left arrow
55
64
  if (key.leftArrow) {
56
- setCursorPos((prev) => Math.max(0, prev - 1));
65
+ moveCursor(Math.max(0, pos - 1));
57
66
  return;
58
67
  }
59
68
  // Right arrow
60
69
  if (key.rightArrow) {
61
- setCursorPos((prev) => Math.min(value.length, prev + 1));
70
+ moveCursor(Math.min(valueRef.current.length, pos + 1));
62
71
  return;
63
72
  }
64
73
  if (key.upArrow) {
@@ -68,8 +77,8 @@ export function InputBar({ onSubmit, disabled = false, placeholder = "send a mes
68
77
  else if (history.length > 0) {
69
78
  const newIdx = Math.min(historyIdx + 1, history.length - 1);
70
79
  setHistoryIdx(newIdx);
71
- setValue(history[newIdx]);
72
- setCursorPos(history[newIdx].length);
80
+ setVal(history[newIdx]);
81
+ moveCursor(history[newIdx].length);
73
82
  }
74
83
  return;
75
84
  }
@@ -80,46 +89,48 @@ export function InputBar({ onSubmit, disabled = false, placeholder = "send a mes
80
89
  else {
81
90
  if (historyIdx <= 0) {
82
91
  setHistoryIdx(-1);
83
- setValue("");
84
- setCursorPos(0);
92
+ setVal("");
93
+ moveCursor(0);
85
94
  }
86
95
  else {
87
96
  const newIdx = historyIdx - 1;
88
97
  setHistoryIdx(newIdx);
89
- setValue(history[newIdx]);
90
- setCursorPos(history[newIdx].length);
98
+ setVal(history[newIdx]);
99
+ moveCursor(history[newIdx].length);
91
100
  }
92
101
  }
93
102
  return;
94
103
  }
95
104
  // Home / Ctrl+A
96
105
  if (key.ctrl && input === "a") {
97
- setCursorPos(0);
106
+ moveCursor(0);
98
107
  return;
99
108
  }
100
109
  // End / Ctrl+E
101
110
  if (key.ctrl && input === "e") {
102
- setCursorPos(value.length);
111
+ moveCursor(valueRef.current.length);
103
112
  return;
104
113
  }
105
114
  // Ctrl+U — clear line
106
115
  if (key.ctrl && input === "u") {
107
- setValue("");
108
- setCursorPos(0);
116
+ setVal("");
117
+ moveCursor(0);
109
118
  return;
110
119
  }
111
120
  // Ctrl+W — delete word backward
112
121
  if (key.ctrl && input === "w") {
113
- const before = value.slice(0, cursorPos);
114
- const after = value.slice(cursorPos);
122
+ const v = valueRef.current;
123
+ const before = v.slice(0, pos);
124
+ const after = v.slice(pos);
115
125
  const trimmed = before.replace(/\S+\s*$/, "");
116
- setValue(trimmed + after);
117
- setCursorPos(trimmed.length);
126
+ setVal(trimmed + after);
127
+ moveCursor(trimmed.length);
118
128
  return;
119
129
  }
120
130
  if (input && !key.ctrl && !key.meta) {
121
- setValue((prev) => prev.slice(0, cursorPos) + input + prev.slice(cursorPos));
122
- setCursorPos((prev) => prev + input.length);
131
+ const v = valueRef.current;
132
+ setVal(v.slice(0, pos) + input + v.slice(pos));
133
+ moveCursor(pos + input.length);
123
134
  setHistoryIdx(-1);
124
135
  setSelectedIdx(0);
125
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input-bar.js","sourceRoot":"","sources":["../../../src/ui/components/input-bar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-bar.js","sourceRoot":"","sources":["../../../src/ui/components/input-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAUnC,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,mBAAmB,EACjC,QAAQ,EAAE,YAAY,GACR;IACd,MAAM,QAAQ,GAAG,YAAY,IAAI,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,aAAa,IAAI,OAAO;YAAE,OAAO,EAAE,CAAC;QACzC,IAAI,YAAY,KAAK,EAAE;YAAE,OAAO,QAAQ,CAAC;QACzC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,aAAa,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1E,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,QAAQ;YAAE,OAAO;QAErB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;QAE9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClB,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,cAAc,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC1C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACvD,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClB,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAC3B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,CAAC;YACD,cAAc,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,aAAa;QACb,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,cAAc;QACd,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,QAAQ,EAAE,CAAC;gBACb,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAClD,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5D,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,QAAQ,EAAE,CAAC;gBACb,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,MAAM,CAAC,EAAE,CAAC,CAAC;oBACX,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;oBAC9B,aAAa,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;YACxB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,cAAc,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAExB,QAAQ,IAAI,CACX,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aACjD,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAEV,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,CAAC,KAAK,WAAW,IAFtB,GAAG,CAAC,IAAI,CAGb,CACH,CAAC,EACF,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,mBACzB,IAAI,2BAAa,IAAI,kBAAc,IAAI,iBACnC,IACH,CACP,EAGD,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,aACd,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,mBACzB,CAAC,CAAC,MAAM,EAAE,GAAG,IACT,EACN,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,UAAU,IAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAI,CAClD,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,kBACzB,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,GACjC,CACR,IACG,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAExC,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAAG,MAAM,GAAQ,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,eAAe,EAAE,CAAC,CAAC,OAAO,YAAG,MAAM,GAAQ,EAC/D,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAAG,KAAK,GAAQ,IAC9B,CACR,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EACnC,IAAI,EAAE,QAAQ,aAEb,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,OAC/B,OAAO,CAAC,IAAI,IACT,EACN,OAAO,CAAC,IAAI,IAAI,CACf,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,YAAG,MAAM,GAAQ,CACpC,EACD,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,mBACzB,IAAI,EAAE,OAAO,CAAC,WAAW,IACrB,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/ui/layout.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAehD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;CACnC;AAID,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,WAAW,2CAwezG"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/ui/layout.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;CACnC;AAID,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,WAAW,2CA8fzG"}
package/dist/ui/layout.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useCallback, useRef, useEffect, useMemo } from "react";
3
- import { Box, Text, useInput, useApp } from "ink";
3
+ import { Box, Text, useInput, useApp, measureElement } from "ink";
4
4
  import { useScreenSize } from "fullscreen-ink";
5
- import { ScrollView } from "ink-scroll-view";
6
- import { ConversationPanel } from "./panels/conversation.js";
5
+ import { MessageLine, PulsingIndicator } from "./panels/conversation.js";
7
6
  import { TaskListPanel } from "./panels/task-list.js";
8
7
  import { MetricsDashboard } from "./panels/metrics-dashboard.js";
9
8
  import { StatusBar } from "./components/status-bar.js";
@@ -16,18 +15,29 @@ import { StickyNotesPanel } from "./panels/sticky-notes.js";
16
15
  import { VERSION, checkForUpdate } from "../version.js";
17
16
  import { COMMANDS, handleSlashCommand } from "./commands.js";
18
17
  import { pollTaskStatuses, handleFinishedTasks, buildMonitorMessage } from "../core/task-poller.js";
19
- import { formatDuration, formatError } from "./format.js";
18
+ import { formatDuration, formatError, truncate } from "./format.js";
20
19
  let messageIdCounter = 0;
21
20
  export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initialAttachments }) {
22
21
  const { orchestrator, sleepManager, connectionPool, executor, metricStore, metricCollector, monitorManager, experimentTracker, memoryStore, stickyManager, agentName, } = runtime;
23
22
  const { exit } = useApp();
24
- const [messages, setMessages] = useState([]);
23
+ const [messages, setMessages] = useState(() => {
24
+ // If a session was already resumed (via -r / -c flags) before Layout mounted,
25
+ // pre-populate the UI with stored messages so the user can see conversation history.
26
+ const session = orchestrator.activeSession;
27
+ if (!session)
28
+ return [];
29
+ const stored = orchestrator.sessionStore.getMessages(session.id, 500);
30
+ return stored
31
+ .filter((m) => m.role === "user" || m.role === "assistant")
32
+ .map((m) => ({ id: ++messageIdCounter, role: m.role, content: m.content }));
33
+ });
25
34
  const messagesRef = useRef(messages);
26
35
  messagesRef.current = messages;
27
36
  const [isStreaming, setIsStreaming] = useState(false);
28
37
  const [streamingStartedAt, setStreamingStartedAt] = useState(null);
29
- const scrollRef = useRef(null);
30
- const [userScrolled, setUserScrolled] = useState(false);
38
+ const [scrollUp, setScrollUp] = useState(0);
39
+ const contentRef = useRef(null);
40
+ const viewportRef = useRef(null);
31
41
  const [tasks, setTasks] = useState([]);
32
42
  const [metricData, setMetricData] = useState(new Map());
33
43
  const [stickyNotes, setStickyNotes] = useState([]);
@@ -47,9 +57,7 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
47
57
  const { statuses, finished } = await pollTaskStatuses(executor);
48
58
  // Build TaskInfo[] for UI state
49
59
  const updated = statuses.map(({ proc, running }) => {
50
- const shortCmd = proc.command.length > 40
51
- ? proc.command.slice(0, 40) + "..."
52
- : proc.command;
60
+ const shortCmd = truncate(proc.command, 40);
53
61
  return {
54
62
  id: `${proc.machineId}:${proc.pid}`,
55
63
  name: shortCmd,
@@ -92,35 +100,29 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
92
100
  return () => { stopped = true; if (timer)
93
101
  clearTimeout(timer); };
94
102
  }, [executor, connectionPool, metricCollector, metricStore]);
95
- // Auto-scroll to bottom when messages change, overlay closes, or user hasn't scrolled up
96
- useEffect(() => {
97
- if (!userScrolled) {
98
- scrollRef.current?.scrollToBottom();
99
- }
100
- }, [messages, userScrolled, activeOverlay]);
101
- // Re-snap to bottom when streaming starts, and keep scrolling during streaming
103
+ // Re-snap to bottom when streaming starts.
102
104
  useEffect(() => {
103
105
  if (isStreaming) {
104
- setUserScrolled(false);
105
- // During streaming, content changes faster than React state updates trigger effects.
106
- // Poll scrollToBottom on a short interval to keep up.
107
- const timer = setInterval(() => {
108
- scrollRef.current?.scrollToBottom();
109
- }, 100);
110
- return () => clearInterval(timer);
106
+ setScrollUp(0);
111
107
  }
112
108
  }, [isStreaming]);
113
- // Clamped scroll helper — ink-scroll-view's scrollBy has a bug where
114
- // it clamps to contentHeight instead of contentHeight - viewportHeight,
115
- // allowing you to scroll past the bottom into empty space.
116
- const clampedScrollBy = useCallback((delta) => {
117
- const sv = scrollRef.current;
118
- if (!sv)
119
- return;
120
- const target = Math.max(0, Math.min(sv.getScrollOffset() + delta, sv.getBottomOffset()));
121
- sv.scrollTo(target);
122
- return target >= sv.getBottomOffset();
109
+ // Measure current max scroll (content overflow above viewport).
110
+ const getMaxScroll = useCallback(() => {
111
+ if (!contentRef.current || !viewportRef.current)
112
+ return 0;
113
+ const ch = measureElement(contentRef.current).height;
114
+ const vh = measureElement(viewportRef.current).height;
115
+ return Math.max(0, ch - vh);
123
116
  }, []);
117
+ // Scroll by delta rows (positive = up into history, negative = toward bottom).
118
+ const scrollBy = useCallback((delta) => {
119
+ setScrollUp((prev) => {
120
+ const next = prev + delta;
121
+ if (next <= 0)
122
+ return 0;
123
+ return Math.min(next, getMaxScroll());
124
+ });
125
+ }, [getMaxScroll]);
124
126
  // Enable SGR mouse reporting and handle scroll via mouseEmitter
125
127
  useEffect(() => {
126
128
  process.stdout.write("\x1b[?1000h\x1b[?1006h");
@@ -131,18 +133,15 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
131
133
  return;
132
134
  const handler = (evt) => {
133
135
  if (evt.type === "scroll_up") {
134
- clampedScrollBy(-3);
135
- setUserScrolled(true);
136
+ scrollBy(3);
136
137
  }
137
138
  else if (evt.type === "scroll_down") {
138
- const atBottom = clampedScrollBy(3);
139
- if (atBottom)
140
- setUserScrolled(false);
139
+ scrollBy(-3);
141
140
  }
142
141
  };
143
142
  mouseEmitter.on("mouse", handler);
144
143
  return () => { mouseEmitter.removeListener("mouse", handler); };
145
- }, [mouseEmitter, clampedScrollBy]);
144
+ }, [mouseEmitter, scrollBy]);
146
145
  useInput((input, key) => {
147
146
  // Toggle overlays — always available
148
147
  if (key.ctrl && input === "t") {
@@ -183,13 +182,10 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
183
182
  if (activeOverlay !== "none")
184
183
  return;
185
184
  if (key.pageUp) {
186
- clampedScrollBy(-10);
187
- setUserScrolled(true);
185
+ scrollBy(10);
188
186
  }
189
187
  if (key.pageDown) {
190
- const atBottom = clampedScrollBy(10);
191
- if (atBottom)
192
- setUserScrolled(false);
188
+ scrollBy(-10);
193
189
  }
194
190
  });
195
191
  const addMessage = useCallback((role, content, tool) => {
@@ -198,7 +194,10 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
198
194
  const next = [...prev, { id, role, content, tool }];
199
195
  // Cap at 500 messages to prevent OOM in long sessions.
200
196
  // Old messages are still persisted in the session store.
201
- return next.length > 500 ? next.slice(-500) : next;
197
+ if (next.length > 500) {
198
+ return next.slice(-500);
199
+ }
200
+ return next;
202
201
  });
203
202
  return id;
204
203
  }, []);
@@ -208,6 +207,8 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
208
207
  const handleSubmit = useCallback(async (input, attachments) => {
209
208
  if (!input.trim())
210
209
  return;
210
+ // Snap to bottom on any submission — user intent is to interact, not read history.
211
+ setScrollUp(0);
211
212
  if (input.startsWith("/")) {
212
213
  await handleSlashCommand(input, {
213
214
  orchestrator, addMessage, updateMessage, setMessages, messages: messagesRef.current, setIsStreaming,
@@ -360,7 +361,7 @@ export function Layout({ runtime, mouseEmitter, headless, initialPrompt, initial
360
361
  return (_jsx(Box, { flexDirection: "column", height: height, width: width, children: _jsx(MetricsOverlay, { metricData: metricData, metricStore: metricStore, width: width, height: height, onClose: () => setActiveOverlay("none") }) }));
361
362
  }
362
363
  // ── Normal layout ─────────────────────────────────────────────
363
- return (_jsxs(Box, { flexDirection: "column", height: height, width: width, children: [_jsx(Box, { flexShrink: 0, children: headless && agentName ? (_jsx(HeadlessHeader, { agentName: agentName, width: width })) : (_jsx(HeaderWithPanels, { width: width })) }), _jsxs(Box, { flexShrink: 0, flexDirection: "row", children: [_jsx(Box, { flexGrow: 1, flexBasis: 0, flexDirection: "column", paddingX: 1, children: _jsx(MetricsDashboard, { metricData: metricData, width: Math.floor((width - 1) / 2) - 2 }) }), _jsx(Box, { width: 1, flexDirection: "column", alignItems: "center", children: _jsx(Text, { color: C.primary, wrap: "truncate", children: Array.from({ length: panelHeight }, () => "│").join("\n") }) }), _jsx(Box, { flexGrow: 1, flexBasis: 0, flexDirection: "column", paddingX: 1, children: _jsx(TaskListPanel, { tasks: tasks, resources: resourceData, width: Math.floor((width - 1) / 2) - 2 }) })] }), _jsx(Box, { flexShrink: 0, children: _jsx(HRule, {}) }), _jsxs(Box, { flexGrow: 1, flexShrink: 1, flexDirection: "row", children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, children: messages.length === 0 && !headless ? (_jsxs(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", flexDirection: "column", children: [_jsx(Text, { color: C.primary, bold: true, children: G.brand }), _jsx(Text, { color: C.primary, bold: true, children: "H E L I O S" }), _jsx(Text, { color: C.dim, children: "autonomous ml research" }), _jsxs(Text, { color: C.dim, dimColor: true, children: ["v", VERSION] }), _jsx(Text, { color: C.dim, dimColor: true, children: "" }), _jsx(Text, { color: C.dim, dimColor: true, children: "/help for commands" }), updateAvailable && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: C.bright, children: ["update available: v", updateAvailable, " \u2014 npm i -g helios"] }) }))] })) : (_jsx(ScrollView, { ref: scrollRef, children: _jsx(ConversationPanel, { messages: messages, isStreaming: isStreaming }) })) }), stickyNotes.length > 0 && (_jsx(Box, { flexShrink: 0, children: _jsx(StickyNotesPanel, { notes: stickyNotes, width: Math.min(30, Math.floor(width * 0.25)) }) }))] }), !headless && _jsx(Box, { flexShrink: 0, children: _jsx(KeyHintRule, {}) }), _jsx(Box, { flexShrink: 0, children: _jsx(StatusBar, { orchestrator: orchestrator, sleepManager: sleepManager, monitorManager: monitorManager, isStreaming: isStreaming, streamingStartedAt: streamingStartedAt }) }), !headless && (_jsx(Box, { flexShrink: 0, children: _jsx(InputBar, { onSubmit: handleSubmit, disabled: isStreaming, commands: allCommands, placeholder: isSleeping
364
+ return (_jsxs(Box, { flexDirection: "column", height: height, width: width, children: [_jsx(Box, { flexShrink: 0, children: headless && agentName ? (_jsx(HeadlessHeader, { agentName: agentName, width: width })) : (_jsx(HeaderWithPanels, { width: width })) }), _jsxs(Box, { flexShrink: 0, flexDirection: "row", children: [_jsx(Box, { flexGrow: 1, flexBasis: 0, flexDirection: "column", paddingX: 1, children: _jsx(MetricsDashboard, { metricData: metricData, width: Math.floor((width - 1) / 2) - 2 }) }), _jsx(Box, { width: 1, flexDirection: "column", alignItems: "center", children: _jsx(Text, { color: C.primary, wrap: "truncate", children: Array.from({ length: panelHeight }, () => "│").join("\n") }) }), _jsx(Box, { flexGrow: 1, flexBasis: 0, flexDirection: "column", paddingX: 1, children: _jsx(TaskListPanel, { tasks: tasks, resources: resourceData, width: Math.floor((width - 1) / 2) - 2 }) })] }), _jsx(Box, { flexShrink: 0, children: _jsx(HRule, {}) }), _jsxs(Box, { flexGrow: 1, flexShrink: 1, flexDirection: "row", children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, children: messages.length === 0 && !headless ? (_jsxs(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", flexDirection: "column", children: [_jsx(Text, { color: C.primary, bold: true, children: G.brand }), _jsx(Text, { color: C.primary, bold: true, children: "H E L I O S" }), _jsx(Text, { color: C.dim, children: "autonomous ml research" }), _jsxs(Text, { color: C.dim, dimColor: true, children: ["v", VERSION] }), _jsx(Text, { color: C.dim, dimColor: true, children: "" }), _jsx(Text, { color: C.dim, dimColor: true, children: "/help for commands" }), updateAvailable && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: C.bright, children: ["update available: v", updateAvailable, " \u2014 npm i -g helios"] }) }))] })) : (_jsx(Box, { ref: viewportRef, overflow: "hidden", flexGrow: 1, flexShrink: 1, flexDirection: "column", justifyContent: "flex-end", children: _jsxs(Box, { ref: contentRef, flexDirection: "column", flexShrink: 0, marginBottom: scrollUp > 0 ? -scrollUp : undefined, children: [messages.map((msg) => (_jsx(Box, { paddingX: 1, children: _jsx(MessageLine, { message: msg }) }, msg.id))), isStreaming && (_jsx(Box, { paddingX: 1, paddingLeft: 3, children: _jsx(PulsingIndicator, {}) }))] }) })) }), stickyNotes.length > 0 && (_jsx(Box, { flexShrink: 0, children: _jsx(StickyNotesPanel, { notes: stickyNotes, width: Math.min(30, Math.floor(width * 0.25)) }) }))] }), !headless && _jsx(Box, { flexShrink: 0, children: _jsx(KeyHintRule, {}) }), _jsx(Box, { flexShrink: 0, children: _jsx(StatusBar, { orchestrator: orchestrator, sleepManager: sleepManager, monitorManager: monitorManager, isStreaming: isStreaming, streamingStartedAt: streamingStartedAt }) }), !headless && (_jsx(Box, { flexShrink: 0, children: _jsx(InputBar, { onSubmit: handleSubmit, disabled: isStreaming, commands: allCommands, placeholder: isSleeping
364
365
  ? "type to wake agent..."
365
366
  : "send a message... (/help for commands)" }) }))] }));
366
367
  }