@lore-co/cli 0.2.19 → 0.2.21

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 (82) hide show
  1. package/README.md +18 -2
  2. package/dist/api.d.ts +4 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +11 -3
  5. package/dist/api.js.map +1 -1
  6. package/dist/approach-guidance.d.ts.map +1 -1
  7. package/dist/approach-guidance.js +2 -1
  8. package/dist/approach-guidance.js.map +1 -1
  9. package/dist/approach.d.ts +1 -1
  10. package/dist/approach.d.ts.map +1 -1
  11. package/dist/approach.js +12 -4
  12. package/dist/approach.js.map +1 -1
  13. package/dist/ask.d.ts +9 -1
  14. package/dist/ask.d.ts.map +1 -1
  15. package/dist/ask.js +32 -3
  16. package/dist/ask.js.map +1 -1
  17. package/dist/cli.d.ts +36 -2
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +225 -48
  20. package/dist/cli.js.map +1 -1
  21. package/dist/command-help.d.ts +3 -1
  22. package/dist/command-help.d.ts.map +1 -1
  23. package/dist/command-help.js +13 -1
  24. package/dist/command-help.js.map +1 -1
  25. package/dist/devin-cli.js +2 -2
  26. package/dist/devin-cli.js.map +1 -1
  27. package/dist/embeddings.d.ts +12 -0
  28. package/dist/embeddings.d.ts.map +1 -0
  29. package/dist/embeddings.js +105 -0
  30. package/dist/embeddings.js.map +1 -0
  31. package/dist/generated-assets.d.ts +5 -4
  32. package/dist/generated-assets.d.ts.map +1 -1
  33. package/dist/generated-assets.js +5 -4
  34. package/dist/generated-assets.js.map +1 -1
  35. package/dist/github.d.ts.map +1 -1
  36. package/dist/github.js +242 -4
  37. package/dist/github.js.map +1 -1
  38. package/dist/guard.d.ts.map +1 -1
  39. package/dist/guard.js +4 -6
  40. package/dist/guard.js.map +1 -1
  41. package/dist/handoff.js +2 -2
  42. package/dist/handoff.js.map +1 -1
  43. package/dist/learnings.d.ts +31 -0
  44. package/dist/learnings.d.ts.map +1 -0
  45. package/dist/learnings.js +265 -0
  46. package/dist/learnings.js.map +1 -0
  47. package/dist/live.d.ts.map +1 -1
  48. package/dist/live.js +96 -11
  49. package/dist/live.js.map +1 -1
  50. package/dist/platform.d.ts +7 -0
  51. package/dist/platform.d.ts.map +1 -1
  52. package/dist/platform.js +25 -1
  53. package/dist/platform.js.map +1 -1
  54. package/dist/recovery-state.js +1 -1
  55. package/dist/recovery-state.js.map +1 -1
  56. package/dist/reliability-store.d.ts +31 -0
  57. package/dist/reliability-store.d.ts.map +1 -1
  58. package/dist/reliability-store.js +89 -0
  59. package/dist/reliability-store.js.map +1 -1
  60. package/dist/retrieval-task.d.ts.map +1 -1
  61. package/dist/retrieval-task.js +2 -11
  62. package/dist/retrieval-task.js.map +1 -1
  63. package/dist/runtime.d.ts +13 -0
  64. package/dist/runtime.d.ts.map +1 -1
  65. package/dist/runtime.js +124 -33
  66. package/dist/runtime.js.map +1 -1
  67. package/dist/self-host.d.ts +2 -2
  68. package/dist/self-host.d.ts.map +1 -1
  69. package/dist/self-host.js +4 -3
  70. package/dist/self-host.js.map +1 -1
  71. package/dist/skill-guidance.js +1 -1
  72. package/dist/skill-guidance.js.map +1 -1
  73. package/dist/skills.d.ts.map +1 -1
  74. package/dist/skills.js +24 -4
  75. package/dist/skills.js.map +1 -1
  76. package/dist/uninstall.d.ts.map +1 -1
  77. package/dist/uninstall.js +4 -3
  78. package/dist/uninstall.js.map +1 -1
  79. package/dist/update.d.ts.map +1 -1
  80. package/dist/update.js +4 -23
  81. package/dist/update.js.map +1 -1
  82. package/package.json +3 -3
