@nemus-cli/nemus 0.2.4 → 0.2.6

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.
Files changed (109) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/assets/README.md +5 -0
  3. package/assets/avatar-500.png +0 -0
  4. package/assets/social-preview.png +0 -0
  5. package/dist/cli/ai-prompt.js +1 -1
  6. package/dist/cli/tui.js +1 -1
  7. package/dist/commands/configure.js +1 -1
  8. package/dist/commands/ghq-status.js +1 -1
  9. package/dist/mcp/install.js +12 -12
  10. package/dist/mcp/server.js +2 -2
  11. package/dist/pi-extensions/permission-sync.ts.template +1 -1
  12. package/dist/pi-extensions/permissions-gate.ts.template +1 -1
  13. package/dist/pi-extensions/pr-fix-trigger.ts.template +2 -2
  14. package/dist/pi-extensions/review-reminder.ts.template +1 -1
  15. package/dist/pi-extensions/workspace-input-status.ts.template +3 -3
  16. package/dist/scripts/workspace-table.py +3 -3
  17. package/dist/utils/agent-state.js +1 -1
  18. package/dist/utils/bug-report.js +3 -3
  19. package/dist/utils/claude-integration.js +8 -8
  20. package/dist/utils/permission-sync.js +10 -10
  21. package/dist/utils/pi-extensions.js +5 -5
  22. package/package.json +1 -1
  23. package/skills/analyze-deps.md +0 -10
  24. package/skills/archive-workspace.md +0 -8
  25. package/skills/branch-create.md +0 -10
  26. package/skills/create-workspace.md +0 -20
  27. package/skills/delete-workspace.md +0 -14
  28. package/skills/list-org-repos.md +0 -13
  29. package/skills/list-suites.md +0 -10
  30. package/skills/list-workspaces.md +0 -14
  31. package/skills/nemus/SKILL.md +110 -0
  32. package/skills/{workspace-manager → nemus}/references/ai-prompt.md +0 -14
  33. package/skills/{workspace-manager → nemus}/references/analyze-deps.md +0 -18
  34. package/skills/nemus/references/archive-workspace.md +22 -0
  35. package/skills/{workspace-manager → nemus}/references/branch-create.md +0 -8
  36. package/skills/{workspace-manager → nemus}/references/branch-merge.md +0 -9
  37. package/skills/{workspace-manager → nemus}/references/branch-rebase.md +0 -9
  38. package/skills/{workspace-manager → nemus}/references/cache-clear.md +0 -8
  39. package/skills/{workspace-manager → nemus}/references/cache-info.md +0 -8
  40. package/skills/{workspace-manager → nemus}/references/configure-claude.md +0 -8
  41. package/skills/{workspace-manager → nemus}/references/configure.md +0 -8
  42. package/skills/{workspace-manager → nemus}/references/create-workspace.md +0 -9
  43. package/skills/{workspace-manager → nemus}/references/dashboard.md +0 -15
  44. package/skills/{workspace-manager → nemus}/references/delete-workspace.md +0 -9
  45. package/skills/{workspace-manager → nemus}/references/generate-docs.md +0 -16
  46. package/skills/{workspace-manager → nemus}/references/ghq-status.md +0 -14
  47. package/skills/{workspace-manager → nemus}/references/go.md +0 -11
  48. package/skills/{workspace-manager → nemus}/references/history.md +0 -17
  49. package/skills/{workspace-manager → nemus}/references/list-org-repos.md +0 -9
  50. package/skills/{workspace-manager → nemus}/references/list-suites.md +0 -9
  51. package/skills/{workspace-manager → nemus}/references/list-workspaces.md +0 -9
  52. package/skills/{workspace-manager → nemus}/references/mcp.md +3 -21
  53. package/skills/{workspace-manager → nemus}/references/remove-repo.md +0 -8
  54. package/skills/{workspace-manager → nemus}/references/run-command.md +1 -10
  55. package/skills/{workspace-manager → nemus}/references/search-repos.md +0 -9
  56. package/skills/{workspace-manager → nemus}/references/sessions.md +0 -12
  57. package/skills/{workspace-manager → nemus}/references/suite-create.md +0 -9
  58. package/skills/{workspace-manager → nemus}/references/suite-delete.md +0 -8
  59. package/skills/{workspace-manager → nemus}/references/suite-export.md +0 -9
  60. package/skills/{workspace-manager → nemus}/references/suite-import.md +0 -9
  61. package/skills/{workspace-manager → nemus}/references/suite-use.md +0 -9
  62. package/skills/{workspace-manager → nemus}/references/switch-branch.md +0 -9
  63. package/skills/{workspace-manager → nemus}/references/update-cache.md +0 -8
  64. package/skills/{workspace-manager → nemus}/references/update-workspace.md +0 -11
  65. package/skills/{workspace-manager → nemus}/references/workspace-cleanup.md +0 -9
  66. package/skills/{workspace-manager → nemus}/references/workspace-diff.md +0 -8
  67. package/skills/{workspace-manager → nemus}/references/workspace-doctor.md +0 -9
  68. package/skills/{workspace-manager → nemus}/references/workspace-info.md +0 -8
  69. package/skills/nemus/references/workspace-status.md +26 -0
  70. package/skills/{workspace-manager → nemus}/references/workspace-sync.md +0 -9
  71. package/skills/refresh-workspace-docs.md +5 -81
  72. package/skills/remove-repo.md +0 -8
  73. package/skills/run-command.md +0 -10
  74. package/skills/save-context.md +1 -25
  75. package/skills/search-repos.md +0 -15
  76. package/skills/snapshot-list.md +0 -10
  77. package/skills/snapshot-save.md +0 -4
  78. package/skills/switch-branch.md +0 -10
  79. package/skills/update-cache.md +0 -8
  80. package/skills/update-workspace.md +0 -24
  81. package/skills/workspace-cleanup.md +0 -10
  82. package/skills/workspace-diff.md +0 -10
  83. package/skills/workspace-doctor.md +0 -10
  84. package/skills/workspace-info.md +0 -26
  85. package/skills/workspace-status.md +0 -13
  86. package/skills/workspace-sync.md +0 -10
  87. package/src/cli/ai-prompt.ts +1 -1
  88. package/src/cli/tui.tsx +1 -1
  89. package/src/commands/configure.ts +1 -1
  90. package/src/commands/ghq-status.ts +1 -1
  91. package/src/mcp/install.ts +12 -12
  92. package/src/mcp/server.ts +2 -2
  93. package/src/pi-extensions/permission-sync.ts.template +1 -1
  94. package/src/pi-extensions/permissions-gate.ts.template +1 -1
  95. package/src/pi-extensions/pr-fix-trigger.ts.template +2 -2
  96. package/src/pi-extensions/review-reminder.ts.template +1 -1
  97. package/src/pi-extensions/workspace-input-status.ts.template +3 -3
  98. package/src/scripts/workspace-table.py +3 -3
  99. package/src/utils/agent-state.ts +1 -1
  100. package/src/utils/bug-report.ts +3 -3
  101. package/src/utils/claude-integration.ts +8 -8
  102. package/src/utils/permission-sync.test.ts +4 -4
  103. package/src/utils/permission-sync.ts +10 -10
  104. package/src/utils/pi-extensions.test.ts +1 -1
  105. package/src/utils/pi-extensions.ts +5 -5
  106. package/src/utils/repo-resolver.test.ts +1 -1
  107. package/skills/workspace-manager/SKILL.md +0 -201
  108. package/skills/workspace-manager/references/archive-workspace.md +0 -38
  109. package/skills/workspace-manager/references/workspace-status.md +0 -43
