@fingerskier/augment 0.1.0 → 0.1.3

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 CHANGED
@@ -1,130 +1,198 @@
1
- # augment
2
-
3
- Local RAG memory for coding agents.
4
-
5
- Augment stores durable memories as markdown files, maintains a local rebuildable index, and exposes the memory system through an MCP server.
6
- The MCP server connects to a shared local daemon, so multiple coding agents can use the same memory folder without each running its own watcher/indexer.
7
-
8
- Feature details live in [docs/FEATURES.md](docs/FEATURES.md).
9
- The implementation plan lives in [PLAN.md](PLAN.md).
10
-
11
- ----
12
-
13
- ## Install
14
-
15
- From this repo:
16
-
17
- ```powershell
18
- npm install
19
- npm run build
20
- npm run check
21
- ```
22
-
23
- ---
24
-
25
- ## Configure Memory
26
-
27
- For quick local testing, set the memory root with an environment variable:
28
-
29
- ```powershell
30
- $env:AUGMENT_MEMORY_ROOT = "C:\Users\you\Dropbox\augment-memories"
31
- ```
32
-
33
- Or create `~/.augment/config.json`:
34
-
35
- ```json
36
- {
37
- "memoryRoot": "C:\\Users\\you\\Dropbox\\augment-memories",
38
- "stateDir": "C:\\Users\\you\\.augment\\state"
39
- }
40
- ```
41
-
42
- Defaults:
43
-
44
- - Memory root: `~/.augment/memories`
45
- - State directory: `~/.augment/state`
46
-
47
- ## Run Locally
48
-
49
- Run diagnostics:
50
-
51
- ```powershell
52
- node .\dist\bin\augment.js status
53
- ```
54
-
55
- Start the daemon manually:
56
-
57
- ```powershell
58
- node .\dist\bin\augment-daemon.js
59
- ```
60
-
61
- Normally you do not need to start the daemon yourself. `augment-mcp` starts or
62
- connects to the shared daemon automatically.
63
-
64
- Run the MCP server manually:
65
-
66
- ```powershell
67
- node .\dist\bin\augment-mcp.js
68
- ```
69
-
70
- It will appear idle in a terminal because it speaks MCP over stdio.
71
-
72
- ## Local MCP Config
73
-
74
- Use the compiled local MCP bin while dogfooding:
75
-
76
- ```json
77
- {
78
- "mcpServers": {
79
- "augment": {
80
- "command": "node",
81
- "args": ["C:\\dev\\fingerskier\\agent\\augment\\dist\\bin\\augment-mcp.js"],
82
- "env": {
83
- "AUGMENT_MEMORY_ROOT": "C:\\Users\\you\\Dropbox\\augment-memories"
84
- }
85
- }
86
- }
87
- }
88
- ```
89
-
90
- Alternative using npm from another working directory:
91
-
92
- ```json
93
- {
94
- "mcpServers": {
95
- "augment": {
96
- "command": "npm",
97
- "args": [
98
- "exec",
99
- "--prefix",
100
- "C:\\dev\\fingerskier\\agent\\augment",
101
- "--",
102
- "augment-mcp"
103
- ],
104
- "env": {
105
- "AUGMENT_MEMORY_ROOT": "C:\\Users\\you\\Dropbox\\augment-memories"
106
- }
107
- }
108
- }
109
- }
110
- ```
111
-
112
- Dogfooding instructions:
113
-
114
- - Codex: [integrations/codex/SKILL.md](integrations/codex/SKILL.md)
115
- - Claude: [integrations/claude/CLAUDE.md](integrations/claude/CLAUDE.md)
116
-
117
- ## Package Check
118
-
119
- Before publishing:
120
-
121
- ```powershell
122
- npm run check
123
- npm pack --dry-run
124
- ```
125
-
126
- The package exposes these bins:
127
-
128
- - `augment`
129
- - `augment-daemon`
130
- - `augment-mcp`
1
+ # augment
2
+
3
+ Local RAG memory for coding agents.
4
+
5
+ Augment stores durable memories as markdown files, maintains a local rebuildable index, and exposes the memory system through an MCP server.
6
+ The MCP server connects to a shared local daemon, so multiple coding agents can use the same memory folder without each running its own watcher/indexer.
7
+
8
+ Feature details live in [docs/FEATURES.md](docs/FEATURES.md).
9
+ The implementation plan lives in [PLAN.md](PLAN.md).
10
+
11
+ ----
12
+
13
+ ## Install
14
+
15
+ From this repo:
16
+
17
+ ```powershell
18
+ npm install
19
+ npm run build
20
+ npm run check
21
+ ```
22
+
23
+ ---
24
+
25
+ ## Configure Memory
26
+
27
+ For quick local testing, set the memory root with an environment variable:
28
+
29
+ ```powershell
30
+ $env:AUGMENT_MEMORY_ROOT = "C:\Users\you\Dropbox\augment-memories"
31
+ ```
32
+
33
+ Or create `~/.augment/config.json`:
34
+
35
+ ```json
36
+ {
37
+ "memoryRoot": "C:\\Users\\you\\Dropbox\\augment-memories",
38
+ "stateDir": "C:\\Users\\you\\.augment\\state"
39
+ }
40
+ ```
41
+
42
+ Defaults:
43
+
44
+ - Memory root: `~/.augment/memories`
45
+ - State directory: `~/.augment/state`
46
+
47
+ ## Run Locally
48
+
49
+ Run diagnostics:
50
+
51
+ ```powershell
52
+ node .\dist\bin\augment.js status
53
+ ```
54
+
55
+ Start the daemon manually:
56
+
57
+ ```powershell
58
+ node .\dist\bin\augment-daemon.js
59
+ ```
60
+
61
+ Normally you do not need to start the daemon yourself. `augment-mcp` starts or
62
+ connects to the shared daemon automatically.
63
+
64
+ Run the MCP server manually:
65
+
66
+ ```powershell
67
+ node .\dist\bin\augment-mcp.js
68
+ ```
69
+
70
+ It will appear idle in a terminal because it speaks MCP over stdio.
71
+
72
+ Do not use `npx @fingerskier/augment` from inside this repository. npm resolves
73
+ the current package first, but a package's own bins are not linked into its local
74
+ `node_modules/.bin`, so Windows reports `augment` as not recognized. Use the
75
+ compiled `node .\dist\bin\...` commands above while working in this repo.
76
+
77
+ From another directory, the published package works:
78
+
79
+ ```powershell
80
+ npx @fingerskier/augment
81
+ npm exec --yes --package @fingerskier/augment -- augment status
82
+ ```
83
+
84
+ ## Local MCP Config
85
+
86
+ Use the compiled local MCP bin while dogfooding:
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "augment": {
92
+ "command": "node",
93
+ "args": ["C:\\dev\\fingerskier\\agent\\augment\\dist\\bin\\augment-mcp.js"],
94
+ "env": {
95
+ "AUGMENT_MEMORY_ROOT": "C:\\Users\\you\\Dropbox\\augment-memories"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ Alternative using npm from another working directory:
103
+
104
+ ```json
105
+ {
106
+ "mcpServers": {
107
+ "augment": {
108
+ "command": "npm",
109
+ "args": [
110
+ "exec",
111
+ "--prefix",
112
+ "C:\\dev\\fingerskier\\agent\\augment",
113
+ "--",
114
+ "augment-mcp"
115
+ ],
116
+ "env": {
117
+ "AUGMENT_MEMORY_ROOT": "C:\\Users\\you\\Dropbox\\augment-memories"
118
+ }
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ Dogfooding instructions:
125
+
126
+ - Codex: [integrations/codex/SKILL.md](integrations/codex/SKILL.md)
127
+ - Claude: [integrations/claude/CLAUDE.md](integrations/claude/CLAUDE.md)
128
+
129
+ ## Install Agent Integrations
130
+
131
+ Install the Codex plugin and marketplace entry:
132
+
133
+ ```powershell
134
+ npm exec --yes --package @fingerskier/augment -- augment install codex --scope user --memory-root "C:\Users\you\Dropbox\augment-memories"
135
+ ```
136
+
137
+ Install the Claude plugin:
138
+
139
+ ```powershell
140
+ npm exec --yes --package @fingerskier/augment -- augment install claude --scope repo --memory-root "C:\Users\you\Dropbox\augment-memories"
141
+ ```
142
+
143
+ `install claude` does four things:
144
+
145
+ - Scaffolds a real Claude Code plugin at `<root>/plugins/augment/`
146
+ (`.claude-plugin/plugin.json`, an auto-discovered `augment-context` skill, and a
147
+ bundled `.mcp.json`).
148
+ - Adds a marketplace entry at `<root>/.claude-plugin/marketplace.json`.
149
+ - **Registers the MCP server directly** so it is active without the marketplace
150
+ step: repo scope writes `<repo>/.mcp.json`; user scope merges into
151
+ `~/.claude.json` (`mcpServers.augment`), preserving every other key.
152
+ - Upserts the always-on memory-workflow guidance into `CLAUDE.md`.
153
+
154
+ `<root>` is the repo (`--scope repo`) or your home directory (`--scope user`).
155
+ The direct registration is enough on its own — restart Claude Code and the
156
+ `augment` tools appear. To use the packaged plugin instead, install it from the
157
+ marketplace (the installer prints the exact commands), e.g.:
158
+
159
+ ```text
160
+ /plugin marketplace add .
161
+ /plugin install augment@fingerskier-local
162
+ ```
163
+
164
+ Pick one activation path; both register a server named `augment`, and Claude's
165
+ scope precedence resolves the duplicate to the higher-precedence one.
166
+
167
+ Install both:
168
+
169
+ ```powershell
170
+ npm exec --yes --package @fingerskier/augment -- augment install all --scope user --memory-root "C:\Users\you\Dropbox\augment-memories"
171
+ ```
172
+
173
+ Preview writes before changing files:
174
+
175
+ ```powershell
176
+ npm exec --yes --package @fingerskier/augment -- augment install codex --scope user --dry-run
177
+ ```
178
+
179
+ The installer configures MCP commands with an isolated npm `--prefix` directory
180
+ under `~/.augment/npm-exec` so they work even when launched from this repository.
181
+
182
+ Run these package commands from outside this repository. When developing inside
183
+ this repo, use `node .\dist\bin\augment.js install ...` after `npm run build`.
184
+
185
+ ## Package Check
186
+
187
+ Before publishing:
188
+
189
+ ```powershell
190
+ npm run check
191
+ npm pack --dry-run
192
+ ```
193
+
194
+ The package exposes these bins:
195
+
196
+ - `augment`
197
+ - `augment-daemon`
198
+ - `augment-mcp`
package/dist/cli.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { loadConfig } from "./config.js";
2
+ import { installIntegration } from "./install.js";
2
3
  export async function runCli(args) {
3
4
  const command = args[0] ?? "status";
4
5
  if (command === "config" || command === "status") {
@@ -6,8 +7,56 @@ export async function runCli(args) {
6
7
  console.log(JSON.stringify(config, null, 2));
7
8
  return;
8
9
  }
10
+ if (command === "install") {
11
+ const parsed = parseInstallArgs(args.slice(1));
12
+ const plan = await installIntegration(parsed);
13
+ for (const line of plan.summary) {
14
+ console.log(line);
15
+ }
16
+ for (const file of plan.files) {
17
+ console.log(`- ${file}`);
18
+ }
19
+ return;
20
+ }
9
21
  console.error(`Unknown command: ${command}`);
10
- console.error("Usage: augment [status|config]");
22
+ console.error("Usage: augment [status|config|install <codex|claude|all>]");
11
23
  process.exitCode = 1;
12
24
  }
25
+ function parseInstallArgs(args) {
26
+ const target = args[0];
27
+ if (!target || !["codex", "claude", "all"].includes(target)) {
28
+ throw new Error("Usage: augment install <codex|claude|all> [--scope user|repo] [--memory-root PATH] [--dry-run]");
29
+ }
30
+ let scope = "user";
31
+ let memoryRoot;
32
+ let dryRun = false;
33
+ for (let index = 1; index < args.length; index += 1) {
34
+ const arg = args[index];
35
+ if (arg === "--scope") {
36
+ const value = args[++index];
37
+ if (value !== "user" && value !== "repo") {
38
+ throw new Error("--scope must be user or repo");
39
+ }
40
+ scope = value;
41
+ }
42
+ else if (arg === "--memory-root") {
43
+ memoryRoot = args[++index];
44
+ if (!memoryRoot) {
45
+ throw new Error("--memory-root requires a path");
46
+ }
47
+ }
48
+ else if (arg === "--dry-run") {
49
+ dryRun = true;
50
+ }
51
+ else {
52
+ throw new Error(`Unknown install option: ${arg}`);
53
+ }
54
+ }
55
+ return {
56
+ target,
57
+ scope,
58
+ memoryRoot,
59
+ dryRun,
60
+ };
61
+ }
13
62
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAEpC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type InstallTarget = "codex" | "claude" | "all";
2
+ export type InstallScope = "user" | "repo";
3
+ export interface InstallOptions {
4
+ target: InstallTarget;
5
+ scope: InstallScope;
6
+ memoryRoot?: string;
7
+ dryRun?: boolean;
8
+ cwd?: string;
9
+ home?: string;
10
+ }
11
+ export interface InstallPlan {
12
+ summary: string[];
13
+ files: string[];
14
+ }
15
+ export declare function installIntegration(options: InstallOptions): Promise<InstallPlan>;