package/dist/guard.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
package/dist/handoff.js CHANGED
@@ -4,7 +4,7 @@ import { promisify } from "node:util";
4
4
  import { HandoffResponseSchema } from "@lore-co/core";
5
5
  import { loreApiRequest } from "./api.js";
6
6
  import { ensureMachineRegistered } from "./machine.js";
7
- import { repositoryScopeFromGitRoot } from "./repository.js";
7
+ import { repositoryRemoteScope } from "./repository.js";
8
8
  import { hostLiveRuntime } from "./live.js";
9
9
  import { recoveryFallback } from "./recovery.js";
10
10
  import { findAgentExecutable, isLaunchable, launchArguments } from "./agents.js";
@@ -106,7 +106,7 @@ async function detectRepoScope() {
106
106
  if (root === "") {
107
107
  return undefined;
108
108
  }
109
- return await repositoryScopeFromGitRoot(root);
109
+ return await repositoryRemoteScope(root);
110
110
  }
111
111
  catch {
112
112
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAEvG,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE7C,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBnB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;CAoBrB,CAAC;AAYF,SAAS,qBAAqB,CAC5B,IAAuB,EACvB,IAAY;IAEZ,MAAM,MAAM,GAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IACE,QAAQ,KAAK,MAAM;YACnB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,QAAQ;YACrB,QAAQ,KAAK,WAAW,EACxB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAC/B,KAAK,EACL,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAChC,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAuB,EACvB,MAAwB,EACxB,WAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IACtD,IACE,MAAM,CAAC,OAAO,KAAK,SAAS;QAC5B,IAAI,KAAK,SAAS;QAClB,MAAM,CAAC,OAAO,KAAK,SAAS,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,qBAAqB,EACrB;QACE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACpE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;KACtD,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,KAAsB,EACtB,OAAwB,EACxB,MAAuB,EACvB,KAAgB,EAChB,IAAa;IAEb,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG;QACV,GAAG,OAAO,CAAC,GAAG;QACd,sBAAsB,EAAE,OAAO,CAAC,eAAe;KAChD,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,eAAe,CAAC;YACpB,MAAM;YACN,KAAK;YACL,OAAO;YACP,IAAI,EAAE,WAAW;YACjB,KAAK;YACL,GAAG,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,eAAe,EAAE;YACxD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI;gBAClC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,KAAK,sCAAsC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAClG,CAAC;IACF,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE;YACxC,KAAK,EAAE,SAAS;YAChB,GAAG;SACJ,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACjD,aAAa,CACX,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACrB,CAAC,CAAC,IAAI,KAAK,CACP,OAAO,KAAK,qFAAqF,CAClG;gBACH,CAAC,CAAC,KAAK,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;YAC7B,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,IAAuB,EACvB,MAA8B,EAC9B,KAAgB,EAChB,IAA2B;IAE3B,MAAM,MAAM,GAAG,qBAAqB,CAClC,IAAI,EACJ,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAChD,CAAC;IACF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,QAAQ;YAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,6DAA6D;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,WAAW,+CAA+C,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iEAAiE,OAAO,CAAC,eAAe,IAAI,CAC7F,CAAC;QACF,OAAO;IACT,CAAC;IACD,yEAAyE;IACzE,IAAI,CAAC;QACH,MAAM,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,MAAM,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAuB,EACvB,MAA8B,EAC9B,KAAgB;IAEhB,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAuB,EACvB,MAA8B,EAC9B,KAAgB;IAEhB,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type Memory, type MemoryCategory, type MemoryStatus } from "@lore-co/core";
2
+ import { SharedMemoryClient } from "@lore-co/sdk";
3
+ import type { ConnectorConfig } from "./cli.js";
4
+ interface LearningsArguments {
5
+ repo?: string;
6
+ allRepositories: boolean;
7
+ statuses: MemoryStatus[];
8
+ categories?: MemoryCategory[];
9
+ query?: string;
10
+ json: boolean;
11
+ }
12
+ export declare function parseLearningsArguments(args: readonly string[]): LearningsArguments | null;
13
+ export interface LearningsListing {
14
+ repo: string | null;
15
+ statuses: readonly MemoryStatus[];
16
+ learnings: readonly Memory[];
17
+ }
18
+ export declare function formatLearnings(listing: LearningsListing, repoSource: "flag" | "folder" | "all"): string;
19
+ /** Every matching learning, loaded page by page so exports are complete. */
20
+ export declare function loadAllLearnings(client: Pick<SharedMemoryClient, "listLearnings">, filters: {
21
+ repo?: string;
22
+ statuses: readonly MemoryStatus[];
23
+ categories?: readonly MemoryCategory[];
24
+ query?: string;
25
+ }): Promise<Memory[]>;
26
+ export declare function runLearningsCommand(args: readonly string[], config: ConnectorConfig | null, options?: {
27
+ cwd?: string;
28
+ fetcher?: typeof fetch;
29
+ }): Promise<void>;
30
+ export {};
31
+ //# sourceMappingURL=learnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../src/learnings.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAyChD,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAgBD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,kBAAkB,GAAG,IAAI,CAgD3B;AAqCD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GACpC,MAAM,CA6BR;AA8BD,4EAA4E;AAC5E,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,EACjD,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACrD,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -0,0 +1,265 @@
1
+ import { MemoryCategorySchema, MemoryStatusSchema, } from "@lore-co/core";
2
+ import { LoreTransportError, SharedMemoryApiError, SharedMemoryClient, } from "@lore-co/sdk";
3
+ import { ZodError } from "zod";
4
+ import { detectRepository } from "./ask.js";
5
+ import { checkWorkspaceRepository } from "./directory-policy.js";
6
+ const LEARNINGS_HELP = `lore learnings
7
+ List or export the learnings Lore holds for a repository, without a question.
8
+
9
+ Usage:
10
+ lore learnings [options]
11
+
12
+ Options:
13
+ --repo <repo> List the learnings that apply to this repository: its
14
+ own plus workspace-wide ones (default: the Git
15
+ repository of the current folder)
16
+ --all-repositories List every learning in the workspace, including
17
+ other repositories
18
+ --status <list> Statuses to include, separated by commas (default: active)
19
+ --category <list> Categories to include, separated by commas (default: all)
20
+ --query <text> Only learnings whose text contains this phrase
21
+ --json Print every matching learning as machine-readable JSON
22
+ --help Show this command's help
23
+
24
+ Statuses:
25
+ ${MemoryStatusSchema.options.join(", ")}
26
+
27
+ Categories:
28
+ ${MemoryCategorySchema.options.join(", ")}
29
+
30
+ The command pages through GET /v1/learnings until every match is loaded, so the
31
+ output is complete rather than a ranked sample. Use lore ask for ranked answers
32
+ to a question. Workspace repository restrictions apply before anything is read.
33
+
34
+ Examples:
35
+ lore learnings
36
+ lore learnings --repo acme/billing --json > learnings.json
37
+ lore learnings --status active,proposed --category convention
38
+ lore learnings --all-repositories --json
39
+ `;
40
+ /** The API's page ceiling; fewer round trips for a full export. */
41
+ const PAGE_SIZE = 100;
42
+ function parseList(argument, value, options) {
43
+ const items = value.split(",").map((item) => item.trim()).filter(Boolean);
44
+ if (items.length === 0)
45
+ throw new Error(`Missing value for ${argument}`);
46
+ const unknown = items.find((item) => !options.includes(item));
47
+ if (unknown !== undefined) {
48
+ throw new Error(`${argument} must list values from: ${options.join(", ")}`);
49
+ }
50
+ return [...new Set(items)];
51
+ }
52
+ export function parseLearningsArguments(args) {
53
+ const parsed = {
54
+ allRepositories: false,
55
+ statuses: ["active"],
56
+ json: false,
57
+ };
58
+ for (let index = 0; index < args.length; index += 1) {
59
+ const argument = args[index];
60
+ if (argument === "--help" || argument === "-h") {
61
+ process.stdout.write(LEARNINGS_HELP);
62
+ return null;
63
+ }
64
+ if (argument === "--json") {
65
+ parsed.json = true;
66
+ continue;
67
+ }
68
+ if (argument === "--all-repositories") {
69
+ parsed.allRepositories = true;
70
+ continue;
71
+ }
72
+ if (argument === "--repo" ||
73
+ argument === "--status" ||
74
+ argument === "--category" ||
75
+ argument === "--query") {
76
+ const value = args[index + 1]?.trim();
77
+ if (value === undefined || value === "" || value.startsWith("-")) {
78
+ throw new Error(`Missing value for ${argument}`);
79
+ }
80
+ index += 1;
81
+ if (argument === "--repo") {
82
+ parsed.repo = value;
83
+ }
84
+ else if (argument === "--status") {
85
+ parsed.statuses = parseList(argument, value, MemoryStatusSchema.options);
86
+ }
87
+ else if (argument === "--category") {
88
+ parsed.categories = parseList(argument, value, MemoryCategorySchema.options);
89
+ }
90
+ else {
91
+ parsed.query = value;
92
+ }
93
+ continue;
94
+ }
95
+ throw new Error(`Unknown learnings option: ${argument}`);
96
+ }
97
+ if (parsed.repo !== undefined && parsed.allRepositories) {
98
+ throw new Error("Use --repo or --all-repositories, not both.");
99
+ }
100
+ return parsed;
101
+ }
102
+ function formatDate(value) {
103
+ return value.slice(0, 10);
104
+ }
105
+ function singleLine(text, width) {
106
+ const flat = text.replaceAll(/\s+/gu, " ").trim();
107
+ return flat.length > width ? `${flat.slice(0, width - 1)}…` : flat;
108
+ }
109
+ function scopeLabel(memory) {
110
+ const scope = memory.scope;
111
+ const parts = [
112
+ ...(scope.repo === undefined ? [] : [scope.repo]),
113
+ ...(scope.project === undefined ? [] : [`project ${scope.project}`]),
114
+ ...(scope.path === undefined ? [] : [scope.path]),
115
+ ...(scope.component === undefined ? [] : [scope.component]),
116
+ ...(scope.agent === undefined ? [] : [`for ${scope.agent}`]),
117
+ ];
118
+ return parts.length === 0 ? "workspace" : parts.join(" · ");
119
+ }
120
+ function table(rows, headers) {
121
+ const widths = headers.map((header, column) => Math.max(header.length, ...rows.map((row) => row[column].length)));
122
+ const line = (cells) => cells
123
+ .map((cell, column) => column === cells.length - 1 ? cell : cell.padEnd(widths[column]))
124
+ .join(" ")
125
+ .trimEnd();
126
+ return [line(headers), ...rows.map(line)].join("\n");
127
+ }
128
+ export function formatLearnings(listing, repoSource) {
129
+ const header = repoSource === "all"
130
+ ? "Repository: all repositories in the workspace\n"
131
+ : `Repository: ${listing.repo} (${repoSource === "flag" ? "from --repo" : "detected from the current folder"})\n`;
132
+ const count = listing.learnings.length;
133
+ const statusLabel = listing.statuses.length === 1 ? `${listing.statuses[0]} ` : "";
134
+ const summary = `${count} ${statusLabel}learning${count === 1 ? "" : "s"}\n`;
135
+ if (count === 0)
136
+ return `${header}${summary}`;
137
+ const showStatus = listing.statuses.length > 1;
138
+ const showScope = repoSource === "all";
139
+ const headers = [
140
+ "ID",
141
+ "CATEGORY",
142
+ ...(showStatus ? ["STATUS"] : []),
143
+ "UPDATED",
144
+ ...(showScope ? ["SCOPE"] : []),
145
+ "CONTENT",
146
+ ];
147
+ const rows = listing.learnings.map((memory) => [
148
+ memory.id,
149
+ memory.category,
150
+ ...(showStatus ? [memory.status] : []),
151
+ formatDate(memory.updatedAt),
152
+ ...(showScope ? [singleLine(scopeLabel(memory), 40)] : []),
153
+ singleLine(memory.content, 100),
154
+ ]);
155
+ return `${header}${summary}\n${table(rows, headers)}\n`;
156
+ }
157
+ function describeFailure(error) {
158
+ if (error instanceof SharedMemoryApiError) {
159
+ if (error.status === 401 || error.status === 403) {
160
+ return new Error("Lore authentication failed. Reconnect with a valid workspace token.");
161
+ }
162
+ if (error.status === 404) {
163
+ return new Error("This Lore server does not support listing learnings. Upgrade the server to use lore learnings.");
164
+ }
165
+ return new Error(`Lore learnings failed with HTTP ${error.status}.`);
166
+ }
167
+ if (error instanceof ZodError ||
168
+ error instanceof SyntaxError ||
169
+ (error instanceof LoreTransportError && error.code === "response_too_large")) {
170
+ return new Error("Lore server returned an incompatible learnings response. Upgrade the server and CLI.");
171
+ }
172
+ return new Error("Lore API is unreachable. Run lore doctor to diagnose connectivity.");
173
+ }
174
+ /** Every matching learning, loaded page by page so exports are complete. */
175
+ export async function loadAllLearnings(client, filters) {
176
+ const learnings = [];
177
+ const seen = new Set();
178
+ for (let offset = 0;;) {
179
+ const page = await client.listLearnings({
180
+ ...(filters.repo === undefined ? {} : { repo: filters.repo }),
181
+ status: [...filters.statuses],
182
+ ...(filters.categories === undefined ? {} : { category: [...filters.categories] }),
183
+ ...(filters.query === undefined ? {} : { query: filters.query }),
184
+ limit: PAGE_SIZE,
185
+ offset,
186
+ });
187
+ for (const memory of page.memories) {
188
+ // A learning created mid-export can shift pages; keep each one once.
189
+ if (!seen.has(memory.id)) {
190
+ seen.add(memory.id);
191
+ learnings.push(memory);
192
+ }
193
+ }
194
+ offset += page.memories.length;
195
+ if (page.memories.length === 0 || offset >= page.total)
196
+ return learnings;
197
+ }
198
+ }
199
+ export async function runLearningsCommand(args, config, options = {}) {
200
+ const parsed = parseLearningsArguments(args);
201
+ if (parsed === null)
202
+ return;
203
+ if (config === null) {
204
+ throw new Error("Lore is not connected. Run: lore connect --token <workspace-token>");
205
+ }
206
+ const fetcher = options.fetcher ?? fetch;
207
+ let repo;
208
+ let repoSource;
209
+ if (parsed.allRepositories) {
210
+ repoSource = "all";
211
+ }
212
+ else if (parsed.repo !== undefined) {
213
+ repo = parsed.repo;
214
+ repoSource = "flag";
215
+ }
216
+ else {
217
+ repo = await detectRepository(options.cwd ?? process.cwd());
218
+ repoSource = "folder";
219
+ if (repo === undefined) {
220
+ throw new Error("No Git repository detected in this folder. Use --repo <owner/repository> or --all-repositories.");
221
+ }
222
+ }
223
+ // The same workspace repository policy that hooks and lore ask honour.
224
+ // Without a repository, only a workspace that allows every repository passes.
225
+ const permission = await checkWorkspaceRepository(config, repo, fetcher);
226
+ if (!permission.allowed) {
227
+ if (permission.failure === "rejected") {
228
+ throw new Error("Lore authentication failed. Reconnect with a valid workspace token.");
229
+ }
230
+ if (permission.failure !== undefined) {
231
+ throw new Error("Lore API is unreachable. Run lore doctor to diagnose connectivity.");
232
+ }
233
+ throw new Error(repo === undefined
234
+ ? "This workspace limits Lore to selected repositories. Use --repo <owner/repository>."
235
+ : `Lore is off for this repository. ${permission.reason}.`);
236
+ }
237
+ const client = new SharedMemoryClient({
238
+ baseUrl: config.apiUrl,
239
+ headers: { authorization: `Bearer ${config.token}` },
240
+ fetch: fetcher,
241
+ });
242
+ let learnings;
243
+ try {
244
+ learnings = await loadAllLearnings(client, {
245
+ ...(repo === undefined ? {} : { repo }),
246
+ statuses: parsed.statuses,
247
+ ...(parsed.categories === undefined ? {} : { categories: parsed.categories }),
248
+ ...(parsed.query === undefined ? {} : { query: parsed.query }),
249
+ });
250
+ }
251
+ catch (error) {
252
+ throw describeFailure(error);
253
+ }
254
+ const listing = {
255
+ repo: repo ?? null,
256
+ statuses: parsed.statuses,
257
+ learnings,
258
+ };
259
+ if (parsed.json) {
260
+ process.stdout.write(`${JSON.stringify({ repo: listing.repo, total: learnings.length, learnings }, null, 2)}\n`);
261
+ return;
262
+ }
263
+ process.stdout.write(formatLearnings(listing, repoSource));
264
+ }
265
+ //# sourceMappingURL=learnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learnings.js","sourceRoot":"","sources":["../src/learnings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAuQ3D,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED,6DAA6D;AAC7D,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CA8Nf;AAoMD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAyGf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAwBf"}
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA2Q3D,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED,6DAA6D;AAC7D,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAgSf;AAwMD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CA0Gf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAwBf"}
package/dist/live.js CHANGED
@@ -7,7 +7,7 @@ import { dirname, resolve } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { WebSocket } from "ws";
9
9
  import { ListRuntimesResponseSchema, LiveRuntimeSchema, } from "@lore-co/core";