@@ -3,16 +3,6 @@ name: switch-branch
3
3
  description: Switch all repos in a workspace to a specified branch
4
4
  ---
5
5
 
6
- # Switch Branch
7
-
8
- Switch all repos in a workspace to a specified branch.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus branch switch <workspace-name> <branch-name>
14
8
  ```
15
-
16
- ## Presenting Results
17
-
18
- Report which repos were switched and any that couldn't switch (e.g., uncommitted changes).
@@ -3,19 +3,11 @@ name: update-cache
3
3
  description: Force refresh the GitHub repository cache
4
4
  ---
5
5
 
6
- # Update Cache
7
-
8
- Force refresh the GitHub repository cache.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus cache refresh
14
8
  ```
15
9
 
16
10
  This fetches the latest list of repositories from the GitHub org and updates the local cache.
17
11
 
18
- ## When to Use
19
-
20
12
  - When `nemus cache search` doesn't find a recently created repo
21
13
  - Periodically to keep the cache fresh (auto-refreshes daily)
@@ -3,16 +3,10 @@ name: update-workspace
3
3
  description: Add one or more repositories to an existing workspace. ALWAYS use this skill — never run `git clone` directly — when the user asks to add, clone, include, or pull a new repo into the current workspace. Triggers on phrases like "add repo X", "include X in this workspace", "I need X here", "clone X into workspace", "add a service".
