@thebushidocollective/han 1.2.0 ā 1.3.1
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 +61 -2
- package/dist/lib/align-progress.d.ts +9 -0
- package/dist/lib/align-progress.d.ts.map +1 -0
- package/dist/lib/align-progress.js +58 -0
- package/dist/lib/align-progress.js.map +1 -0
- package/dist/lib/align.d.ts +20 -0
- package/dist/lib/align.d.ts.map +1 -0
- package/dist/lib/align.js +208 -0
- package/dist/lib/align.js.map +1 -0
- package/dist/lib/detect-plugins-prompt.d.ts +5 -0
- package/dist/lib/detect-plugins-prompt.d.ts.map +1 -0
- package/dist/lib/detect-plugins-prompt.js +81 -0
- package/dist/lib/detect-plugins-prompt.js.map +1 -0
- package/dist/lib/install-progress.d.ts +1 -1
- package/dist/lib/install-progress.d.ts.map +1 -1
- package/dist/lib/install-progress.js +20 -20
- package/dist/lib/install-progress.js.map +1 -1
- package/dist/lib/install.d.ts +2 -2
- package/dist/lib/install.d.ts.map +1 -1
- package/dist/lib/install.js +64 -67
- package/dist/lib/install.js.map +1 -1
- package/dist/lib/main.js +49 -22
- package/dist/lib/main.js.map +1 -1
- package/dist/lib/markdown-wrapper.d.ts +1 -1
- package/dist/lib/markdown-wrapper.d.ts.map +1 -1
- package/dist/lib/markdown-wrapper.js +4 -4
- package/dist/lib/markdown-wrapper.js.map +1 -1
- package/dist/lib/uninstall.js +18 -18
- package/dist/lib/uninstall.js.map +1 -1
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +15 -15
- package/dist/lib/validate.js.map +1 -1
- package/dist/test/han.test.js +54 -54
- package/dist/test/han.test.js.map +1 -1
- package/package.json +62 -62
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-progress.js","sourceRoot":"","sources":["../../lib/install-progress.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,
|
|
1
|
+
{"version":3,"file":"install-progress.js","sourceRoot":"","sources":["../../lib/install-progress.tsx"],"names":[],"mappings":"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"}
|
package/dist/lib/install.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface AgentUpdate {
|
|
2
|
-
type:
|
|
2
|
+
type: 'text' | 'tool';
|
|
3
3
|
content: string;
|
|
4
4
|
toolName?: string;
|
|
5
5
|
}
|
|
@@ -11,5 +11,5 @@ export interface DetectPluginsCallbacks {
|
|
|
11
11
|
/**
|
|
12
12
|
* SDK-based install command with Ink UI
|
|
13
13
|
*/
|
|
14
|
-
export declare function install(): Promise<void>;
|
|
14
|
+
export declare function install(scope?: 'project' | 'local'): Promise<void>;
|
|
15
15
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../lib/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../lib/install.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAiKD;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,GAAE,SAAS,GAAG,OAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CnF"}
|
package/dist/lib/install.js
CHANGED
|
@@ -1,97 +1,68 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from
|
|
2
|
-
import { join } from
|
|
3
|
-
import { query } from
|
|
4
|
-
import { render } from
|
|
5
|
-
import React from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
4
|
+
import { render } from 'ink';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { detectPluginsPrompt } from './detect-plugins-prompt.js';
|
|
7
|
+
const HAN_MARKETPLACE_REPO = 'thebushidocollective/han';
|
|
8
|
+
function getClaudeSettingsPath(scope = 'project') {
|
|
9
|
+
const filename = scope === 'local' ? 'settings.local.json' : 'settings.json';
|
|
10
|
+
return join(process.cwd(), '.claude', filename);
|
|
10
11
|
}
|
|
11
12
|
function ensureClaudeDirectory() {
|
|
12
|
-
const
|
|
13
|
-
const claudeDir = join(
|
|
13
|
+
const settingsPath = getClaudeSettingsPath();
|
|
14
|
+
const claudeDir = join(settingsPath, '..');
|
|
14
15
|
if (!existsSync(claudeDir)) {
|
|
15
16
|
mkdirSync(claudeDir, { recursive: true });
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
|
-
function readOrCreateSettings() {
|
|
19
|
-
const settingsPath = getClaudeSettingsPath();
|
|
19
|
+
function readOrCreateSettings(scope = 'project') {
|
|
20
|
+
const settingsPath = getClaudeSettingsPath(scope);
|
|
20
21
|
if (existsSync(settingsPath)) {
|
|
21
22
|
try {
|
|
22
|
-
return JSON.parse(readFileSync(settingsPath,
|
|
23
|
+
return JSON.parse(readFileSync(settingsPath, 'utf8'));
|
|
23
24
|
}
|
|
24
25
|
catch (_error) {
|
|
25
|
-
console.error(
|
|
26
|
+
console.error(`Error reading ${scope === 'local' ? 'settings.local.json' : 'settings.json'}, creating new one`);
|
|
26
27
|
return {};
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
return {};
|
|
30
31
|
}
|
|
31
|
-
function writeSettings(settings) {
|
|
32
|
-
const settingsPath = getClaudeSettingsPath();
|
|
32
|
+
function writeSettings(settings, scope = 'project') {
|
|
33
|
+
const settingsPath = getClaudeSettingsPath(scope);
|
|
33
34
|
writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\n`);
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Use Claude Agent SDK to intelligently analyze codebase and recommend plugins
|
|
37
38
|
*/
|
|
38
39
|
async function detectPluginsWithAgent(callbacks) {
|
|
39
|
-
const agentPrompt = `You are a Han plugin installer assistant. Your goal is to analyze the current codebase and recommend appropriate Claude Code plugins from the Han marketplace.
|
|
40
|
-
|
|
41
|
-
Available Plugin Categories:
|
|
42
|
-
- buki-* (ę¦åØ weapons): Skills for specific technologies (e.g., buki-typescript, buki-react, buki-go)
|
|
43
|
-
- do-* (é disciplines): Specialized agents for development practices
|
|
44
|
-
- sensei-* (å
ē teachers): MCP servers for external integrations
|
|
45
|
-
- bushido: Core quality and testing principles
|
|
46
|
-
|
|
47
|
-
Your Task:
|
|
48
|
-
1. Use Glob to discover what files exist in the repository
|
|
49
|
-
2. Use Grep to search for framework/library usage patterns
|
|
50
|
-
3. Read key configuration files (package.json, Cargo.toml, go.mod, etc.)
|
|
51
|
-
4. Get the latest han plugins from the marketplace https://raw.githubusercontent.com/TheBushidoCollective/han/refs/heads/main/.claude-plugin/marketplace.json
|
|
52
|
-
5. Recommend Han plugins that match the detected technologies
|
|
53
|
-
6. Return your recommendations as a JSON array of plugin names
|
|
54
|
-
|
|
55
|
-
Focus on detecting:
|
|
56
|
-
- Programming languages (TypeScript, Python, Go, Rust, Ruby, etc.)
|
|
57
|
-
- Frontend frameworks (React, Vue, Angular, Next.js, etc.)
|
|
58
|
-
- Backend frameworks (NestJS, Django, FastAPI, Rails, etc.)
|
|
59
|
-
- Testing frameworks (Jest, Pytest, RSpec, etc.)
|
|
60
|
-
- GraphQL implementations
|
|
61
|
-
- Monorepo tools (Nx, Turborepo, Lerna)
|
|
62
|
-
|
|
63
|
-
ALWAYS add the bushido plugin!
|
|
64
|
-
|
|
65
|
-
Return ONLY a JSON array of recommended plugin names, like:
|
|
66
|
-
["bushido", "buki-typescript", "buki-react", "buki-jest"]
|
|
67
|
-
|
|
68
|
-
ULTRATHINK and Analyze this codebase and recommend appropriate Han plugins.`;
|
|
69
40
|
// Define allowed tools - only read-only operations
|
|
70
|
-
const allowedTools = [
|
|
41
|
+
const allowedTools = ['web_fetch', 'read_file', 'glob', 'grep'];
|
|
71
42
|
const agent = query({
|
|
72
|
-
prompt:
|
|
43
|
+
prompt: detectPluginsPrompt,
|
|
73
44
|
options: {
|
|
74
|
-
model:
|
|
45
|
+
model: 'claude-sonnet-4-5-20250929',
|
|
75
46
|
includePartialMessages: true,
|
|
76
47
|
allowedTools,
|
|
77
|
-
permissionMode:
|
|
48
|
+
permissionMode: 'bypassPermissions',
|
|
78
49
|
},
|
|
79
50
|
});
|
|
80
|
-
let responseContent =
|
|
51
|
+
let responseContent = '';
|
|
81
52
|
try {
|
|
82
53
|
// Collect all messages from the agent with live updates
|
|
83
54
|
for await (const sdkMessage of agent) {
|
|
84
|
-
if (sdkMessage.type ===
|
|
55
|
+
if (sdkMessage.type === 'assistant' && sdkMessage.message.content) {
|
|
85
56
|
for (const block of sdkMessage.message.content) {
|
|
86
|
-
if (block.type ===
|
|
57
|
+
if (block.type === 'text') {
|
|
87
58
|
// Send text updates
|
|
88
|
-
callbacks.onUpdate({ type:
|
|
59
|
+
callbacks.onUpdate({ type: 'text', content: block.text });
|
|
89
60
|
responseContent += block.text;
|
|
90
61
|
}
|
|
91
|
-
else if (block.type ===
|
|
62
|
+
else if (block.type === 'tool_use') {
|
|
92
63
|
// Send tool usage updates
|
|
93
64
|
callbacks.onUpdate({
|
|
94
|
-
type:
|
|
65
|
+
type: 'tool',
|
|
95
66
|
content: `Using ${block.name}`,
|
|
96
67
|
toolName: block.name,
|
|
97
68
|
});
|
|
@@ -101,7 +72,7 @@ ULTRATHINK and Analyze this codebase and recommend appropriate Han plugins.`;
|
|
|
101
72
|
}
|
|
102
73
|
// Extract plugin recommendations from agent response
|
|
103
74
|
const plugins = parsePluginRecommendations(responseContent);
|
|
104
|
-
const finalPlugins = plugins.length > 0 ? plugins : [
|
|
75
|
+
const finalPlugins = plugins.length > 0 ? plugins : ['bushido'];
|
|
105
76
|
callbacks.onComplete(finalPlugins, responseContent);
|
|
106
77
|
}
|
|
107
78
|
catch (error) {
|
|
@@ -118,7 +89,8 @@ function parsePluginRecommendations(content) {
|
|
|
118
89
|
if (jsonMatch) {
|
|
119
90
|
const plugins = JSON.parse(jsonMatch[0]);
|
|
120
91
|
if (Array.isArray(plugins)) {
|
|
121
|
-
|
|
92
|
+
plugins.push('bushido');
|
|
93
|
+
return plugins.filter((p) => typeof p === 'string');
|
|
122
94
|
}
|
|
123
95
|
}
|
|
124
96
|
// Fallback: look for plugin names mentioned
|
|
@@ -134,43 +106,68 @@ function parsePluginRecommendations(content) {
|
|
|
134
106
|
}
|
|
135
107
|
}
|
|
136
108
|
/**
|
|
137
|
-
*
|
|
109
|
+
* Get currently installed Han plugins
|
|
138
110
|
*/
|
|
139
|
-
function
|
|
111
|
+
function getInstalledPlugins(scope = 'project') {
|
|
112
|
+
const settings = readOrCreateSettings(scope);
|
|
113
|
+
const enabledPlugins = settings.enabledPlugins || {};
|
|
114
|
+
return Object.keys(enabledPlugins)
|
|
115
|
+
.filter((key) => key.endsWith('@han') && enabledPlugins[key])
|
|
116
|
+
.map((key) => key.replace('@han', ''));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Install plugins to Claude settings and return list of added plugins
|
|
120
|
+
*/
|
|
121
|
+
function installPluginsToSettings(plugins, scope = 'project') {
|
|
140
122
|
ensureClaudeDirectory();
|
|
141
|
-
const settings = readOrCreateSettings();
|
|
123
|
+
const settings = readOrCreateSettings(scope);
|
|
124
|
+
const currentPlugins = getInstalledPlugins(scope);
|
|
125
|
+
const added = [];
|
|
142
126
|
// Add Han marketplace to extraMarketplaces
|
|
143
127
|
if (!settings?.extraKnownMarketplaces?.han) {
|
|
144
128
|
settings.extraKnownMarketplaces = {
|
|
145
129
|
...settings.extraKnownMarketplaces,
|
|
146
|
-
han: { source: { source:
|
|
130
|
+
han: { source: { source: 'github', repo: HAN_MARKETPLACE_REPO } },
|
|
147
131
|
};
|
|
148
132
|
}
|
|
149
133
|
// Add plugins
|
|
150
134
|
for (const plugin of plugins) {
|
|
135
|
+
if (!currentPlugins.includes(plugin)) {
|
|
136
|
+
added.push(plugin);
|
|
137
|
+
}
|
|
151
138
|
settings.enabledPlugins = {
|
|
152
139
|
...settings.enabledPlugins,
|
|
153
140
|
[`${plugin}@han`]: true,
|
|
154
141
|
};
|
|
155
142
|
}
|
|
156
|
-
writeSettings(settings);
|
|
143
|
+
writeSettings(settings, scope);
|
|
144
|
+
return added;
|
|
157
145
|
}
|
|
158
146
|
/**
|
|
159
147
|
* SDK-based install command with Ink UI
|
|
160
148
|
*/
|
|
161
|
-
export async function install() {
|
|
149
|
+
export async function install(scope = 'project') {
|
|
162
150
|
// Import Ink UI component dynamically to avoid issues with React
|
|
163
|
-
const { InstallProgress } = await import(
|
|
151
|
+
const { InstallProgress } = await import('./install-progress.js');
|
|
164
152
|
let resolveCompletion;
|
|
165
153
|
let rejectCompletion;
|
|
166
154
|
const completionPromise = new Promise((resolve, reject) => {
|
|
167
155
|
resolveCompletion = resolve;
|
|
168
156
|
rejectCompletion = reject;
|
|
169
157
|
});
|
|
158
|
+
const filename = scope === 'local' ? 'settings.local.json' : 'settings.json';
|
|
159
|
+
console.log(`Installing to ./.claude/${filename}...\n`);
|
|
170
160
|
const { unmount } = render(React.createElement(InstallProgress, {
|
|
171
161
|
detectPlugins: detectPluginsWithAgent,
|
|
172
162
|
onInstallComplete: (plugins) => {
|
|
173
|
-
installPluginsToSettings(plugins);
|
|
163
|
+
const added = installPluginsToSettings(plugins, scope);
|
|
164
|
+
if (added.length > 0) {
|
|
165
|
+
console.log(`\nā Added ${added.length} plugin(s): ${added.join(', ')}`);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log('\nā All recommended plugins were already installed');
|
|
169
|
+
}
|
|
170
|
+
console.log('\nā ļø Please restart Claude Code to load the new plugins');
|
|
174
171
|
if (resolveCompletion)
|
|
175
172
|
resolveCompletion();
|
|
176
173
|
},
|
package/dist/lib/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../lib/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../lib/install.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/main.js
CHANGED
|
@@ -1,53 +1,80 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { readFileSync } from
|
|
3
|
-
import { dirname, join } from
|
|
4
|
-
import { fileURLToPath } from
|
|
5
|
-
import { Command } from
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const packageJson = JSON.parse(readFileSync(join(__dirname,
|
|
7
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf-8'));
|
|
8
8
|
const program = new Command();
|
|
9
9
|
program
|
|
10
|
-
.name(
|
|
10
|
+
.name('han')
|
|
11
11
|
.description("Utilities for The Bushido Collective's Han Code Marketplace")
|
|
12
12
|
.version(packageJson.version);
|
|
13
13
|
// Install command
|
|
14
14
|
program
|
|
15
|
-
.command(
|
|
16
|
-
.description(
|
|
17
|
-
.
|
|
15
|
+
.command('install')
|
|
16
|
+
.description('Install Han marketplace and plugins to Claude Code settings')
|
|
17
|
+
.option('--scope <scope>', 'Installation scope: "project" (.claude/settings.json) or "local" (.claude/settings.local.json)', 'project')
|
|
18
|
+
.action(async (options) => {
|
|
18
19
|
try {
|
|
19
|
-
const
|
|
20
|
-
|
|
20
|
+
const scope = options.scope || 'project';
|
|
21
|
+
if (scope !== 'project' && scope !== 'local') {
|
|
22
|
+
console.error('Error: --scope must be either "project" or "local"');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const { install } = await import('./install.js');
|
|
26
|
+
await install(scope);
|
|
21
27
|
process.exit(0);
|
|
22
28
|
}
|
|
23
29
|
catch (error) {
|
|
24
|
-
console.error(
|
|
30
|
+
console.error('Error during installation:', error instanceof Error ? error.message : error);
|
|
25
31
|
process.exit(1);
|
|
26
32
|
}
|
|
27
33
|
});
|
|
28
34
|
// Uninstall command
|
|
29
35
|
program
|
|
30
|
-
.command(
|
|
31
|
-
.description(
|
|
36
|
+
.command('uninstall')
|
|
37
|
+
.description('Remove Han marketplace and plugins')
|
|
32
38
|
.action(async () => {
|
|
33
|
-
const { uninstall } = await import(
|
|
39
|
+
const { uninstall } = await import('./uninstall.js');
|
|
34
40
|
uninstall();
|
|
35
41
|
process.exit(0);
|
|
36
42
|
});
|
|
43
|
+
// Align command
|
|
44
|
+
program
|
|
45
|
+
.command('align')
|
|
46
|
+
.description('Align plugins with current codebase state in Claude Code settings')
|
|
47
|
+
.option('--scope <scope>', 'Installation scope: "project" (.claude/settings.json) or "local" (.claude/settings.local.json)', 'project')
|
|
48
|
+
.action(async (options) => {
|
|
49
|
+
try {
|
|
50
|
+
const scope = options.scope || 'project';
|
|
51
|
+
if (scope !== 'project' && scope !== 'local') {
|
|
52
|
+
console.error('Error: --scope must be either "project" or "local"');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const { align } = await import('./align.js');
|
|
56
|
+
await align(scope);
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('Error during alignment:', error instanceof Error ? error.message : error);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
37
64
|
// Validate command
|
|
38
65
|
program
|
|
39
|
-
.command(
|
|
40
|
-
.description(
|
|
41
|
-
.option(
|
|
42
|
-
.option(
|
|
43
|
-
.argument(
|
|
66
|
+
.command('validate')
|
|
67
|
+
.description('Validate directories')
|
|
68
|
+
.option('--fail-fast', 'Stop on first failure')
|
|
69
|
+
.option('--dirs-with <file>', 'Only run in directories containing the specified file')
|
|
70
|
+
.argument('<command...>', 'Command to run in each directory')
|
|
44
71
|
.allowUnknownOption()
|
|
45
72
|
.action(async (commandArgs, options) => {
|
|
46
|
-
const { validate } = await import(
|
|
73
|
+
const { validate } = await import('./validate.js');
|
|
47
74
|
validate({
|
|
48
75
|
failFast: options.failFast || false,
|
|
49
76
|
dirsWith: options.dirsWith || null,
|
|
50
|
-
command: commandArgs.join(
|
|
77
|
+
command: commandArgs.join(' '),
|
|
51
78
|
});
|
|
52
79
|
});
|
|
53
80
|
program.parse();
|
package/dist/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../lib/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../lib/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-wrapper.d.ts","sourceRoot":"","sources":["../../lib/markdown-wrapper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,oBAAoB;
|
|
1
|
+
{"version":3,"file":"markdown-wrapper.d.ts","sourceRoot":"","sources":["../../lib/markdown-wrapper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAW1D,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Text } from
|
|
3
|
-
import { marked } from
|
|
4
|
-
import TerminalRenderer from
|
|
2
|
+
import { Text } from 'ink';
|
|
3
|
+
import { marked } from 'marked';
|
|
4
|
+
import TerminalRenderer from 'marked-terminal';
|
|
5
5
|
// Configure marked globally with terminal renderer
|
|
6
6
|
marked.setOptions({
|
|
7
7
|
// @ts-expect-error - marked-terminal types are not perfectly aligned
|
|
@@ -10,7 +10,7 @@ marked.setOptions({
|
|
|
10
10
|
export const MarkdownWrapper = ({ children, }) => {
|
|
11
11
|
try {
|
|
12
12
|
const parsed = marked.parse(children);
|
|
13
|
-
const output = typeof parsed ===
|
|
13
|
+
const output = typeof parsed === 'string' ? parsed.trim() : '';
|
|
14
14
|
return _jsx(Text, { children: output });
|
|
15
15
|
}
|
|
16
16
|
catch (_error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-wrapper.js","sourceRoot":"","sources":["../../lib/markdown-wrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAO/C,mDAAmD;AACnD,MAAM,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-wrapper.js","sourceRoot":"","sources":["../../lib/markdown-wrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAO/C,mDAAmD;AACnD,MAAM,CAAC,UAAU,CAAC;IAChB,qEAAqE;IACrE,QAAQ,EAAE,IAAI,gBAAgB,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC9D,QAAQ,GACT,EAAE,EAAE;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAC,IAAI,cAAE,MAAM,GAAQ,CAAC;IAC/B,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,mDAAmD;QACnD,OAAO,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,QAAQ,GAAQ,CAAC;IAC7C,CAAC;AACH,CAAC,CAAC"}
|
package/dist/lib/uninstall.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from
|
|
2
|
-
import { join } from
|
|
3
|
-
const HAN_MARKETPLACE_URL =
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
const HAN_MARKETPLACE_URL = 'https://github.com/thebushidocollective/han';
|
|
4
4
|
function getClaudeSettingsPath() {
|
|
5
5
|
const rootDir = process.cwd();
|
|
6
|
-
return join(rootDir,
|
|
6
|
+
return join(rootDir, '.claude', 'settings.json');
|
|
7
7
|
}
|
|
8
8
|
function readSettings() {
|
|
9
9
|
const settingsPath = getClaudeSettingsPath();
|
|
10
10
|
if (!existsSync(settingsPath)) {
|
|
11
|
-
console.log(
|
|
11
|
+
console.log('No .claude/settings.json found. Nothing to uninstall.');
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
14
|
try {
|
|
15
|
-
return JSON.parse(readFileSync(settingsPath,
|
|
15
|
+
return JSON.parse(readFileSync(settingsPath, 'utf8'));
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
|
-
console.error(
|
|
18
|
+
console.error('Error reading settings.json:', error.message);
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -24,7 +24,7 @@ function writeSettings(settings) {
|
|
|
24
24
|
writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\n`);
|
|
25
25
|
}
|
|
26
26
|
export function uninstall() {
|
|
27
|
-
console.log(
|
|
27
|
+
console.log('šļø Removing Han marketplace and plugins from Claude Code settings...\n');
|
|
28
28
|
const settings = readSettings();
|
|
29
29
|
if (!settings) {
|
|
30
30
|
process.exit(0);
|
|
@@ -46,10 +46,10 @@ export function uninstall() {
|
|
|
46
46
|
// Remove all Han plugins (those starting with buki-, do-, sensei-, or named bushido)
|
|
47
47
|
if (settings.plugins) {
|
|
48
48
|
const before = settings.plugins.length;
|
|
49
|
-
settings.plugins = settings.plugins.filter((plugin) => !plugin.startsWith(
|
|
50
|
-
!plugin.startsWith(
|
|
51
|
-
!plugin.startsWith(
|
|
52
|
-
plugin !==
|
|
49
|
+
settings.plugins = settings.plugins.filter((plugin) => !plugin.startsWith('buki-') &&
|
|
50
|
+
!plugin.startsWith('do-') &&
|
|
51
|
+
!plugin.startsWith('sensei-') &&
|
|
52
|
+
plugin !== 'bushido');
|
|
53
53
|
const after = settings.plugins.length;
|
|
54
54
|
const removed = before - after;
|
|
55
55
|
if (removed > 0) {
|
|
@@ -61,12 +61,12 @@ export function uninstall() {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
if (!changes) {
|
|
64
|
-
console.log(
|
|
64
|
+
console.log('No Han marketplace or plugins found in settings.');
|
|
65
65
|
process.exit(0);
|
|
66
66
|
}
|
|
67
67
|
writeSettings(settings);
|
|
68
|
-
console.log(
|
|
69
|
-
console.log(
|
|
68
|
+
console.log('\nā
Uninstallation complete!');
|
|
69
|
+
console.log('\nRemaining configuration in .claude/settings.json:');
|
|
70
70
|
if (settings.plugins && settings.plugins.length > 0) {
|
|
71
71
|
console.log(` Plugins: ${settings.plugins.length}`);
|
|
72
72
|
for (const plugin of settings.plugins) {
|
|
@@ -74,7 +74,7 @@ export function uninstall() {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
|
-
console.log(
|
|
77
|
+
console.log(' No plugins configured');
|
|
78
78
|
}
|
|
79
79
|
if (settings.extraMarketplaces && settings.extraMarketplaces.length > 0) {
|
|
80
80
|
console.log(` Marketplaces: ${settings.extraMarketplaces.length}`);
|
|
@@ -83,8 +83,8 @@ export function uninstall() {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
else {
|
|
86
|
-
console.log(
|
|
86
|
+
console.log(' No extra marketplaces configured');
|
|
87
87
|
}
|
|
88
|
-
console.log(
|
|
88
|
+
console.log('\nRestart Claude Code to apply changes.');
|
|
89
89
|
}
|
|
90
90
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../lib/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../lib/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../lib/validate.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../lib/validate.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAgFD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAsDvD"}
|