@lore-co/cli 0.2.33 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -8
- package/dist/capture-scope.d.ts +8 -1
- package/dist/capture-scope.d.ts.map +1 -1
- package/dist/capture-scope.js +14 -2
- package/dist/capture-scope.js.map +1 -1
- package/dist/cli.d.ts +8 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +111 -19
- package/dist/cli.js.map +1 -1
- package/dist/connect-project.d.ts.map +1 -1
- package/dist/connect-project.js +3 -3
- package/dist/connect-project.js.map +1 -1
- package/dist/connections.d.ts +3 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +20 -1
- package/dist/connections.js.map +1 -1
- package/dist/generated-assets.d.ts +5 -5
- package/dist/generated-assets.js +5 -5
- package/dist/generic-mcp.d.ts +4 -1
- package/dist/generic-mcp.d.ts.map +1 -1
- package/dist/generic-mcp.js +6 -2
- package/dist/generic-mcp.js.map +1 -1
- package/dist/mcp-config.d.ts +1 -1
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +6 -1
- package/dist/mcp-config.js.map +1 -1
- package/dist/runtime-redaction.d.ts.map +1 -1
- package/dist/runtime-redaction.js +53 -3
- package/dist/runtime-redaction.js.map +1 -1
- package/dist/runtime.d.ts +15 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +70 -9
- package/dist/runtime.js.map +1 -1
- package/dist/self-host.d.ts +2 -2
- package/dist/self-host.d.ts.map +1 -1
- package/dist/self-host.js +5 -4
- package/dist/self-host.js.map +1 -1
- package/dist/skills.d.ts +5 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +18 -4
- package/dist/skills.js.map +1 -1
- package/dist/update.js +3 -3
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -28,9 +28,12 @@ lore doctor
|
|
|
28
28
|
|
|
29
29
|
The package requires Node.js 22 or newer and installs the `lore` command.
|
|
30
30
|
|
|
31
|
+
For IBM Bob, run `lore connect --login --folder . --agent bob`, then restart
|
|
32
|
+
Bob. Bob Shell reads the same settings.
|
|
33
|
+
|
|
31
34
|
In Connect, **This project** asks your agent to confirm the current folder. **Choose another project** offers a native folder picker, GitHub selection, and manual path entry. The CLI also supports `--current-project` (interactive confirmation), `--choose-folder` (a picker on this machine), and `--repository github.com/owner/repo` alongside a folder choice to verify its Git origin. Cancelling or choosing a mismatched checkout stops setup before recording. GitHub selection does not change workspace policy.
|
|
32
35
|
|
|
33
|
-
Run setup from the project you want to record: `--folder .` includes that folder and its subfolders.
|
|
36
|
+
Run setup from the project you want to record: `--folder .` includes that folder and its subfolders. In a Git worktree, Lore records the main checkout, which covers all of its worktrees. Run it again in each project you want Lore in: every `--folder` adds to the saved folders, `--replace-folders` records only in the folders given, and `--all-projects` records everywhere the workspace allows. New connections stay paused without a capture choice; reconnecting without one preserves your existing rules. Existing exclusions remain in effect. Add `--no-capture` (or run `lore capture off`) for retrieval-only mode: context, Guard, `lore ask`, and `lore remember` without automatic turn recording; `lore capture on` turns it back on. Use `lore scope check <folder>` to verify. Learning repository scope controls where knowledge applies and is separate from capture scope.
|
|
34
37
|
|
|
35
38
|
### Windows
|
|
36
39
|
|
|
@@ -111,7 +114,7 @@ incompatible servers leave local configuration untouched. Either
|
|
|
111
114
|
`LORE_WORKSPACE_TOKEN` or the legacy `LORE_TOKEN` can provide the token; if
|
|
112
115
|
both are set, they must match.
|
|
113
116
|
New token connections default to `https://api.uselore.co` and use
|
|
114
|
-
`https://uselore.co` for receipt links. Self-hosted deployments must pass
|
|
117
|
+
`https://app.uselore.co` for receipt links. Self-hosted deployments must pass
|
|
115
118
|
`--url` and may pass `--dashboard-url`; reconnecting without a new token keeps
|
|
116
119
|
the existing self-hosted endpoints.
|
|
117
120
|
Manual `--token` and environment credentials remain supported for CI and
|
|
@@ -137,7 +140,7 @@ steps left for you:
|
|
|
137
140
|
|
|
138
141
|
Next
|
|
139
142
|
1. Restart the agents above.
|
|
140
|
-
2. In ~/acme, ask your agent anything, then check https://uselore.co/connect.
|
|
143
|
+
2. In ~/acme, ask your agent anything, then check https://app.uselore.co/connect.
|
|
141
144
|
|
|
142
145
|
Try: "Lore, has anything like this come up before?" · /recap to save a session
|
|
143
146
|
```
|
|
@@ -282,7 +285,8 @@ your agent afterwards. Setup replaces the previous `lore-remember` skill with
|
|
|
282
285
|
Claude Code also supports `/lore`; Codex supports `$lore`.
|
|
283
286
|
|
|
284
287
|
The skill is installed in `~/.agents/skills/lore` for Codex, Cursor, Copilot and
|
|
285
|
-
OpenCode,
|
|
288
|
+
OpenCode, in the configured Claude directory's `skills/lore`, and in
|
|
289
|
+
`~/.bob/skills/lore` for IBM Bob, where `/recap` is also available. Cowork and
|
|
286
290
|
Copilot bundles include it too. Polytoken does not receive a skill installation.
|
|
287
291
|
|
|
288
292
|
Installation paths follow the official [Codex](https://developers.openai.com/codex/skills),
|
|
@@ -321,6 +325,11 @@ OpenCode now also registers the Lore MCP server (`~/.copilot/mcp-config.json`,
|
|
|
321
325
|
`mcp.lore` in `opencode.json`) so the agent has its tools. See
|
|
322
326
|
[Lore as an agent](../../docs/guides/lore-agent.md).
|
|
323
327
|
|
|
328
|
+
VS Code 1.143 and later runs Copilot chat through the Copilot CLI, which loads
|
|
329
|
+
the Copilot CLI hooks together with a repository's `.github/hooks`. On a machine
|
|
330
|
+
with Copilot CLI connected, the `copilot-vscode` repository hook stands down so
|
|
331
|
+
each prompt reaches Lore once, and `lore doctor` says so.
|
|
332
|
+
|
|
324
333
|
## Save knowledge manually
|
|
325
334
|
|
|
326
335
|
```sh
|
|
@@ -427,7 +436,7 @@ content-free `guard_check` audit event.
|
|
|
427
436
|
|
|
428
437
|
```sh
|
|
429
438
|
lore update
|
|
430
|
-
lore update --version v0.2.
|
|
439
|
+
lore update --version v0.2.35
|
|
431
440
|
```
|
|
432
441
|
|
|
433
442
|
`update` resolves the latest release to an exact tag, or uses the exact
|
|
@@ -450,7 +459,7 @@ receive timestamped backups, and customer-edited skill files are preserved with
|
|
|
450
459
|
a warning. The report is by agent and lists only what you need to do:
|
|
451
460
|
|
|
452
461
|
```text
|
|
453
|
-
✓ Lore 0.2.
|
|
462
|
+
✓ Lore 0.2.35 is installed
|
|
454
463
|
✓ Updated Lore for Claude Code and Codex
|
|
455
464
|
|
|
456
465
|
Next
|
|
@@ -823,7 +832,7 @@ same-repository, non-draft pull requests bearing the corresponding
|
|
|
823
832
|
`lore:codex-review` or `lore:devin-review` label.
|
|
824
833
|
|
|
825
834
|
Generated jobs require a published standalone binary release and default to
|
|
826
|
-
`treadiehq/lore-releases` at `v0.2.
|
|
835
|
+
`treadiehq/lore-releases` at `v0.2.35`. Set `LORE_CLI_REPOSITORY` to the publicly
|
|
827
836
|
readable `owner/repository` and `LORE_CLI_VERSION` to an existing release tag
|
|
828
837
|
when using another release source.
|
|
829
838
|
|
|
@@ -870,7 +879,7 @@ MCP exposes the read-only `share_lore` tool with `kind`, `id`, and optional
|
|
|
870
879
|
resource using the current credential before returning a link. They do not
|
|
871
880
|
publish content or grant access; recipients must sign in to the same workspace.
|
|
872
881
|
|
|
873
|
-
Hosted connections use `https://uselore.co`. For self-hosting, connect with
|
|
882
|
+
Hosted connections use `https://app.uselore.co`. For self-hosting, connect with
|
|
874
883
|
`--dashboard-url https://lore.example.com`, set `LORE_DASHBOARD_URL` for MCP,
|
|
875
884
|
or pass `dashboardUrl` to the SDK. The URL must be an HTTP(S) origin.
|
|
876
885
|
|
package/dist/capture-scope.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DirectoryRules } from "./directory-policy.js";
|
|
2
2
|
export interface CaptureScopeOptions {
|
|
3
3
|
folders?: readonly string[];
|
|
4
4
|
allProjects?: boolean;
|
|
5
5
|
repository?: string;
|
|
6
|
+
/** --replace-folders: record only in the folders given, dropping the saved ones. Without it, --folder adds to them. */
|
|
7
|
+
replaceFolders?: boolean;
|
|
6
8
|
}
|
|
7
9
|
/** Validate the choice on the recording machine before installing any hooks. */
|
|
8
10
|
export declare function captureDirectories(options: CaptureScopeOptions, home: string, cwd?: string): Promise<DirectoryRules | null | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* A folder in a linked Git worktree becomes the same folder in its main
|
|
13
|
+
* checkout, whose rule covers every worktree, not just this one.
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkoutFolder(path: string, home: string): Promise<string>;
|
|
9
16
|
/** Ignore inherited Git location overrides: inspect the selected folder itself. */
|
|
10
17
|
export declare function captureGit(folder: string, args: string[]): Promise<string>;
|
|
11
18
|
export declare function verifyCaptureRepository(folder: string, repository: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-scope.d.ts","sourceRoot":"","sources":["../src/capture-scope.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"capture-scope.d.ts","sourceRoot":"","sources":["../src/capture-scope.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uHAAuH;IACvH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,gFAAgF;AAChF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,CAkBpJ;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAID,mFAAmF;AACnF,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAIhF;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F"}
|
package/dist/capture-scope.js
CHANGED
|
@@ -4,12 +4,15 @@ import { execFile } from "node:child_process";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { repositoryIdentity } from "@lore-co/core";
|
|
6
6
|
import { systemCommand } from "@lore-co/core/system-command";
|
|
7
|
+
import { linkedWorktreeSourcePath } from "./directory-policy.js";
|
|
7
8
|
/** Validate the choice on the recording machine before installing any hooks. */
|
|
8
9
|
export async function captureDirectories(options, home, cwd = process.cwd()) {
|
|
9
10
|
if (options.repository !== undefined && (!/^github\.com\/[^/]+\/[^/]+$/u.test(repositoryIdentity(options.repository) ?? "") || options.allProjects || !options.folders?.length))
|
|
10
11
|
throw new Error("--repository needs a GitHub repository and a local --folder or --choose-folder selection.");
|
|
11
12
|
if (options.allProjects && options.folders !== undefined)
|
|
12
13
|
throw new Error("Use --folder or --all-projects, not both.");
|
|
14
|
+
if (options.replaceFolders && (options.allProjects || options.folders === undefined))
|
|
15
|
+
throw new Error("--replace-folders needs --folder, --current-project, or --choose-folder.");
|
|
13
16
|
if (options.allProjects)
|
|
14
17
|
return null;
|
|
15
18
|
if (options.folders === undefined)
|
|
@@ -24,12 +27,21 @@ export async function captureDirectories(options, home, cwd = process.cwd()) {
|
|
|
24
27
|
const path = await realpath(expanded).catch(() => { throw new Error(`Folder does not exist: ${folder}`); });
|
|
25
28
|
if (!(await stat(path)).isDirectory())
|
|
26
29
|
throw new Error(`Not a folder: ${folder}`);
|
|
30
|
+
const chosen = await checkoutFolder(path, home);
|
|
27
31
|
if (options.repository !== undefined)
|
|
28
|
-
await verifyCaptureRepository(
|
|
29
|
-
include.push(
|
|
32
|
+
await verifyCaptureRepository(chosen, options.repository);
|
|
33
|
+
include.push(chosen);
|
|
30
34
|
}
|
|
31
35
|
return { include: [...new Set(include)], exclude: [] };
|
|
32
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* A folder in a linked Git worktree becomes the same folder in its main
|
|
39
|
+
* checkout, whose rule covers every worktree, not just this one.
|
|
40
|
+
*/
|
|
41
|
+
export async function checkoutFolder(path, home) {
|
|
42
|
+
const checkout = await linkedWorktreeSourcePath(path, home);
|
|
43
|
+
return checkout === undefined ? path : await realpath(checkout).catch(() => resolve(checkout));
|
|
44
|
+
}
|
|
33
45
|
const runGit = promisify(execFile);
|
|
34
46
|
/** Ignore inherited Git location overrides: inspect the selected folder itself. */
|
|
35
47
|
export async function captureGit(folder, args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-scope.js","sourceRoot":"","sources":["../src/capture-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"capture-scope.js","sourceRoot":"","sources":["../src/capture-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAuB,MAAM,uBAAuB,CAAC;AAUtF,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA4B,EAAE,IAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACtG,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAC9R,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACvH,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAClL,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAChI,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC9K,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7H,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAChG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IAC7D,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEnC,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,IAAc;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACpN,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAc,EAAE,UAAkB;IAC9E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,iEAAiE,CAAC,CAAC;AACvL,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -10,10 +10,12 @@ import { type OutputStyle } from "./terminal-output.js";
|
|
|
10
10
|
import { type ReliabilityStoreInspection } from "./reliability-store.js";
|
|
11
11
|
export declare const LORE_OPENCODE_PLUGIN = "@lore-co/opencode";
|
|
12
12
|
export declare const DEFAULT_HOSTED_API_URL = "https://api.uselore.co";
|
|
13
|
-
export declare const DEFAULT_HOSTED_DASHBOARD_URL = "https://uselore.co";
|
|
14
|
-
declare const CONFIGURED_AGENT_NAMES: readonly ["claude", "codex", "copilot-cli", "copilot-vscode", "cursor", "opencode", "polytoken"];
|
|
13
|
+
export declare const DEFAULT_HOSTED_DASHBOARD_URL = "https://app.uselore.co";
|
|
14
|
+
declare const CONFIGURED_AGENT_NAMES: readonly ["bob", "claude", "codex", "copilot-cli", "copilot-vscode", "cursor", "opencode", "polytoken"];
|
|
15
15
|
export type ConfiguredAgentName = (typeof CONFIGURED_AGENT_NAMES)[number];
|
|
16
16
|
export type ConnectAgentName = ConfiguredAgentName | "copilot" | "cowork" | "devin" | "generic" | "t3code";
|
|
17
|
+
/** Agents whose hooks file takes Claude Code's `hooks` shape. */
|
|
18
|
+
type ClaudeShapedHookAgent = Extract<CommandHookAgentName, "bob" | "claude" | "codex" | "copilot-vscode">;
|
|
17
19
|
/** Capture mode of a connection: absent means on. */
|
|
18
20
|
export declare function captureEnabled(config: Pick<ConnectorConfig, "capture"> | null | undefined): boolean;
|
|
19
21
|
export interface LorePaths {
|
|
@@ -31,6 +33,7 @@ export interface LorePaths {
|
|
|
31
33
|
runtimePackage: string;
|
|
32
34
|
state: string;
|
|
33
35
|
queue: string;
|
|
36
|
+
bobSettings: string;
|
|
34
37
|
codexHooks: string;
|
|
35
38
|
copilotCliHooks: string;
|
|
36
39
|
copilotVscodeHooks: string;
|
|
@@ -87,7 +90,7 @@ interface ExternalSurfaceStatus {
|
|
|
87
90
|
capabilities: DeepReadonly<ReliabilityIntegrationManifest["capabilities"]>;
|
|
88
91
|
}
|
|
89
92
|
export declare function getLorePaths(home?: string, environment?: NodeJS.ProcessEnv, cwd?: string): LorePaths;
|
|
90
|
-
export declare function mergeLoreHooks(input: Record<string, unknown>, agent:
|
|
93
|
+
export declare function mergeLoreHooks(input: Record<string, unknown>, agent: ClaudeShapedHookAgent, paths: LorePaths, capture?: boolean): Record<string, unknown>;
|
|
91
94
|
export declare function removeLoreHooks(input: Record<string, unknown>): Record<string, unknown>;
|
|
92
95
|
export declare function countLoreHooks(input: Record<string, unknown>): number;
|
|
93
96
|
export declare function mergeLoreCursorMcp(input: unknown, paths: LorePaths): Record<string, unknown>;
|
|
@@ -192,6 +195,8 @@ export interface ConnectResult {
|
|
|
192
195
|
mode: "on" | "off";
|
|
193
196
|
folders: string[] | null;
|
|
194
197
|
excludedFolders: string[];
|
|
198
|
+
/** Set when this run chose folders for a saved connection: its folders before, null for all projects. */
|
|
199
|
+
previousFolders?: string[] | null;
|
|
195
200
|
};
|
|
196
201
|
skillFiles: string[];
|
|
197
202
|
/** Lore agent definitions installed for the connected harnesses. */
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -22,7 +22,7 @@ import { basename, dirname, resolve, sep } from "node:path";
|
|
|
22
22
|
import { homedir, hostname, platform } from "node:os";
|
|
23
23
|
import { setTimeout as delay } from "node:timers/promises";
|
|
24
24
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
25
|
-
import { CLAUDE_RELIABILITY_INTEGRATION, CODEX_RELIABILITY_INTEGRATION, COPILOT_CLI_RELIABILITY_INTEGRATION, COPILOT_CLOUD_MCP_RELIABILITY_INTEGRATION, COPILOT_VSCODE_PREVIEW_RELIABILITY_INTEGRATION, CreateDeviceAuthorizationResponseSchema, CURSOR_RELIABILITY_INTEGRATION, NATIVE_CODING_AGENT_NAMES, OPENCODE_RELIABILITY_INTEGRATION, OperationalMetricsResponseSchema, PollDeviceAuthorizationResponseSchema, POLYTOKEN_RELIABILITY_INTEGRATION, RELIABILITY_INTEGRATION_CONTRACT_VERSION, ReliabilityInvocationRecordSchema, WorkspaceIdentityResponseSchema, canonicalJson, deriveReliabilityInvocationHealth, isNativeCodingAgent, } from "@lore-co/core";
|
|
25
|
+
import { BOB_RELIABILITY_INTEGRATION, CLAUDE_RELIABILITY_INTEGRATION, CODEX_RELIABILITY_INTEGRATION, COPILOT_CLI_RELIABILITY_INTEGRATION, COPILOT_CLOUD_MCP_RELIABILITY_INTEGRATION, COPILOT_VSCODE_PREVIEW_RELIABILITY_INTEGRATION, CreateDeviceAuthorizationResponseSchema, CURSOR_RELIABILITY_INTEGRATION, NATIVE_CODING_AGENT_NAMES, OPENCODE_RELIABILITY_INTEGRATION, OperationalMetricsResponseSchema, PollDeviceAuthorizationResponseSchema, POLYTOKEN_RELIABILITY_INTEGRATION, RELIABILITY_INTEGRATION_CONTRACT_VERSION, ReliabilityInvocationRecordSchema, WorkspaceIdentityResponseSchema, canonicalJson, deriveReliabilityInvocationHealth, isNativeCodingAgent, } from "@lore-co/core";
|
|
26
26
|
import { runHook, } from "./runtime.js";
|
|
27
27
|
import { readInvocationHealthWriteInput, runInvocationHealthWrite, } from "./invocation-health-writer.js";
|
|
28
28
|
import { runAskCommand } from "./ask.js";
|
|
@@ -56,10 +56,11 @@ import { runSelfHostCommand } from "./self-host.js";
|
|
|
56
56
|
import { ReliabilityStore, ReliabilityStoreError, integrationInvocationStateKey, } from "./reliability-store.js";
|
|
57
57
|
import { IS_STANDALONE_BINARY, LORE_VERSION } from "./version.js";
|
|
58
58
|
import { openNoFollow } from "@lore-co/core/no-follow";
|
|
59
|
+
import { HOSTED_LORE_DASHBOARD_URL, currentDashboardUrl } from "@lore-co/sdk";
|
|
59
60
|
const LORE_OWNER_ARGUMENT = "--owner lore";
|
|
60
61
|
export const LORE_OPENCODE_PLUGIN = "@lore-co/opencode";
|
|
61
62
|
export const DEFAULT_HOSTED_API_URL = "https://api.uselore.co";
|
|
62
|
-
export const DEFAULT_HOSTED_DASHBOARD_URL =
|
|
63
|
+
export const DEFAULT_HOSTED_DASHBOARD_URL = HOSTED_LORE_DASHBOARD_URL;
|
|
63
64
|
const CONFIGURED_AGENT_NAMES = NATIVE_CODING_AGENT_NAMES;
|
|
64
65
|
/** Agents that only need the saved credential: no hooks or agent config are written. */
|
|
65
66
|
const CREDENTIAL_ONLY_AGENTS = ["cowork", "devin"];
|
|
@@ -69,6 +70,11 @@ const HOOK_EVENTS = [
|
|
|
69
70
|
"Stop",
|
|
70
71
|
"SessionEnd",
|
|
71
72
|
];
|
|
73
|
+
/** IBM Bob's lifecycle hooks: the Claude Code shape, without SessionEnd. */
|
|
74
|
+
const BOB_HOOK_EVENTS = ["UserPromptSubmit", "PreToolUse", "Stop"];
|
|
75
|
+
function claudeShapedHookEvents(agent) {
|
|
76
|
+
return agent === "bob" ? BOB_HOOK_EVENTS : HOOK_EVENTS;
|
|
77
|
+
}
|
|
72
78
|
/**
|
|
73
79
|
* Hook events that exist only to record turns. Retrieval-only mode leaves them
|
|
74
80
|
* uninstalled, so the agent never hands a response to Lore at all.
|
|
@@ -85,6 +91,11 @@ export function captureEnabled(config) {
|
|
|
85
91
|
}
|
|
86
92
|
/** Tools the Context Guard PreToolUse hook cares about (regex matcher). */
|
|
87
93
|
const GUARD_TOOL_MATCHER = "Edit|Write|MultiEdit|NotebookEdit|ApplyPatch|apply_patch|edit|write|patch|str_replace_editor|Bash|bash|Shell|shell|exec_command|shell_command|run_terminal_cmd";
|
|
94
|
+
/** IBM Bob's file-writing and command tools (extension 2.2.3); Bob matches the regex against the tool name. */
|
|
95
|
+
const BOB_GUARD_TOOL_MATCHER = "^(write_file|apply_diff|insert_content|search_and_replace|execute_command)$";
|
|
96
|
+
function guardToolMatcher(agent) {
|
|
97
|
+
return agent === "bob" ? BOB_GUARD_TOOL_MATCHER : GUARD_TOOL_MATCHER;
|
|
98
|
+
}
|
|
88
99
|
const CURSOR_HOOK_EVENTS = [
|
|
89
100
|
"sessionStart",
|
|
90
101
|
"beforeSubmitPrompt",
|
|
@@ -115,6 +126,7 @@ const EXTERNAL_SURFACES = [
|
|
|
115
126
|
const AGENT_MANIFESTS = {
|
|
116
127
|
claude: CLAUDE_RELIABILITY_INTEGRATION,
|
|
117
128
|
codex: CODEX_RELIABILITY_INTEGRATION,
|
|
129
|
+
bob: BOB_RELIABILITY_INTEGRATION,
|
|
118
130
|
"copilot-cli": COPILOT_CLI_RELIABILITY_INTEGRATION,
|
|
119
131
|
"copilot-vscode": COPILOT_VSCODE_PREVIEW_RELIABILITY_INTEGRATION,
|
|
120
132
|
cursor: CURSOR_RELIABILITY_INTEGRATION,
|
|
@@ -133,16 +145,17 @@ Options:
|
|
|
133
145
|
--current-project Confirm and record the current Git project
|
|
134
146
|
--choose-folder Open a folder picker on this machine
|
|
135
147
|
--repository <repo> Verify the selected folder matches this GitHub repository
|
|
136
|
-
--folder <path>
|
|
148
|
+
--folder <path> Also record in this folder and subfolders (repeatable)
|
|
149
|
+
--replace-folders With --folder: record only in the folders given, dropping saved ones
|
|
137
150
|
--all-projects Record in all projects allowed by your workspace
|
|
138
151
|
--no-capture Retrieval-only mode: context, guard, and manual saves, no turn recording
|
|
139
152
|
--capture Turn automatic turn recording back on
|
|
140
153
|
--url <url> Lore API base URL (default: https://api.uselore.co)
|
|
141
|
-
--dashboard-url <url> Lore dashboard URL (default: https://uselore.co for hosted Lore)
|
|
154
|
+
--dashboard-url <url> Lore dashboard URL (default: https://app.uselore.co for hosted Lore)
|
|
142
155
|
--login Approve access securely in the Lore dashboard
|
|
143
156
|
--no-open Print the approval URL without opening a browser
|
|
144
157
|
--token <token> Workspace bearer token (or LORE_WORKSPACE_TOKEN/LORE_TOKEN)
|
|
145
|
-
--agent <name> claude, codex, copilot, copilot-cli, copilot-vscode, cowork, cursor, devin, generic, opencode, polytoken, or t3code
|
|
158
|
+
--agent <name> bob, claude, codex, copilot, copilot-cli, copilot-vscode, cowork, cursor, devin, generic, opencode, polytoken, or t3code
|
|
146
159
|
--agent-id <id> With --agent generic: credit MCP saves to this agent (default: generic)
|
|
147
160
|
--write With --agent generic: let the agent save through MCP (saves stay proposals)
|
|
148
161
|
--timeout-ms <ms> Hook request timeout, 250-10000 (default: 2500)
|
|
@@ -153,6 +166,8 @@ Options:
|
|
|
153
166
|
--help Show this command's help
|
|
154
167
|
|
|
155
168
|
New connections stay paused until you choose a project, a folder, or --all-projects.
|
|
169
|
+
Each --folder adds to the folders the connection records. Only --replace-folders
|
|
170
|
+
drops saved folders, and the summary names each one it dropped.
|
|
156
171
|
Reconnecting without a capture option keeps your saved folder rules and capture mode.
|
|
157
172
|
Folder choices control where Lore runs; learning scope controls where knowledge applies.
|
|
158
173
|
With --no-capture, Lore installs no Stop or SessionEnd hooks and sends no turns.
|
|
@@ -261,6 +276,7 @@ export function getLorePaths(home, environment = process.env, cwd = process.cwd(
|
|
|
261
276
|
runtimePackage: resolve(loreDirectory, "bin", "package.json"),
|
|
262
277
|
state: resolve(loreDirectory, "state"),
|
|
263
278
|
queue: resolve(loreDirectory, "queue"),
|
|
279
|
+
bobSettings: resolve(resolvedHome, ".bob", "settings", "settings.json"),
|
|
264
280
|
codexHooks: resolve(resolvedHome, ".codex", "hooks.json"),
|
|
265
281
|
copilotCliHooks: resolve(copilotHome, "hooks", "lore.json"),
|
|
266
282
|
copilotVscodeHooks: resolve(environment.LORE_COPILOT_VSCODE_HOOKS?.trim() ||
|
|
@@ -347,6 +363,9 @@ function hookTimeout(seconds) {
|
|
|
347
363
|
return isWindows() ? Math.max(seconds, 10) : seconds;
|
|
348
364
|
}
|
|
349
365
|
function eventHandler(agent, event, paths) {
|
|
366
|
+
// Bob documents only type, command, matcher and timeout, and drops a hooks
|
|
367
|
+
// file its schema rejects, so its entries carry nothing undocumented.
|
|
368
|
+
const documented = agent === "bob";
|
|
350
369
|
return {
|
|
351
370
|
type: "command",
|
|
352
371
|
command: hookCommand(agent, paths),
|
|
@@ -357,10 +376,10 @@ function eventHandler(agent, event, paths) {
|
|
|
357
376
|
: event === "PreToolUse"
|
|
358
377
|
? 10
|
|
359
378
|
: 25),
|
|
360
|
-
...(event === "UserPromptSubmit"
|
|
379
|
+
...(event === "UserPromptSubmit" && !documented
|
|
361
380
|
? { statusMessage: "Loading Lore context" }
|
|
362
381
|
: {}),
|
|
363
|
-
...(event === "PreToolUse"
|
|
382
|
+
...(event === "PreToolUse" && !documented
|
|
364
383
|
? { statusMessage: "Checking Lore guard" }
|
|
365
384
|
: {}),
|
|
366
385
|
};
|
|
@@ -371,7 +390,7 @@ export function mergeLoreHooks(input, agent, paths, capture = true) {
|
|
|
371
390
|
throw new Error("Agent configuration field \"hooks\" must be a JSON object");
|
|
372
391
|
}
|
|
373
392
|
const hooks = isObject(result.hooks) ? { ...result.hooks } : {};
|
|
374
|
-
const installed = installedEvents(
|
|
393
|
+
const installed = installedEvents(claudeShapedHookEvents(agent), capture);
|
|
375
394
|
for (const event of HOOK_EVENTS) {
|
|
376
395
|
if (hooks[event] !== undefined && !Array.isArray(hooks[event])) {
|
|
377
396
|
throw new Error(`Agent hook event "${event}" must be a JSON array`);
|
|
@@ -380,7 +399,7 @@ export function mergeLoreHooks(input, agent, paths, capture = true) {
|
|
|
380
399
|
...stripLoreFromEvent(hooks[event]),
|
|
381
400
|
...(installed.includes(event) ? [{
|
|
382
401
|
// Guard checks run only for mutation-shaped tools.
|
|
383
|
-
...(event === "PreToolUse" ? { matcher:
|
|
402
|
+
...(event === "PreToolUse" ? { matcher: guardToolMatcher(agent) } : {}),
|
|
384
403
|
hooks: [eventHandler(agent, event, paths)],
|
|
385
404
|
}] : []),
|
|
386
405
|
];
|
|
@@ -492,6 +511,9 @@ function loreMcpInvocation() {
|
|
|
492
511
|
export function mcpConfigPath(agent, hooksPath) {
|
|
493
512
|
const directory = dirname(hooksPath);
|
|
494
513
|
switch (agent) {
|
|
514
|
+
case "bob":
|
|
515
|
+
// ~/.bob/settings/settings.json pairs with ~/.bob/settings/mcp.json.
|
|
516
|
+
return resolve(directory, "mcp.json");
|
|
495
517
|
case "claude":
|
|
496
518
|
// ~/.claude/settings.json pairs with ~/.claude.json; a CLAUDE_CONFIG_DIR keeps both inside it.
|
|
497
519
|
return basename(directory) === ".claude"
|
|
@@ -888,14 +910,14 @@ function commandHookInstallationUnits(input, agent, paths, index, total, capture
|
|
|
888
910
|
throw new Error(`${agent} configuration field "hooks" must be an object`);
|
|
889
911
|
}
|
|
890
912
|
const hooks = isObject(configuration.hooks) ? configuration.hooks : {};
|
|
891
|
-
return installedEvents(
|
|
913
|
+
return installedEvents(claudeShapedHookEvents(agent), capture).map((event) => {
|
|
892
914
|
const groups = hooks[event];
|
|
893
915
|
if (groups !== undefined && !Array.isArray(groups)) {
|
|
894
916
|
throw new Error(`${agent} hook event "${event}" must be an array`);
|
|
895
917
|
}
|
|
896
918
|
const candidates = Array.isArray(groups) ? groups : [];
|
|
897
919
|
const expected = {
|
|
898
|
-
...(event === "PreToolUse" ? { matcher:
|
|
920
|
+
...(event === "PreToolUse" ? { matcher: guardToolMatcher(agent) } : {}),
|
|
899
921
|
hooks: [eventHandler(agent, event, paths)],
|
|
900
922
|
};
|
|
901
923
|
const ownedCount = candidates.reduce((count, candidate) => {
|
|
@@ -1027,6 +1049,7 @@ function openCodeInstallationUnits(input, paths, index, total) {
|
|
|
1027
1049
|
}
|
|
1028
1050
|
function inspectInstallationUnits(input, agent, paths, index, total, capture) {
|
|
1029
1051
|
switch (agent) {
|
|
1052
|
+
case "bob":
|
|
1030
1053
|
case "claude":
|
|
1031
1054
|
case "codex":
|
|
1032
1055
|
return commandHookInstallationUnits(input, agent, paths, index, total, capture);
|
|
@@ -1169,7 +1192,7 @@ function parseConnectorConfig(value) {
|
|
|
1169
1192
|
? value.timeoutMs
|
|
1170
1193
|
: 2_500;
|
|
1171
1194
|
const dashboardUrl = typeof value.dashboardUrl === "string"
|
|
1172
|
-
? normalizeApiUrl(value.dashboardUrl)
|
|
1195
|
+
? currentDashboardUrl(normalizeApiUrl(value.dashboardUrl))
|
|
1173
1196
|
: undefined;
|
|
1174
1197
|
const parsedWorkspaceId = WorkspaceIdentityResponseSchema.shape.workspaceId.safeParse(value.workspaceId);
|
|
1175
1198
|
const workspaceId = parsedWorkspaceId.success
|
|
@@ -1347,6 +1370,26 @@ async function pathExists(path) {
|
|
|
1347
1370
|
return false;
|
|
1348
1371
|
}
|
|
1349
1372
|
}
|
|
1373
|
+
/**
|
|
1374
|
+
* IBM Bob: the desktop app bundle, or the `bob` (Bob Shell) and `bobide`
|
|
1375
|
+
* launchers on PATH. Bob installs the app in the platform's applications
|
|
1376
|
+
* folder and does not document a launcher, so the bundle is checked too.
|
|
1377
|
+
*/
|
|
1378
|
+
async function bobAvailable(paths) {
|
|
1379
|
+
if ((await commandExists("bob")) || (await commandExists("bobide")))
|
|
1380
|
+
return true;
|
|
1381
|
+
const environment = process.env;
|
|
1382
|
+
const candidates = platform() === "darwin"
|
|
1383
|
+
? ["/Applications/IBM Bob.app", resolve(paths.home, "Applications", "IBM Bob.app")]
|
|
1384
|
+
: isWindows()
|
|
1385
|
+
? [environment.LOCALAPPDATA, environment.ProgramFiles, environment["ProgramFiles(x86)"]]
|
|
1386
|
+
.flatMap((root) => root ? [resolve(root, "Programs", "IBM Bob"), resolve(root, "IBM Bob")] : [])
|
|
1387
|
+
: ["/usr/share/ibm-bob", "/usr/share/bob", "/opt/IBM Bob", "/opt/ibm-bob", "/usr/lib/ibm-bob"];
|
|
1388
|
+
for (const candidate of candidates)
|
|
1389
|
+
if (await pathExists(candidate))
|
|
1390
|
+
return true;
|
|
1391
|
+
return false;
|
|
1392
|
+
}
|
|
1350
1393
|
async function cursorAvailable(paths) {
|
|
1351
1394
|
return ((await commandExists("cursor")) ||
|
|
1352
1395
|
(await pathExists(paths.cursorUserData)));
|
|
@@ -1358,6 +1401,21 @@ function objectConfiguration(input, agent) {
|
|
|
1358
1401
|
return input;
|
|
1359
1402
|
}
|
|
1360
1403
|
const AGENT_TARGETS = {
|
|
1404
|
+
bob: {
|
|
1405
|
+
integration: "hooks",
|
|
1406
|
+
// Three native hooks plus the Lore MCP server entry.
|
|
1407
|
+
expected: (capture) => installedEvents(BOB_HOOK_EVENTS, capture).length + 1,
|
|
1408
|
+
runtimeRequired: true,
|
|
1409
|
+
emptyValue: () => ({}),
|
|
1410
|
+
configPath: (paths) => paths.bobSettings,
|
|
1411
|
+
// Bob creates ~/.bob/settings on its first run; the app bundle alone does
|
|
1412
|
+
// not mean it is used in this home.
|
|
1413
|
+
detect: async (paths) => (await commandExists("bob")) || (await commandExists("bobide")) || pathExists(dirname(paths.bobSettings)),
|
|
1414
|
+
executable: bobAvailable,
|
|
1415
|
+
merge: (input, paths, capture) => mergeLoreHooks(objectConfiguration(input, "bob"), "bob", paths, capture),
|
|
1416
|
+
remove: (input) => removeLoreHooks(objectConfiguration(input, "bob")),
|
|
1417
|
+
count: (input) => countLoreHooks(objectConfiguration(input, "bob")),
|
|
1418
|
+
},
|
|
1361
1419
|
claude: {
|
|
1362
1420
|
integration: "hooks",
|
|
1363
1421
|
// Native hooks plus the Lore MCP server entry.
|
|
@@ -2043,6 +2101,10 @@ function parseConnectArguments(args) {
|
|
|
2043
2101
|
parsed.allProjects = true;
|
|
2044
2102
|
continue;
|
|
2045
2103
|
}
|
|
2104
|
+
if (argument === "--replace-folders") {
|
|
2105
|
+
parsed.replaceFolders = true;
|
|
2106
|
+
continue;
|
|
2107
|
+
}
|
|
2046
2108
|
if (argument === "--write") {
|
|
2047
2109
|
parsed.writeTools = true;
|
|
2048
2110
|
continue;
|
|
@@ -2098,7 +2160,7 @@ function parseConnectArguments(args) {
|
|
|
2098
2160
|
parsed.agents.push(value);
|
|
2099
2161
|
}
|
|
2100
2162
|
else {
|
|
2101
|
-
throw new Error("--agent must be claude, codex, copilot, copilot-cli, copilot-vscode, cowork, cursor, devin, generic, opencode, polytoken, or t3code");
|
|
2163
|
+
throw new Error("--agent must be bob, claude, codex, copilot, copilot-cli, copilot-vscode, cowork, cursor, devin, generic, opencode, polytoken, or t3code");
|
|
2102
2164
|
}
|
|
2103
2165
|
}
|
|
2104
2166
|
validateConnectProjectOptions(parsed);
|
|
@@ -2170,7 +2232,7 @@ async function connectWithCredentialLocked(options, identity) {
|
|
|
2170
2232
|
: await authenticatedIdentity(existing.apiUrl, existing.token, timeoutMs).catch(() => undefined)
|
|
2171
2233
|
: undefined;
|
|
2172
2234
|
const directories = await captureDirectories(options, paths.home, options.cwd);
|
|
2173
|
-
const connection = await prepareConnection(paths, identity, { apiUrl, token, ...(directories === undefined ? {} : { directories }), ...(options.connectionName ? { connectionName: options.connectionName } : {}) }, previousIdentity);
|
|
2235
|
+
const connection = await prepareConnection(paths, identity, { apiUrl, token, ...(directories === undefined ? {} : { directories }), ...(options.replaceFolders ? { replaceFolders: true } : {}), ...(options.connectionName ? { connectionName: options.connectionName } : {}) }, previousIdentity);
|
|
2174
2236
|
await secureWindowsDirectory(paths.loreDirectory);
|
|
2175
2237
|
const recoveryEnv = options.home === undefined ? process.env : { ...process.env, ZDOTDIR: paths.home };
|
|
2176
2238
|
let recoveryWarning;
|
|
@@ -2223,7 +2285,7 @@ async function connectWithCredentialLocked(options, identity) {
|
|
|
2223
2285
|
// An MCP-only agent has no hooks or settings Lore can edit; it gets the skills and a printed entry.
|
|
2224
2286
|
const genericAgent = options.agents.includes(GENERIC_AGENT) ? options.genericAgent ?? { id: GENERIC_AGENT, writeTools: false } : undefined;
|
|
2225
2287
|
if (agents.length === 0 && credentialOnlyAgents.length === 0 && genericAgent === undefined) {
|
|
2226
|
-
throw new Error("No Claude, Codex, Copilot CLI, Cursor, OpenCode, or Polytoken installation detected. Use --agent <name>; T3 Code users can use --agent t3code, and Devin CLI users --agent devin.");
|
|
2288
|
+
throw new Error("No Claude, Codex, Copilot CLI, Cursor, IBM Bob, OpenCode, or Polytoken installation detected. Use --agent <name>; T3 Code users can use --agent t3code, and Devin CLI users --agent devin.");
|
|
2227
2289
|
}
|
|
2228
2290
|
const now = new Date();
|
|
2229
2291
|
// Reconnecting without a capture option keeps the saved mode, like folder rules.
|
|
@@ -2285,6 +2347,7 @@ async function connectWithCredentialLocked(options, identity) {
|
|
|
2285
2347
|
const loreAgent = await installLoreAgent(paths, installations);
|
|
2286
2348
|
if (genericAgent)
|
|
2287
2349
|
await recordGenericAgent(paths.loreDirectory, genericAgent, now);
|
|
2350
|
+
const folder = await firstMessageFolder(options.cwd ?? process.cwd(), config.directories, paths.home);
|
|
2288
2351
|
// An unchanged reconnect: same server, credential, and workspace, every
|
|
2289
2352
|
// configured agent was already configured, and no agent file was rewritten.
|
|
2290
2353
|
const alreadyConnected = existing !== null &&
|
|
@@ -2304,12 +2367,15 @@ async function connectWithCredentialLocked(options, identity) {
|
|
|
2304
2367
|
const codexNeedsApproval = !installedAgents.includes("codex") &&
|
|
2305
2368
|
changedHookFiles.some((path) => codexHookPaths.includes(path));
|
|
2306
2369
|
return {
|
|
2307
|
-
capture: {
|
|
2370
|
+
capture: {
|
|
2371
|
+
mode: capture ? "on" : "off", folders: config.directories?.include ?? null, excludedFolders: config.directories?.exclude ?? [],
|
|
2372
|
+
...(directories === undefined || connection.previousRules === undefined ? {} : { previousFolders: connection.previousRules === null ? null : connection.previousRules.include }),
|
|
2373
|
+
},
|
|
2308
2374
|
skillFiles: skills.files,
|
|
2309
2375
|
agentFiles: loreAgent.files,
|
|
2310
2376
|
...(genericAgent ? { genericAgent: {
|
|
2311
2377
|
...genericAgent,
|
|
2312
|
-
mcpServers: genericMcpServers(loreMcpInvocation(), paths.home, genericAgent).mcpServers,
|
|
2378
|
+
mcpServers: genericMcpServers(loreMcpInvocation(), paths.home, genericAgent, folder).mcpServers,
|
|
2313
2379
|
instructions: genericInstructions(genericAgent.id, skills.files.filter((file) => file.startsWith(resolve(paths.home, ".agents", "skills")))),
|
|
2314
2380
|
} } : {}),
|
|
2315
2381
|
connected: true,
|
|
@@ -2320,11 +2386,14 @@ async function connectWithCredentialLocked(options, identity) {
|
|
|
2320
2386
|
keptAgents,
|
|
2321
2387
|
alreadyConnected,
|
|
2322
2388
|
...(knownDashboardUrl === undefined ? {} : { dashboardUrl: knownDashboardUrl }),
|
|
2323
|
-
folder
|
|
2389
|
+
folder,
|
|
2324
2390
|
config: paths.config,
|
|
2325
2391
|
changedHookFiles,
|
|
2326
2392
|
backups,
|
|
2327
|
-
warnings: [...skills.warnings, ...loreAgent.warnings, ...(connection.needsFolders ? [`Lore is off for ${config.connectionName} until you choose where to record. Reconnect with --folder <path> or --all-projects, or run lore config open --connection ${config.connectionName}.`] : []),
|
|
2393
|
+
warnings: [...skills.warnings, ...loreAgent.warnings, ...(connection.needsFolders ? [`Lore is off for ${config.connectionName} until you choose where to record. Reconnect with --folder <path> or --all-projects, or run lore config open --connection ${config.connectionName}.`] : []),
|
|
2394
|
+
// Folders chosen for a connection that already covers all projects change nothing.
|
|
2395
|
+
...(directories && config.directories === undefined ? [`${config.connectionName} already covers all projects, including ${listText(directories.include)}. Add --replace-folders to record only there.`] : []),
|
|
2396
|
+
...requestedExpansion.warnings, ...hostRecoveryWarnings, ...(codexNeedsApproval
|
|
2328
2397
|
? [CODEX_APPROVAL_WARNING]
|
|
2329
2398
|
: [])],
|
|
2330
2399
|
...(recoveryNotice ? { recoveryNotice } : {}),
|
|
@@ -2476,6 +2545,8 @@ async function acknowledgeDeviceAuthorization(apiUrl, authorization) {
|
|
|
2476
2545
|
/** The exact step each agent needs before Lore records its first turn. */
|
|
2477
2546
|
export function connectNextStep(agent) {
|
|
2478
2547
|
switch (agent) {
|
|
2548
|
+
case "bob":
|
|
2549
|
+
return "Restart IBM Bob.";
|
|
2479
2550
|
case "claude":
|
|
2480
2551
|
return "Restart Claude Code and allow the lore MCP server when it asks.";
|
|
2481
2552
|
case "codex":
|
|
@@ -2514,6 +2585,7 @@ const CODEX_APPROVAL_WARNING = "Codex requires hook approval. Open /hooks in Cod
|
|
|
2514
2585
|
/** Product names for human output; --json keeps the agent ids. */
|
|
2515
2586
|
export function agentDisplayName(agent) {
|
|
2516
2587
|
switch (agent) {
|
|
2588
|
+
case "bob": return "IBM Bob";
|
|
2517
2589
|
case "claude": return "Claude Code";
|
|
2518
2590
|
case "codex": return "Codex";
|
|
2519
2591
|
case "copilot":
|
|
@@ -2569,6 +2641,11 @@ export function formatConnectResult(result, options = {}) {
|
|
|
2569
2641
|
? `Already connected to ${result.identity.workspaceName}, nothing changed`
|
|
2570
2642
|
: `Connected to ${result.identity.workspaceName}`);
|
|
2571
2643
|
out.note(`${records ? "Recording in" : "Lore runs in"} ${shownFolders}${excluded}${out.separator}${mode}`);
|
|
2644
|
+
// Folders this run stopped recording in, so a replaced list never turns Lore off somewhere silently.
|
|
2645
|
+
const previous = result.capture.previousFolders;
|
|
2646
|
+
const stopped = previous === undefined || folders === null ? [] : previous === null ? ["other projects"] : previous.filter((folder) => !folders.includes(folder)).map((folder) => out.path(folder));
|
|
2647
|
+
if (stopped.length)
|
|
2648
|
+
out.note(`${records ? "No longer recording in" : "Lore no longer runs in"} ${listText(stopped)}.`);
|
|
2572
2649
|
if (generic !== undefined && !nothingRecords)
|
|
2573
2650
|
out.note(`${generic.id} is MCP-only: Lore saves only what you ask it to.`);
|
|
2574
2651
|
// One row per agent: set up in this run first, then the ones kept as they were.
|
|
@@ -3739,7 +3816,22 @@ async function doctorCommand(args) {
|
|
|
3739
3816
|
detail: IS_STANDALONE_BINARY ? process.execPath : paths.runtime,
|
|
3740
3817
|
});
|
|
3741
3818
|
}
|
|
3819
|
+
// The Copilot runtime behind Copilot CLI and VS Code 1.143+ loads both the
|
|
3820
|
+
// user-level hooks and a repository's .github/hooks, so the repository hook
|
|
3821
|
+
// stands down wherever the CLI hooks file holds Lore hooks (the runtime's
|
|
3822
|
+
// copilotCliHooksServeHost check); their own row reports their health.
|
|
3823
|
+
const copilotCliHooks = status.agents.find((item) => item.agent === "copilot-cli");
|
|
3824
|
+
const copilotCliServesVsCode = copilotCliHooks?.configured === true &&
|
|
3825
|
+
!["missing", "invalid"].includes(copilotCliHooks.installation.state);
|
|
3742
3826
|
for (const agent of status.agents.filter((item) => item.configured)) {
|
|
3827
|
+
if (agent.agent === "copilot-vscode" && copilotCliServesVsCode) {
|
|
3828
|
+
checks.push({
|
|
3829
|
+
name: "copilot-vscode-hooks",
|
|
3830
|
+
status: "ok",
|
|
3831
|
+
detail: "standing down: the Copilot CLI hooks on this machine handle VS Code too, so each prompt reaches Lore once",
|
|
3832
|
+
});
|
|
3833
|
+
continue;
|
|
3834
|
+
}
|
|
3743
3835
|
checks.push({
|
|
3744
3836
|
name: `${agent.agent}-executable`,
|
|
3745
3837
|
status: agent.executable ? "ok" : "warning",
|