4
4
  ---
5
5
 
6
- # Update Workspace
7
-
8
6
  > **CRITICAL**: NEVER use `git clone` directly to add repositories to a workspace.
9
7
  > Always use `nemus update` — it registers the repo in workspace metadata, updates
10
8
  > the context file, and keeps `nemus status`/`nemus sync` working correctly.
11
9
 
12
- Add more repositories to an existing workspace.
13
-
14
- ## Resolving the Workspace
15
-
16
10
  If the user hasn't specified a workspace, run:
17
11
  ```bash
18
12
  nemus list 2>&1 | cat
@@ -23,8 +17,6 @@ Or to see what's in a specific workspace (from inside the workspace directory):
23
17
  cat .workspace-meta.json
24
18
  ```
25
19
 
26
- ## Resolving Repositories
27
-
28
20
  If the user hasn't specified which repos to add, help them discover:
29
21
  ```bash
30
22
  nemus cache search <keyword>
@@ -35,15 +27,11 @@ To see what's already in the workspace (avoid adding duplicates):
35
27
  cat .workspace-meta.json | jq '.repositories[].name'
36
28
  ```
37
29
 
38
- ## Adding Repos
39
-
40
30
  Run the update command non-interactively:
41
31
  ```bash
42
32
  nemus update --workspace <name> --repos <repo1,repo2,...> --yes
43
33
  ```
44
34
 
45
- ### Adding the same repo more than once (instances)
46
-
47
35
  Append `:suffix` to a repo name to add it again under a separate folder
48
36
  (`<repo>-<suffix>`) — e.g. a second checkout for another branch instead of a
49
37
  `git worktree` (worktrees are invisible to `nemus status`/`nemus sync`):
@@ -52,15 +40,3 @@ nemus update --workspace <name> --repos casper:cas-101 --yes # -> casper-cas-1
52
40
  ```
53
41
  Suffix = letters, numbers, hyphens, underscores. Each instance is tracked
54
42
  independently by `nemus status`/`nemus sync`.
55
-
56
- ## Presenting Results
57
-
58
- The command output shows which repos were added and which were skipped. Report:
59
- - Successfully added repos
60
- - Skipped repos (already exist in workspace) - this is not an error
61
- - Any failures with their error reason
62
-
63
- ## Suggested Follow-ups
64
-
65
- - `nemus status <workspace>` to verify the new repos
66
- - `nemus sync <workspace>` to pull latest on all repos
@@ -3,16 +3,6 @@ name: workspace-cleanup
3
3
  description: Remove node_modules and build artifacts to free disk space
4
4
  ---
5
5
 
6
- # Workspace Cleanup
7
-
8
- Remove node_modules and build artifacts to free disk space.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus cleanup <workspace-name>
14
8
  ```
15
-
16
- ## Presenting Results
17
-
18
- Report how much disk space was freed and which directories were removed.
@@ -3,12 +3,6 @@ name: workspace-diff
3
3
  description: Show diff summary for all repos in a workspace
4
4
  ---
5
5
 
6
- # Workspace Diff
7
-
8
- Show diff summary across all repos in a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus diff <workspace-name>
14
8
  ```
@@ -17,7 +11,3 @@ Or for the current workspace:
17
11
  ```bash
18
12
  nemus diff
19
13
  ```
20
-
21
- ## Presenting Results
22
-
23
- Report per-repo diff stats (files changed, insertions, deletions).
@@ -3,12 +3,6 @@ name: workspace-doctor
3
3
  description: Run health checks on a workspace
4
4
  ---
5
5
 
6
- # Workspace Doctor
7
-
8
- Run health checks on a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus doctor <workspace-name>
14
8
  ```
