@fingerskier/augment 0.1.0 → 0.1.2

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,174 @@
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:
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 Claude instructions:
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 both:
144
+
145
+ ```powershell
146
+ npm exec --yes --package @fingerskier/augment -- augment install all --scope user --memory-root "C:\Users\you\Dropbox\augment-memories"
147
+ ```
148
+
149
+ Preview writes before changing files:
28
150
 
29
151
  ```powershell
30
- $env:AUGMENT_MEMORY_ROOT = "C:\Users\you\Dropbox\augment-memories"
152
+ npm exec --yes --package @fingerskier/augment -- augment install codex --scope user --dry-run
31
153
  ```
32
154
 
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`
155
+ The installer configures MCP commands with an isolated npm `--prefix` directory
156
+ under `~/.augment/npm-exec` so they work even when launched from this repository.
157
+
158
+ Run these package commands from outside this repository. When developing inside
159
+ this repo, use `node .\dist\bin\augment.js install ...` after `npm run build`.
160
+
161
+ ## Package Check
162
+
163
+ Before publishing:
164
+
165
+ ```powershell
166
+ npm run check
167
+ npm pack --dry-run
168
+ ```
169
+
170
+ The package exposes these bins:
171
+
172
+ - `augment`
173
+ - `augment-daemon`
174
+ - `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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAyC,MAAM,cAAc,CAAC;AAEzF,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,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IAMtC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAA8B,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;IACpH,CAAC;IAED,IAAI,KAAK,GAAiB,MAAM,CAAC;IACjC,IAAI,UAA8B,CAAC;IACnC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,CAA6B,CAAC;YACxD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK;QACL,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -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>;
@@ -0,0 +1,245 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ const PLUGIN_NAME = "augment";
6
+ const CODEX_SKILL_NAME = "augment-context";
7
+ const BEGIN_MARKER = "<!-- augment:start -->";
8
+ const END_MARKER = "<!-- augment:end -->";
9
+ export async function installIntegration(options) {
10
+ const context = {
11
+ cwd: path.resolve(options.cwd ?? process.cwd()),
12
+ home: path.resolve(options.home ?? homedir()),
13
+ dryRun: options.dryRun ?? false,
14
+ };
15
+ const summary = [];
16
+ const files = [];
17
+ if (options.target === "codex" || options.target === "all") {
18
+ const plan = await installCodex({ ...options, ...context });
19
+ summary.push(...plan.summary);
20
+ files.push(...plan.files);
21
+ }
22
+ if (options.target === "claude" || options.target === "all") {
23
+ const plan = await installClaude({ ...options, ...context });
24
+ summary.push(...plan.summary);
25
+ files.push(...plan.files);
26
+ }
27
+ return { summary, files };
28
+ }
29
+ async function installCodex(options) {
30
+ const paths = codexPaths(options);
31
+ const packageInfo = await readPackageInfo();
32
+ const skill = await readTemplate("integrations/codex/SKILL.md");
33
+ const mcpConfig = {
34
+ mcpServers: {
35
+ augment: {
36
+ command: "npm",
37
+ args: augmentMcpArgs(paths.npmExecPrefix),
38
+ env: envConfig(options.memoryRoot),
39
+ },
40
+ },
41
+ };
42
+ const pluginJson = {
43
+ name: PLUGIN_NAME,
44
+ version: packageInfo.version,
45
+ description: "Local RAG memory for coding agents.",
46
+ author: {
47
+ name: "fingerskier",
48
+ },
49
+ homepage: "https://www.npmjs.com/package/@fingerskier/augment",
50
+ license: "Apache-2.0",
51
+ keywords: ["mcp", "memory", "rag", "codex"],
52
+ skills: "./skills/",
53
+ mcpServers: "./.mcp.json",
54
+ interface: {
55
+ displayName: "Augment",
56
+ shortDescription: "Local RAG memory for coding agents.",
57
+ longDescription: "Augment gives Codex a local, file-backed memory system through MCP, with a shared daemon watcher and searchable project memories.",
58
+ developerName: "fingerskier",
59
+ category: "Productivity",
60
+ capabilities: ["MCP", "Local"],
61
+ defaultPrompt: [
62
+ "Search Augment memories for this task.",
63
+ "Record this decision in Augment.",
64
+ "Update project memory after this change.",
65
+ ],
66
+ brandColor: "#2563EB",
67
+ },
68
+ };
69
+ const marketplace = await updateMarketplace(paths.marketplacePath, paths.marketplaceName);
70
+ const writes = [
71
+ writePlan(paths.pluginJsonPath, `${JSON.stringify(pluginJson, null, 2)}\n`),
72
+ writePlan(paths.mcpConfigPath, `${JSON.stringify(mcpConfig, null, 2)}\n`),
73
+ writePlan(paths.skillPath, skill),
74
+ writePlan(paths.marketplacePath, `${JSON.stringify(marketplace, null, 2)}\n`),
75
+ ];
76
+ if (!options.dryRun) {
77
+ await mkdir(paths.npmExecPrefix, { recursive: true });
78
+ for (const write of writes) {
79
+ await writeFileEnsured(write.file, write.content);
80
+ }
81
+ }
82
+ return {
83
+ summary: [
84
+ `${options.dryRun ? "Would install" : "Installed"} Codex plugin '${PLUGIN_NAME}' (${options.scope} scope).`,
85
+ `${options.dryRun ? "Would update" : "Updated"} Codex marketplace at ${paths.marketplacePath}.`,
86
+ ],
87
+ files: writes.map((write) => write.file),
88
+ };
89
+ }
90
+ async function installClaude(options) {
91
+ const npmExecPrefix = sharedNpmExecPrefix(options.home);
92
+ const targetPath = options.scope === "user" ? path.join(options.home, ".claude", "CLAUDE.md") : path.join(options.cwd, "CLAUDE.md");
93
+ const template = await readTemplate("integrations/claude/CLAUDE.md");
94
+ const block = [
95
+ BEGIN_MARKER,
96
+ "",
97
+ template.trim(),
98
+ "",
99
+ "## MCP Server",
100
+ "",
101
+ "Add this to Claude's MCP configuration (`.mcp.json` at the repo root, or `~/.claude.json`):",
102
+ "",
103
+ "```json",
104
+ JSON.stringify({
105
+ mcpServers: {
106
+ augment: {
107
+ command: "npm",
108
+ args: augmentMcpArgs(npmExecPrefix),
109
+ env: envConfig(options.memoryRoot),
110
+ },
111
+ },
112
+ }, null, 2),
113
+ "```",
114
+ "",
115
+ END_MARKER,
116
+ "",
117
+ ].join("\n");
118
+ const existing = await readOptional(targetPath);
119
+ const content = upsertMarkedBlock(existing, block);
120
+ if (!options.dryRun) {
121
+ await mkdir(npmExecPrefix, { recursive: true });
122
+ await writeFileEnsured(targetPath, content);
123
+ }
124
+ return {
125
+ summary: [`${options.dryRun ? "Would install" : "Installed"} Claude instructions (${options.scope} scope).`],
126
+ files: [targetPath],
127
+ };
128
+ }
129
+ function codexPaths(options) {
130
+ if (options.scope === "repo") {
131
+ const pluginRoot = path.join(options.cwd, "plugins", PLUGIN_NAME);
132
+ return {
133
+ pluginRoot,
134
+ pluginJsonPath: path.join(pluginRoot, ".codex-plugin", "plugin.json"),
135
+ mcpConfigPath: path.join(pluginRoot, ".mcp.json"),
136
+ skillPath: path.join(pluginRoot, "skills", CODEX_SKILL_NAME, "SKILL.md"),
137
+ marketplacePath: path.join(options.cwd, ".agents", "plugins", "marketplace.json"),
138
+ marketplaceName: "local-repo",
139
+ npmExecPrefix: sharedNpmExecPrefix(options.home),
140
+ };
141
+ }
142
+ const pluginRoot = path.join(options.home, "plugins", PLUGIN_NAME);
143
+ return {
144
+ pluginRoot,
145
+ pluginJsonPath: path.join(pluginRoot, ".codex-plugin", "plugin.json"),
146
+ mcpConfigPath: path.join(pluginRoot, ".mcp.json"),
147
+ skillPath: path.join(pluginRoot, "skills", CODEX_SKILL_NAME, "SKILL.md"),
148
+ marketplacePath: path.join(options.home, ".agents", "plugins", "marketplace.json"),
149
+ marketplaceName: "personal",
150
+ npmExecPrefix: sharedNpmExecPrefix(options.home),
151
+ };
152
+ }
153
+ function sharedNpmExecPrefix(home) {
154
+ return path.join(home, ".augment", "npm-exec");
155
+ }
156
+ function augmentMcpArgs(prefix) {
157
+ return ["exec", "--yes", "--prefix", prefix, "--package", "@fingerskier/augment", "--", "augment-mcp"];
158
+ }
159
+ async function updateMarketplace(marketplacePath, marketplaceName) {
160
+ const existing = await readOptionalJson(marketplacePath);
161
+ const marketplace = existing ?? {
162
+ name: marketplaceName,
163
+ interface: {
164
+ displayName: marketplaceName === "personal" ? "Personal" : "Local Repo",
165
+ },
166
+ plugins: [],
167
+ };
168
+ marketplace.name ??= marketplaceName;
169
+ marketplace.interface ??= {
170
+ displayName: marketplaceName === "personal" ? "Personal" : "Local Repo",
171
+ };
172
+ marketplace.plugins ??= [];
173
+ const entry = {
174
+ name: PLUGIN_NAME,
175
+ source: {
176
+ source: "local",
177
+ path: `./plugins/${PLUGIN_NAME}`,
178
+ },
179
+ policy: {
180
+ installation: "AVAILABLE",
181
+ authentication: "ON_INSTALL",
182
+ },
183
+ category: "Productivity",
184
+ };
185
+ const index = marketplace.plugins.findIndex((plugin) => plugin.name === PLUGIN_NAME);
186
+ if (index >= 0) {
187
+ marketplace.plugins[index] = entry;
188
+ }
189
+ else {
190
+ marketplace.plugins.push(entry);
191
+ }
192
+ return marketplace;
193
+ }
194
+ function envConfig(memoryRoot) {
195
+ return memoryRoot ? { AUGMENT_MEMORY_ROOT: path.resolve(memoryRoot) } : {};
196
+ }
197
+ function upsertMarkedBlock(existing, block) {
198
+ if (!existing || existing.trim().length === 0) {
199
+ return block;
200
+ }
201
+ const start = existing.indexOf(BEGIN_MARKER);
202
+ const end = existing.indexOf(END_MARKER);
203
+ if (start >= 0 && end > start) {
204
+ const before = existing.slice(0, start).trimEnd();
205
+ const after = existing.slice(end + END_MARKER.length).trimStart();
206
+ return `${before}\n\n${block}${after ? `\n${after}` : ""}`;
207
+ }
208
+ return `${existing.trimEnd()}\n\n${block}`;
209
+ }
210
+ function writePlan(file, content) {
211
+ return { file, content };
212
+ }
213
+ async function writeFileEnsured(file, content) {
214
+ await mkdir(path.dirname(file), { recursive: true });
215
+ await writeFile(file, content, "utf8");
216
+ }
217
+ async function readTemplate(relativePath) {
218
+ return readFile(path.join(packageRoot(), relativePath), "utf8");
219
+ }
220
+ async function readPackageInfo() {
221
+ const raw = await readFile(path.join(packageRoot(), "package.json"), "utf8");
222
+ return JSON.parse(raw);
223
+ }
224
+ function packageRoot() {
225
+ return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
226
+ }
227
+ async function readOptional(file) {
228
+ try {
229
+ return await readFile(file, "utf8");
230
+ }
231
+ catch (error) {
232
+ if (error.code === "ENOENT") {
233
+ return undefined;
234
+ }
235
+ throw error;
236
+ }
237
+ }
238
+ async function readOptionalJson(file) {
239
+ const raw = await readOptional(file);
240
+ return raw ? JSON.parse(stripBom(raw)) : undefined;
241
+ }
242
+ function stripBom(value) {
243
+ return value.charCodeAt(0) === 0xfeff ? value.slice(1) : value;
244
+ }
245
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ export declare function resolveServerVersion(): Promise<string>;
1
2
  export declare function startMcpServer(): Promise<void>;
@@ -1,13 +1,22 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
1
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
5
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
6
  import * as z from "zod/v4";
4
7
  import { LINK_TYPES, MEMORY_KINDS } from "../constants.js";
5
8
  import { connectOrStartDaemon } from "../daemon/client.js";
6
9
  import { inferProjectName } from "../memory/project.js";
10
+ // server.ts lives at src/mcp/ (dist/mcp/ once built), so package.json is two levels up.
11
+ export async function resolveServerVersion() {
12
+ const packageJsonPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json");
13
+ const raw = await readFile(packageJsonPath, "utf8");
14
+ return JSON.parse(raw).version;
15
+ }
7
16
  export async function startMcpServer() {
8
17
  const server = new McpServer({
9
18
  name: "augment",
10
- version: "0.1.0",
19
+ version: await resolveServerVersion(),
11
20
  });
12
21
  server.registerTool("init_project", {
13
22
  description: "Infer or upsert the current project and return its local project record.",