orbitmap 0.4.2 → 0.4.4
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 +112 -18
- package/dist/adapters/cloud.d.ts +63 -21
- package/dist/adapters/cloud.js +108 -29
- package/dist/adapters/cloud.js.map +1 -1
- package/dist/adapters/factory.d.ts +3 -0
- package/dist/adapters/factory.js +8 -1
- package/dist/adapters/factory.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +17 -20
- package/dist/adapters/local/adapter.js +28 -21
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/local/context.d.ts +1 -1
- package/dist/adapters/local/context.js +10 -2
- package/dist/adapters/local/context.js.map +1 -1
- package/dist/adapters/local/entities/planning.d.ts +5 -1
- package/dist/adapters/local/entities/planning.js +16 -3
- package/dist/adapters/local/entities/planning.js.map +1 -1
- package/dist/adapters/local/entities/tasks.d.ts +9 -1
- package/dist/adapters/local/entities/tasks.js +47 -5
- package/dist/adapters/local/entities/tasks.js.map +1 -1
- package/dist/adapters/local/entities/work-items.d.ts +14 -30
- package/dist/adapters/local/entities/work-items.js +63 -47
- package/dist/adapters/local/entities/work-items.js.map +1 -1
- package/dist/adapters/local/rules.d.ts +4 -4
- package/dist/adapters/local/rules.js +4 -19
- package/dist/adapters/local/rules.js.map +1 -1
- package/dist/adapters/local/shapes.d.ts +27 -7
- package/dist/adapters/local/shapes.js +41 -5
- package/dist/adapters/local/shapes.js.map +1 -1
- package/dist/adapters/local/store.d.ts +55 -6
- package/dist/adapters/local/store.js +122 -8
- package/dist/adapters/local/store.js.map +1 -1
- package/dist/adapters/local/types.d.ts +11 -2
- package/dist/adapters/local/types.js +9 -2
- package/dist/adapters/local/types.js.map +1 -1
- package/dist/adapters/types.d.ts +30 -20
- package/dist/agent-instructions.d.ts +43 -12
- package/dist/agent-instructions.js +1133 -170
- package/dist/agent-instructions.js.map +1 -1
- package/dist/area-directories.d.ts +75 -0
- package/dist/area-directories.js +162 -0
- package/dist/area-directories.js.map +1 -0
- package/dist/area-grouping.d.ts +55 -0
- package/dist/area-grouping.js +72 -0
- package/dist/area-grouping.js.map +1 -0
- package/dist/commands/areas.js +30 -2
- package/dist/commands/areas.js.map +1 -1
- package/dist/commands/assign.d.ts +1 -0
- package/dist/commands/assign.js +2 -0
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/context.d.ts +95 -0
- package/dist/commands/context.js +104 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.js +19 -14
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dep.js +5 -8
- package/dist/commands/dep.js.map +1 -1
- package/dist/commands/doc-import.d.ts +1 -0
- package/dist/commands/doc-import.js +8 -26
- package/dist/commands/doc-import.js.map +1 -1
- package/dist/commands/doc-patch.js +16 -52
- package/dist/commands/doc-patch.js.map +1 -1
- package/dist/commands/doc-share.js +4 -0
- package/dist/commands/doc-share.js.map +1 -1
- package/dist/commands/doc-update.js +4 -8
- package/dist/commands/doc-update.js.map +1 -1
- package/dist/commands/doc.js +7 -12
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/docs-cache.js +23 -10
- package/dist/commands/docs-cache.js.map +1 -1
- package/dist/commands/docs.js +29 -10
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/get.js +8 -10
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/ideas.d.ts +3 -1
- package/dist/commands/ideas.js +26 -49
- package/dist/commands/ideas.js.map +1 -1
- package/dist/commands/init.d.ts +24 -1
- package/dist/commands/init.js +0 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/intent.d.ts +16 -0
- package/dist/commands/intent.js +61 -18
- package/dist/commands/intent.js.map +1 -1
- package/dist/commands/issues.d.ts +3 -1
- package/dist/commands/issues.js +47 -72
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/log.d.ts +14 -2
- package/dist/commands/log.js +35 -20
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mission.d.ts +8 -0
- package/dist/commands/mission.js +58 -18
- package/dist/commands/mission.js.map +1 -1
- package/dist/commands/orbit.d.ts +7 -1
- package/dist/commands/orbit.js +13 -24
- package/dist/commands/orbit.js.map +1 -1
- package/dist/commands/setup-agent.d.ts +97 -4
- package/dist/commands/setup-agent.js +273 -40
- package/dist/commands/setup-agent.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +2 -0
- package/dist/commands/setup-mcp.js +17 -40
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/start.d.ts +43 -0
- package/dist/commands/start.js +158 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +5 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subtask.d.ts +1 -0
- package/dist/commands/subtask.js +9 -2
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/task-edit-content.js +4 -8
- package/dist/commands/task-edit-content.js.map +1 -1
- package/dist/commands/task.d.ts +7 -0
- package/dist/commands/task.js +5 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tasks.d.ts +35 -0
- package/dist/commands/tasks.js +45 -9
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/vibes.d.ts +3 -1
- package/dist/commands/vibes.js +41 -31
- package/dist/commands/vibes.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/doc-cache.d.ts +74 -5
- package/dist/doc-cache.js +106 -22
- package/dist/doc-cache.js.map +1 -1
- package/dist/enums.d.ts +26 -0
- package/dist/enums.js +53 -0
- package/dist/enums.js.map +1 -0
- package/dist/errors.d.ts +67 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.js +169 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +42 -1
- package/dist/mcp-config.js +82 -2
- package/dist/mcp-config.js.map +1 -1
- package/dist/oauth.js +10 -10
- package/dist/output.d.ts +12 -0
- package/dist/output.js +39 -1
- package/dist/output.js.map +1 -1
- package/dist/paths.d.ts +40 -0
- package/dist/paths.js +174 -9
- package/dist/paths.js.map +1 -1
- package/dist/project-config.d.ts +42 -1
- package/dist/project-config.js +51 -0
- package/dist/project-config.js.map +1 -1
- package/dist/work-log.d.ts +104 -0
- package/dist/work-log.js +181 -0
- package/dist/work-log.js.map +1 -0
- package/dist/workspace-resolve.d.ts +179 -9
- package/dist/workspace-resolve.js +288 -20
- package/dist/workspace-resolve.js.map +1 -1
- package/dist/write-target.d.ts +56 -0
- package/dist/write-target.js +170 -0
- package/dist/write-target.js.map +1 -0
- package/package.json +3 -2
- package/dist/commands/create-project.d.ts +0 -6
- package/dist/commands/create-project.js +0 -28
- package/dist/commands/create-project.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -3
- package/dist/commands/projects.js +0 -28
- package/dist/commands/projects.js.map +0 -1
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import readline from 'node:readline';
|
|
4
5
|
import { SKILLS, MARKER_START, MARKER_END, buildSkillFile, buildClaudeHook, buildGenericBlock, } from '../agent-instructions.js';
|
|
6
|
+
/** The documented default. Exported so `init` and the tests agree on one value. */
|
|
7
|
+
export const DEFAULT_SKILL_SCOPE = 'user';
|
|
8
|
+
export const SKILL_SCOPES = ['user', 'project'];
|
|
5
9
|
const AGENTS = {
|
|
6
|
-
claude: { label: 'Claude Code', file: 'CLAUDE.md' },
|
|
7
|
-
gemini: { label: 'Gemini CLI', file: 'GEMINI.md' },
|
|
8
|
-
codex: { label: 'GPT Codex CLI', file: 'AGENTS.md' },
|
|
9
|
-
cursor: { label: 'Cursor', file: '.cursorrules' },
|
|
10
|
-
windsurf: { label: 'Windsurf', file: '.windsurfrules' },
|
|
11
|
-
generic: { label: 'Other / Generic', file: 'AGENTS.md' },
|
|
10
|
+
claude: { label: 'Claude Code', file: 'CLAUDE.md', userDir: '.claude' },
|
|
11
|
+
gemini: { label: 'Gemini CLI', file: 'GEMINI.md', userDir: '.gemini' },
|
|
12
|
+
codex: { label: 'GPT Codex CLI', file: 'AGENTS.md', userDir: '.codex' },
|
|
13
|
+
cursor: { label: 'Cursor', file: '.cursorrules', userDir: null },
|
|
14
|
+
windsurf: { label: 'Windsurf', file: '.windsurfrules', userDir: null },
|
|
15
|
+
generic: { label: 'Other / Generic', file: 'AGENTS.md', userDir: null },
|
|
12
16
|
};
|
|
13
17
|
/**
|
|
14
18
|
* Menu order for "which agent are you using?" — shared with `init`, which asks the same
|
|
@@ -24,11 +28,49 @@ export const AGENT_MENU_ORDER = [
|
|
|
24
28
|
'generic',
|
|
25
29
|
];
|
|
26
30
|
const MENU_ORDER = [...AGENT_MENU_ORDER];
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
/** Parse a user-supplied `--scope` value; `null` for anything unknown. */
|
|
32
|
+
export function parseSkillScope(value) {
|
|
33
|
+
const key = value.trim().toLowerCase();
|
|
34
|
+
return SKILL_SCOPES.includes(key) ? key : null;
|
|
35
|
+
}
|
|
36
|
+
/** Every accepted `--scope` value, for help text and error messages. */
|
|
37
|
+
export function skillScopeNames() {
|
|
38
|
+
return SKILL_SCOPES.join(', ');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve where an install lands.
|
|
42
|
+
*
|
|
43
|
+
* User scope writes **only** under the agent's personal config directory — nothing is
|
|
44
|
+
* written into the project. That is the point: at user scope the skills and the hook
|
|
45
|
+
* that references them are both visible from every directory, so there is no reason to
|
|
46
|
+
* leave a second, narrower copy behind in one repository.
|
|
47
|
+
*/
|
|
48
|
+
export function resolveInstallTarget(agentType, scope, cwd, homeDir = os.homedir()) {
|
|
49
|
+
const def = AGENTS[agentType];
|
|
50
|
+
const useUser = scope === 'user' && def.userDir !== null;
|
|
51
|
+
const actual = useUser ? 'user' : 'project';
|
|
52
|
+
if (useUser) {
|
|
53
|
+
const root = path.join(homeDir, def.userDir);
|
|
54
|
+
return {
|
|
55
|
+
scope: actual,
|
|
56
|
+
requestedScope: scope,
|
|
57
|
+
skillsDir: agentType === 'claude' ? path.join(root, 'skills') : null,
|
|
58
|
+
configPath: path.join(root, def.file),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
scope: actual,
|
|
63
|
+
requestedScope: scope,
|
|
64
|
+
skillsDir: agentType === 'claude' ? path.join(cwd, '.claude', 'skills') : null,
|
|
65
|
+
configPath: path.join(cwd, def.file),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** Render a path for the console: relative to `cwd` at project scope, absolute at user scope. */
|
|
69
|
+
function displayPath(target, cwd, file) {
|
|
70
|
+
if (target.scope === 'user')
|
|
71
|
+
return file;
|
|
72
|
+
const rel = path.relative(cwd, file);
|
|
73
|
+
return rel.startsWith('..') ? file : rel;
|
|
32
74
|
}
|
|
33
75
|
// --- Helpers ---
|
|
34
76
|
function prompt(question) {
|
|
@@ -77,11 +119,42 @@ async function pickAgent() {
|
|
|
77
119
|
console.log(`Please enter a number between 1 and ${MENU_ORDER.length}.`);
|
|
78
120
|
}
|
|
79
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Ask where the skills go — the same question `init` asks, for the same reason: a
|
|
124
|
+
* user-scope install writes into the user's HOME directory, which is a real side effect
|
|
125
|
+
* outside the project and not a choice to make silently on their behalf.
|
|
126
|
+
*
|
|
127
|
+
* `setup-agent` already prompts for the agent type when `--agent` is absent, so this fits
|
|
128
|
+
* the command's existing shape. It is only ever reached interactively and only when
|
|
129
|
+
* `--scope` was not given.
|
|
130
|
+
*/
|
|
131
|
+
async function askSkillScope() {
|
|
132
|
+
console.log('\nWhere should the OrbitMap skills be installed?');
|
|
133
|
+
console.log(' 1) Global (~/.claude) — every session and subagent sees them, in any directory;');
|
|
134
|
+
console.log(' writes into your home directory (recommended)');
|
|
135
|
+
console.log(' 2) Project (this dir) — only sessions started in this directory can load them');
|
|
136
|
+
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
137
|
+
const answer = (await prompt('Select (1-2, Enter = 1): ')).trim().toLowerCase();
|
|
138
|
+
if (answer === '')
|
|
139
|
+
return 'user';
|
|
140
|
+
if (answer === '1' || answer === 'g' || answer === 'global' || answer === 'u' || answer === 'user') {
|
|
141
|
+
return 'user';
|
|
142
|
+
}
|
|
143
|
+
if (answer === '2' || answer === 'p' || answer === 'project' || answer === 'l' || answer === 'local') {
|
|
144
|
+
return 'project';
|
|
145
|
+
}
|
|
146
|
+
console.log('Please enter 1 or 2.');
|
|
147
|
+
}
|
|
148
|
+
console.log('No usable answer — using the recommended global install.');
|
|
149
|
+
return 'user';
|
|
150
|
+
}
|
|
80
151
|
/**
|
|
81
152
|
* Write a marker-delimited block into a config file, replacing any existing block
|
|
82
153
|
* between the markers. Returns what happened so the caller can report it.
|
|
83
154
|
*/
|
|
84
155
|
function writeBlock(filePath, block) {
|
|
156
|
+
// At user scope the directory (`~/.claude`, `~/.gemini`, …) may not exist yet.
|
|
157
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
85
158
|
if (fs.existsSync(filePath)) {
|
|
86
159
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
87
160
|
const startIdx = content.indexOf(MARKER_START);
|
|
@@ -103,61 +176,179 @@ function writeBlock(filePath, block) {
|
|
|
103
176
|
return 'created';
|
|
104
177
|
}
|
|
105
178
|
/**
|
|
106
|
-
* Install every Claude skill
|
|
107
|
-
* Writing is unconditional, so re-running is idempotent.
|
|
179
|
+
* Install every Claude skill (`<skillsDir>/<name>/SKILL.md` + any `references/*` files —
|
|
180
|
+
* see {@link SkillDef.references}). Writing is unconditional, so re-running is idempotent.
|
|
108
181
|
*/
|
|
109
|
-
function writeSkills(
|
|
182
|
+
function writeSkills(skillsDir) {
|
|
110
183
|
return SKILLS.map((skill) => {
|
|
111
|
-
const
|
|
112
|
-
const file = path.join(cwd, relFile);
|
|
184
|
+
const file = path.join(skillsDir, skill.name, 'SKILL.md');
|
|
113
185
|
const existed = fs.existsSync(file);
|
|
114
186
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
115
187
|
fs.writeFileSync(file, buildSkillFile(skill), 'utf-8');
|
|
116
|
-
|
|
188
|
+
for (const [relPath, content] of Object.entries(skill.references ?? {})) {
|
|
189
|
+
// Keys are POSIX paths relative to the skill directory (may contain subdirectories).
|
|
190
|
+
const refFile = path.join(skillsDir, skill.name, ...relPath.split('/'));
|
|
191
|
+
fs.mkdirSync(path.dirname(refFile), { recursive: true });
|
|
192
|
+
fs.writeFileSync(refFile, `${content}\n`, 'utf-8');
|
|
193
|
+
}
|
|
194
|
+
return { name: skill.name, file, action: existed ? 'updated' : 'created' };
|
|
117
195
|
});
|
|
118
196
|
}
|
|
119
197
|
// --- Per-agent installers ---
|
|
120
198
|
/**
|
|
121
|
-
* Claude: install the
|
|
199
|
+
* Claude: install the five on-demand skills + a thin always-on hook in CLAUDE.md.
|
|
122
200
|
* This mirrors the MCP split of system-instructions (always on) + tool catalogue (on demand).
|
|
201
|
+
*
|
|
202
|
+
* The hook and the skills always land in the *same* scope, so the hook can never promise
|
|
203
|
+
* skills that the reading session cannot load: at user scope both live under `~/.claude`
|
|
204
|
+
* (visible everywhere); at project scope both live in this directory, and the hook says so.
|
|
123
205
|
*/
|
|
124
|
-
function setupClaude(cwd) {
|
|
125
|
-
const skills = writeSkills(
|
|
126
|
-
const
|
|
127
|
-
const hookAction = writeBlock(hookPath, buildClaudeHook());
|
|
206
|
+
function setupClaude(cwd, target) {
|
|
207
|
+
const skills = writeSkills(target.skillsDir);
|
|
208
|
+
const hookAction = writeBlock(target.configPath, buildClaudeHook(target.scope));
|
|
128
209
|
for (const skill of skills) {
|
|
129
|
-
console.log(`${skill.action === 'created' ? 'Installed' : 'Updated'} the \`${skill.name}\` skill at
|
|
210
|
+
console.log(`${skill.action === 'created' ? 'Installed' : 'Updated'} the \`${skill.name}\` skill at ` +
|
|
211
|
+
`${displayPath(target, cwd, skill.file)}.`);
|
|
130
212
|
}
|
|
213
|
+
const hookFile = displayPath(target, cwd, target.configPath);
|
|
131
214
|
switch (hookAction) {
|
|
132
215
|
case 'created':
|
|
133
|
-
console.log(`Created ${
|
|
216
|
+
console.log(`Created ${hookFile} with the OrbitMap hook.`);
|
|
134
217
|
break;
|
|
135
218
|
case 'updated':
|
|
136
|
-
console.log(`Updated the OrbitMap hook in ${
|
|
219
|
+
console.log(`Updated the OrbitMap hook in ${hookFile}.`);
|
|
137
220
|
break;
|
|
138
221
|
case 'appended':
|
|
139
|
-
console.log(`Appended the OrbitMap hook to ${
|
|
222
|
+
console.log(`Appended the OrbitMap hook to ${hookFile}.`);
|
|
140
223
|
break;
|
|
141
224
|
}
|
|
142
225
|
console.log('The skills load on demand — your config stays lean.');
|
|
143
226
|
}
|
|
144
227
|
/** Non-Claude agents: inline the full markdown fallback (no skill ecosystem). */
|
|
145
|
-
function setupGeneric(cwd,
|
|
146
|
-
const
|
|
147
|
-
const
|
|
148
|
-
const action = writeBlock(filePath, buildGenericBlock());
|
|
228
|
+
function setupGeneric(cwd, target) {
|
|
229
|
+
const action = writeBlock(target.configPath, buildGenericBlock());
|
|
230
|
+
const file = displayPath(target, cwd, target.configPath);
|
|
149
231
|
switch (action) {
|
|
150
232
|
case 'created':
|
|
151
|
-
console.log(`Created ${
|
|
233
|
+
console.log(`Created ${file} with OrbitMap instructions.`);
|
|
152
234
|
break;
|
|
153
235
|
case 'updated':
|
|
154
|
-
console.log(`Updated OrbitMap instructions in ${
|
|
236
|
+
console.log(`Updated OrbitMap instructions in ${file}.`);
|
|
155
237
|
break;
|
|
156
238
|
case 'appended':
|
|
157
|
-
console.log(`Appended OrbitMap instructions to ${
|
|
239
|
+
console.log(`Appended OrbitMap instructions to ${file}.`);
|
|
158
240
|
break;
|
|
159
241
|
}
|
|
160
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Find a previous project-scope install in `cwd`.
|
|
245
|
+
*
|
|
246
|
+
* Deliberately narrow: only the five skill directories this CLI creates by name, and only
|
|
247
|
+
* a config file that actually contains OUR marker block. A user's own skill in
|
|
248
|
+
* `.claude/skills/`, an unrelated `CLAUDE.md`, or a `.claude/` holding only settings are
|
|
249
|
+
* invisible here — which is what makes the cleanup below safe.
|
|
250
|
+
*/
|
|
251
|
+
export function detectProjectInstall(cwd, agentType) {
|
|
252
|
+
const skillDirs = agentType === 'claude'
|
|
253
|
+
? SKILLS.map((s) => path.join(cwd, '.claude', 'skills', s.name)).filter((dir) => fs.existsSync(path.join(dir, 'SKILL.md')))
|
|
254
|
+
: [];
|
|
255
|
+
const configFile = path.join(cwd, AGENTS[agentType].file);
|
|
256
|
+
let configPath = null;
|
|
257
|
+
if (fs.existsSync(configFile)) {
|
|
258
|
+
const content = fs.readFileSync(configFile, 'utf-8');
|
|
259
|
+
if (content.includes(MARKER_START) && content.includes(MARKER_END))
|
|
260
|
+
configPath = configFile;
|
|
261
|
+
}
|
|
262
|
+
if (skillDirs.length === 0 && configPath === null)
|
|
263
|
+
return null;
|
|
264
|
+
return { skillDirs, configPath };
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Remove a stale project-scope install — and nothing else.
|
|
268
|
+
*
|
|
269
|
+
* Only ever touches: the five skill directories named in {@link StaleProjectInstall}, and
|
|
270
|
+
* the marker-delimited block inside the config file. Text outside the markers is kept
|
|
271
|
+
* verbatim; the config file itself is deleted only when the block was its entire content
|
|
272
|
+
* (i.e. this CLI created it). Parent directories are removed only when they are already
|
|
273
|
+
* empty — a `.claude/` holding a user's own skills or `settings.json` survives intact.
|
|
274
|
+
* There is no recursive delete of `.claude` anywhere in this function.
|
|
275
|
+
*/
|
|
276
|
+
export function removeProjectInstall(stale) {
|
|
277
|
+
const removed = [];
|
|
278
|
+
for (const dir of stale.skillDirs) {
|
|
279
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
280
|
+
removed.push(dir);
|
|
281
|
+
}
|
|
282
|
+
if (stale.configPath) {
|
|
283
|
+
const content = fs.readFileSync(stale.configPath, 'utf-8');
|
|
284
|
+
const startIdx = content.indexOf(MARKER_START);
|
|
285
|
+
const endIdx = content.indexOf(MARKER_END);
|
|
286
|
+
if (startIdx !== -1 && endIdx !== -1) {
|
|
287
|
+
const rest = content.slice(0, startIdx) + content.slice(endIdx + MARKER_END.length);
|
|
288
|
+
if (rest.trim() === '') {
|
|
289
|
+
// The block was the whole file — this CLI created it, so it goes too.
|
|
290
|
+
fs.rmSync(stale.configPath, { force: true });
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
fs.writeFileSync(stale.configPath, `${rest.trim()}\n`, 'utf-8');
|
|
294
|
+
}
|
|
295
|
+
removed.push(stale.configPath);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// Prune the containers we created, but ONLY while they are empty.
|
|
299
|
+
for (const dir of stale.skillDirs.map((d) => path.dirname(d))) {
|
|
300
|
+
pruneIfEmpty(dir);
|
|
301
|
+
pruneIfEmpty(path.dirname(dir));
|
|
302
|
+
}
|
|
303
|
+
return removed;
|
|
304
|
+
}
|
|
305
|
+
/** `rmdir` a directory only if it exists and holds nothing. Never recursive. */
|
|
306
|
+
function pruneIfEmpty(dir) {
|
|
307
|
+
try {
|
|
308
|
+
if (fs.existsSync(dir) && fs.readdirSync(dir).length === 0)
|
|
309
|
+
fs.rmdirSync(dir);
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// A racing writer or a permission problem here is not worth failing the install over.
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Report — and, when a human is watching, offer to clean up — a project-scope install
|
|
317
|
+
* that the just-completed user-scope install has now shadowed.
|
|
318
|
+
*
|
|
319
|
+
* Non-interactive runs never delete anything: a scripted `init` in CI must not remove
|
|
320
|
+
* files the repository may well have committed. It prints the exact paths and the exact
|
|
321
|
+
* command instead, so the signal is never silent.
|
|
322
|
+
*/
|
|
323
|
+
async function handleStaleProjectInstall(cwd, agentType, cleanProject) {
|
|
324
|
+
const stale = detectProjectInstall(cwd, agentType);
|
|
325
|
+
if (!stale)
|
|
326
|
+
return;
|
|
327
|
+
const paths = [...stale.skillDirs, ...(stale.configPath ? [stale.configPath] : [])];
|
|
328
|
+
console.log('');
|
|
329
|
+
console.log('Heads up: this directory also has an older PROJECT-scope install:');
|
|
330
|
+
for (const p of paths)
|
|
331
|
+
console.log(` ${path.relative(cwd, p) || p}`);
|
|
332
|
+
console.log('Project-level skills take precedence here, so that older copy is what');
|
|
333
|
+
console.log('this directory would actually load — not the freshly installed one.');
|
|
334
|
+
const interactive = !!process.stdin.isTTY;
|
|
335
|
+
if (!cleanProject && !interactive) {
|
|
336
|
+
console.log('Nothing was removed (not an interactive session).');
|
|
337
|
+
console.log(`Clean it up with: orbitmap setup-agent --agent ${agentType} --scope user --clean-project`);
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
if (!cleanProject) {
|
|
341
|
+
const answer = (await prompt('Remove the project-level copy? [Y/n] ')).trim().toLowerCase();
|
|
342
|
+
if (answer === 'n' || answer === 'no') {
|
|
343
|
+
console.log('Kept. Note that this directory will keep loading the project-level copy.');
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const removed = removeProjectInstall(stale);
|
|
348
|
+
for (const p of removed)
|
|
349
|
+
console.log(`Removed ${path.relative(cwd, p) || p}.`);
|
|
350
|
+
console.log('This directory now uses the user-scope install.');
|
|
351
|
+
}
|
|
161
352
|
/** Human label for an agent type (for prompts in other commands, e.g. `init`). */
|
|
162
353
|
export function agentLabel(agentType) {
|
|
163
354
|
return AGENTS[agentType].label;
|
|
@@ -184,21 +375,56 @@ export function parseAgentType(value) {
|
|
|
184
375
|
}
|
|
185
376
|
/**
|
|
186
377
|
* Install the OrbitMap skills for one agent, non-interactively and idempotently.
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
378
|
+
*
|
|
379
|
+
* At the default `user` scope: Claude Code → `~/.claude/skills/<name>/SKILL.md` × 4 +
|
|
380
|
+
* the hook block in `~/.claude/CLAUDE.md`; Gemini/Codex → the inlined block in
|
|
381
|
+
* `~/.gemini/GEMINI.md` / `~/.codex/AGENTS.md`. **Nothing is written into `cwd`.**
|
|
382
|
+
* At `project` scope everything lands in `cwd`, exactly as it used to.
|
|
383
|
+
*
|
|
384
|
+
* Safe to call repeatedly: identical input leaves the tree byte-identical, and the
|
|
385
|
+
* marker block is replaced in place rather than appended again.
|
|
386
|
+
*
|
|
387
|
+
* A user-scope install additionally reports (and can clean up) a leftover project-scope
|
|
388
|
+
* install in `cwd`, which would otherwise silently shadow it — see
|
|
389
|
+
* {@link handleStaleProjectInstall}.
|
|
190
390
|
*/
|
|
191
|
-
export function installAgentSkills(cwd, agentType) {
|
|
391
|
+
export async function installAgentSkills(cwd, agentType, scope = DEFAULT_SKILL_SCOPE, options = {}) {
|
|
392
|
+
const target = resolveInstallTarget(agentType, scope, cwd);
|
|
393
|
+
if (target.requestedScope === 'user' && target.scope === 'project') {
|
|
394
|
+
console.log(`${AGENTS[agentType].label} has no personal (user-level) instructions file — ` +
|
|
395
|
+
`installing into this directory instead.`);
|
|
396
|
+
}
|
|
192
397
|
if (agentType === 'claude') {
|
|
193
|
-
setupClaude(cwd);
|
|
398
|
+
setupClaude(cwd, target);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
setupGeneric(cwd, target);
|
|
402
|
+
}
|
|
403
|
+
if (target.scope === 'user') {
|
|
404
|
+
console.log('Installed at user scope — every session and subagent sees them, in any directory.');
|
|
405
|
+
console.log('Use `--scope project` to install into this directory only.');
|
|
406
|
+
await handleStaleProjectInstall(cwd, agentType, options.cleanProject === true);
|
|
194
407
|
}
|
|
195
408
|
else {
|
|
196
|
-
|
|
409
|
+
console.log('Installed at project scope — only sessions started in this directory (or below) ' +
|
|
410
|
+
'can load the skills.');
|
|
197
411
|
}
|
|
412
|
+
return target;
|
|
198
413
|
}
|
|
199
414
|
// --- Main command ---
|
|
200
415
|
export async function setupAgentCommand(options) {
|
|
201
416
|
let agentType;
|
|
417
|
+
// An explicit `--scope` wins outright and is validated before anything is asked.
|
|
418
|
+
let scope = null;
|
|
419
|
+
if (options.scope) {
|
|
420
|
+
const parsedScope = parseSkillScope(options.scope);
|
|
421
|
+
if (!parsedScope) {
|
|
422
|
+
console.error(`Error: Unknown scope "${options.scope}". Valid scopes: ${skillScopeNames()}`);
|
|
423
|
+
process.exitCode = 1;
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
scope = parsedScope;
|
|
427
|
+
}
|
|
202
428
|
if (options.agent) {
|
|
203
429
|
const parsed = parseAgentType(options.agent);
|
|
204
430
|
if (!parsed) {
|
|
@@ -223,6 +449,13 @@ export async function setupAgentCommand(options) {
|
|
|
223
449
|
agentType = await pickAgent();
|
|
224
450
|
}
|
|
225
451
|
}
|
|
226
|
-
|
|
452
|
+
// Asked only after the agent type is settled, and only when a human is watching;
|
|
453
|
+
// a scripted run takes the documented default and never blocks.
|
|
454
|
+
if (scope === null) {
|
|
455
|
+
scope = process.stdin.isTTY ? await askSkillScope() : DEFAULT_SKILL_SCOPE;
|
|
456
|
+
}
|
|
457
|
+
await installAgentSkills(process.cwd(), agentType, scope, {
|
|
458
|
+
cleanProject: options.cleanProject === true,
|
|
459
|
+
});
|
|
227
460
|
}
|
|
228
461
|
//# sourceMappingURL=setup-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-agent.js","sourceRoot":"","sources":["../../src/commands/setup-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-agent.js","sourceRoot":"","sources":["../../src/commands/setup-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
1
|
import readline from 'node:readline';
|
|
4
2
|
import { validateProfile } from '../oauth.js';
|
|
5
3
|
import { ensureGitignore } from '../doc-cache.js';
|
|
6
|
-
import { buildOrbitmapBlock, maskBlockForPrint, MCP_FILE, } from '../mcp-config.js';
|
|
4
|
+
import { buildOrbitmapBlock, maskBlockForPrint, upsertMcpServerBlock, MCP_FILE, } from '../mcp-config.js';
|
|
7
5
|
async function prompt(question, defaultValue) {
|
|
8
6
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
9
7
|
return new Promise((resolve) => {
|
|
@@ -52,27 +50,6 @@ async function promptAuthMethod() {
|
|
|
52
50
|
console.log('Please enter 1 or 2.');
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
|
-
function loadMcpConfig(filePath) {
|
|
56
|
-
if (!fs.existsSync(filePath)) {
|
|
57
|
-
return { config: { mcpServers: {} }, existed: false };
|
|
58
|
-
}
|
|
59
|
-
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
60
|
-
let parsed;
|
|
61
|
-
try {
|
|
62
|
-
parsed = JSON.parse(raw);
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
throw new Error(`Failed to parse ${filePath}: ${e.message}`);
|
|
66
|
-
}
|
|
67
|
-
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
68
|
-
throw new Error(`${filePath} does not contain a JSON object.`);
|
|
69
|
-
}
|
|
70
|
-
const config = parsed;
|
|
71
|
-
if (typeof config.mcpServers !== 'object' || config.mcpServers === null || Array.isArray(config.mcpServers)) {
|
|
72
|
-
config.mcpServers = {};
|
|
73
|
-
}
|
|
74
|
-
return { config, existed: true };
|
|
75
|
-
}
|
|
76
53
|
export async function setupMcpCommand(options = {}) {
|
|
77
54
|
if (options.token && options.oauth) {
|
|
78
55
|
console.error('Error: --token and --oauth are mutually exclusive.');
|
|
@@ -110,50 +87,50 @@ export async function setupMcpCommand(options = {}) {
|
|
|
110
87
|
}
|
|
111
88
|
}
|
|
112
89
|
}
|
|
113
|
-
|
|
114
|
-
|
|
90
|
+
// The context the block pins is the workspace; an area is only ever written when the user
|
|
91
|
+
// asked for one explicitly (`--area`). Prompting happens only when neither was given, so a
|
|
92
|
+
// scripted `--area`-only invocation keeps producing exactly the block it always did.
|
|
93
|
+
const areaSlug = options.area || '';
|
|
94
|
+
let workspace = options.workspaceId || '';
|
|
95
|
+
if (!workspace && !areaSlug) {
|
|
115
96
|
if (authMode === 'token') {
|
|
116
|
-
|
|
117
|
-
if (!
|
|
118
|
-
console.error('Error:
|
|
97
|
+
workspace = await prompt('Workspace (slug or UUID)');
|
|
98
|
+
if (!workspace) {
|
|
99
|
+
console.error('Error: Workspace is required for API key auth.');
|
|
119
100
|
process.exitCode = 1;
|
|
120
101
|
return;
|
|
121
102
|
}
|
|
122
103
|
}
|
|
123
104
|
else {
|
|
124
|
-
|
|
105
|
+
workspace = await prompt('Workspace (slug or UUID, optional, press Enter to skip)');
|
|
125
106
|
}
|
|
126
107
|
}
|
|
127
108
|
const block = buildOrbitmapBlock({
|
|
128
109
|
profile,
|
|
129
110
|
token,
|
|
111
|
+
workspace: workspace || undefined,
|
|
130
112
|
areaSlug: areaSlug || undefined,
|
|
131
113
|
});
|
|
132
114
|
const cwd = process.cwd();
|
|
133
|
-
|
|
134
|
-
let config;
|
|
135
|
-
let existed;
|
|
115
|
+
let written;
|
|
136
116
|
try {
|
|
137
|
-
|
|
117
|
+
written = upsertMcpServerBlock(cwd, block);
|
|
138
118
|
}
|
|
139
119
|
catch (error) {
|
|
140
120
|
console.error(error.message);
|
|
141
121
|
process.exitCode = 1;
|
|
142
122
|
return;
|
|
143
123
|
}
|
|
144
|
-
|
|
145
|
-
config.mcpServers = { ...config.mcpServers, orbitmap: block };
|
|
146
|
-
fs.writeFileSync(mcpFilePath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
147
|
-
if (replaced) {
|
|
124
|
+
if (written.replaced) {
|
|
148
125
|
console.log('replaced existing orbitmap entry');
|
|
149
126
|
}
|
|
150
|
-
else if (
|
|
127
|
+
else if (!written.created) {
|
|
151
128
|
console.log(`Updated ${MCP_FILE} (added orbitmap entry).`);
|
|
152
129
|
}
|
|
153
130
|
else {
|
|
154
131
|
console.log(`Created ${MCP_FILE} with orbitmap entry.`);
|
|
155
132
|
}
|
|
156
|
-
console.log(`\nFile: ${
|
|
133
|
+
console.log(`\nFile: ${written.file}`);
|
|
157
134
|
console.log(`Profile: ${profile} | URL: ${block.url}`);
|
|
158
135
|
console.log('\n"orbitmap": ' + JSON.stringify(maskBlockForPrint(block), null, 2));
|
|
159
136
|
if (authMode === 'token') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/start.d.ts
CHANGED
|
@@ -1,4 +1,47 @@
|
|
|
1
|
+
import type { WorkspaceAdapter } from '../adapters/types.js';
|
|
2
|
+
/** Why this task, in a shape an agent can branch on as well as print. */
|
|
3
|
+
export interface WorkSelection {
|
|
4
|
+
basis: 'mission' | 'intent' | 'priority';
|
|
5
|
+
reason: string;
|
|
6
|
+
task: string;
|
|
7
|
+
area?: string | null;
|
|
8
|
+
mission?: {
|
|
9
|
+
id?: string;
|
|
10
|
+
number?: string;
|
|
11
|
+
name: string;
|
|
12
|
+
} | null;
|
|
13
|
+
intent?: {
|
|
14
|
+
id?: string;
|
|
15
|
+
number?: string;
|
|
16
|
+
name: string;
|
|
17
|
+
} | null;
|
|
18
|
+
}
|
|
1
19
|
export declare function startCommand(taskId: string | undefined, options: {
|
|
2
20
|
json: boolean;
|
|
3
21
|
area?: string;
|
|
4
22
|
}): Promise<void>;
|
|
23
|
+
/** What `orbitmap start` (with no argument) concluded before touching anything. */
|
|
24
|
+
export type WorkOutcome = {
|
|
25
|
+
kind: 'selected';
|
|
26
|
+
selection: WorkSelection;
|
|
27
|
+
}
|
|
28
|
+
/** Nothing startable — with everything needed to say where we looked. */
|
|
29
|
+
| {
|
|
30
|
+
kind: 'nothing';
|
|
31
|
+
workspace: string | null;
|
|
32
|
+
areas: string[];
|
|
33
|
+
scope: string;
|
|
34
|
+
}
|
|
35
|
+
/** The lookups themselves failed; the caller decides whether that is fatal. */
|
|
36
|
+
| {
|
|
37
|
+
kind: 'lookup-failed';
|
|
38
|
+
error: unknown;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Decide what to work on, plan first: active mission → open intent → priority order.
|
|
42
|
+
*
|
|
43
|
+
* Reads only (`GET /tasks` + `GET /context`), so a caller may discard the answer. Both calls
|
|
44
|
+
* are made with whatever scope the adapter resolved — at the workspace root that is the
|
|
45
|
+
* workspace-wide listing, which is exactly the pool this command should be choosing from.
|
|
46
|
+
*/
|
|
47
|
+
export declare function planWork(client: WorkspaceAdapter): Promise<WorkOutcome>;
|