@@ -17,7 +11,3 @@ Or for the current workspace:
17
11
  ```bash
18
12
  nemus doctor
19
13
  ```
20
-
21
- ## Presenting Results
22
-
23
- Report any issues found (missing repos, broken git state, etc.) and suggestions for fixes.
@@ -3,19 +3,11 @@ name: workspace-info
3
3
  description: Get detailed metadata for a workspace
4
4
  ---
5
5
 
6
- # Workspace Info
7
-
8
- Get detailed metadata for a workspace including all repository info, tags, and disk path.
9
-
10
- ## Resolving the Workspace
11
-
12
6
  If the user hasn't specified a workspace name, list them:
13
7
  ```bash
14
8
  nemus list 2>&1 | cat
15
9
  ```
16
10
 
17
- ## Getting Info
18
-
19
11
  Read the workspace metadata file (path is relative to the workspace directory):
20
12
  ```bash
21
13
  cat <workspace-path>/.workspace-meta.json
@@ -25,21 +17,3 @@ The workspace path can be found by checking the current directory or using:
25
17
  ```bash
26
18
  nemus status <workspace-name>
27
19
  ```
28
-
29
- ## Presenting Results
30
-
31
- The JSON contains workspace metadata. Present clearly:
32
-
33
- - **Name** and **creation date**
34
- - **Disk path** where the workspace lives
35
- - **Repositories** - list each with:
36
- - Directory name (may differ from repo name if a suffix was used)
37
- - Clone URL
38
- - Status (success/failed from creation)
39
- - **Tags** and any custom metadata if present
40
-
41
- ## Suggested Follow-ups
42
-
43
- - `nemus status <workspace>` to see current git status of each repo
44
- - `nemus update --workspace <name> --repos <repos>` to add more repos
45
- - `nemus doctor <workspace>` to check workspace health
@@ -3,12 +3,6 @@ name: workspace-status
3
3
  description: Show git status for all repos in a workspace
4
4
  ---
5
5
 
6
- # Workspace Status
7
-
8
- Show git status across all repos in a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus status <workspace-name>
14
8
  ```
@@ -17,10 +11,3 @@ Or for the current workspace:
17
11
  ```bash
18
12
  nemus status
19
13
  ```
20
-
21
- ## Presenting Results
22
-
23
- The command shows per-repo git status (branch, uncommitted changes, ahead/behind). Report:
24
- - Which repos have uncommitted changes
25
- - Which repos are on non-default branches
26
- - Any repos that are ahead/behind remote
@@ -3,12 +3,6 @@ name: workspace-sync
3
3
  description: Git pull all repos in a workspace
4
4
  ---
5
5
 
6
- # Workspace Sync
7
-
8
- Pull latest changes for all repos in a workspace.
9
-
10
- ## Running
11
-
12
6
  ```bash
13
7
  nemus sync <workspace-name>
14
8
  ```
@@ -17,7 +11,3 @@ Or for the current workspace:
17
11
  ```bash
18
12
  nemus sync
19
13
  ```
