@nram-ai/setup-agents 0.0.1-pre.0
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/LICENSE +19 -0
- package/README.md +109 -0
- package/dist/helpers/configure/amp.d.ts +9 -0
- package/dist/helpers/configure/amp.js +49 -0
- package/dist/helpers/configure/amp.js.map +1 -0
- package/dist/helpers/configure/antigravity.d.ts +12 -0
- package/dist/helpers/configure/antigravity.js +74 -0
- package/dist/helpers/configure/antigravity.js.map +1 -0
- package/dist/helpers/configure/claude_code.d.ts +9 -0
- package/dist/helpers/configure/claude_code.js +119 -0
- package/dist/helpers/configure/claude_code.js.map +1 -0
- package/dist/helpers/configure/codex.d.ts +19 -0
- package/dist/helpers/configure/codex.js +76 -0
- package/dist/helpers/configure/codex.js.map +1 -0
- package/dist/helpers/configure/copilot.d.ts +11 -0
- package/dist/helpers/configure/copilot.js +64 -0
- package/dist/helpers/configure/copilot.js.map +1 -0
- package/dist/helpers/configure/cursor.d.ts +26 -0
- package/dist/helpers/configure/cursor.js +90 -0
- package/dist/helpers/configure/cursor.js.map +1 -0
- package/dist/helpers/configure/droid.d.ts +18 -0
- package/dist/helpers/configure/droid.js +70 -0
- package/dist/helpers/configure/droid.js.map +1 -0
- package/dist/helpers/configure/grok.d.ts +25 -0
- package/dist/helpers/configure/grok.js +93 -0
- package/dist/helpers/configure/grok.js.map +1 -0
- package/dist/helpers/configure/hermes.d.ts +22 -0
- package/dist/helpers/configure/hermes.js +107 -0
- package/dist/helpers/configure/hermes.js.map +1 -0
- package/dist/helpers/configure/junie.d.ts +10 -0
- package/dist/helpers/configure/junie.js +52 -0
- package/dist/helpers/configure/junie.js.map +1 -0
- package/dist/helpers/configure/kilo.d.ts +19 -0
- package/dist/helpers/configure/kilo.js +110 -0
- package/dist/helpers/configure/kilo.js.map +1 -0
- package/dist/helpers/configure/kimi.d.ts +10 -0
- package/dist/helpers/configure/kimi.js +75 -0
- package/dist/helpers/configure/kimi.js.map +1 -0
- package/dist/helpers/configure/kiro.d.ts +25 -0
- package/dist/helpers/configure/kiro.js +77 -0
- package/dist/helpers/configure/kiro.js.map +1 -0
- package/dist/helpers/configure/openclaw.d.ts +10 -0
- package/dist/helpers/configure/openclaw.js +72 -0
- package/dist/helpers/configure/openclaw.js.map +1 -0
- package/dist/helpers/configure/opencode.d.ts +18 -0
- package/dist/helpers/configure/opencode.js +72 -0
- package/dist/helpers/configure/opencode.js.map +1 -0
- package/dist/helpers/configure/pi.d.ts +10 -0
- package/dist/helpers/configure/pi.js +60 -0
- package/dist/helpers/configure/pi.js.map +1 -0
- package/dist/helpers/configure/trae.d.ts +11 -0
- package/dist/helpers/configure/trae.js +63 -0
- package/dist/helpers/configure/trae.js.map +1 -0
- package/dist/helpers/configure/vibe.d.ts +24 -0
- package/dist/helpers/configure/vibe.js +106 -0
- package/dist/helpers/configure/vibe.js.map +1 -0
- package/dist/helpers/configure/vscode.d.ts +18 -0
- package/dist/helpers/configure/vscode.js +81 -0
- package/dist/helpers/configure/vscode.js.map +1 -0
- package/dist/helpers/harnesses.d.ts +8 -0
- package/dist/helpers/harnesses.js +161 -0
- package/dist/helpers/harnesses.js.map +1 -0
- package/dist/helpers/instructions.d.ts +63 -0
- package/dist/helpers/instructions.js +175 -0
- package/dist/helpers/instructions.js.map +1 -0
- package/dist/helpers/paths.d.ts +130 -0
- package/dist/helpers/paths.js +211 -0
- package/dist/helpers/paths.js.map +1 -0
- package/dist/helpers/upsert.d.ts +197 -0
- package/dist/helpers/upsert.js +428 -0
- package/dist/helpers/upsert.js.map +1 -0
- package/dist/helpers/url.d.ts +15 -0
- package/dist/helpers/url.js +51 -0
- package/dist/helpers/url.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +105 -0
- package/dist/index.js.map +1 -0
- package/dist/setup.d.ts +17 -0
- package/dist/setup.js +296 -0
- package/dist/setup.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.js +50 -0
- package/dist/types.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2026, Brandon Lehmann <brandonlehmann@gmail.com>
|
|
3
|
+
//
|
|
4
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
// in the Software without restriction, including without limitation the rights
|
|
7
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
// furnished to do so, subject to the following conditions:
|
|
10
|
+
//
|
|
11
|
+
// The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
// copies or substantial portions of the Software.
|
|
13
|
+
//
|
|
14
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
// SOFTWARE.
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.resolve_instructions = exports.builtin_notice = exports.fetch_instructions = exports.write_cache = exports.read_cache = exports.cache_path = exports.github_url = void 0;
|
|
23
|
+
// The nram server is the canonical source of the agent instructions: it
|
|
24
|
+
// serves them at the public, unauthenticated `GET /instructions` endpoint
|
|
25
|
+
// (`format=agents` for the full text, `format=cursor` for the condensed
|
|
26
|
+
// rules). This module owns fetching that text, caching the last good copy on
|
|
27
|
+
// the machine, and degrading gracefully when nothing is reachable.
|
|
28
|
+
//
|
|
29
|
+
// It deliberately imports only Node built-ins and the dependency-free file
|
|
30
|
+
// helpers from upsert.ts, so the `--session-start` hook path (run at every
|
|
31
|
+
// agent session start) stays cheap to load.
|
|
32
|
+
const os_1 = require("os");
|
|
33
|
+
const path_1 = require("path");
|
|
34
|
+
const upsert_1 = require("./upsert");
|
|
35
|
+
/** Maps our format names onto the server's `?format=` query values */
|
|
36
|
+
const SERVER_FORMATS = {
|
|
37
|
+
full: 'agents',
|
|
38
|
+
condensed: 'cursor'
|
|
39
|
+
};
|
|
40
|
+
/** The upstream source files, used when the configured server is unreachable */
|
|
41
|
+
const GITHUB_FILES = {
|
|
42
|
+
full: 'agent-instructions.md',
|
|
43
|
+
condensed: 'cursor.md'
|
|
44
|
+
};
|
|
45
|
+
const DEFAULT_GITHUB_BASE = 'https://raw.githubusercontent.com/nram-ai/nram/refs/heads/master/internal/instructions/data';
|
|
46
|
+
/**
|
|
47
|
+
* The GitHub raw URL serving the fallback copy of the given format; the base
|
|
48
|
+
* is env-overridable so tests can stay off the network
|
|
49
|
+
*
|
|
50
|
+
* @param format the instructions format
|
|
51
|
+
*/
|
|
52
|
+
const github_url = (format) => `${process.env.NRAM_INSTRUCTIONS_FALLBACK_BASE ?? DEFAULT_GITHUB_BASE}/${GITHUB_FILES[format]}`;
|
|
53
|
+
exports.github_url = github_url;
|
|
54
|
+
/**
|
|
55
|
+
* The machine-local cache file holding the last successfully fetched copy of
|
|
56
|
+
* the given format; the directory is env-overridable so tests can isolate it
|
|
57
|
+
*
|
|
58
|
+
* @param format the instructions format
|
|
59
|
+
*/
|
|
60
|
+
const cache_path = (format) => (0, path_1.join)(process.env.NRAM_CACHE_DIR ?? (0, path_1.join)((0, os_1.homedir)(), '.nram', 'cache'), `instructions-${format}.md`);
|
|
61
|
+
exports.cache_path = cache_path;
|
|
62
|
+
/**
|
|
63
|
+
* Reads the cached copy of the given format, returning undefined when there
|
|
64
|
+
* is none (or it cannot be read)
|
|
65
|
+
*
|
|
66
|
+
* @param format the instructions format
|
|
67
|
+
*/
|
|
68
|
+
const read_cache = (format) => {
|
|
69
|
+
try {
|
|
70
|
+
const text = (0, upsert_1.read_text)((0, exports.cache_path)(format));
|
|
71
|
+
return text.length !== 0 ? text : undefined;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
exports.read_cache = read_cache;
|
|
78
|
+
/**
|
|
79
|
+
* Caches a successfully fetched copy of the given format, creating the cache
|
|
80
|
+
* directory as needed; failures are swallowed because the cache is an
|
|
81
|
+
* optimization, never a requirement
|
|
82
|
+
*
|
|
83
|
+
* @param format the instructions format
|
|
84
|
+
* @param text the instructions text
|
|
85
|
+
*/
|
|
86
|
+
const write_cache = (format, text) => {
|
|
87
|
+
try {
|
|
88
|
+
(0, upsert_1.write_text)((0, exports.cache_path)(format), text);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// a read-only home directory must not break the fallback chain
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
exports.write_cache = write_cache;
|
|
95
|
+
/**
|
|
96
|
+
* Fetches a URL expected to return plain-text instructions, throwing on any
|
|
97
|
+
* HTTP error, timeout, or empty body
|
|
98
|
+
*
|
|
99
|
+
* @param url the URL to fetch
|
|
100
|
+
* @param timeout_ms the request timeout in milliseconds
|
|
101
|
+
*/
|
|
102
|
+
const fetch_text = async (url, timeout_ms) => {
|
|
103
|
+
const response = await fetch(url, { signal: AbortSignal.timeout(timeout_ms) });
|
|
104
|
+
if (!response.ok) {
|
|
105
|
+
throw new Error(`HTTP ${response.status} from ${url}`);
|
|
106
|
+
}
|
|
107
|
+
const text = await response.text();
|
|
108
|
+
if (text.trim().length === 0) {
|
|
109
|
+
throw new Error(`empty response from ${url}`);
|
|
110
|
+
}
|
|
111
|
+
return text;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Fetches the canonical instructions from an nram server's public
|
|
115
|
+
* `/instructions` endpoint, throwing on failure
|
|
116
|
+
*
|
|
117
|
+
* @param base_url the normalized nram base URL
|
|
118
|
+
* @param format the instructions format
|
|
119
|
+
* @param timeout_ms the request timeout in milliseconds
|
|
120
|
+
*/
|
|
121
|
+
const fetch_instructions = async (base_url, format, timeout_ms) => fetch_text(`${base_url}/instructions?format=${SERVER_FORMATS[format]}`, timeout_ms);
|
|
122
|
+
exports.fetch_instructions = fetch_instructions;
|
|
123
|
+
/**
|
|
124
|
+
* The last-resort text emitted when the canonical instructions could not be
|
|
125
|
+
* loaded from anywhere; it tells the agent to surface the failure to the user
|
|
126
|
+
* instead of silently proceeding without the memory protocol
|
|
127
|
+
*
|
|
128
|
+
* @param format the instructions format
|
|
129
|
+
*/
|
|
130
|
+
const builtin_notice = (format) => format === 'full'
|
|
131
|
+
? 'Memory (nram): the canonical nram agent instructions could not be loaded from the configured nram ' +
|
|
132
|
+
'server, the local cache, or the GitHub fallback. Inform the user that the nram instructions failed to ' +
|
|
133
|
+
'load and suggest re-running `npx -y @nram-ai/setup-agents` once their nram server is reachable. ' +
|
|
134
|
+
'nram remains the only memory system: recall before assuming, store what you learn, and never write ' +
|
|
135
|
+
'local memory files.'
|
|
136
|
+
: 'Memory (nram): the canonical nram rules could not be loaded from the nram server, the local cache, or ' +
|
|
137
|
+
'the GitHub fallback. Inform the user and suggest re-running `npx -y @nram-ai/setup-agents` once their ' +
|
|
138
|
+
'nram server is reachable. nram remains the only memory system; never write local memory files.';
|
|
139
|
+
exports.builtin_notice = builtin_notice;
|
|
140
|
+
/**
|
|
141
|
+
* Resolves the instructions text through the fallback chain: the configured
|
|
142
|
+
* server (skipped when no base URL is known), then the machine-local cache,
|
|
143
|
+
* then the GitHub raw copy, then the built-in notice. Any successful network
|
|
144
|
+
* fetch refreshes the cache. Never throws
|
|
145
|
+
*
|
|
146
|
+
* @param base_url the normalized nram base URL, or undefined to skip the server
|
|
147
|
+
* @param format the instructions format
|
|
148
|
+
* @param timeout_ms the per-attempt network timeout in milliseconds
|
|
149
|
+
*/
|
|
150
|
+
const resolve_instructions = async (base_url, format, timeout_ms) => {
|
|
151
|
+
if (base_url !== undefined) {
|
|
152
|
+
try {
|
|
153
|
+
const text = await (0, exports.fetch_instructions)(base_url, format, timeout_ms);
|
|
154
|
+
(0, exports.write_cache)(format, text);
|
|
155
|
+
return { text, source: 'server' };
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// fall through to the cache
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const cached = (0, exports.read_cache)(format);
|
|
162
|
+
if (cached !== undefined) {
|
|
163
|
+
return { text: cached, source: 'cache' };
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const text = await fetch_text((0, exports.github_url)(format), timeout_ms);
|
|
167
|
+
(0, exports.write_cache)(format, text);
|
|
168
|
+
return { text, source: 'github' };
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return { text: (0, exports.builtin_notice)(format), source: 'builtin' };
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
exports.resolve_instructions = resolve_instructions;
|
|
175
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/helpers/instructions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Scope } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the Claude Code configuration directory for the given scope
|
|
4
|
+
*
|
|
5
|
+
* @param scope the configuration scope
|
|
6
|
+
*/
|
|
7
|
+
export declare const claude_dir: (scope: Scope) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the Codex home directory for the given scope
|
|
10
|
+
*
|
|
11
|
+
* @param scope the configuration scope
|
|
12
|
+
*/
|
|
13
|
+
export declare const codex_dir: (scope: Scope) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Returns the OpenCode configuration directory for the given scope
|
|
16
|
+
*
|
|
17
|
+
* Note: OpenCode documents `~/.config/opencode` as the global location on all
|
|
18
|
+
* platforms; `XDG_CONFIG_HOME` is honored when set. At project scope, OpenCode
|
|
19
|
+
* reads `opencode.json` and `AGENTS.md` from the repository root.
|
|
20
|
+
*
|
|
21
|
+
* @param scope the configuration scope
|
|
22
|
+
*/
|
|
23
|
+
export declare const opencode_dir: (scope: Scope) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the Cursor configuration directory for the given scope
|
|
26
|
+
*
|
|
27
|
+
* @param scope the configuration scope
|
|
28
|
+
*/
|
|
29
|
+
export declare const cursor_dir: (scope: Scope) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the Amp configuration directory for the given scope; Amp documents
|
|
32
|
+
* `~/.config/amp` on every platform, including `%USERPROFILE%\.config\amp`
|
|
33
|
+
* on Windows
|
|
34
|
+
*
|
|
35
|
+
* @param scope the configuration scope
|
|
36
|
+
*/
|
|
37
|
+
export declare const amp_dir: (scope: Scope) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the Google Antigravity configuration directory (user level only;
|
|
40
|
+
* Antigravity documents project-local MCP config as read-but-ignored)
|
|
41
|
+
*/
|
|
42
|
+
export declare const antigravity_dir: () => string;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the shared `~/.gemini` directory, where Antigravity reads the
|
|
45
|
+
* cross-tool AGENTS.md (GEMINI.md is avoided deliberately: both Antigravity
|
|
46
|
+
* and Gemini CLI write it, a documented conflict)
|
|
47
|
+
*/
|
|
48
|
+
export declare const gemini_dir: () => string;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the OpenClaw state directory (user level only; the gateway has no
|
|
51
|
+
* project-scoped configuration)
|
|
52
|
+
*/
|
|
53
|
+
export declare const openclaw_dir: () => string;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the GitHub Copilot CLI configuration directory (user level only
|
|
56
|
+
* for MCP; honors COPILOT_HOME)
|
|
57
|
+
*/
|
|
58
|
+
export declare const copilot_dir: () => string;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the Factory (droid) configuration directory for the given scope
|
|
61
|
+
*
|
|
62
|
+
* @param scope the configuration scope
|
|
63
|
+
*/
|
|
64
|
+
export declare const factory_dir: (scope: Scope) => string;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the Hermes configuration directory (user level only; Hermes has no
|
|
67
|
+
* project-scoped configuration)
|
|
68
|
+
*/
|
|
69
|
+
export declare const hermes_dir: () => string;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the JetBrains Junie configuration directory for the given scope
|
|
72
|
+
*
|
|
73
|
+
* @param scope the configuration scope
|
|
74
|
+
*/
|
|
75
|
+
export declare const junie_dir: (scope: Scope) => string;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the Kilo Code configuration directory for the given scope
|
|
78
|
+
*
|
|
79
|
+
* @param scope the configuration scope
|
|
80
|
+
*/
|
|
81
|
+
export declare const kilo_dir: (scope: Scope) => string;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the Kimi Code CLI configuration directory (user level only; no
|
|
84
|
+
* project-scoped configuration is documented)
|
|
85
|
+
*/
|
|
86
|
+
export declare const kimi_dir: () => string;
|
|
87
|
+
/**
|
|
88
|
+
* Returns the Kiro configuration directory for the given scope (honors
|
|
89
|
+
* KIRO_HOME at user scope)
|
|
90
|
+
*
|
|
91
|
+
* @param scope the configuration scope
|
|
92
|
+
*/
|
|
93
|
+
export declare const kiro_dir: (scope: Scope) => string;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the Pi coding agent configuration directory (user level; Pi keeps
|
|
96
|
+
* its agent state under `~/.pi/agent`)
|
|
97
|
+
*/
|
|
98
|
+
export declare const pi_dir: () => string;
|
|
99
|
+
/**
|
|
100
|
+
* Returns the Vibe (Mistral) home directory for the given scope (honors
|
|
101
|
+
* VIBE_HOME at user scope)
|
|
102
|
+
*
|
|
103
|
+
* @param scope the configuration scope
|
|
104
|
+
*/
|
|
105
|
+
export declare const vibe_dir: (scope: Scope) => string;
|
|
106
|
+
/**
|
|
107
|
+
* Returns the Grok Build configuration directory for the given scope
|
|
108
|
+
*
|
|
109
|
+
* @param scope the configuration scope
|
|
110
|
+
*/
|
|
111
|
+
export declare const grok_dir: (scope: Scope) => string;
|
|
112
|
+
/**
|
|
113
|
+
* Returns the Trae configuration directory for the given scope
|
|
114
|
+
*
|
|
115
|
+
* @param scope the configuration scope
|
|
116
|
+
*/
|
|
117
|
+
export declare const trae_dir: (scope: Scope) => string;
|
|
118
|
+
/**
|
|
119
|
+
* Resolves the AGENTS.md a harness reads: its own user-level file at user
|
|
120
|
+
* scope, the shared repository-root AGENTS.md at project scope (where all
|
|
121
|
+
* AGENTS.md-reading harnesses dedupe into one marker block)
|
|
122
|
+
*
|
|
123
|
+
* @param scope the configuration scope
|
|
124
|
+
* @param user_file the harness's user-level instructions file
|
|
125
|
+
*/
|
|
126
|
+
export declare const agents_md_path: (scope: Scope, user_file: string) => string;
|
|
127
|
+
/**
|
|
128
|
+
* Returns the VS Code user profile directory per platform
|
|
129
|
+
*/
|
|
130
|
+
export declare const vscode_user_dir: () => string;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2026, Brandon Lehmann <brandonlehmann@gmail.com>
|
|
3
|
+
//
|
|
4
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
// in the Software without restriction, including without limitation the rights
|
|
7
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
// furnished to do so, subject to the following conditions:
|
|
10
|
+
//
|
|
11
|
+
// The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
// copies or substantial portions of the Software.
|
|
13
|
+
//
|
|
14
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
// SOFTWARE.
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.vscode_user_dir = exports.agents_md_path = exports.trae_dir = exports.grok_dir = exports.vibe_dir = exports.pi_dir = exports.kiro_dir = exports.kimi_dir = exports.kilo_dir = exports.junie_dir = exports.hermes_dir = exports.factory_dir = exports.copilot_dir = exports.openclaw_dir = exports.gemini_dir = exports.antigravity_dir = exports.amp_dir = exports.cursor_dir = exports.opencode_dir = exports.codex_dir = exports.claude_dir = void 0;
|
|
23
|
+
const os_1 = require("os");
|
|
24
|
+
const path_1 = require("path");
|
|
25
|
+
const types_1 = require("../types");
|
|
26
|
+
/**
|
|
27
|
+
* Resolved per call (homedir() consults USERPROFILE/HOME at call time) so
|
|
28
|
+
* tests can redirect the home directory through the environment
|
|
29
|
+
*/
|
|
30
|
+
const user_home = () => (0, os_1.homedir)();
|
|
31
|
+
/**
|
|
32
|
+
* The XDG configuration root (`$XDG_CONFIG_HOME` else `~/.config`)
|
|
33
|
+
*/
|
|
34
|
+
const xdg_config = () => process.env.XDG_CONFIG_HOME ?? (0, path_1.resolve)(user_home(), '.config');
|
|
35
|
+
/**
|
|
36
|
+
* Returns the Claude Code configuration directory for the given scope
|
|
37
|
+
*
|
|
38
|
+
* @param scope the configuration scope
|
|
39
|
+
*/
|
|
40
|
+
const claude_dir = (scope) => scope === types_1.Scope.USER
|
|
41
|
+
? (0, path_1.resolve)(process.env.CLAUDE_CONFIG_DIR ?? (0, path_1.resolve)(user_home(), '.claude'))
|
|
42
|
+
: (0, path_1.resolve)(process.cwd(), '.claude');
|
|
43
|
+
exports.claude_dir = claude_dir;
|
|
44
|
+
/**
|
|
45
|
+
* Returns the Codex home directory for the given scope
|
|
46
|
+
*
|
|
47
|
+
* @param scope the configuration scope
|
|
48
|
+
*/
|
|
49
|
+
const codex_dir = (scope) => scope === types_1.Scope.USER
|
|
50
|
+
? (0, path_1.resolve)(process.env.CODEX_HOME ?? (0, path_1.resolve)(user_home(), '.codex'))
|
|
51
|
+
: (0, path_1.resolve)(process.cwd(), '.codex');
|
|
52
|
+
exports.codex_dir = codex_dir;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the OpenCode configuration directory for the given scope
|
|
55
|
+
*
|
|
56
|
+
* Note: OpenCode documents `~/.config/opencode` as the global location on all
|
|
57
|
+
* platforms; `XDG_CONFIG_HOME` is honored when set. At project scope, OpenCode
|
|
58
|
+
* reads `opencode.json` and `AGENTS.md` from the repository root.
|
|
59
|
+
*
|
|
60
|
+
* @param scope the configuration scope
|
|
61
|
+
*/
|
|
62
|
+
const opencode_dir = (scope) => scope === types_1.Scope.USER ? (0, path_1.resolve)(xdg_config(), 'opencode') : (0, path_1.resolve)(process.cwd());
|
|
63
|
+
exports.opencode_dir = opencode_dir;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the Cursor configuration directory for the given scope
|
|
66
|
+
*
|
|
67
|
+
* @param scope the configuration scope
|
|
68
|
+
*/
|
|
69
|
+
const cursor_dir = (scope) => scope === types_1.Scope.USER
|
|
70
|
+
? (0, path_1.resolve)(user_home(), '.cursor')
|
|
71
|
+
: (0, path_1.resolve)(process.cwd(), '.cursor');
|
|
72
|
+
exports.cursor_dir = cursor_dir;
|
|
73
|
+
/**
|
|
74
|
+
* Returns the Amp configuration directory for the given scope; Amp documents
|
|
75
|
+
* `~/.config/amp` on every platform, including `%USERPROFILE%\.config\amp`
|
|
76
|
+
* on Windows
|
|
77
|
+
*
|
|
78
|
+
* @param scope the configuration scope
|
|
79
|
+
*/
|
|
80
|
+
const amp_dir = (scope) => scope === types_1.Scope.USER ? (0, path_1.resolve)(xdg_config(), 'amp') : (0, path_1.resolve)(process.cwd(), '.amp');
|
|
81
|
+
exports.amp_dir = amp_dir;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the Google Antigravity configuration directory (user level only;
|
|
84
|
+
* Antigravity documents project-local MCP config as read-but-ignored)
|
|
85
|
+
*/
|
|
86
|
+
const antigravity_dir = () => (0, path_1.resolve)(user_home(), '.gemini', 'antigravity');
|
|
87
|
+
exports.antigravity_dir = antigravity_dir;
|
|
88
|
+
/**
|
|
89
|
+
* Returns the shared `~/.gemini` directory, where Antigravity reads the
|
|
90
|
+
* cross-tool AGENTS.md (GEMINI.md is avoided deliberately: both Antigravity
|
|
91
|
+
* and Gemini CLI write it, a documented conflict)
|
|
92
|
+
*/
|
|
93
|
+
const gemini_dir = () => (0, path_1.resolve)(user_home(), '.gemini');
|
|
94
|
+
exports.gemini_dir = gemini_dir;
|
|
95
|
+
/**
|
|
96
|
+
* Returns the OpenClaw state directory (user level only; the gateway has no
|
|
97
|
+
* project-scoped configuration)
|
|
98
|
+
*/
|
|
99
|
+
const openclaw_dir = () => (0, path_1.resolve)(user_home(), '.openclaw');
|
|
100
|
+
exports.openclaw_dir = openclaw_dir;
|
|
101
|
+
/**
|
|
102
|
+
* Returns the GitHub Copilot CLI configuration directory (user level only
|
|
103
|
+
* for MCP; honors COPILOT_HOME)
|
|
104
|
+
*/
|
|
105
|
+
const copilot_dir = () => (0, path_1.resolve)(process.env.COPILOT_HOME ?? (0, path_1.resolve)(user_home(), '.copilot'));
|
|
106
|
+
exports.copilot_dir = copilot_dir;
|
|
107
|
+
/**
|
|
108
|
+
* Returns the Factory (droid) configuration directory for the given scope
|
|
109
|
+
*
|
|
110
|
+
* @param scope the configuration scope
|
|
111
|
+
*/
|
|
112
|
+
const factory_dir = (scope) => scope === types_1.Scope.USER
|
|
113
|
+
? (0, path_1.resolve)(user_home(), '.factory')
|
|
114
|
+
: (0, path_1.resolve)(process.cwd(), '.factory');
|
|
115
|
+
exports.factory_dir = factory_dir;
|
|
116
|
+
/**
|
|
117
|
+
* Returns the Hermes configuration directory (user level only; Hermes has no
|
|
118
|
+
* project-scoped configuration)
|
|
119
|
+
*/
|
|
120
|
+
const hermes_dir = () => (0, path_1.resolve)(user_home(), '.hermes');
|
|
121
|
+
exports.hermes_dir = hermes_dir;
|
|
122
|
+
/**
|
|
123
|
+
* Returns the JetBrains Junie configuration directory for the given scope
|
|
124
|
+
*
|
|
125
|
+
* @param scope the configuration scope
|
|
126
|
+
*/
|
|
127
|
+
const junie_dir = (scope) => scope === types_1.Scope.USER
|
|
128
|
+
? (0, path_1.resolve)(user_home(), '.junie')
|
|
129
|
+
: (0, path_1.resolve)(process.cwd(), '.junie');
|
|
130
|
+
exports.junie_dir = junie_dir;
|
|
131
|
+
/**
|
|
132
|
+
* Returns the Kilo Code configuration directory for the given scope
|
|
133
|
+
*
|
|
134
|
+
* @param scope the configuration scope
|
|
135
|
+
*/
|
|
136
|
+
const kilo_dir = (scope) => scope === types_1.Scope.USER ? (0, path_1.resolve)(xdg_config(), 'kilo') : (0, path_1.resolve)(process.cwd(), '.kilo');
|
|
137
|
+
exports.kilo_dir = kilo_dir;
|
|
138
|
+
/**
|
|
139
|
+
* Returns the Kimi Code CLI configuration directory (user level only; no
|
|
140
|
+
* project-scoped configuration is documented)
|
|
141
|
+
*/
|
|
142
|
+
const kimi_dir = () => (0, path_1.resolve)(user_home(), '.kimi');
|
|
143
|
+
exports.kimi_dir = kimi_dir;
|
|
144
|
+
/**
|
|
145
|
+
* Returns the Kiro configuration directory for the given scope (honors
|
|
146
|
+
* KIRO_HOME at user scope)
|
|
147
|
+
*
|
|
148
|
+
* @param scope the configuration scope
|
|
149
|
+
*/
|
|
150
|
+
const kiro_dir = (scope) => scope === types_1.Scope.USER
|
|
151
|
+
? (0, path_1.resolve)(process.env.KIRO_HOME ?? (0, path_1.resolve)(user_home(), '.kiro'))
|
|
152
|
+
: (0, path_1.resolve)(process.cwd(), '.kiro');
|
|
153
|
+
exports.kiro_dir = kiro_dir;
|
|
154
|
+
/**
|
|
155
|
+
* Returns the Pi coding agent configuration directory (user level; Pi keeps
|
|
156
|
+
* its agent state under `~/.pi/agent`)
|
|
157
|
+
*/
|
|
158
|
+
const pi_dir = () => (0, path_1.resolve)(user_home(), '.pi', 'agent');
|
|
159
|
+
exports.pi_dir = pi_dir;
|
|
160
|
+
/**
|
|
161
|
+
* Returns the Vibe (Mistral) home directory for the given scope (honors
|
|
162
|
+
* VIBE_HOME at user scope)
|
|
163
|
+
*
|
|
164
|
+
* @param scope the configuration scope
|
|
165
|
+
*/
|
|
166
|
+
const vibe_dir = (scope) => scope === types_1.Scope.USER
|
|
167
|
+
? (0, path_1.resolve)(process.env.VIBE_HOME ?? (0, path_1.resolve)(user_home(), '.vibe'))
|
|
168
|
+
: (0, path_1.resolve)(process.cwd(), '.vibe');
|
|
169
|
+
exports.vibe_dir = vibe_dir;
|
|
170
|
+
/**
|
|
171
|
+
* Returns the Grok Build configuration directory for the given scope
|
|
172
|
+
*
|
|
173
|
+
* @param scope the configuration scope
|
|
174
|
+
*/
|
|
175
|
+
const grok_dir = (scope) => scope === types_1.Scope.USER
|
|
176
|
+
? (0, path_1.resolve)(user_home(), '.grok')
|
|
177
|
+
: (0, path_1.resolve)(process.cwd(), '.grok');
|
|
178
|
+
exports.grok_dir = grok_dir;
|
|
179
|
+
/**
|
|
180
|
+
* Returns the Trae configuration directory for the given scope
|
|
181
|
+
*
|
|
182
|
+
* @param scope the configuration scope
|
|
183
|
+
*/
|
|
184
|
+
const trae_dir = (scope) => scope === types_1.Scope.USER
|
|
185
|
+
? (0, path_1.resolve)(user_home(), '.trae')
|
|
186
|
+
: (0, path_1.resolve)(process.cwd(), '.trae');
|
|
187
|
+
exports.trae_dir = trae_dir;
|
|
188
|
+
/**
|
|
189
|
+
* Resolves the AGENTS.md a harness reads: its own user-level file at user
|
|
190
|
+
* scope, the shared repository-root AGENTS.md at project scope (where all
|
|
191
|
+
* AGENTS.md-reading harnesses dedupe into one marker block)
|
|
192
|
+
*
|
|
193
|
+
* @param scope the configuration scope
|
|
194
|
+
* @param user_file the harness's user-level instructions file
|
|
195
|
+
*/
|
|
196
|
+
const agents_md_path = (scope, user_file) => scope === types_1.Scope.USER ? user_file : (0, path_1.resolve)(process.cwd(), 'AGENTS.md');
|
|
197
|
+
exports.agents_md_path = agents_md_path;
|
|
198
|
+
/**
|
|
199
|
+
* Returns the VS Code user profile directory per platform
|
|
200
|
+
*/
|
|
201
|
+
const vscode_user_dir = () => {
|
|
202
|
+
if (process.platform === 'win32') {
|
|
203
|
+
return (0, path_1.resolve)(process.env.APPDATA ?? (0, path_1.resolve)(user_home(), 'AppData', 'Roaming'), 'Code', 'User');
|
|
204
|
+
}
|
|
205
|
+
if (process.platform === 'darwin') {
|
|
206
|
+
return (0, path_1.resolve)(user_home(), 'Library', 'Application Support', 'Code', 'User');
|
|
207
|
+
}
|
|
208
|
+
return (0, path_1.resolve)(xdg_config(), 'Code', 'User');
|
|
209
|
+
};
|
|
210
|
+
exports.vscode_user_dir = vscode_user_dir;
|
|
211
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/helpers/paths.ts"],"names":[],"mappings":"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"}
|