bizboost 6.4.13 → 6.6.8
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 +97 -11
- package/dist/auth/InteractiveLogin.js +1 -1
- package/dist/auth/PortalAuthClient.d.ts +1 -1
- package/dist/auth/PortalAuthClient.js +1 -1
- package/dist/auth/TokenManager.d.ts +5 -14
- package/dist/auth/TokenManager.d.ts.map +1 -1
- package/dist/auth/TokenManager.js +1 -1
- package/dist/auth/TokenManager.js.map +1 -1
- package/dist/auth/portalTokenStore.d.ts +19 -0
- package/dist/auth/portalTokenStore.d.ts.map +1 -0
- package/dist/auth/portalTokenStore.js +1 -0
- package/dist/auth/portalTokenStore.js.map +1 -0
- package/dist/bin/bizboost201.mjs +2 -0
- package/dist/bin/bizboost202.mjs +2 -0
- package/dist/bin/bizboost203.mjs +2 -0
- package/dist/bin/bizboost204.mjs +2 -0
- package/dist/bin/bizboost205.mjs +2 -0
- package/dist/bin/bizboost206.mjs +2 -0
- package/dist/bin/bizboost207.mjs +2 -0
- package/dist/bin/bizboost208.mjs +2 -0
- package/dist/bin/bizboost209.mjs +2 -0
- package/dist/bin/bizboost210.mjs +2 -0
- package/dist/bin/bizboost211.mjs +2 -0
- package/dist/bin/bizboost212.mjs +2 -0
- package/dist/bin/bizboost213.mjs +2 -0
- package/dist/bin/bizboost214.mjs +2 -0
- package/dist/bin/bizboost215.mjs +2 -0
- package/dist/bin/bizboost216.mjs +2 -0
- package/dist/bin/bizboost217.mjs +2 -0
- package/dist/bin/bizboost218.mjs +2 -0
- package/dist/bin/bizboost219.mjs +2 -0
- package/dist/bin/bizboost220.mjs +2 -0
- package/dist/bin/bizboost221.mjs +2 -0
- package/dist/bin/bizboost222.mjs +2 -0
- package/dist/bin/bizboost223.mjs +2 -0
- package/dist/bin/bizboost224.mjs +2 -0
- package/dist/bin/bizboost225.mjs +2 -0
- package/dist/bin/bizboost226.mjs +2 -0
- package/dist/bin/bizboost227.mjs +2 -0
- package/dist/bin/bizboost228.mjs +2 -0
- package/dist/bin/bizboost229.mjs +2 -0
- package/dist/bin/bizboost230.mjs +2 -0
- package/dist/bin/bizboost231.mjs +2 -0
- package/dist/bin/bizboost232.mjs +2 -0
- package/dist/bin/bizboost233.mjs +2 -0
- package/dist/bin/bizboost234.mjs +2 -0
- package/dist/bin/bizboost235.mjs +2 -0
- package/dist/bin/bizboost236.mjs +2 -0
- package/dist/bin/bizboost237.mjs +2 -0
- package/dist/bin/bizboost238.mjs +2 -0
- package/dist/bin/bizboost239.mjs +2 -0
- package/dist/bin/bizboost240.mjs +2 -0
- package/dist/bin/bizboost241.mjs +2 -0
- package/dist/bin/bizboost242.mjs +2 -0
- package/dist/bin/bizboost243.mjs +2 -0
- package/dist/bin/bizboost244.mjs +2 -0
- package/dist/bin/bizboost245.mjs +2 -0
- package/dist/bin/bizboost246.mjs +2 -0
- package/dist/bin/bizboost247.mjs +2 -0
- package/dist/bin/bizboost248.mjs +2 -0
- package/dist/bin/bizboost249.mjs +2 -0
- package/dist/bin/bizboost250.mjs +2 -0
- package/dist/bin/bizboost251.mjs +2 -0
- package/dist/bin/bizboost252.mjs +2 -0
- package/dist/bin/bizboost253.mjs +2 -0
- package/dist/bin/bizboost254.mjs +2 -0
- package/dist/bin/bizboost255.mjs +2 -0
- package/dist/bin/bizboost256.mjs +2 -0
- package/dist/bin/bizboost257.mjs +2 -0
- package/dist/bin/bizboost258.mjs +2 -0
- package/dist/bin/bizboost259.mjs +2 -0
- package/dist/bin/bizboost260.mjs +2 -0
- package/dist/bin/bizboost261.mjs +2 -0
- package/dist/bin/bizboost262.mjs +2 -0
- package/dist/bin/bizboost263.mjs +2 -0
- package/dist/bin/bizboost264.mjs +2 -0
- package/dist/bin/bizboost265.mjs +2 -0
- package/dist/bin/bizboost266.mjs +2 -0
- package/dist/bin/bizboost267.mjs +2 -0
- package/dist/bin/bizboost268.mjs +2 -0
- package/dist/bin/bizboost269.mjs +2 -0
- package/dist/bin/bizboost270.mjs +2 -0
- package/dist/bin/bizboost271.mjs +2 -0
- package/dist/bin/bizboost272.mjs +2 -0
- package/dist/bin/bizboost273.mjs +2 -0
- package/dist/bin/bizboost274.mjs +2 -0
- package/dist/bin/bizboost275.mjs +2 -0
- package/dist/bin/bizboost276.mjs +2 -0
- package/dist/bin/bizboost277.mjs +2 -0
- package/dist/bin/bizboost278.mjs +2 -0
- package/dist/bin/bizboost279.mjs +2 -0
- package/dist/bin/bizboost280.mjs +2 -0
- package/dist/bin/bizboost281.mjs +2 -0
- package/dist/bin/bizboost282.mjs +2 -0
- package/dist/bin/bizboost283.mjs +2 -0
- package/dist/bin/bizboost284.mjs +2 -0
- package/dist/bin/bizboost285.mjs +2 -0
- package/dist/bin/bizboost286.mjs +2 -0
- package/dist/bin/bizboost287.mjs +2 -0
- package/dist/bin/bizboost288.mjs +2 -0
- package/dist/bin/bizboost289.mjs +2 -0
- package/dist/bin/bizboost290.mjs +2 -0
- package/dist/bin/bizboost291.mjs +2 -0
- package/dist/bin/bizboost292.mjs +2 -0
- package/dist/bin/bizboost293.mjs +2 -0
- package/dist/bin/bizboost294.mjs +2 -0
- package/dist/bin/bizboost295.mjs +2 -0
- package/dist/bin/bizboost296.mjs +2 -0
- package/dist/bin/bizboost297.mjs +2 -0
- package/dist/bin/bizboost298.mjs +2 -0
- package/dist/bin/bizboost299.mjs +2 -0
- package/dist/bin/bizboost300.mjs +2 -0
- package/dist/bin/bluelamp-vscode-base.mjs +1 -1
- package/dist/i18n/en.d.ts +6 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/ja.d.ts +6 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +1 -1
- package/dist/i18n/ja.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/account-mcp/index.cjs +1 -1
- package/dist/lib/accountAssurance.d.ts +41 -0
- package/dist/lib/accountAssurance.d.ts.map +1 -0
- package/dist/lib/accountAssurance.js +1 -0
- package/dist/lib/accountAssurance.js.map +1 -0
- package/dist/lib/claudeAccount.d.ts +45 -0
- package/dist/lib/claudeAccount.d.ts.map +1 -0
- package/dist/lib/claudeAccount.js +1 -0
- package/dist/lib/claudeAccount.js.map +1 -0
- package/dist/lib/claudeOnboardingSeed.d.ts +131 -0
- package/dist/lib/claudeOnboardingSeed.d.ts.map +1 -0
- package/dist/lib/claudeOnboardingSeed.js +1 -0
- package/dist/lib/claudeOnboardingSeed.js.map +1 -0
- package/dist/lib/debugRedaction.d.ts +42 -0
- package/dist/lib/debugRedaction.d.ts.map +1 -0
- package/dist/lib/debugRedaction.js +1 -0
- package/dist/lib/debugRedaction.js.map +1 -0
- package/dist/lib/headlessLaunch.d.ts +63 -0
- package/dist/lib/headlessLaunch.d.ts.map +1 -0
- package/dist/lib/headlessLaunch.js +1 -0
- package/dist/lib/headlessLaunch.js.map +1 -0
- package/dist/lib/inheritedTenant.d.ts +44 -0
- package/dist/lib/inheritedTenant.d.ts.map +1 -0
- package/dist/lib/inheritedTenant.js +1 -0
- package/dist/lib/inheritedTenant.js.map +1 -0
- package/dist/lib/mcp-server/index.cjs +1 -1
- package/dist/lib/mcp-server/install-package.cjs +1 -0
- package/dist/lib/mcp-server/mcp-version-advisor.cjs +1 -0
- package/dist/lib/mcp-server/portal-api-client.cjs +1 -1
- package/dist/lib/mcpJsonSelfHeal.d.ts +77 -0
- package/dist/lib/mcpJsonSelfHeal.d.ts.map +1 -0
- package/dist/lib/mcpJsonSelfHeal.js +1 -0
- package/dist/lib/mcpJsonSelfHeal.js.map +1 -0
- package/dist/lib/promptFailureGuidance.d.ts +30 -0
- package/dist/lib/promptFailureGuidance.d.ts.map +1 -0
- package/dist/lib/promptFailureGuidance.js +1 -0
- package/dist/lib/promptFailureGuidance.js.map +1 -0
- package/dist/lib/requireFromPackage.cjs +1 -0
- package/dist/lib/slotKeywordResolve.d.ts +69 -0
- package/dist/lib/slotKeywordResolve.d.ts.map +1 -0
- package/dist/lib/slotKeywordResolve.js +1 -0
- package/dist/lib/slotKeywordResolve.js.map +1 -0
- package/dist/lib/tempMcpConfig.d.ts +79 -0
- package/dist/lib/tempMcpConfig.d.ts.map +1 -0
- package/dist/lib/tempMcpConfig.js +1 -0
- package/dist/lib/tempMcpConfig.js.map +1 -0
- package/dist/lib/whoami.d.ts +34 -0
- package/dist/lib/whoami.d.ts.map +1 -0
- package/dist/lib/whoami.js +1 -0
- package/dist/lib/whoami.js.map +1 -0
- package/dist/scripts/generate-commands.js +1 -1
- package/dist/shared/claude-bin.js +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/package.json +114 -11
- package/verify-release.sh +154 -0
package/dist/i18n/en.d.ts
CHANGED
|
@@ -14,10 +14,12 @@ export declare const en: {
|
|
|
14
14
|
readonly logFile: "Log file: {path}";
|
|
15
15
|
readonly promptInfo: "Prompt: {keyword}";
|
|
16
16
|
readonly initialPromptTitle: "Let's get started";
|
|
17
|
+
readonly initialPromptInputHint: "Type your request in the \"❯\" box below and press Enter (if typing does nothing, click this panel once).";
|
|
17
18
|
readonly initialPromptLoadContext: "BizBoost MCP reference materials \"{keyword}\" are available for this session.\nPlease use the load_knowledge tool to load \"{keyword}\" before starting.";
|
|
18
19
|
readonly initialPromptKeywordNote: "If MCP tools are not yet loaded, please wait a moment and try again.";
|
|
19
20
|
readonly initialPromptReady: "";
|
|
20
21
|
readonly launchingClaude: "Launching Claude...";
|
|
22
|
+
readonly startInstruction: "Your main prompt has already been loaded. Follow its definition and begin naturally by greeting the user.";
|
|
21
23
|
readonly mcpServer: "MCP Server: BizBoost";
|
|
22
24
|
readonly knowledge: "Knowledge: {keyword}";
|
|
23
25
|
readonly debugInfo: "Debug info:";
|
|
@@ -34,6 +36,9 @@ export declare const en: {
|
|
|
34
36
|
readonly unexpectedError: "Unexpected error: {error}";
|
|
35
37
|
readonly authActivated: "Connected to BizBoost";
|
|
36
38
|
readonly extendedMode: "Connected to BizBoost";
|
|
39
|
+
readonly claudeAccountLabel: "Claude: {email}";
|
|
40
|
+
readonly claudeAccountNotLoggedIn: "Claude: not logged in (the login screen appears on first launch)";
|
|
41
|
+
readonly claudeAccountMismatch: "You are logged in to BizBoost and Claude with different accounts — this is why a paid plan can show as Free. Open claude.ai with the Claude address above to check your plan, or run /login to switch to the BizBoost address.";
|
|
37
42
|
};
|
|
38
43
|
readonly auth: {
|
|
39
44
|
readonly portalAuthTitle: "BizBoost - Portal Auth";
|
|
@@ -93,7 +98,7 @@ export declare const en: {
|
|
|
93
98
|
readonly portalApiError: "Portal API error (HTTP {status})";
|
|
94
99
|
readonly portalApiFailed: "Failed to retrieve knowledge from Portal API: {error}";
|
|
95
100
|
readonly portalCommunicationError: "Portal API communication error: {error}";
|
|
96
|
-
readonly noAuthToken: "No auth token set.
|
|
101
|
+
readonly noAuthToken: "No auth token set. Run any of bluelamp1-300 in a terminal to open the login screen (this creates ~/.musuhi/portal-token.enc).";
|
|
97
102
|
readonly listMcpsFailed: "Failed to list MCPs: {error}";
|
|
98
103
|
readonly getMcpInfoFailed: "Failed to get MCP info: {error}";
|
|
99
104
|
readonly callToolFailed: "Tool execution failed: {error}";
|
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHL,CAAC"}
|
package/dist/i18n/en.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.en=void 0,exports.en={base:{loadedEnvLocal:"Loaded .env.local",loadedEnv:"Loaded .env",undefinedCommand:"Undefined command: {commandName}",customSlotConfig:'Custom slot config: slot{slotNumber} → "{keyword}"',slotConfigError:"Slot config error, using default: {error}",brandTitle:"B i z B o o s t",commandInfo:"Command: {commandName}{slotInfo}",debugMode:"Debug mode: enabled",logFile:"Log file: {path}",promptInfo:"Prompt: {keyword}",initialPromptTitle:"Let's get started",initialPromptLoadContext:'BizBoost MCP reference materials "{keyword}" are available for this session.\nPlease use the load_knowledge tool to load "{keyword}" before starting.',initialPromptKeywordNote:"If MCP tools are not yet loaded, please wait a moment and try again.",initialPromptReady:"",launchingClaude:"Launching Claude...",mcpServer:"MCP Server: BizBoost",knowledge:"Knowledge: {keyword}",debugInfo:"Debug info:",debugCommand:"Command: {command}",debugArgs:"Args: {args}",debugConfigFile:"MCP config file: {path}",debugEnvKeyword:"Env BLUELAMP_KEYWORD: {keyword}",debugEnvToken:"CLI token (portal-token.enc): {token}...",debugEnvPortal:"Env PORTAL_URL: {url}",debugConfigContent:"MCP config file contents:",claudeStartError:"Claude launch error: {error}",sessionEnd:"BizBoost session ended",shuttingDown:"Shutting down BizBoost...",unexpectedError:"Unexpected error: {error}",authActivated:"Connected to BizBoost",extendedMode:"Connected to BizBoost"},auth:{portalAuthTitle:"BizBoost - Portal Auth",checkingSavedToken:"Checking saved token...",validationResult:"Validation result:",existingTokenValid:"Existing token is valid",savedTokenInvalid:"Saved token is invalid",enterCredentials:"Enter your Portal login credentials",invalidEmail:"Invalid email address format",emptyPassword:"Password was not entered",kiLimitExceeded:"Knowledge injection usage limit reached",kiLimitCheckPortal:"Check your usage on the Portal",authError:"Auth error: {error}",savingToken:"Saving token...",tokenSaveFailed:"Token save failed (auth succeeded)",tokenSaved:"Token saved securely",unexpectedError:"Unexpected error: {error}",authSuccess:"Portal auth successful",userLabel:"User: {name}",emailLabel:"Email: {email}",roleLabel:"Role: {role}",usingCachedToken:"Using cached token",firstLoginComplete:"First login complete",logoutTitle:"BizBoost - Logout",confirmLogout:"Delete login credentials? (y/N): ",logoutSuccess:"Login credentials deleted",logoutNotFound:"No login credentials found",logoutCancelled:"Cancelled",envUpdateFailed:"Failed to update .env file: {error}",authAttempt:"Auth attempt {attempt}/{max}...",authOk:"Portal auth successful",tokenOk:"Token acquired",authRetry:"Retrying in {delay}ms...",portalAuthError:"Portal auth error: {error}",portalAuthHelp1:"1. Check your internet connection",portalAuthHelp2:"2. Verify your Portal credentials",portalAuthHelp3:"3. Check if {url} is accessible",portalAuthHelpTitle:"Troubleshooting:",tokenSaveComplete:"Token saved",tokenSaveError:"Token save error: {error}",tokenLoadError:"Token load error: {error}",tokenDeleteError:"Token delete error: {error}",invalidTokenFormat:"Only Portal-issued cli_ format tokens are supported",networkError:"Network error: {error}",requestTimeout:"Request timed out",responseParseError:"Response parse error: {error}"},mcp:{toolDescriptionLoadKnowledge:"Retrieve project reference materials from BizBoost",keywordDescription:"Keyword (e.g. @相談 — use as-is, no prefix needed)",knowledgeLoadSuccess:"BizBoost Specialized Context Loaded",knowledgeApplied:"Reference information loaded. Please refer to the above content for assistance.",knowledgeNotFound:'No knowledge found for keyword "{keyword}"',knowledgeLoadError:"Error loading knowledge: {error}",promptNotFoundForKeyword:'No prompt found for keyword "{keyword}"',apiReturnedError:"API returned an error",portalApiError:"Portal API error (HTTP {status})",portalApiFailed:"Failed to retrieve knowledge from Portal API: {error}",portalCommunicationError:"Portal API communication error: {error}",noAuthToken:"No auth token set.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.en=void 0,exports.en={base:{loadedEnvLocal:"Loaded .env.local",loadedEnv:"Loaded .env",undefinedCommand:"Undefined command: {commandName}",customSlotConfig:'Custom slot config: slot{slotNumber} → "{keyword}"',slotConfigError:"Slot config error, using default: {error}",brandTitle:"B i z B o o s t",commandInfo:"Command: {commandName}{slotInfo}",debugMode:"Debug mode: enabled",logFile:"Log file: {path}",promptInfo:"Prompt: {keyword}",initialPromptTitle:"Let's get started",initialPromptInputHint:'Type your request in the "❯" box below and press Enter (if typing does nothing, click this panel once).',initialPromptLoadContext:'BizBoost MCP reference materials "{keyword}" are available for this session.\nPlease use the load_knowledge tool to load "{keyword}" before starting.',initialPromptKeywordNote:"If MCP tools are not yet loaded, please wait a moment and try again.",initialPromptReady:"",launchingClaude:"Launching Claude...",startInstruction:"Your main prompt has already been loaded. Follow its definition and begin naturally by greeting the user.",mcpServer:"MCP Server: BizBoost",knowledge:"Knowledge: {keyword}",debugInfo:"Debug info:",debugCommand:"Command: {command}",debugArgs:"Args: {args}",debugConfigFile:"MCP config file: {path}",debugEnvKeyword:"Env BLUELAMP_KEYWORD: {keyword}",debugEnvToken:"CLI token (portal-token.enc): {token}...",debugEnvPortal:"Env PORTAL_URL: {url}",debugConfigContent:"MCP config file contents:",claudeStartError:"Claude launch error: {error}",sessionEnd:"BizBoost session ended",shuttingDown:"Shutting down BizBoost...",unexpectedError:"Unexpected error: {error}",authActivated:"Connected to BizBoost",extendedMode:"Connected to BizBoost",claudeAccountLabel:"Claude: {email}",claudeAccountNotLoggedIn:"Claude: not logged in (the login screen appears on first launch)",claudeAccountMismatch:"You are logged in to BizBoost and Claude with different accounts — this is why a paid plan can show as Free. Open claude.ai with the Claude address above to check your plan, or run /login to switch to the BizBoost address."},auth:{portalAuthTitle:"BizBoost - Portal Auth",checkingSavedToken:"Checking saved token...",validationResult:"Validation result:",existingTokenValid:"Existing token is valid",savedTokenInvalid:"Saved token is invalid",enterCredentials:"Enter your Portal login credentials",invalidEmail:"Invalid email address format",emptyPassword:"Password was not entered",kiLimitExceeded:"Knowledge injection usage limit reached",kiLimitCheckPortal:"Check your usage on the Portal",authError:"Auth error: {error}",savingToken:"Saving token...",tokenSaveFailed:"Token save failed (auth succeeded)",tokenSaved:"Token saved securely",unexpectedError:"Unexpected error: {error}",authSuccess:"Portal auth successful",userLabel:"User: {name}",emailLabel:"Email: {email}",roleLabel:"Role: {role}",usingCachedToken:"Using cached token",firstLoginComplete:"First login complete",logoutTitle:"BizBoost - Logout",confirmLogout:"Delete login credentials? (y/N): ",logoutSuccess:"Login credentials deleted",logoutNotFound:"No login credentials found",logoutCancelled:"Cancelled",envUpdateFailed:"Failed to update .env file: {error}",authAttempt:"Auth attempt {attempt}/{max}...",authOk:"Portal auth successful",tokenOk:"Token acquired",authRetry:"Retrying in {delay}ms...",portalAuthError:"Portal auth error: {error}",portalAuthHelp1:"1. Check your internet connection",portalAuthHelp2:"2. Verify your Portal credentials",portalAuthHelp3:"3. Check if {url} is accessible",portalAuthHelpTitle:"Troubleshooting:",tokenSaveComplete:"Token saved",tokenSaveError:"Token save error: {error}",tokenLoadError:"Token load error: {error}",tokenDeleteError:"Token delete error: {error}",invalidTokenFormat:"Only Portal-issued cli_ format tokens are supported",networkError:"Network error: {error}",requestTimeout:"Request timed out",responseParseError:"Response parse error: {error}"},mcp:{toolDescriptionLoadKnowledge:"Retrieve project reference materials from BizBoost",keywordDescription:"Keyword (e.g. @相談 — use as-is, no prefix needed)",knowledgeLoadSuccess:"BizBoost Specialized Context Loaded",knowledgeApplied:"Reference information loaded. Please refer to the above content for assistance.",knowledgeNotFound:'No knowledge found for keyword "{keyword}"',knowledgeLoadError:"Error loading knowledge: {error}",promptNotFoundForKeyword:'No prompt found for keyword "{keyword}"',apiReturnedError:"API returned an error",portalApiError:"Portal API error (HTTP {status})",portalApiFailed:"Failed to retrieve knowledge from Portal API: {error}",portalCommunicationError:"Portal API communication error: {error}",noAuthToken:"No auth token set. Run any of bluelamp1-300 in a terminal to open the login screen (this creates ~/.musuhi/portal-token.enc).",listMcpsFailed:"Failed to list MCPs: {error}",getMcpInfoFailed:"Failed to get MCP info: {error}",callToolFailed:"Tool execution failed: {error}",violationNoToken:"No auth token set",violationApiError:"Violation report error (HTTP {status})",violationCommunicationError:"Violation report communication error: {error}"}};
|
package/dist/i18n/en.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,EAAE,GAAG;IAChB,IAAI,EAAE;QACJ,cAAc,EAAE,mBAAmB;QACnC,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,kCAAkC;QACpD,gBAAgB,EAAE,oDAAoD;QACtE,eAAe,EAAE,2CAA2C;QAC5D,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,kCAAkC;QAC/C,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,mBAAmB;QAC/B,kBAAkB,EAAE,mBAAmB;QACvC,wBAAwB,EACtB,uJAAuJ;QACzJ,wBAAwB,EACtB,sEAAsE;QACxE,kBAAkB,EAAE,EAAE;QACtB,eAAe,EAAE,qBAAqB;QACtC,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,aAAa;QACxB,YAAY,EAAE,oBAAoB;QAClC,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,yBAAyB;QAC1C,eAAe,EAAE,iCAAiC;QAClD,aAAa,EAAE,0CAA0C;QACzD,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,2BAA2B;QAC/C,gBAAgB,EAAE,8BAA8B;QAChD,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,2BAA2B;QACzC,eAAe,EAAE,2BAA2B;QAC5C,aAAa,EAAE,uBAAuB;QACtC,YAAY,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/index.d.ts
CHANGED
package/dist/i18n/ja.d.ts
CHANGED
|
@@ -15,10 +15,12 @@ export declare const ja: {
|
|
|
15
15
|
readonly logFile: "ログファイル: {path}";
|
|
16
16
|
readonly promptInfo: "プロンプト: {keyword}";
|
|
17
17
|
readonly initialPromptTitle: "さあ始めましょう";
|
|
18
|
+
readonly initialPromptInputHint: "ご用件は、この下の「❯」の欄に日本語で入力して Enter を押してください(文字が打てない時は、この画面を一度クリックしてください)。";
|
|
18
19
|
readonly initialPromptLoadContext: "このセッションではBizBoost MCPの参考資料 \"{keyword}\" が利用可能です。\nload_knowledge ツールで \"{keyword}\" を読み込んでから始めてください。";
|
|
19
20
|
readonly initialPromptKeywordNote: "MCPツールがまだ読み込まれていない場合は、少し待ってから再度お試しください。";
|
|
20
21
|
readonly initialPromptReady: "";
|
|
21
22
|
readonly launchingClaude: "Claude 起動中...";
|
|
23
|
+
readonly startInstruction: "あなたの本体プロンプトは読み込み済みです。本体の定義に従い、ユーザーへの挨拶から自然に開始してください。";
|
|
22
24
|
readonly mcpServer: "MCP Server: BizBoost";
|
|
23
25
|
readonly knowledge: "Knowledge: {keyword}";
|
|
24
26
|
readonly debugInfo: "デバッグ情報:";
|
|
@@ -35,6 +37,9 @@ export declare const ja: {
|
|
|
35
37
|
readonly unexpectedError: "予期しないエラー: {error}";
|
|
36
38
|
readonly authActivated: "BizBoost に接続しました";
|
|
37
39
|
readonly extendedMode: "BizBoost に接続しました";
|
|
40
|
+
readonly claudeAccountLabel: "Claude: {email}";
|
|
41
|
+
readonly claudeAccountNotLoggedIn: "Claude: 未ログイン(初回起動時にログイン画面が出ます)";
|
|
42
|
+
readonly claudeAccountMismatch: "BizBoost と Claude で別のアカウントにログインしています——「払っているのに無料プランと出る」原因はこれです。claude.ai を上の Claude 側アドレスで開いて契約を確認するか、/login で BizBoost 側アドレスに切り替えてください。";
|
|
38
43
|
};
|
|
39
44
|
readonly auth: {
|
|
40
45
|
readonly portalAuthTitle: "BizBoost ─ 認証";
|
|
@@ -94,7 +99,7 @@ export declare const ja: {
|
|
|
94
99
|
readonly portalApiError: "Portal APIエラー (HTTP {status})";
|
|
95
100
|
readonly portalApiFailed: "Portal APIから知識を取得できませんでした: {error}";
|
|
96
101
|
readonly portalCommunicationError: "Portal API通信エラー: {error}";
|
|
97
|
-
readonly noAuthToken: "
|
|
102
|
+
readonly noAuthToken: "認証トークンが設定されていません。ターミナルで bluelamp1〜300 のいずれかを実行するとログイン画面が出ます(~/.musuhi/portal-token.enc が作成されます)。";
|
|
98
103
|
readonly listMcpsFailed: "MCP一覧の取得に失敗しました: {error}";
|
|
99
104
|
readonly getMcpInfoFailed: "MCP情報の取得に失敗しました: {error}";
|
|
100
105
|
readonly callToolFailed: "ツール実行に失敗しました: {error}";
|
package/dist/i18n/ja.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.d.ts","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"ja.d.ts","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkHL,CAAC"}
|
package/dist/i18n/ja.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ja=void 0,exports.ja={base:{loadedEnvLocal:"Loaded .env.local",loadedEnv:"Loaded .env",undefinedCommand:"未定義のコマンド: {commandName}",customSlotConfig:'カスタムスロット設定: slot{slotNumber} → "{keyword}"',slotConfigError:"スロット設定取得エラー、デフォルトを使用: {error}",brandTitle:"B i z B o o s t",commandInfo:"コマンド: {commandName}{slotInfo}",debugMode:"デバッグモード: 有効",logFile:"ログファイル: {path}",promptInfo:"プロンプト: {keyword}",initialPromptTitle:"さあ始めましょう",initialPromptLoadContext:'このセッションではBizBoost MCPの参考資料 "{keyword}" が利用可能です。\nload_knowledge ツールで "{keyword}" を読み込んでから始めてください。',initialPromptKeywordNote:"MCPツールがまだ読み込まれていない場合は、少し待ってから再度お試しください。",initialPromptReady:"",launchingClaude:"Claude 起動中...",mcpServer:"MCP Server: BizBoost",knowledge:"Knowledge: {keyword}",debugInfo:"デバッグ情報:",debugCommand:"コマンド: {command}",debugArgs:"引数: {args}",debugConfigFile:"MCP設定ファイル: {path}",debugEnvKeyword:"環境変数 MUSUHI_KEYWORD: {keyword}",debugEnvToken:"CLI トークン (portal-token.enc): {token}...",debugEnvPortal:"環境変数 PORTAL_URL: {url}",debugConfigContent:"MCP設定ファイル内容:",claudeStartError:"Claude 起動エラー: {error}",sessionEnd:"BizBoost セッション終了",shuttingDown:"BizBoost を終了しています...",unexpectedError:"予期しないエラー: {error}",authActivated:"BizBoost に接続しました",extendedMode:"BizBoost に接続しました"},auth:{portalAuthTitle:"BizBoost ─ 認証",checkingSavedToken:"保存されたトークンを確認中...",validationResult:"検証結果:",existingTokenValid:"既存のトークンが有効です",savedTokenInvalid:"保存されたトークンが無効です",enterCredentials:"Portalログイン情報を入力してください",invalidEmail:"無効なメールアドレス形式です",emptyPassword:"パスワードが入力されていません",kiLimitExceeded:"ナレッジインジェクション使用回数が上限に達しています",kiLimitCheckPortal:"Portalで使用状況を確認してください",authError:"認証エラー: {error}",savingToken:"トークンを保存中...",tokenSaveFailed:"トークン保存に失敗しました(認証は成功)",tokenSaved:"トークンを安全に保存しました",unexpectedError:"予期しないエラー: {error}",authSuccess:"Portal認証成功",userLabel:"ユーザー: {name}",emailLabel:"Email: {email}",roleLabel:"ロール: {role}",usingCachedToken:"保存済みトークンを使用",firstLoginComplete:"初回ログイン完了",logoutTitle:"BizBoost - ログアウト",confirmLogout:"ログイン情報を削除しますか? (y/N): ",logoutSuccess:"ログイン情報を削除しました",logoutNotFound:"ログイン情報が見つかりません",logoutCancelled:"キャンセルしました",envUpdateFailed:"envファイルの更新に失敗: {error}",authAttempt:"認証試行 {attempt}/{max}...",authOk:"Portal認証成功",tokenOk:"トークン取得成功",authRetry:"{delay}ms後にリトライ...",portalAuthError:"Portal認証エラー: {error}",portalAuthHelp1:"1. インターネット接続を確認してください",portalAuthHelp2:"2. Portal認証情報が正しいか確認してください",portalAuthHelp3:"3. {url} にアクセスできるか確認してください",portalAuthHelpTitle:"解決方法:",tokenSaveComplete:"トークン保存完了",tokenSaveError:"トークン保存エラー: {error}",tokenLoadError:"トークン読み込みエラー: {error}",tokenDeleteError:"トークン削除エラー: {error}",invalidTokenFormat:"CLI形式トークンのみサポートされています(CLI_xxx形式)",networkError:"ネットワークエラー: {error}",requestTimeout:"リクエストタイムアウト",responseParseError:"レスポンス解析エラー: {error}"},mcp:{toolDescriptionLoadKnowledge:"プロジェクトの参考資料を取得します",keywordDescription:"キーワード(@相談 など、そのまま指定してください。プレフィックスの追加は不要です)",knowledgeLoadSuccess:"BizBoost 専門コンテキスト読み込み完了",knowledgeApplied:"参考情報の読み込みが完了しました。上記の内容を参考にしてご支援ください。",knowledgeNotFound:'キーワード "{keyword}" に対応する知識が見つかりませんでした',knowledgeLoadError:"知識の読み込み中にエラーが発生しました: {error}",promptNotFoundForKeyword:'キーワード "{keyword}" に対応するプロンプトが見つかりませんでした',apiReturnedError:"APIがエラーを返しました",portalApiError:"Portal APIエラー (HTTP {status})",portalApiFailed:"Portal APIから知識を取得できませんでした: {error}",portalCommunicationError:"Portal API通信エラー: {error}",noAuthToken:"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ja=void 0,exports.ja={base:{loadedEnvLocal:"Loaded .env.local",loadedEnv:"Loaded .env",undefinedCommand:"未定義のコマンド: {commandName}",customSlotConfig:'カスタムスロット設定: slot{slotNumber} → "{keyword}"',slotConfigError:"スロット設定取得エラー、デフォルトを使用: {error}",brandTitle:"B i z B o o s t",commandInfo:"コマンド: {commandName}{slotInfo}",debugMode:"デバッグモード: 有効",logFile:"ログファイル: {path}",promptInfo:"プロンプト: {keyword}",initialPromptTitle:"さあ始めましょう",initialPromptInputHint:"ご用件は、この下の「❯」の欄に日本語で入力して Enter を押してください(文字が打てない時は、この画面を一度クリックしてください)。",initialPromptLoadContext:'このセッションではBizBoost MCPの参考資料 "{keyword}" が利用可能です。\nload_knowledge ツールで "{keyword}" を読み込んでから始めてください。',initialPromptKeywordNote:"MCPツールがまだ読み込まれていない場合は、少し待ってから再度お試しください。",initialPromptReady:"",launchingClaude:"Claude 起動中...",startInstruction:"あなたの本体プロンプトは読み込み済みです。本体の定義に従い、ユーザーへの挨拶から自然に開始してください。",mcpServer:"MCP Server: BizBoost",knowledge:"Knowledge: {keyword}",debugInfo:"デバッグ情報:",debugCommand:"コマンド: {command}",debugArgs:"引数: {args}",debugConfigFile:"MCP設定ファイル: {path}",debugEnvKeyword:"環境変数 MUSUHI_KEYWORD: {keyword}",debugEnvToken:"CLI トークン (portal-token.enc): {token}...",debugEnvPortal:"環境変数 PORTAL_URL: {url}",debugConfigContent:"MCP設定ファイル内容:",claudeStartError:"Claude 起動エラー: {error}",sessionEnd:"BizBoost セッション終了",shuttingDown:"BizBoost を終了しています...",unexpectedError:"予期しないエラー: {error}",authActivated:"BizBoost に接続しました",extendedMode:"BizBoost に接続しました",claudeAccountLabel:"Claude: {email}",claudeAccountNotLoggedIn:"Claude: 未ログイン(初回起動時にログイン画面が出ます)",claudeAccountMismatch:"BizBoost と Claude で別のアカウントにログインしています——「払っているのに無料プランと出る」原因はこれです。claude.ai を上の Claude 側アドレスで開いて契約を確認するか、/login で BizBoost 側アドレスに切り替えてください。"},auth:{portalAuthTitle:"BizBoost ─ 認証",checkingSavedToken:"保存されたトークンを確認中...",validationResult:"検証結果:",existingTokenValid:"既存のトークンが有効です",savedTokenInvalid:"保存されたトークンが無効です",enterCredentials:"Portalログイン情報を入力してください",invalidEmail:"無効なメールアドレス形式です",emptyPassword:"パスワードが入力されていません",kiLimitExceeded:"ナレッジインジェクション使用回数が上限に達しています",kiLimitCheckPortal:"Portalで使用状況を確認してください",authError:"認証エラー: {error}",savingToken:"トークンを保存中...",tokenSaveFailed:"トークン保存に失敗しました(認証は成功)",tokenSaved:"トークンを安全に保存しました",unexpectedError:"予期しないエラー: {error}",authSuccess:"Portal認証成功",userLabel:"ユーザー: {name}",emailLabel:"Email: {email}",roleLabel:"ロール: {role}",usingCachedToken:"保存済みトークンを使用",firstLoginComplete:"初回ログイン完了",logoutTitle:"BizBoost - ログアウト",confirmLogout:"ログイン情報を削除しますか? (y/N): ",logoutSuccess:"ログイン情報を削除しました",logoutNotFound:"ログイン情報が見つかりません",logoutCancelled:"キャンセルしました",envUpdateFailed:"envファイルの更新に失敗: {error}",authAttempt:"認証試行 {attempt}/{max}...",authOk:"Portal認証成功",tokenOk:"トークン取得成功",authRetry:"{delay}ms後にリトライ...",portalAuthError:"Portal認証エラー: {error}",portalAuthHelp1:"1. インターネット接続を確認してください",portalAuthHelp2:"2. Portal認証情報が正しいか確認してください",portalAuthHelp3:"3. {url} にアクセスできるか確認してください",portalAuthHelpTitle:"解決方法:",tokenSaveComplete:"トークン保存完了",tokenSaveError:"トークン保存エラー: {error}",tokenLoadError:"トークン読み込みエラー: {error}",tokenDeleteError:"トークン削除エラー: {error}",invalidTokenFormat:"CLI形式トークンのみサポートされています(CLI_xxx形式)",networkError:"ネットワークエラー: {error}",requestTimeout:"リクエストタイムアウト",responseParseError:"レスポンス解析エラー: {error}"},mcp:{toolDescriptionLoadKnowledge:"プロジェクトの参考資料を取得します",keywordDescription:"キーワード(@相談 など、そのまま指定してください。プレフィックスの追加は不要です)",knowledgeLoadSuccess:"BizBoost 専門コンテキスト読み込み完了",knowledgeApplied:"参考情報の読み込みが完了しました。上記の内容を参考にしてご支援ください。",knowledgeNotFound:'キーワード "{keyword}" に対応する知識が見つかりませんでした',knowledgeLoadError:"知識の読み込み中にエラーが発生しました: {error}",promptNotFoundForKeyword:'キーワード "{keyword}" に対応するプロンプトが見つかりませんでした',apiReturnedError:"APIがエラーを返しました",portalApiError:"Portal APIエラー (HTTP {status})",portalApiFailed:"Portal APIから知識を取得できませんでした: {error}",portalCommunicationError:"Portal API通信エラー: {error}",noAuthToken:"認証トークンが設定されていません。ターミナルで bluelamp1〜300 のいずれかを実行するとログイン画面が出ます(~/.musuhi/portal-token.enc が作成されます)。",listMcpsFailed:"MCP一覧の取得に失敗しました: {error}",getMcpInfoFailed:"MCP情報の取得に失敗しました: {error}",callToolFailed:"ツール実行に失敗しました: {error}",violationNoToken:"認証トークンが設定されていません",violationApiError:"違反報告エラー (HTTP {status})",violationCommunicationError:"違反報告通信エラー: {error}"}};
|
package/dist/i18n/ja.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.js","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,EAAE,GAAG;IAChB,IAAI,EAAE;QACJ,cAAc,EAAE,mBAAmB;QACnC,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,yBAAyB;QAC3C,gBAAgB,EAAE,4CAA4C;QAC9D,eAAe,EAAE,+BAA+B;QAChD,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,gBAAgB;QACzB,UAAU,EAAE,kBAAkB;QAC9B,kBAAkB,EAAE,UAAU;QAC9B,wBAAwB,EACtB,mGAAmG;QACrG,wBAAwB,EACtB,yCAAyC;QAC3C,kBAAkB,EAAE,EAAE;QACtB,eAAe,EAAE,eAAe;QAChC,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,YAAY;QACvB,eAAe,EAAE,mBAAmB;QACpC,eAAe,EAAE,gCAAgC;QACjD,aAAa,EAAE,yCAAyC;QACxD,cAAc,EAAE,wBAAwB;QACxC,kBAAkB,EAAE,cAAc;QAClC,gBAAgB,EAAE,uBAAuB;QACzC,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,sBAAsB;QACpC,eAAe,EAAE,mBAAmB;QACpC,aAAa,EAAE,kBAAkB;QACjC,YAAY,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"ja.js","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,EAAE,GAAG;IAChB,IAAI,EAAE;QACJ,cAAc,EAAE,mBAAmB;QACnC,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,yBAAyB;QAC3C,gBAAgB,EAAE,4CAA4C;QAC9D,eAAe,EAAE,+BAA+B;QAChD,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,gBAAgB;QACzB,UAAU,EAAE,kBAAkB;QAC9B,kBAAkB,EAAE,UAAU;QAC9B,sBAAsB,EACpB,sEAAsE;QACxE,wBAAwB,EACtB,mGAAmG;QACrG,wBAAwB,EACtB,yCAAyC;QAC3C,kBAAkB,EAAE,EAAE;QACtB,eAAe,EAAE,eAAe;QAChC,gBAAgB,EACd,sDAAsD;QACxD,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,YAAY;QACvB,eAAe,EAAE,mBAAmB;QACpC,eAAe,EAAE,gCAAgC;QACjD,aAAa,EAAE,yCAAyC;QACxD,cAAc,EAAE,wBAAwB;QACxC,kBAAkB,EAAE,cAAc;QAClC,gBAAgB,EAAE,uBAAuB;QACzC,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,sBAAsB;QACpC,eAAe,EAAE,mBAAmB;QACpC,aAAa,EAAE,kBAAkB;QACjC,YAAY,EAAE,kBAAkB;QAChC,wEAAwE;QACxE,kBAAkB,EAAE,iBAAiB;QACrC,wBAAwB,EAAE,iCAAiC;QAC3D,gDAAgD;QAChD,uCAAuC;QACvC,qBAAqB,EACnB,0IAA0I;KAC7I;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe;QAChC,kBAAkB,EAAE,kBAAkB;QACtC,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,cAAc;QAClC,iBAAiB,EAAE,gBAAgB;QACnC,gBAAgB,EAAE,uBAAuB;QACzC,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,iBAAiB;QAChC,eAAe,EAAE,4BAA4B;QAC7C,kBAAkB,EAAE,sBAAsB;QAC1C,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,aAAa;QAC1B,eAAe,EAAE,sBAAsB;QACvC,UAAU,EAAE,gBAAgB;QAC5B,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,gBAAgB;QAC5B,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,aAAa;QAC/B,kBAAkB,EAAE,UAAU;QAC9B,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,wBAAwB;QACvC,aAAa,EAAE,eAAe;QAC9B,cAAc,EAAE,gBAAgB;QAChC,eAAe,EAAE,WAAW;QAC5B,eAAe,EAAE,wBAAwB;QACzC,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,oBAAoB;QAC/B,eAAe,EAAE,sBAAsB;QACvC,eAAe,EAAE,uBAAuB;QACxC,eAAe,EAAE,4BAA4B;QAC7C,eAAe,EAAE,4BAA4B;QAC7C,mBAAmB,EAAE,OAAO;QAC5B,iBAAiB,EAAE,UAAU;QAC7B,cAAc,EAAE,oBAAoB;QACpC,cAAc,EAAE,sBAAsB;QACtC,gBAAgB,EAAE,oBAAoB;QACtC,kBAAkB,EAAE,kCAAkC;QACtD,YAAY,EAAE,oBAAoB;QAClC,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,qBAAqB;KAC1C;IACD,GAAG,EAAE;QACH,4BAA4B,EAAE,mBAAmB;QACjD,kBAAkB,EAAE,4CAA4C;QAChE,oBAAoB,EAAE,yBAAyB;QAC/C,gBAAgB,EAAE,sCAAsC;QACxD,iBAAiB,EAAE,sCAAsC;QACzD,kBAAkB,EAAE,8BAA8B;QAClD,wBAAwB,EAAE,yCAAyC;QACnE,gBAAgB,EAAE,eAAe;QACjC,cAAc,EAAE,+BAA+B;QAC/C,eAAe,EAAE,oCAAoC;QACrD,wBAAwB,EAAE,0BAA0B;QACpD,WAAW,EACT,kGAAkG;QACpG,cAAc,EAAE,0BAA0B;QAC1C,gBAAgB,EAAE,0BAA0B;QAC5C,cAAc,EAAE,uBAAuB;QACvC,gBAAgB,EAAE,kBAAkB;QACpC,iBAAiB,EAAE,yBAAyB;QAC5C,2BAA2B,EAAE,oBAAoB;KAClD;CACO,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* bluelamp
|
|
2
|
+
* bluelamp — barrel exports (auth / utils / i18n).
|
|
3
3
|
*/
|
|
4
4
|
export { PortalAuthClient } from './auth/PortalAuthClient.js';
|
|
5
5
|
export type { AuthResult, AuthSuccess, AuthFailure, AuthenticatedUser, DeviceInfo, } from './auth/PortalAuthClient.js';
|
|
6
6
|
export { TokenManager } from './auth/TokenManager.js';
|
|
7
7
|
export type { StoredTokenData, StoredUserInfo, ValidationResult, ValidationSuccess, ValidationFailure, } from './auth/TokenManager.js';
|
|
8
|
+
export { getTokenFilePath, savePortalToken, loadPortalToken, deletePortalToken, } from './auth/portalTokenStore.js';
|
|
8
9
|
export { InteractiveLogin } from './auth/InteractiveLogin.js';
|
|
9
10
|
export type { LoginResult } from './auth/InteractiveLogin.js';
|
|
10
11
|
export { logger, LOG_LEVELS } from './utils/logger.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getLanguage=exports.setLanguage=exports.t=exports.LOG_LEVELS=exports.logger=exports.InteractiveLogin=exports.TokenManager=exports.PortalAuthClient=void 0;var PortalAuthClient_js_1=require("./auth/PortalAuthClient.js");Object.defineProperty(exports,"PortalAuthClient",{enumerable:!0,get:function(){return PortalAuthClient_js_1.PortalAuthClient}});var TokenManager_js_1=require("./auth/TokenManager.js");Object.defineProperty(exports,"TokenManager",{enumerable:!0,get:function(){return TokenManager_js_1.TokenManager}});var InteractiveLogin_js_1=require("./auth/InteractiveLogin.js");Object.defineProperty(exports,"InteractiveLogin",{enumerable:!0,get:function(){return InteractiveLogin_js_1.InteractiveLogin}});var logger_js_1=require("./utils/logger.js");Object.defineProperty(exports,"logger",{enumerable:!0,get:function(){return logger_js_1.logger}}),Object.defineProperty(exports,"LOG_LEVELS",{enumerable:!0,get:function(){return logger_js_1.LOG_LEVELS}});var index_js_1=require("./i18n/index.js");Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return index_js_1.t}}),Object.defineProperty(exports,"setLanguage",{enumerable:!0,get:function(){return index_js_1.setLanguage}}),Object.defineProperty(exports,"getLanguage",{enumerable:!0,get:function(){return index_js_1.getLanguage}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getLanguage=exports.setLanguage=exports.t=exports.LOG_LEVELS=exports.logger=exports.InteractiveLogin=exports.deletePortalToken=exports.loadPortalToken=exports.savePortalToken=exports.getTokenFilePath=exports.TokenManager=exports.PortalAuthClient=void 0;var PortalAuthClient_js_1=require("./auth/PortalAuthClient.js");Object.defineProperty(exports,"PortalAuthClient",{enumerable:!0,get:function(){return PortalAuthClient_js_1.PortalAuthClient}});var TokenManager_js_1=require("./auth/TokenManager.js");Object.defineProperty(exports,"TokenManager",{enumerable:!0,get:function(){return TokenManager_js_1.TokenManager}});var portalTokenStore_js_1=require("./auth/portalTokenStore.js");Object.defineProperty(exports,"getTokenFilePath",{enumerable:!0,get:function(){return portalTokenStore_js_1.getTokenFilePath}}),Object.defineProperty(exports,"savePortalToken",{enumerable:!0,get:function(){return portalTokenStore_js_1.savePortalToken}}),Object.defineProperty(exports,"loadPortalToken",{enumerable:!0,get:function(){return portalTokenStore_js_1.loadPortalToken}}),Object.defineProperty(exports,"deletePortalToken",{enumerable:!0,get:function(){return portalTokenStore_js_1.deletePortalToken}});var InteractiveLogin_js_1=require("./auth/InteractiveLogin.js");Object.defineProperty(exports,"InteractiveLogin",{enumerable:!0,get:function(){return InteractiveLogin_js_1.InteractiveLogin}});var logger_js_1=require("./utils/logger.js");Object.defineProperty(exports,"logger",{enumerable:!0,get:function(){return logger_js_1.logger}}),Object.defineProperty(exports,"LOG_LEVELS",{enumerable:!0,get:function(){return logger_js_1.LOG_LEVELS}});var index_js_1=require("./i18n/index.js");Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return index_js_1.t}}),Object.defineProperty(exports,"setLanguage",{enumerable:!0,get:function(){return index_js_1.setLanguage}}),Object.defineProperty(exports,"getLanguage",{enumerable:!0,get:function(){return index_js_1.getLanguage}});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,kEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AASzB,0DAAsD;AAA7C,+GAAA,YAAY,OAAA;AASrB,kEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AAGzB,+CAAuD;AAA9C,mGAAA,MAAM,OAAA;AAAE,uGAAA,UAAU,OAAA;AAG3B,4CAA8D;AAArD,6FAAA,CAAC,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,kEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AASzB,0DAAsD;AAA7C,+GAAA,YAAY,OAAA;AASrB,gFAAgF;AAChF,kEAKoC;AAJlC,uHAAA,gBAAgB,OAAA;AAChB,sHAAA,eAAe,OAAA;AACf,sHAAA,eAAe,OAAA;AACf,wHAAA,iBAAiB,OAAA;AAGnB,kEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AAGzB,+CAAuD;AAA9C,mGAAA,MAAM,OAAA;AAAE,uGAAA,UAAU,OAAA;AAG3B,4CAA8D;AAArD,6FAAA,CAAC,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const{Server:Server}=require("@modelcontextprotocol/sdk/server/index.js"),{StdioServerTransport:StdioServerTransport}=require("@modelcontextprotocol/sdk/server/stdio.js"),{CallToolRequestSchema:CallToolRequestSchema,ListToolsRequestSchema:ListToolsRequestSchema}=require("@modelcontextprotocol/sdk/types.js"),{execSync:execSync}=require("child_process"),fs=require("fs"),os=require("os"),path=require("path");let TokenManager=null;try{({TokenManager:TokenManager}=require
|
|
2
|
+
const{Server:Server}=require("@modelcontextprotocol/sdk/server/index.js"),{StdioServerTransport:StdioServerTransport}=require("@modelcontextprotocol/sdk/server/stdio.js"),{CallToolRequestSchema:CallToolRequestSchema,ListToolsRequestSchema:ListToolsRequestSchema}=require("@modelcontextprotocol/sdk/types.js"),{execSync:execSync}=require("child_process"),fs=require("fs"),os=require("os"),path=require("path");let TokenManager=null;try{const{requireFromPackage:e}=require("../requireFromPackage.cjs");({TokenManager:TokenManager}=e(require,"../../auth/TokenManager"))}catch{TokenManager=null}const FALLBACK_TOKEN_PATH=path.join(os.homedir(),".musuhi","portal-token.enc");let formatWhoami=null;try{({formatWhoami:formatWhoami}=require("../whoami"))}catch{formatWhoami=null}const TOOLS=[{name:"whoami",description:"今どの BizBoost アカウント・どのテナントで動いているかを表示します。この端末の全セッション(monster / scheduler / 素の claude を含む)は同じ認証トークンを共有するため、「エージェントが出てこない」「load_knowledge が失敗する」ときは最初にこれで別アカウントになっていないかを確認してください。",inputSchema:{type:"object",properties:{}}},{name:"logout",description:"BizBoost からログアウトします。ローカルの認証トークン(~/.musuhi/portal-token.enc)を削除するだけで、サーバー側のデータには触れません。別アカウントへ切り替えたいときもこれを使います。実行後に bizboost1〜300 のいずれかを起動し直すとログイン画面が出るので、新しいアカウントでログインしてください。",inputSchema:{type:"object",properties:{}}},{name:"update_cli",description:"BizBoost CLI を最新版に更新します(npm install -g bizboost@latest を実行)。更新後は bizboost1〜300 を起動し直すと新しい版が使われます。",inputSchema:{type:"object",properties:{}}}];function text(e,t){const o={content:[{type:"text",text:e}]};return t&&(o.isError=!0),o}function tail(e,t){return String(e||"").trim().split("\n").slice(-t).join("\n")}async function handleWhoami(){if("function"!=typeof formatWhoami)return text("Error: whoami は使えません(CLI のビルドが古い可能性)。`npm install -g bizboost@latest` で更新してください。",!0);try{const e=TokenManager&&"function"==typeof TokenManager.loadToken?await TokenManager.loadToken():null,t=e&&e.token?e.token:null;if(!t)return text(formatWhoami({tokenPresent:!1,validated:null,tokenPath:FALLBACK_TOKEN_PATH}));let o=null;TokenManager&&"function"==typeof TokenManager.validateToken&&(o=await TokenManager.validateToken(t));const n=o&&o.valid&&o.userInfo||{},a=e&&e.userInfo||{};return text(formatWhoami({tokenPresent:!0,validated:!(!o||!o.valid)||null,note:o&&!o.valid?o.error:null,name:n.name||a.name||null,email:n.email||a.email||null,role:n.role||a.role||null,tenantId:n.active_tenant_id||a.active_tenant_id||null,tokenPath:FALLBACK_TOKEN_PATH}))}catch(e){return text(`Error: アカウント情報の取得に失敗しました: ${e&&e.message?e.message:e}`,!0)}}async function handleLogout(){try{let e=!1;return TokenManager&&"function"==typeof TokenManager.deleteToken?e=await TokenManager.deleteToken():fs.existsSync(FALLBACK_TOKEN_PATH)&&(fs.unlinkSync(FALLBACK_TOKEN_PATH),e=!0),text(e?"✅ ログアウトしました(ローカルの認証トークンを削除)。\n次に bizboost1〜300 のいずれかを起動するとログイン画面が出ます。\n別アカウントに切り替えたい場合は、そのまま新しいメール/パスワードでログインしてください。":"ℹ️ すでにログアウト済みです(認証トークンは見つかりませんでした)。")}catch(e){return text(`Error: ログアウトに失敗しました: ${e&&e.message?e.message:e}`,!0)}}function handleUpdateCli(){try{return text("✅ BizBoost CLI を更新しました(npm install -g bizboost@latest)。\n次に bizboost1〜300 を起動し直すと新しい版が使われます。\n\n"+tail(execSync("npm install -g bizboost@latest",{encoding:"utf8",stdio:["ignore","pipe","pipe"]}),5))}catch(e){return text("Error: CLI 更新に失敗しました。手動で `npm install -g bizboost@latest` を実行してください。\n"+tail(e&&(e.stderr||e.message)?e.stderr||e.message:String(e),5),!0)}}async function main(){const e=new Server({name:"bluelamp-account",version:"1.0.0"},{capabilities:{tools:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:TOOLS})),e.setRequestHandler(CallToolRequestSchema,async e=>{const t=e.params&&e.params.name;return"whoami"===t?handleWhoami():"logout"===t?handleLogout():"update_cli"===t?handleUpdateCli():text(`Error: unknown tool: ${t}`,!0)});const t=new StdioServerTransport;await e.connect(t),console.error("[bluelamp-account] account-mcp connected (whoami / logout / update_cli)")}main().catch(e=>{console.error("[bluelamp-account] startup failed:",e&&e.stack?e.stack:e),process.exit(1)});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BlueLamp と Claude のログインアカウントを起動時に見せる行を組み立てる(板 #526 F3・純関数)。
|
|
3
|
+
*
|
|
4
|
+
* 仕様(要件書 §3 確定仕様=主君 13:2x の更新後):
|
|
5
|
+
* 1. **常時 2 行**: 既存 `📧 Email:`(BlueLamp) の並びに `🤖 Claude:` を**毎回**出す
|
|
6
|
+
* 2. Claude 未ログイン(`.claude.json` 無し/壊れ/`oauthAccount` 無し)は
|
|
7
|
+
* `🤖 Claude: 未ログイン(初回起動時にログイン画面が出ます)`
|
|
8
|
+
* 3. **不一致のときだけ**追加で ⚠️ 警告を **1 行**(CTO 裁可 C 2026-08-30 で確定)。
|
|
9
|
+
* ⛔ 警告にアドレスを埋めない——両アドレスは直上の常時 2 行(`📧` / `🤖`)に既に出ており、
|
|
10
|
+
* 繰り返しても情報は 1 つも増えない(主君の「1 行」を守っても情報は落ちない)
|
|
11
|
+
* 4. ⛔ プラン名(無料/Pro/Max)を断定しない——`organizationType` は本機 1 サンプルしか
|
|
12
|
+
* 観測できておらず、無料アカウントで何が入るか未確認。**アドレス不一致の指摘だけで主因は潰せる**
|
|
13
|
+
* 5. ⛔ ブロックしない(例外・遅延・戻り値で起動を止めない)
|
|
14
|
+
*
|
|
15
|
+
* ⚠️ 本モジュールは `console` を持たない。**行を組み立てて返すだけ**で、出力は `bin/` 側が行う
|
|
16
|
+
* (出力順の検証は実出力で行い、ここは文字列として単体で測れる状態に保つ)。
|
|
17
|
+
*/
|
|
18
|
+
import type { ClaudeAccount } from './claudeAccount.js';
|
|
19
|
+
export interface AccountAssurance {
|
|
20
|
+
/** 常時 1 行。Claude 側のアドレス、または未ログインの案内 */
|
|
21
|
+
readonly infoLine: string;
|
|
22
|
+
/** 不一致のときだけ中身が入る。一致・比較不能なら空配列(=警告が 1 行も増えない) */
|
|
23
|
+
readonly warnLines: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 比較用の正規化。前後空白を落とし小文字化する。
|
|
27
|
+
* ドメイン部は元来大小を区別せず、実運用の identity provider もローカル部を区別しない。
|
|
28
|
+
* ⇒ 大文字違いを「別アカウント」と誤警告する方が実害が大きいので、大小は無視する。
|
|
29
|
+
*/
|
|
30
|
+
export declare function normalizeEmail(email: string | null | undefined): string;
|
|
31
|
+
/**
|
|
32
|
+
* 不一致か。**どちらかが空なら比較不能=不一致とは言わない**(false)。
|
|
33
|
+
* 「分からない」を「食い違っている」と言わない(潔癖性)。
|
|
34
|
+
*/
|
|
35
|
+
export declare function isAccountMismatch(bluelampEmail: string | null | undefined, claudeEmail: string | null | undefined): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 表示行(常時)と警告行(不一致時のみ)を組み立てる。
|
|
38
|
+
* 表示には**利用者が入力した元の綴り**をそのまま使う(正規化は比較にだけ使う)。
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildAccountAssurance(bluelampEmail: string | null | undefined, claudeAccount: ClaudeAccount | null): AccountAssurance;
|
|
41
|
+
//# sourceMappingURL=accountAssurance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountAssurance.d.ts","sourceRoot":"","sources":["../../src/lib/accountAssurance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,gBAAgB,CAelB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeEmail=normalizeEmail,exports.isAccountMismatch=isAccountMismatch,exports.buildAccountAssurance=buildAccountAssurance;const index_js_1=require("../i18n/index.js");function normalizeEmail(n){return(n??"").trim().toLowerCase()}function isAccountMismatch(n,e){const i=normalizeEmail(n),t=normalizeEmail(e);return 0!==i.length&&0!==t.length&&i!==t}function buildAccountAssurance(n,e){if(!e)return{infoLine:`🤖 ${(0,index_js_1.t)("base.claudeAccountNotLoggedIn")}`,warnLines:[]};const i=e.emailAddress,t=`🤖 ${(0,index_js_1.t)("base.claudeAccountLabel",{email:i})}`;return isAccountMismatch(n,i)?{infoLine:t,warnLines:[`⚠️ ${(0,index_js_1.t)("base.claudeAccountMismatch")}`]}:{infoLine:t,warnLines:[]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountAssurance.js","sourceRoot":"","sources":["../../src/lib/accountAssurance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,wCAEC;AAMD,8CAQC;AAMD,sDAkBC;AAvDD,+CAAqC;AAUrC;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAgC;IAC7D,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,aAAwC,EACxC,WAAsC;IAEtC,MAAM,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,aAAwC,EACxC,aAAmC;IAEnC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAA,YAAC,EAAC,+BAA+B,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,YAAC,EAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAE9E,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,+DAA+D;IAC/D,iDAAiD;IACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,MAAM,IAAA,YAAC,EAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code 側のログインアカウント(`.claude.json` の `oauthAccount`)を読む(板 #526 F3・純関数)。
|
|
3
|
+
*
|
|
4
|
+
* 背景(起草 §F3② の実測 2026-08-30):
|
|
5
|
+
* Claude Code は claude.ai のログイン情報を `~/.claude.json` のトップレベル `oauthAccount` に平文で持つ。
|
|
6
|
+
* 実在キーは `accountUuid / emailAddress / organizationUuid / ... / organizationType` 等で、
|
|
7
|
+
* **`emailAddress` がまさに「claude.ai にログインしているアドレス」**。
|
|
8
|
+
* BlueLamp 側のアドレス(`LoginResult.user.email`)と食い違うと、利用者には
|
|
9
|
+
* 「払っているのに無料プランと出る」という症状として現れる(顧客相談 3〜4 件の真因)。
|
|
10
|
+
*
|
|
11
|
+
* 置き場所は環境変数 `CLAUDE_CONFIG_DIR` で移動する(実測)。⇒ `CLAUDE_CONFIG_DIR ?? homedir` を見る。
|
|
12
|
+
*
|
|
13
|
+
* 🚨 **例外を投げない**。`.claude.json` は Anthropic が公開仕様として文書化したファイルではなく、
|
|
14
|
+
* 将来キー名が変わりうる。読めなければ `null` を返して黙る=最悪でも「表示が出ないだけ」に倒す
|
|
15
|
+
* (起動をブロックしない・フェイルセーフ)。
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ 本機の `.claude.json` は実測 2.34MB ある(履歴等が同居する)。
|
|
18
|
+
* ⇒ **必要フィールドだけを持ち出す**。パース結果への参照は返り値に残さない(GC させる)。
|
|
19
|
+
*
|
|
20
|
+
* fs は注入で受ける(`bin/` 側の薄いシェルが `fs.readFileSync` を渡す)。
|
|
21
|
+
* 既存 `inheritedTenant.ts` の `readInheritedTenantId(argv, readFile)` と同じ形。
|
|
22
|
+
*/
|
|
23
|
+
/** 表示に使う分だけ。⛔ プラン判定に使う値(`organizationType` 等)は意図的に持ち出さない(要件書 §3-4)。 */
|
|
24
|
+
export interface ClaudeAccount {
|
|
25
|
+
/** claude.ai にログインしているメールアドレス(空でないことを保証する) */
|
|
26
|
+
readonly emailAddress: string;
|
|
27
|
+
}
|
|
28
|
+
/** `.claude.json` の在り処。**`CLAUDE_CONFIG_DIR` が非空ならその配下**、無ければ homedir 配下。 */
|
|
29
|
+
export declare function claudeConfigPath(env: {
|
|
30
|
+
readonly CLAUDE_CONFIG_DIR?: string | undefined;
|
|
31
|
+
}, homedir: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* パース済み `.claude.json` から `oauthAccount.emailAddress` だけを取る。
|
|
34
|
+
* `oauthAccount` が無い / 形が違う / `emailAddress` が空 は **すべて `null`**(=未ログイン扱い)。
|
|
35
|
+
* 表示できる文字列が無い以上、区別して見せる先が無いため 1 つに倒す。
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractClaudeAccount(raw: unknown): ClaudeAccount | null;
|
|
38
|
+
/**
|
|
39
|
+
* `.claude.json` を読んでログイン中のアカウントを返す。
|
|
40
|
+
* ファイルが無い / JSON が壊れている / `oauthAccount` が無い は **すべて `null`**(投げない)。
|
|
41
|
+
*/
|
|
42
|
+
export declare function readClaudeOauthAccount(readFile: (filePath: string) => string, env: {
|
|
43
|
+
readonly CLAUDE_CONFIG_DIR?: string | undefined;
|
|
44
|
+
}, homedir: string): ClaudeAccount | null;
|
|
45
|
+
//# sourceMappingURL=claudeAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAccount.d.ts","sourceRoot":"","sources":["../../src/lib/claudeAccount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxD,OAAO,EAAE,MAAM,GACd,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CASvE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EACtC,GAAG,EAAE;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxD,OAAO,EAAE,MAAM,GACd,aAAa,GAAG,IAAI,CAMtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var u=Object.getOwnPropertyDescriptor(e,r);u&&!("get"in u?!e.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,u)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var n=t(e),u=0;u<n.length;u++)"default"!==n[u]&&__createBinding(r,e,n[u]);return __setModuleDefault(r,e),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.claudeConfigPath=claudeConfigPath,exports.extractClaudeAccount=extractClaudeAccount,exports.readClaudeOauthAccount=readClaudeOauthAccount;const path=__importStar(require("node:path"));function claudeConfigPath(t,e){const r=(t.CLAUDE_CONFIG_DIR??"").trim();return path.join(r.length>0?r:e,".claude.json")}function extractClaudeAccount(t){if(!t||"object"!=typeof t)return null;const e=t.oauthAccount;if(!e||"object"!=typeof e)return null;const r=e.emailAddress;if("string"!=typeof r)return null;const n=r.trim();return 0===n.length?null:{emailAddress:n}}function readClaudeOauthAccount(t,e,r){try{return extractClaudeAccount(JSON.parse(t(claudeConfigPath(e,r))))}catch{return null}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAccount.js","sourceRoot":"","sources":["../../src/lib/claudeAccount.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWH,4CAMC;AAOD,oDASC;AAMD,wDAUC;AA/CD,gDAAkC;AAQlC,6EAA6E;AAC7E,SAAgB,gBAAgB,CAC9B,GAAwD,EACxD,OAAe;IAEf,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,OAAO,GAAI,GAAkC,CAAC,YAAY,CAAC;IACjE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,KAAK,GAAI,OAAsC,CAAC,YAAY,CAAC;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,QAAsC,EACtC,GAAwD,EACxD,OAAe;IAEf,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 板 #527(F4): Claude Code 初回起動ウィザードの自動通過。
|
|
3
|
+
*
|
|
4
|
+
* 利用者(多くは非エンジニア)が `bluelampN` を初めて叩くと、Claude Code 自身の初回
|
|
5
|
+
* ウィザードが 3 枚挟まり、そこで止まってしまう。実測(claude 2.1.251 / pty 越し)で
|
|
6
|
+
* 出た 3 枚と、それを消す on-disk のキーは次のとおり:
|
|
7
|
+
*
|
|
8
|
+
* 1. `Choose the text style that looks best with your terminal`
|
|
9
|
+
* → `.claude.json` の `hasCompletedOnboarding: true`
|
|
10
|
+
* 2. `Quick safety check: Is this a project you created or one you trust?`
|
|
11
|
+
* → `.claude.json` の `projects[<プロジェクト絶対パス>].hasTrustDialogAccepted: true`
|
|
12
|
+
* 🚨 この画面の既定選択は `No, exit` である。よく読まずに Enter を押すと終了する。
|
|
13
|
+
* 3. `WARNING: Claude Code running in Bypass Permissions mode`
|
|
14
|
+
* → `settings.json` の `skipDangerousModePermissionPrompt: true`
|
|
15
|
+
* 🚨 3 番は当社が作り出している詰まりである(`--dangerously-skip-permissions` は
|
|
16
|
+
* `headlessLaunch.ts` で当社が付けている引数)。
|
|
17
|
+
*
|
|
18
|
+
* 🔬 パス解決(2026-08-30 に本便 Stage 0 で pty 実測。⛔ 推測ではない):
|
|
19
|
+
* - `.claude.json` = `${CLAUDE_CONFIG_DIR ?? homedir}/.claude.json`
|
|
20
|
+
* - `settings.json` = `${CLAUDE_CONFIG_DIR ?? homedir/.claude}/settings.json`
|
|
21
|
+
* `CLAUDE_CONFIG_DIR` を設定すると `settings.json` の実効位置は **その直下へ移る**。
|
|
22
|
+
* 設定時に `~/.claude/settings.json` へ書いても bypass 警告は消えない(実測 E ケース)。
|
|
23
|
+
*
|
|
24
|
+
* 🚨 安全要件(主君確定・変えない):
|
|
25
|
+
* - **無いキーだけ書く**。利用者が既に選んだ値は絶対に上書きしない(`false` でも尊重する)
|
|
26
|
+
* - `theme` は書かない(1 番は `hasCompletedOnboarding` 単独で消える。見た目の好みを決めない)
|
|
27
|
+
* - 既存キー・順序を保全する
|
|
28
|
+
* - 書き込みは一時ファイル → `rename` の原子置換
|
|
29
|
+
* - 失敗は握って起動を続ける(最悪ウィザードが出るだけ=現状に戻るだけ)
|
|
30
|
+
*
|
|
31
|
+
* ⚠️ 公式にサポートされた仕組みではない(当社が実測で確認した on-disk の振る舞い)。
|
|
32
|
+
* 将来 Claude Code 側でキー名が変われば効かなくなるが、そのときの劣化は
|
|
33
|
+
* 「ウィザードが再び出る」=今と同じであり、壊れる方向の失敗はしない。
|
|
34
|
+
*
|
|
35
|
+
* 流儀は `mcpJsonSelfHeal.ts` に合わせている(`plan*` = 純関数 / `*File` = 薄いシェル)。
|
|
36
|
+
*/
|
|
37
|
+
/** 1 番(テキストスタイル選択)を消すキー */
|
|
38
|
+
export declare const ONBOARDING_KEY = "hasCompletedOnboarding";
|
|
39
|
+
/** 2 番(フォルダ信頼)を消すキー */
|
|
40
|
+
export declare const TRUST_KEY = "hasTrustDialogAccepted";
|
|
41
|
+
/** 3 番(Bypass 警告)を消すキー */
|
|
42
|
+
export declare const BYPASS_KEY = "skipDangerousModePermissionPrompt";
|
|
43
|
+
/**
|
|
44
|
+
* 読み込みを諦める上限。`~/.claude.json` は本機で実測 2.34MB(`projects` 868 件)で、
|
|
45
|
+
* 通常はこの上限に遠く届かない。病的に肥大したファイルで起動を待たせないための弁であり、
|
|
46
|
+
* 超えたときの劣化は「ウィザードが出る」=現状に戻るだけ。
|
|
47
|
+
*/
|
|
48
|
+
export declare const MAX_READ_BYTES: number;
|
|
49
|
+
export interface ClaudeJsonShape {
|
|
50
|
+
[key: string]: unknown;
|
|
51
|
+
}
|
|
52
|
+
export interface SeedPlan {
|
|
53
|
+
changed: boolean;
|
|
54
|
+
/** 書き戻すべき次の姿。changed=false のときは undefined */
|
|
55
|
+
next?: ClaudeJsonShape;
|
|
56
|
+
/** 実際に足したキーの一覧(診断・テスト用) */
|
|
57
|
+
added: string[];
|
|
58
|
+
/** changed=false の理由(診断用) */
|
|
59
|
+
reason?: SeedSkipReason;
|
|
60
|
+
}
|
|
61
|
+
export type SeedSkipReason = 'already-seeded' | 'not-an-object' | 'projects-not-an-object';
|
|
62
|
+
/**
|
|
63
|
+
* `.claude.json` に足すべきものを計画する(純関数)。
|
|
64
|
+
*
|
|
65
|
+
* @param raw JSON.parse 済みの現在値。ファイルが無い場合は `undefined` を渡す
|
|
66
|
+
* @param projectPath 信頼済みにするプロジェクトの絶対パス(=claude を起動する cwd)
|
|
67
|
+
*/
|
|
68
|
+
export declare function planClaudeJsonSeed(raw: unknown, projectPath: string): SeedPlan;
|
|
69
|
+
/** `settings.json` に足すべきものを計画する(純関数)。3 番(Bypass 警告)だけを扱う */
|
|
70
|
+
export declare function planSettingsSeed(raw: unknown): SeedPlan;
|
|
71
|
+
export interface SeedIo {
|
|
72
|
+
exists(filePath: string): boolean;
|
|
73
|
+
/** バイト数。上限判定に使う */
|
|
74
|
+
size(filePath: string): number;
|
|
75
|
+
read(filePath: string): string;
|
|
76
|
+
/** 一時ファイル → rename の原子置換。既存ファイルの permission は引き継ぐ */
|
|
77
|
+
writeAtomic(filePath: string, contents: string): void;
|
|
78
|
+
ensureDir(dirPath: string): void;
|
|
79
|
+
}
|
|
80
|
+
export type SeedFailureReason = 'read-failed' | 'parse-failed' | 'write-failed' | 'too-large';
|
|
81
|
+
export type SeedOutcome = {
|
|
82
|
+
seeded: true;
|
|
83
|
+
added: string[];
|
|
84
|
+
created: boolean;
|
|
85
|
+
} | {
|
|
86
|
+
seeded: false;
|
|
87
|
+
reason: SeedSkipReason | SeedFailureReason;
|
|
88
|
+
detail?: string;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* 追加が失われたときの入れ直し回数。
|
|
92
|
+
*
|
|
93
|
+
* `~/.claude.json` は Claude Code 自身が常時書き換える(本機で実測: 無操作でも 15 秒で内容が
|
|
94
|
+
* 変わる)。原子置換なので **ファイルが壊れることはない**が、我々の「読み → 書き」の隙間に
|
|
95
|
+
* 他プロセスが書き戻すと、我々が足したキーだけが失われることはある。書いた直後にもう一度
|
|
96
|
+
* 計画し、まだ足りなければ入れ直して収束させる。
|
|
97
|
+
*/
|
|
98
|
+
export declare const MAX_SEED_RETRIES = 2;
|
|
99
|
+
/** `.claude.json` に 1・2 番のキーを足す */
|
|
100
|
+
export declare function seedClaudeJsonFile(filePath: string, projectPath: string, io: SeedIo): SeedOutcome;
|
|
101
|
+
/** `settings.json` に 3 番のキーを足す */
|
|
102
|
+
export declare function seedSettingsFile(filePath: string, io: SeedIo): SeedOutcome;
|
|
103
|
+
/**
|
|
104
|
+
* 実機用 IO(呼び出し時に解決する — HOME を差し替えるテストのため事前計算しない)。
|
|
105
|
+
*
|
|
106
|
+
* 原子置換: 同一ディレクトリ内の一意な一時ファイルへ書いてから `rename` する。
|
|
107
|
+
* 同一ディレクトリに置くのは、跨ぐと `rename` が EXDEV で落ち原子性を失うため。
|
|
108
|
+
* これにより **同時に何本 `bluelampN` を起動しても、読み手が半端なファイルを見ることはない**。
|
|
109
|
+
*/
|
|
110
|
+
export declare const nodeSeedIo: SeedIo;
|
|
111
|
+
/**
|
|
112
|
+
* `.claude.json` の絶対パス。
|
|
113
|
+
* Stage 0 実測: `CLAUDE_CONFIG_DIR` 設定時は **その直下**(`~/.claude.json` ではない)。
|
|
114
|
+
*/
|
|
115
|
+
export declare function defaultClaudeJsonPath(): string;
|
|
116
|
+
/**
|
|
117
|
+
* `settings.json` の絶対パス。
|
|
118
|
+
* Stage 0 実測: `CLAUDE_CONFIG_DIR` 設定時は **その直下**、未設定時は `~/.claude/` 配下。
|
|
119
|
+
*/
|
|
120
|
+
export declare function defaultSettingsPath(): string;
|
|
121
|
+
export interface OnboardingSeedResult {
|
|
122
|
+
claudeJson: SeedOutcome;
|
|
123
|
+
settings: SeedOutcome;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 実機での事前生成。launcher が claude を spawn する直前に 1 回呼ぶ。
|
|
127
|
+
*
|
|
128
|
+
* @param projectPath 信頼済みにするディレクトリ。既定は claude を起動する cwd。
|
|
129
|
+
*/
|
|
130
|
+
export declare function seedClaudeOnboarding(projectPath?: string): OnboardingSeedResult;
|
|
131
|
+
//# sourceMappingURL=claudeOnboardingSeed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeOnboardingSeed.d.ts","sourceRoot":"","sources":["../../src/lib/claudeOnboardingSeed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,2BAA2B;AAC3B,eAAO,MAAM,cAAc,2BAA2B,CAAC;AACvD,uBAAuB;AACvB,eAAO,MAAM,SAAS,2BAA2B,CAAC;AAClD,0BAA0B;AAC1B,eAAO,MAAM,UAAU,sCAAsC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,eAAe,GACf,wBAAwB,CAAC;AAW7B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,CAmD9E;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAOvD;AAMD,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,mBAAmB;IACnB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qDAAqD;IACrD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,cAAc,GACd,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAInF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AA0ElC,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAEjG;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAE1E;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,MAoCxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,oBAAoB,CAK9F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n=e(t),s=0;s<n.length;s++)"default"!==n[s]&&__createBinding(r,t,n[s]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.nodeSeedIo=exports.MAX_SEED_RETRIES=exports.MAX_READ_BYTES=exports.BYPASS_KEY=exports.TRUST_KEY=exports.ONBOARDING_KEY=void 0,exports.planClaudeJsonSeed=planClaudeJsonSeed,exports.planSettingsSeed=planSettingsSeed,exports.seedClaudeJsonFile=seedClaudeJsonFile,exports.seedSettingsFile=seedSettingsFile,exports.defaultClaudeJsonPath=defaultClaudeJsonPath,exports.defaultSettingsPath=defaultSettingsPath,exports.seedClaudeOnboarding=seedClaudeOnboarding;const fs=__importStar(require("node:fs")),os=__importStar(require("node:os")),path=__importStar(require("node:path"));function isPlainObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function has(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function planClaudeJsonSeed(e,t){if(void 0===e)return{changed:!0,added:[exports.ONBOARDING_KEY,`projects[${t}].${exports.TRUST_KEY}`],next:{[exports.ONBOARDING_KEY]:!0,projects:{[t]:{[exports.TRUST_KEY]:!0}}}};if(!isPlainObject(e))return{changed:!1,added:[],reason:"not-an-object"};const r=[];let n=e;has(e,exports.ONBOARDING_KEY)||(n={...n,[exports.ONBOARDING_KEY]:!0},r.push(exports.ONBOARDING_KEY));const s=e.projects;if(void 0===s||isPlainObject(s)){const e=isPlainObject(s)?s:{},a=e[t];void 0===a?(n={...n,projects:{...e,[t]:{[exports.TRUST_KEY]:!0}}},r.push(`projects[${t}].${exports.TRUST_KEY}`)):isPlainObject(a)&&!has(a,exports.TRUST_KEY)&&(n={...n,projects:{...e,[t]:{...a,[exports.TRUST_KEY]:!0}}},r.push(`projects[${t}].${exports.TRUST_KEY}`))}else if(0===r.length)return{changed:!1,added:[],reason:"projects-not-an-object"};return 0===r.length?{changed:!1,added:[],reason:"already-seeded"}:{changed:!0,next:n,added:r}}function planSettingsSeed(e){return void 0===e?{changed:!0,added:[exports.BYPASS_KEY],next:{[exports.BYPASS_KEY]:!0}}:isPlainObject(e)?has(e,exports.BYPASS_KEY)?{changed:!1,added:[],reason:"already-seeded"}:{changed:!0,added:[exports.BYPASS_KEY],next:{...e,[exports.BYPASS_KEY]:!0}}:{changed:!1,added:[],reason:"not-an-object"}}function seedFile(e,t,r){let n=attemptSeed(e,t,r);if(!n.seeded)return n;for(let s=0;s<exports.MAX_SEED_RETRIES;s+=1){const s=attemptSeed(e,t,r);if(!s.seeded)break;n=s}return n}function attemptSeed(e,t,r){const n=r.exists(e);let s;if(n){let t,n;try{t=r.size(e)}catch(e){return{seeded:!1,reason:"read-failed",detail:messageOf(e)}}if(t>exports.MAX_READ_BYTES)return{seeded:!1,reason:"too-large",detail:`${t} bytes`};try{n=r.read(e)}catch(e){return{seeded:!1,reason:"read-failed",detail:messageOf(e)}}try{s=JSON.parse(n)}catch(e){return{seeded:!1,reason:"parse-failed",detail:messageOf(e)}}}const a=t(s);if(!a.changed||!a.next)return{seeded:!1,reason:a.reason??"already-seeded"};let o;try{o=`${JSON.stringify(a.next,null,2)}\n`,JSON.parse(o)}catch(e){return{seeded:!1,reason:"write-failed",detail:messageOf(e)}}try{r.ensureDir(path.dirname(e)),r.writeAtomic(e,o)}catch(e){return{seeded:!1,reason:"write-failed",detail:messageOf(e)}}return{seeded:!0,added:a.added,created:!n}}function seedClaudeJsonFile(e,t,r){return seedFile(e,e=>planClaudeJsonSeed(e,t),r)}function seedSettingsFile(e,t){return seedFile(e,planSettingsSeed,t)}function defaultClaudeJsonPath(){const e=process.env.CLAUDE_CONFIG_DIR,t=e&&e.length>0?e:os.homedir();return path.join(t,".claude.json")}function defaultSettingsPath(){const e=process.env.CLAUDE_CONFIG_DIR,t=e&&e.length>0?e:path.join(os.homedir(),".claude");return path.join(t,"settings.json")}function seedClaudeOnboarding(e=process.cwd()){return{claudeJson:seedClaudeJsonFile(defaultClaudeJsonPath(),e,exports.nodeSeedIo),settings:seedSettingsFile(defaultSettingsPath(),exports.nodeSeedIo)}}function messageOf(e){return e instanceof Error?e.message:String(e)}exports.ONBOARDING_KEY="hasCompletedOnboarding",exports.TRUST_KEY="hasTrustDialogAccepted",exports.BYPASS_KEY="skipDangerousModePermissionPrompt",exports.MAX_READ_BYTES=67108864,exports.MAX_SEED_RETRIES=2,exports.nodeSeedIo={exists:e=>fs.existsSync(e),size:e=>fs.statSync(e).size,read:e=>fs.readFileSync(e,"utf-8"),ensureDir:e=>{fs.mkdirSync(e,{recursive:!0})},writeAtomic:(e,t)=>{const r=path.dirname(e),n=path.join(r,`.${path.basename(e)}.bluelamp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);let s=384;try{s=511&fs.statSync(e).mode}catch{}fs.writeFileSync(n,t,{encoding:"utf-8",mode:s});try{fs.renameSync(n,e)}catch(e){try{fs.unlinkSync(n)}catch{}throw e}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeOnboardingSeed.js","sourceRoot":"","sources":["../../src/lib/claudeOnboardingSeed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `--debug` の出力から秘密を落とす(板 #442 ①)。
|
|
3
|
+
*
|
|
4
|
+
* 🕳 塞いでいる穴(2026-08-23 実測):
|
|
5
|
+
* `bin/bluelamp-vscode-base.mjs` の debug ブロックは
|
|
6
|
+
* ① `cliToken.substring(0, 20)` を印字し、
|
|
7
|
+
* ② その直後に **一時 MCP config を全文** `console.log` していた。
|
|
8
|
+
* ⇒ config には `createMCPConfig()` が `MUSUHI_TOKEN: cliToken` を**平文で**書くので、
|
|
9
|
+
* **CLI トークンが丸ごと標準出力へ出ていた**(先頭 20 文字どころではない)。
|
|
10
|
+
* 標準出力はターミナルのスクロールバック・tmux のログ・CI の実行ログへ残るため、
|
|
11
|
+
* 「デバッグを 1 回撃った」だけで秘密が長期に残留しうる。
|
|
12
|
+
*
|
|
13
|
+
* 🔑 方針: **env の値は 1 つも印字しない。キー名だけ出す。**
|
|
14
|
+
* どの env が渡っているかは調査に要るが、**値が要ることは無い**(値が要るなら
|
|
15
|
+
* それは秘密ではなく設定なので、config ではなく別の経路で確かめる)。
|
|
16
|
+
* ⇒ 「どれを伏せるか」を選ばない。**全部伏せる**ので、新しい秘密キーが増えても漏れない
|
|
17
|
+
* (allowlist 方式は「増えたキーを足し忘れる」形で必ず破れる)。
|
|
18
|
+
*
|
|
19
|
+
* 🚨 解析できなかったときに**生の文字列へフォールバックしない**。
|
|
20
|
+
* 「読めなかったから素のまま出す」は、まさにこの穴の作り方である。
|
|
21
|
+
*/
|
|
22
|
+
/** 値を伏せたときに出す印。長さも桁数も漏らさない固定文字列 */
|
|
23
|
+
export declare const REDACTED = "***";
|
|
24
|
+
/** config を解析できなかったときの応答。⛔ ここで生の内容を返してはいけない */
|
|
25
|
+
export declare const UNPARSEABLE_NOTICE = "<MCP config \u3092\u89E3\u6790\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u5370\u5B57\u3057\u307E\u305B\u3093\uFF08\u79D8\u5BC6\u304C\u6DF7\u3056\u308A\u3046\u308B\u305F\u3081\uFF09>";
|
|
26
|
+
/**
|
|
27
|
+
* 一時 MCP config の JSON 文字列を、**env の値を全て伏せた**整形済み JSON にして返す。
|
|
28
|
+
*
|
|
29
|
+
* - `mcpServers.<name>.env` の値は**すべて** `'***'` に置き換える(キー名は残す)
|
|
30
|
+
* - それ以外(`command` / `args` 等)はそのまま。パスは調査に要り、秘密ではない
|
|
31
|
+
* - JSON として読めなければ **固定の通知文字列**を返す(生の内容は返さない)
|
|
32
|
+
*/
|
|
33
|
+
export declare function redactMcpConfigForDebug(configText: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* トークンを debug 行へ出すための表示。**1 文字も原文を含めない。**
|
|
36
|
+
*
|
|
37
|
+
* ⚠️ 末尾数文字を残す案は採らない——板 #442 の終わりの定義が
|
|
38
|
+
* 「修理後の出力にトークンの断片が **1 文字も** 出ないこと」だからである。
|
|
39
|
+
* 有無だけ判れば「トークンが載っていない」と「載っているが誤り」は区別できる。
|
|
40
|
+
*/
|
|
41
|
+
export declare function describeTokenForDebug(token: unknown): string;
|
|
42
|
+
//# sourceMappingURL=debugRedaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugRedaction.d.ts","sourceRoot":"","sources":["../../src/lib/debugRedaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,mCAAmC;AACnC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAE9B,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,gMAA+C,CAAC;AAO/E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA6BlE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function redactMcpConfigForDebug(e){let t;try{t=JSON.parse(e)}catch{return exports.UNPARSEABLE_NOTICE}if(!t||"object"!=typeof t)return exports.UNPARSEABLE_NOTICE;const o=t,r=o.mcpServers;if(r&&"object"==typeof r)for(const e of Object.values(r)){if(!e||"object"!=typeof e)continue;const t=e.env;if(t&&"object"==typeof t)for(const e of Object.keys(t))t[e]=exports.REDACTED}try{return JSON.stringify(o,null,2)}catch{return exports.UNPARSEABLE_NOTICE}}function describeTokenForDebug(e){return"string"!=typeof e||0===e.length?"(未設定)":exports.REDACTED}Object.defineProperty(exports,"__esModule",{value:!0}),exports.UNPARSEABLE_NOTICE=exports.REDACTED=void 0,exports.redactMcpConfigForDebug=redactMcpConfigForDebug,exports.describeTokenForDebug=describeTokenForDebug,exports.REDACTED="***",exports.UNPARSEABLE_NOTICE="<MCP config を解析できなかったため印字しません(秘密が混ざりうるため)>";
|