20
-
21
- ## Presenting Results
22
-
23
- Report which repos were updated and any that had conflicts or errors.
@@ -186,7 +186,7 @@ function throwExtractionError(
186
186
  const secs = Math.round(EXTRACTION_TIMEOUT_MS / 1000);
187
187
  let msg =
188
188
  `${cmd} did not respond within ${secs}s while parsing your request.\n` +
189
- ` This is usually a transient model/provider stall, not a workspace-manager bug.\n` +
189
+ ` This is usually a transient model/provider stall, not a nemus bug.\n` +
190
190
  ` • Verify the agent itself responds quickly: time ${testCmd}\n` +
191
191
  ` • If it's slow, your default model may be heavy (e.g. Opus) or the provider\n` +
192
192
  ` may be rate-limiting/refreshing credentials. Retry, or switch to a faster model.\n` +
package/src/cli/tui.tsx CHANGED
@@ -10,7 +10,7 @@ export const main = async () => {
10
10
  try {
11
11
  logInfo('Interactive TUI mode');
12
12
  console.log(colorize('\n╔══════════════════════════════════════════╗', 'cyan'));
13
- console.log(colorize('║ Workspace Manager - Interactive UI ║', 'cyan'));
13
+ console.log(colorize('║ Nemus - Interactive UI ║', 'cyan'));
14
14
  console.log(colorize('╚══════════════════════════════════════════╝\n', 'cyan'));
15
15
 
16
16
  const workspaces = await listWorkspaces();
@@ -20,7 +20,7 @@ export function registerConfigureCommand(parent: Command) {
20
20
 
21
21
  async function handleConfigure() {
22
22
  console.log('\n' + '='.repeat(60));
23
- console.log(colorize('Workspace Manager Configuration', 'bright'));
23
+ console.log(colorize('Nemus Configuration', 'bright'));
24
24
  console.log('='.repeat(60) + '\n');
25
25
 
26
26
  const current = getUserConfig();
@@ -56,7 +56,7 @@ async function handleGhqStatus() {
56
56
  if (showInfo) { displayGhqInfo(); }
57
57
  }
58
58
 
59
- console.log(colorize('Workspace Manager Behavior:', 'cyan'));
59
+ console.log(colorize('Nemus Behavior:', 'cyan'));
60
60
  console.log(' • Auto-detects ghq installation');
61
61
  console.log(' • Uses ghq when available');
62
62
  console.log(' • Falls back to git clone if needed');
@@ -114,11 +114,11 @@ function installHooksAndSkills() {
114
114
  }
115
115
  }
116
116
 
117
- // Install workspace-manager skills (MCP + CLI command skills) — always for all active agents
117
+ // Install nemus skills (MCP + CLI command skills) — always for all active agents
118
118
  try {
119
119
  installWorkspaceSkills();
120
120
  } catch (error) {
121
- logError('Failed to install workspace-manager skills');
121
+ logError('Failed to install nemus skills');
122
122
  if (error instanceof Error) {
123
123
  logError(error.message);
124
124
  }
@@ -143,7 +143,7 @@ function installHooksAndSkills() {
143
143
 
144
144
  /**
145
145
  * Backfill .mcp.json for all existing workspaces that don't have the
146
- * workspace-manager entry yet.
146
+ * nemus entry yet.
147
147
  */
148
148
  async function backfillMcpJson() {
149
149
  const { installMcp } = getUserConfig();
@@ -265,11 +265,11 @@ async function install() {
265
265
 
266
266
  try {
267
267
  execSync(
268
- `claude mcp add workspace-manager -s user -- node "${serverPath}"`,
268
+ `claude mcp add nemus -s user -- node "${serverPath}"`,
269
269
  { stdio: 'pipe' }
270
270
  );
271
271
  logSuccess('MCP server registered globally with Claude Code');
272
- console.log('\nYou can now use workspace-manager tools in any Claude Code session.');
272
+ console.log('\nYou can now use nemus tools in any Claude Code session.');
273
273
  console.log('Try asking: "list my workspaces" or "what\'s the status of my-workspace"');
274
274
  } catch (error) {
275
275
  const stderr = error instanceof Error && 'stderr' in error
@@ -341,12 +341,12 @@ async function upgrade() {
341
341
  }
342
342
 
343
343
  function uninstall() {
344
- // Remove workspace-manager skills (from all agent directories)
344
+ // Remove nemus skills (from all agent directories)
345
345
  try {
346
346
  uninstallWorkspaceSkills();
347
347
  logSuccess('Workspace-manager skills removed from all agents');
348
348
  } catch (error) {
349
- logError('Failed to remove workspace-manager skills');
349
+ logError('Failed to remove nemus skills');
350
350
  if (error instanceof Error) {
351
351
  logError(error.message);
352
352
  }
@@ -384,7 +384,7 @@ function uninstall() {
384
384
  // Unregister MCP from Claude (if available)
385
385
  if (isAgentCliAvailable('claude')) {
386
386
  try {
387
- execSync('claude mcp remove workspace-manager -s user', { stdio: 'inherit' });
387
+ execSync('claude mcp remove nemus -s user', { stdio: 'inherit' });
388
388
  logSuccess('MCP server unregistered from Claude Code');
389
389
  } catch (error) {
390
390
  logError('Failed to unregister MCP server');
@@ -427,10 +427,10 @@ function status() {
427
427
  if (agent.supportsMcp) {
428
428
  try {
429
429
  const output = execSync('claude mcp list', { encoding: 'utf-8' });
430
- const isRegistered = output.includes('workspace-manager');
430
+ const isRegistered = output.includes('nemus');
431
431
  if (isRegistered) {
432
432
  logSuccess(' MCP server registered');
433
- const lines = output.split('\n').filter(l => l.includes('workspace-manager'));
433
+ const lines = output.split('\n').filter(l => l.includes('nemus'));
434
434
  if (lines.length > 0) {
435
435
  console.log(` ${lines[0].trim()}`);
436
436
  }
@@ -473,7 +473,7 @@ function syncPermissions() {
473
473
  }
474
474
 
475
475
  function updateSkills() {
476
- logInfo('Updating workspace-manager skills...');
476
+ logInfo('Updating nemus skills...');
477
477
  try {
478
478
  installWorkspaceSkills();
479
479
  } catch (error) {
@@ -512,7 +512,7 @@ export async function main(subCommandArg?: string) {
512
512
  MCP Integration
513
513
 
514
514
  Usage:
515
- w mcp install Register workspace-manager MCP server with Claude Code
515
+ w mcp install Register nemus MCP server with Claude Code
516
516
  w mcp uninstall Unregister the MCP server
517
517
  w mcp upgrade Update hooks and skills without re-registering the MCP server
518
518
  w mcp update-skills Update only the Claude Code skills (faster than full upgrade)
package/src/mcp/server.ts CHANGED
@@ -46,7 +46,7 @@ import {
46
46
  import { getPackageVersion } from '../utils/config';
47
47
 
48
48
  const server = new McpServer({
49
- name: 'workspace-manager',
49
+ name: 'nemus',
50
50
  version: getPackageVersion(),
51
51
  });
52
52
 
@@ -570,7 +570,7 @@ server.tool(
570
570
  async function main() {
571
571
  const transport = new StdioServerTransport();
572
572
  await server.connect(transport);
573
- process.stderr.write('workspace-manager MCP server started\n');
573
+ process.stderr.write('nemus MCP server started\n');
574
574
  }
575
575
 
576
576
  main().catch((error) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Permission Sync Extension (auto-generated by workspace-manager)
2
+ * Pi Permission Sync Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's sync-permissions.sh Stop hook.
5
5
  * Syncs project-level permissions to global settings on session shutdown.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Permissions Gate Extension (auto-generated by workspace-manager)
2
+ * Pi Permissions Gate Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's permission system.
5
5
  * Confirms before running dangerous bash commands.
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Pi PR-Fix Trigger Extension (auto-generated by workspace-manager)
2
+ * Pi PR-Fix Trigger Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's check-pr-fix-trigger.sh PostToolUse hook.
5
5
  * Detects `gh pr create` in bash tool results, extracts the PR URL,
6
6
  * and injects a directive to monitor CI and address review comments.
7
7
  *
8
- * @managed workspace-manager
8
+ * @managed nemus
9
9
  */
10
10
 
11
11
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pi Review Reminder Extension (auto-generated by workspace-manager)
2
+ * Pi Review Reminder Extension (auto-generated by nemus)
3
3
  *
4
4
  * Equivalent of Claude Code's check-review-reminder.sh SessionStart hook.
5
5
  * Reminds user to review global permissions periodically.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Workspace input status — Claude-Code-style layout (auto-generated by workspace-manager)
2
+ * Workspace input status — Claude-Code-style layout (auto-generated by nemus)
3
3
  *
4
4
  * Layout (matching the Claude Code reference):
5
5
  *
@@ -9,8 +9,8 @@
9
9
  * ⠋ ✦ sonnet-4-6 ⚡ high 📂 ws:foo (3) 🧠 24k/200k 34% 💰 $0.42 ⏱ 2m 5s
10
10
  *
11
11
  * REPO BRANCH PR DIRTY
12
- * workspace-manager-fix-… feat/oauth #41 open ✓
13
- * ▸ workspace-manager-security security/x #45 draft *2
12
+ * nemus-fix-… feat/oauth #41 open ✓
13
+ * ▸ nemus-security security/x #45 draft *2
14
14
  *
15
15
  * [pi's default footer renders below — untouched]
16
16
  *
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- workspace-table.py — Workspace Manager status-line extension for Claude Code
4
- (auto-generated by workspace-manager)
3
+ workspace-table.py — Nemus status-line extension for Claude Code
4
+ (auto-generated by nemus)
5
5
 
6
6
  Outputs ONLY the workspace repo table (branch · PR · CI · dirty state).
7
7
  Claude Code already renders model / cost / context itself, so this script
@@ -10,7 +10,7 @@ adds only what it doesn't show.
10
10
  Configure in ~/.claude/settings.json:
11
11
  "statusLine": {
12
12
  "type": "command",
13
- "command": "~/.workspace-manager-table.py",
13
+ "command": "~/.nemus-table.py",
14
14
  "padding": 0
15
15
  }
16
16
 
@@ -3,7 +3,7 @@ import * as path from 'path';
3
3
  import * as os from 'os';
4
4
  import { AgentState, DASHBOARD_DEFAULTS } from '../types/dashboard';
5
5
 
6
- export const AGENTS_STATE_DIR = path.join(os.homedir(), '.workspace-manager', 'agents');
6
+ export const AGENTS_STATE_DIR = path.join(os.homedir(), '.nemus', 'agents');
7
7
 
8
8
  export function ensureStateDir(): void {
9
9
  fs.mkdirSync(AGENTS_STATE_DIR, { recursive: true });
@@ -165,7 +165,7 @@ export function buildIssueBody(err: CapturedError, env: BugReportEnv): string {
165
165
  const sig = errorSignature(err.message, err.stack);
166
166
  const stack = err.stack ? sanitize(err.stack).slice(0, 4000) : '(no stack captured)';
167
167
  return [
168
- `**Auto-reported by workspace-manager.**`,
168
+ `**Auto-reported by nemus.**`,
169
169
  ``,
170
170
  `**Signature:** \`${sig}\``,
171
171
  `**Command:** \`${sanitize(err.command)}\``,
@@ -184,7 +184,7 @@ export function buildIssueBody(err: CapturedError, env: BugReportEnv): string {
184
184
  `### Environment`,
185
185
  `| | |`,
186
186
  `|---|---|`,
187
- `| workspace-manager | ${env.version} |`,
187
+ `| nemus | ${env.version} |`,
188
188
  `| node | ${env.node} |`,
189
189
  `| os | ${env.os} |`,
190
190
  `| arch | ${env.arch} |`,
@@ -261,7 +261,7 @@ function ensureLabel(): void {
261
261
  'label', 'create', BUG_LABEL,
262
262
  '--repo', BUG_REPORT_REPO,
263
263
  '--color', 'B60205',
264
- '--description', 'Auto-reported by workspace-manager',
264
+ '--description', 'Auto-reported by nemus',
265
265
  ], { encoding: 'utf-8', timeout: 15_000, stdio: 'ignore' });
266
266
  } catch {
267
267
  /* may already exist or no perms — ignore */
@@ -112,7 +112,7 @@ export async function backfillAgentRules(workspacePath: string, workspaceName: s
112
112
 
113
113
 
114
114
  export async function loadClaudeConfig(): Promise<ClaudeConfig> {
115
- const configFile = path.join(process.env.HOME || '~', '.workspace-manager-claude-config.json');
115
+ const configFile = path.join(process.env.HOME || '~', '.nemus-claude-config.json');
116
116
 
117
117
  try {
118
118
  const content = await fs.readFile(configFile, 'utf-8');
@@ -126,7 +126,7 @@ export async function loadClaudeConfig(): Promise<ClaudeConfig> {
126
126
  * Save Claude integration config
127
127
  */
128
128
  export async function saveClaudeConfig(config: ClaudeConfig): Promise<void> {
129
- const configFile = path.join(process.env.HOME || '~', '.workspace-manager-claude-config.json');
129
+ const configFile = path.join(process.env.HOME || '~', '.nemus-claude-config.json');
130
130
 
131
131
  try {
132
132
  await fs.writeFile(configFile, JSON.stringify(config, null, 2), 'utf-8');
@@ -184,7 +184,7 @@ export async function generateClaudeContext(
184
184
 
185
185
  let content = `# Workspace: ${workspaceName}
186
186
 
187
- This workspace was created with [Workspace Manager](https://github.com/${githubOrg}/workspace-manager).
187
+ This workspace was created with [Nemus](https://github.com/${githubOrg}/nemus).
188
188
 
189
189
  ## Organization
190
190
 
@@ -328,7 +328,7 @@ This workspace contains ${entries.length} repositories for focused development w
328
328
  logSuccess(`Generated ${colorize(fileName, 'cyan')} with workspace context`);
329
329
  }
330
330
 
331
- // Generate .mcp.json with workspace-manager MCP server (if enabled)
331
+ // Generate .mcp.json with nemus MCP server (if enabled)
332
332
  const { installMcp } = getUserConfig();
333
333
  if (installMcp) {
334
334
  await generateMcpConfig(workspacePath);
@@ -408,9 +408,9 @@ function resolveMcpServerPath(): string | null {
408
408
  }
409
409
 
410
410
  /**
411
- * Generate .mcp.json with workspace-manager MCP server config.
411
+ * Generate .mcp.json with nemus MCP server config.
412
412
  * This ensures Claude Code sessions in the workspace have access to
413
- * workspace-manager tools even without global MCP registration.
413
+ * nemus tools even without global MCP registration.
414
414
  */
415
415
  export async function generateMcpConfig(workspacePath: string): Promise<boolean> {
416
416
  try {
@@ -434,7 +434,7 @@ export async function generateMcpConfig(workspacePath: string): Promise<boolean>
434
434
  ...existingConfig,
435
435
  mcpServers: {
436
436
  ...(existingConfig.mcpServers || {}),
437
- 'workspace-manager': {
437
+ 'nemus': {
438
438
  command: 'node',
439
439
  args: [serverPath],
440
440
  },
@@ -442,7 +442,7 @@ export async function generateMcpConfig(workspacePath: string): Promise<boolean>
442
442
  };
443
443
 
444
444
  await fs.writeFile(mcpFile, JSON.stringify(mcpConfig, null, 2) + '\n', 'utf-8');
445
- logSuccess(`Generated ${colorize('.mcp.json', 'cyan')} with workspace-manager MCP server`);
445
+ logSuccess(`Generated ${colorize('.mcp.json', 'cyan')} with nemus MCP server`);
446
446
  return true;
447
447
  } catch (error) {
448
448
  logWarning('Failed to generate .mcp.json file');
@@ -21,7 +21,7 @@ describe('isReusablePermission', () => {
21
21
  });
22
22
 
23
23
  it('keeps mcp tool permissions', () => {
24
- expect(isReusablePermission('mcp__workspace-manager__list-workspaces')).toBe(true);
24
+ expect(isReusablePermission('mcp__nemus__list-workspaces')).toBe(true);
25
25
  });
26
26
 
27
27
  it('keeps Skill and WebFetch permissions', () => {
@@ -480,7 +480,7 @@ describe('uninstallWorkspaceSkills', () => {
480
480
  expect(() => uninstallWorkspaceSkills(targetDir)).not.toThrow();
481
481
  });
482
482
 
483
- it('does not remove non-workspace-manager skills', () => {
483
+ it('does not remove non-nemus skills', () => {
484
484
  const targetDir = path.join(tmpDir, 'skills');
485
485
  fs.mkdirSync(targetDir, { recursive: true });
486
486
 
@@ -520,7 +520,7 @@ describe('repairStaleHooks', () => {
520
520
  expect(repairStaleHooks(missing)).toBe(0);
521
521
  });
522
522
 
523
- it('returns 0 when there are no workspace-manager hooks', () => {
523
+ it('returns 0 when there are no nemus hooks', () => {
524
524
  const settingsPath = path.join(tmpDir, 'settings.json');
525
525
  fs.writeFileSync(settingsPath, JSON.stringify({
526
526
  hooks: { Stop: [{ hooks: [{ type: 'command', command: 'echo hi' }] }] },
@@ -544,7 +544,7 @@ describe('repairStaleHooks', () => {
544
544
  Stop: [{
545
545
  hooks: [{
546
546
  type: 'command',
547
- command: 'bash "/Users/x/.volta/tmp/image/packages/.tmpABC/lib/node_modules/@acme/workspace-manager/sync-permissions.sh"',
547
+ command: 'bash "/Users/x/.volta/tmp/image/packages/.tmpABC/lib/node_modules/@acme/nemus/sync-permissions.sh"',
548
548
  }],
549
549
  }],
550
550
  },