10
- import { loreApiRequest } from "./api.js";
10
+ import { LoreApiError, loreApiRequest } from "./api.js";
11
11
  import { ensureMachineRegistered, readMachineIdentity } from "./machine.js";
12
12
  import { openPty } from "./pty.js";
13
13
  import { IS_STANDALONE_BINARY } from "./version.js";
@@ -38,6 +38,9 @@ Start a live session with:
38
38
  `;
39
39
  const REPLAY_BUFFER_LIMIT = 256 * 1024;
40
40
  const HEARTBEAT_INTERVAL_MS = 30_000;
41
+ const RELAY_RETRY_INITIAL_MS = 5_000;
42
+ const RELAY_RETRY_MAX_MS = 30_000;
43
+ const RELAY_CONFLICT_NOTICE = "Remote connection already in use. Retrying automatically.";
41
44
  const SOCKET_WAIT_MS = process.platform === "win32" ? 20_000 : 5_000;
42
45
  // A spec with no persisted pid is ambiguous: either the daemon is still
43
46
  // starting (the parent wrote the spec; the daemon has not reached its pid
@@ -293,10 +296,11 @@ export async function runLiveHostCommand(args, config, paths) {
293
296
  if (id === undefined) {
294
297
  throw new Error("live-host requires --id");
295
298
  }
296
- const spec = await readSpec(paths, id);
297
- if (spec === null) {
299
+ const loadedSpec = await readSpec(paths, id);
300
+ if (loadedSpec === null) {
298
301
  throw new Error(`Unknown live session: ${id}`);
299
302
  }
303
+ const spec = loadedSpec;
300
304
  spec.pid = process.pid;
301
305
  if (process.platform === "win32")
302
306
  spec.pipeToken = randomBytes(32).toString("hex");
@@ -315,7 +319,11 @@ export async function runLiveHostCommand(args, config, paths) {
315
319
  let replay = Buffer.alloc(0);
316
320
  let hostSocket = null;
317
321
  let heartbeat = null;
322
+ let reconnect = null;
323
+ let reconnectDelay = RELAY_RETRY_INITIAL_MS;
318
324
  let exited = false;
325
+ let hubStopped = false;
326
+ let hubStateWrite;
319
327
  const broadcast = (frame) => {
320
328
  const encoded = encodeFrame(frame);
321
329
  for (const client of clients) {
@@ -325,6 +333,28 @@ export async function runLiveHostCommand(args, config, paths) {
325
333
  hostSocket.send(JSON.stringify(frame));
326
334
  }
327
335
  };
336
+ const persistHubState = () => {
337
+ const state = { ...spec };
338
+ // Serialize transient recovery notices with permanent access failures.
339
+ hubStateWrite = (hubStateWrite ?? Promise.resolve())
340
+ .then(() => writeSpec(paths, state)).catch(() => undefined);
341
+ };
342
+ const stopHubLink = (status) => {
343
+ if (exited || hubStopped || ![401, 403, 404].includes(status))
344
+ return;
345
+ hubStopped = true;
346
+ if (heartbeat !== null)
347
+ clearInterval(heartbeat);
348
+ if (reconnect !== null)
349
+ clearTimeout(reconnect);
350
+ hostSocket?.terminate();
351
+ spec.hubError = status === 404
352
+ ? "Remote session unavailable. Check the server version and restart this live session."
353
+ : "Remote access denied. Reconnect Lore and restart this live session.";
354
+ broadcast({ t: "notice", message: `${spec.hubError} Local access still works.` });
355
+ // Persist the notice for detached sessions and later lore attach --list.
356
+ persistHubState();
357
+ };
328
358
  pty.onData((chunk) => {
329
359
  replay = Buffer.concat([replay, chunk]);
330
360
  if (replay.length > REPLAY_BUFFER_LIMIT) {
@@ -340,12 +370,14 @@ export async function runLiveHostCommand(args, config, paths) {
340
370
  if (heartbeat !== null) {
341
371
  clearInterval(heartbeat);
342
372
  }
373
+ if (reconnect !== null)
374
+ clearTimeout(reconnect);
343
375
  broadcast({ t: "exit", code });
344
376
  for (const client of clients) {
345
377
  client.end();
346
378
  }
347
379
  hostSocket?.close();
348
- if (config !== null && spec.runtimeId !== undefined) {
380
+ if (config !== null && spec.runtimeId !== undefined && !hubStopped) {
349
381
  try {
350
382
  await loreApiRequest(config, "POST", `/v1/runtimes/${spec.runtimeId}/heartbeat`, LiveRuntimeSchema, { status: "exited" });
351
383
  }
@@ -353,6 +385,7 @@ export async function runLiveHostCommand(args, config, paths) {
353
385
  // The hub may be unreachable; local cleanup still applies.
354
386
  }
355
387
  }
388
+ await hubStateWrite;
356
389
  await rm(specPath(paths, id), { force: true });
357
390
  await removeSocket(socketPath(paths, id));
358
391
  process.exit(code ?? 0);
@@ -382,6 +415,8 @@ export async function runLiveHostCommand(args, config, paths) {
382
415
  const accept = () => {
383
416
  clients.add(client);
384
417
  client.write(encodeFrame({ t: "replay", d: replay.toString("base64") }));
418
+ if (spec.hubError)
419
+ client.write(encodeFrame({ t: "notice", message: `${spec.hubError} Local access still works.` }));
385
420
  };
386
421
  if (authenticated)
387
422
  accept();
@@ -451,21 +486,47 @@ export async function runLiveHostCommand(args, config, paths) {
451
486
  spec.runtimeId = runtime.id;
452
487
  await writeSpec(paths, spec);
453
488
  heartbeat = setInterval(() => {
454
- void loreApiRequest(config, "POST", `/v1/runtimes/${runtime.id}/heartbeat`, LiveRuntimeSchema, { status: "running" }).catch(() => undefined);
489
+ void loreApiRequest(config, "POST", `/v1/runtimes/${runtime.id}/heartbeat`, LiveRuntimeSchema, { status: "running" }).catch(error => {
490
+ if (error instanceof LoreApiError)
491
+ stopHubLink(error.status);
492
+ // Transient connectivity failures are retried on the next heartbeat.
493
+ });
455
494
  }, HEARTBEAT_INTERVAL_MS);
456
495
  connectHostRelay(config, runtime.id);
457
496
  }
458
- catch {
459
- // Local-only live session.
497
+ catch (error) {
498
+ if (error instanceof LoreApiError)
499
+ stopHubLink(error.status);
500
+ // Local access remains available even if the hub is unreachable.
460
501
  }
461
502
  }
462
503
  function connectHostRelay(activeConfig, runtimeId) {
504
+ if (exited || hubStopped)
505
+ return;
463
506
  const socket = new WebSocket(wsUrl(activeConfig.apiUrl, runtimeId, "host"), {
464
507
  headers: { authorization: `Bearer ${activeConfig.token}` },
465
508
  });
509
+ let stable;
510
+ const connected = () => {
511
+ if (exited || hubStopped || socket !== hostSocket || socket.readyState !== WebSocket.OPEN)
512
+ return;
513
+ clearTimeout(stable);
514
+ reconnectDelay = RELAY_RETRY_INITIAL_MS;
515
+ if (spec.hubError === RELAY_CONFLICT_NOTICE) {
516
+ delete spec.hubError;
517
+ persistHubState();
518
+ broadcast({ t: "notice", message: "Remote connection restored." });
519
+ }
520
+ };
521
+ // An upgrade alone is not acceptance: a duplicate host opens before 4009.
522
+ // A ping/frame proves acceptance; the timer supports older idle relays.
523
+ socket.on("open", () => { stable = setTimeout(connected, HEARTBEAT_INTERVAL_MS); stable.unref(); });
524
+ socket.on("ping", connected);
466
525
  socket.on("message", (raw) => {
467
526
  try {
468
527
  const frame = JSON.parse(String(raw));
528
+ if (["joined", "i", "resize"].includes(frame.t))
529
+ connected();
469
530
  if (frame.t === "joined" && typeof frame.client === "string") {
470
531
  socket.send(JSON.stringify({
471
532
  t: "replay",
@@ -480,11 +541,29 @@ export async function runLiveHostCommand(args, config, paths) {
480
541
  // Ignore malformed frames.
481
542
  }
482
543
  });
483
- socket.on("close", () => {
484
- if (!exited) {
485
- setTimeout(() => {
544
+ socket.on("unexpected-response", (_request, response) => {
545
+ stopHubLink(response.statusCode ?? 0);
546
+ response.resume();
547
+ socket.terminate();
548
+ });
549
+ socket.on("close", code => {
550
+ clearTimeout(stable);
551
+ if (hostSocket === socket)
552
+ hostSocket = null;
553
+ if (code === 4001)
554
+ stopHubLink(403);
555
+ if (!exited && !hubStopped) {
556
+ if (code === 4009 && spec.hubError !== RELAY_CONFLICT_NOTICE) {
557
+ spec.hubError = RELAY_CONFLICT_NOTICE;
558
+ persistHubState();
559
+ broadcast({ t: "notice", message: `${RELAY_CONFLICT_NOTICE} Local access still works.` });
560
+ }
561
+ reconnect = setTimeout(() => {
562
+ reconnect = null;
486
563
  connectHostRelay(activeConfig, runtimeId);
487
- }, 5_000).unref();
564
+ }, reconnectDelay);
565
+ reconnect.unref();
566
+ reconnectDelay = Math.min(reconnectDelay * 2, RELAY_RETRY_MAX_MS);
488
567
  }
489
568
  });
490
569
  socket.on("error", () => {
@@ -547,6 +626,10 @@ function runTerminalLoop(transport, onEnd) {
547
626
  handleFrame(frame) {
548
627
  if (ended)
549
628
  return;
629
+ if (frame.t === "notice" && typeof frame.message === "string") {
630
+ process.stdout.write(`\r\n[lore] ${frame.message}\r\n`);
631
+ return;
632
+ }
550
633
  if ((frame.t === "o" || frame.t === "replay") &&
551
634
  typeof frame.d === "string") {
552
635
  process.stdout.write(Buffer.from(frame.d, "base64"));
@@ -730,6 +813,8 @@ export async function runAttachCommand(args, config, paths) {
730
813
  for (const spec of specs) {
731
814
  const where = spec.repo ?? spec.project ?? "no repo";
732
815
  process.stdout.write(`${displayRuntimeId(spec.id, localSpecs)} · ${spec.agent} · ${where} · started ${spec.createdAt.slice(0, 16).replace("T", " ")}\n`);
816
+ if (spec.hubError)
817
+ process.stdout.write(` ${spec.hubError} Local access still works.\n`);
733
818
  }
734
819
  if (!list) {
735
820
  process.stdout.write("\nSeveral live sessions are running. Pick one with --runtime <id>.\n");