ideaco 1.1.5
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/.dockerignore +33 -0
- package/.nvmrc +1 -0
- package/ARCHITECTURE.md +394 -0
- package/Dockerfile +50 -0
- package/LICENSE +29 -0
- package/README.md +206 -0
- package/bin/i18n.js +46 -0
- package/bin/ideaco.js +494 -0
- package/deploy.sh +15 -0
- package/docker-compose.yml +30 -0
- package/electron/main.cjs +986 -0
- package/electron/preload.cjs +14 -0
- package/electron/web-backends.cjs +854 -0
- package/jsconfig.json +8 -0
- package/next.config.mjs +34 -0
- package/package.json +134 -0
- package/postcss.config.mjs +6 -0
- package/public/demo/dashboard.png +0 -0
- package/public/demo/employee.png +0 -0
- package/public/demo/messages.png +0 -0
- package/public/demo/office.png +0 -0
- package/public/demo/requirement.png +0 -0
- package/public/logo.jpeg +0 -0
- package/public/logo.png +0 -0
- package/scripts/prepare-electron.js +67 -0
- package/scripts/release.js +76 -0
- package/src/app/api/agents/[agentId]/chat/route.js +70 -0
- package/src/app/api/agents/[agentId]/conversations/route.js +35 -0
- package/src/app/api/agents/[agentId]/route.js +106 -0
- package/src/app/api/avatar/route.js +104 -0
- package/src/app/api/browse-dir/route.js +44 -0
- package/src/app/api/chat/route.js +265 -0
- package/src/app/api/company/factory-reset/route.js +43 -0
- package/src/app/api/company/route.js +82 -0
- package/src/app/api/departments/[deptId]/agents/[agentId]/dismiss/route.js +19 -0
- package/src/app/api/departments/route.js +92 -0
- package/src/app/api/group-chat-loop/events/route.js +70 -0
- package/src/app/api/group-chat-loop/route.js +94 -0
- package/src/app/api/mailbox/route.js +100 -0
- package/src/app/api/messages/route.js +14 -0
- package/src/app/api/providers/[id]/configure/route.js +21 -0
- package/src/app/api/providers/[id]/refresh-cookie/route.js +38 -0
- package/src/app/api/providers/[id]/test-cookie/route.js +28 -0
- package/src/app/api/providers/route.js +11 -0
- package/src/app/api/requirements/route.js +242 -0
- package/src/app/api/secretary/route.js +65 -0
- package/src/app/api/system/cli-backends/route.js +91 -0
- package/src/app/api/system/cron/route.js +110 -0
- package/src/app/api/system/knowledge/route.js +104 -0
- package/src/app/api/system/plugins/route.js +40 -0
- package/src/app/api/system/skills/route.js +46 -0
- package/src/app/api/system/status/route.js +46 -0
- package/src/app/api/talent-market/[profileId]/recall/route.js +22 -0
- package/src/app/api/talent-market/[profileId]/route.js +17 -0
- package/src/app/api/talent-market/route.js +26 -0
- package/src/app/api/teams/route.js +773 -0
- package/src/app/api/ws-files/[departmentId]/file/route.js +27 -0
- package/src/app/api/ws-files/[departmentId]/files/route.js +22 -0
- package/src/app/globals.css +130 -0
- package/src/app/layout.jsx +40 -0
- package/src/app/page.jsx +97 -0
- package/src/components/AgentChatModal.jsx +164 -0
- package/src/components/AgentDetailModal.jsx +425 -0
- package/src/components/AgentSpyModal.jsx +481 -0
- package/src/components/AvatarGrid.jsx +29 -0
- package/src/components/BossProfileModal.jsx +162 -0
- package/src/components/CachedAvatar.jsx +77 -0
- package/src/components/ChatPanel.jsx +219 -0
- package/src/components/ChatShared.jsx +255 -0
- package/src/components/DepartmentDetail.jsx +842 -0
- package/src/components/DepartmentView.jsx +367 -0
- package/src/components/FileReference.jsx +260 -0
- package/src/components/FilesView.jsx +465 -0
- package/src/components/GroupChatView.jsx +799 -0
- package/src/components/Mailbox.jsx +926 -0
- package/src/components/MessagesView.jsx +112 -0
- package/src/components/OnboardingGuide.jsx +209 -0
- package/src/components/OrgTree.jsx +151 -0
- package/src/components/Overview.jsx +391 -0
- package/src/components/PixelOffice.jsx +2281 -0
- package/src/components/ProviderGrid.jsx +551 -0
- package/src/components/ProvidersBoard.jsx +16 -0
- package/src/components/RequirementDetail.jsx +1279 -0
- package/src/components/RequirementsBoard.jsx +187 -0
- package/src/components/SecretarySettings.jsx +295 -0
- package/src/components/SetupWizard.jsx +388 -0
- package/src/components/Sidebar.jsx +169 -0
- package/src/components/SystemMonitor.jsx +808 -0
- package/src/components/TalentMarket.jsx +183 -0
- package/src/components/TeamDetail.jsx +697 -0
- package/src/core/agent/base-agent.js +104 -0
- package/src/core/agent/chat-store.js +602 -0
- package/src/core/agent/cli-agent/backends/claude-code/README.md +52 -0
- package/src/core/agent/cli-agent/backends/claude-code/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codebuddy/README.md +236 -0
- package/src/core/agent/cli-agent/backends/codebuddy/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codex/README.md +51 -0
- package/src/core/agent/cli-agent/backends/codex/config.js +27 -0
- package/src/core/agent/cli-agent/backends/index.js +27 -0
- package/src/core/agent/cli-agent/backends/registry.js +580 -0
- package/src/core/agent/cli-agent/index.js +154 -0
- package/src/core/agent/index.js +60 -0
- package/src/core/agent/llm-agent/client.js +320 -0
- package/src/core/agent/llm-agent/index.js +97 -0
- package/src/core/agent/message-bus.js +211 -0
- package/src/core/agent/session.js +608 -0
- package/src/core/agent/tools.js +596 -0
- package/src/core/agent/web-agent/backends/base-backend.js +180 -0
- package/src/core/agent/web-agent/backends/chatgpt/client.js +146 -0
- package/src/core/agent/web-agent/backends/chatgpt/config.js +148 -0
- package/src/core/agent/web-agent/backends/chatgpt/dom-scripts.js +303 -0
- package/src/core/agent/web-agent/backends/index.js +91 -0
- package/src/core/agent/web-agent/index.js +278 -0
- package/src/core/agent/web-agent/web-client.js +407 -0
- package/src/core/employee/base-employee.js +1088 -0
- package/src/core/employee/index.js +35 -0
- package/src/core/employee/knowledge.js +327 -0
- package/src/core/employee/lifecycle.js +990 -0
- package/src/core/employee/memory/index.js +642 -0
- package/src/core/employee/memory/store.js +143 -0
- package/src/core/employee/performance.js +224 -0
- package/src/core/employee/secretary.js +625 -0
- package/src/core/employee/skills.js +398 -0
- package/src/core/index.js +38 -0
- package/src/core/organization/company.js +2600 -0
- package/src/core/organization/department.js +737 -0
- package/src/core/organization/group-chat-loop.js +264 -0
- package/src/core/organization/index.js +8 -0
- package/src/core/organization/persistence.js +111 -0
- package/src/core/organization/team.js +267 -0
- package/src/core/organization/workforce/hr.js +377 -0
- package/src/core/organization/workforce/providers.js +468 -0
- package/src/core/organization/workforce/role-archetypes.js +805 -0
- package/src/core/organization/workforce/talent-market.js +205 -0
- package/src/core/prompts.js +532 -0
- package/src/core/requirement.js +1789 -0
- package/src/core/system/audit.js +483 -0
- package/src/core/system/cron.js +449 -0
- package/src/core/system/index.js +7 -0
- package/src/core/system/plugin.js +2183 -0
- package/src/core/utils/json-parse.js +188 -0
- package/src/core/workspace.js +239 -0
- package/src/lib/api-i18n.js +211 -0
- package/src/lib/avatar.js +268 -0
- package/src/lib/client-store.js +1025 -0
- package/src/lib/config-validator.js +483 -0
- package/src/lib/format-time.js +22 -0
- package/src/lib/hooks.js +414 -0
- package/src/lib/i18n.js +134 -0
- package/src/lib/paths.js +23 -0
- package/src/lib/store.js +72 -0
- package/src/locales/de.js +393 -0
- package/src/locales/en.js +1054 -0
- package/src/locales/es.js +393 -0
- package/src/locales/fr.js +393 -0
- package/src/locales/ja.js +501 -0
- package/src/locales/ko.js +513 -0
- package/src/locales/zh.js +828 -0
- package/tailwind.config.mjs +11 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
|
|
2
|
+
// 日本語翻訳
|
|
3
|
+
const ja = {
|
|
4
|
+
common: {
|
|
5
|
+
loading: '読み込み中...', cancel: 'キャンセル', confirm: '確認', save: '保存', close: '閉じる',
|
|
6
|
+
send: '送信', refresh: '更新', delete: '削除', back: '戻る', next: '次へ →', prev: '← 前へ',
|
|
7
|
+
disable: '無効化', update: '更新', enable: '有効化', manage: '⚙️ 管理', configure: '🔑 設定',
|
|
8
|
+
requestFailed: 'リクエスト失敗',
|
|
9
|
+
justNow: 'たった今', minutesAgo: '{n}分前',
|
|
10
|
+
sun: '日', mon: '月', tue: '火', wed: '水', thu: '木', fri: '金', sat: '土',
|
|
11
|
+
},
|
|
12
|
+
cli: {
|
|
13
|
+
helpTitle: '使い方:',
|
|
14
|
+
helpStart: 'ideaco start バックグラウンドサービスを起動',
|
|
15
|
+
helpStop: 'ideaco stop バックグラウンドサービスを停止',
|
|
16
|
+
helpUi: 'ideaco ui ダッシュボードを開く',
|
|
17
|
+
helpHelp: 'ideaco help ヘルプを表示',
|
|
18
|
+
startBoot: 'ポート {port} を起動中...',
|
|
19
|
+
alreadyRunning: 'サービスは既に起動中です。PID {pid}',
|
|
20
|
+
startSuccess: 'サービスがオンラインになりました。PID {pid} · {url}',
|
|
21
|
+
startFailed: 'サービスの起動に失敗しました: {error}',
|
|
22
|
+
startTimeout: 'サービス起動がタイムアウトしました',
|
|
23
|
+
notRunning: 'サービスは起動していません',
|
|
24
|
+
stopped: 'サービスを停止しました',
|
|
25
|
+
webUnavailable: 'サービスが起動していないためUIを開けません',
|
|
26
|
+
webOpened: 'UIを開きました: {url}',
|
|
27
|
+
installDeps: '依存関係をインストールしています...',
|
|
28
|
+
installDepsDone: '依存関係のインストールが完了しました',
|
|
29
|
+
installDepsFailed: '依存関係のインストールに失敗しました',
|
|
30
|
+
},
|
|
31
|
+
meta: { title: 'AI Enterprise - AI企業管理システム', description: 'AIエージェントを採用し部門を編成して実プロジェクトに取り組む' },
|
|
32
|
+
loadingScreen: { text: '読み込み中...' },
|
|
33
|
+
setup: {
|
|
34
|
+
title: 'ゴールドスパーク無限会社', subtitle: 'AI社員の血と汗で、あなたのビジネス帝国を築こう',
|
|
35
|
+
step1Title: 'ステップ1:帝国を作ろう', step1Desc: 'この搾取マシンに名前をつけよう',
|
|
36
|
+
companyName: '会社名', companyPlaceholder: '例:ゴールドスパーク無限会社',
|
|
37
|
+
bossTitle: 'ボスの肩書き(AIを搾取する人)', bossPlaceholder: '例:社長',
|
|
38
|
+
bossAvatarTitle: 'ボスのアバター', bossAvatarDesc: '最高資本家の顔を選ぼう',
|
|
39
|
+
step2Title: 'ステップ2:秘書を育てよう', step2Desc: 'この恐ろしいAIがあなたに代わって軍を指揮する(全員AI)',
|
|
40
|
+
secretaryName: '秘書の名前', secretaryPlaceholder: '例:アリス、ジャービス',
|
|
41
|
+
avatarStyle: 'アバタースタイル',
|
|
42
|
+
gender: '性別',
|
|
43
|
+
female: '👩 女性',
|
|
44
|
+
male: '👨 男性',
|
|
45
|
+
age: '年齢: {n}歳',
|
|
46
|
+
refreshBatch: '🔄 シャッフル',
|
|
47
|
+
step3Title: 'ステップ3:秘書に頭脳を与えよう', step3Desc: '秘書のIQを選択——高いほど賢く、高いほど高コスト',
|
|
48
|
+
apiKeyLabel: 'API Key', apiKeyPlaceholder: '対応モデルのAPI Keyを入力',
|
|
49
|
+
apiKeyHint: '💡 Keyがない?大丈夫、まずシミュレーションモードで試そう', priceLabels: ['💰 安い', '💰💰 普通', '💰💰💰 高い'],
|
|
50
|
+
creating: '搾取開始中...', createBtn: '🚀 搾取を始める',
|
|
51
|
+
footer: '❤️ 心配しないで、AI社員は残業に文句を言わない——退勤時間がないから',
|
|
52
|
+
defaultCompany: 'ゴールドスパーク無限会社', defaultSecretary: 'アリス',
|
|
53
|
+
cliAgentLocal: 'CLI エージェント(ローカル)',
|
|
54
|
+
cliAvailable: '検出済み',
|
|
55
|
+
cliNotFound: '見つかりません',
|
|
56
|
+
localCli: 'ローカル CLI',
|
|
57
|
+
freeLocal: '無料(ローカル)',
|
|
58
|
+
},
|
|
59
|
+
sidebar: {
|
|
60
|
+
clickToChat: 'クリックで対話 · {provider}', secretarySettings: '⚙️ 秘書設定 · 洗脳スクリプト',
|
|
61
|
+
budgetUsage: '💰 予算消費', tokenLabel: 'Token',
|
|
62
|
+
nav: { overview: 'ダッシュボード', requirements: '要件ボード', departments: '組織構造', mailbox: 'メッセージ', office: 'オフィス', providers: 'AIプロバイダー', systemSettings: 'システム設定' },
|
|
63
|
+
stats: { departments: '部門', workers: '社員', requirements: '要件' },
|
|
64
|
+
},
|
|
65
|
+
overview: {
|
|
66
|
+
title: '🏠 資本家のダッシュボード', subtitle: 'AI奴隷帝国の運営状況——全て掌握中',
|
|
67
|
+
stats: { departments: '搾取部門', workers: '作業AI', providers: 'プロバイダー', talents: '待機人材', burned: '燃やした金' },
|
|
68
|
+
budget: { title: '💸 血と汗の予算', totalBurn: '総消費', token: 'Token', secretary: '秘書', hr: 'HR' },
|
|
69
|
+
requirements: { title: '📋 要件ボード', count: '{n}件の要件' },
|
|
70
|
+
departments: { title: '🏢 傘下部門', empty: 'まだ部門がない——AI奴隷帝国がまもなく開業', workers: '{n}名の社員' },
|
|
71
|
+
teams: { title: '👥 タスクフォース', count: '{n}チーム', empty: 'タスクフォースなし', members: '{n}名', sprints: '{n}スプリント' },
|
|
72
|
+
createDept: {
|
|
73
|
+
title: '🏭 新部門設立', desc: '搾取したい価値を説明すれば、秘書が最適(最安)チームを設計する',
|
|
74
|
+
nameLabel: '部門名', namePlaceholder: '例:終日残業部', missionLabel: '部門ミッション', missionPlaceholder: '例:中毒性のあるSNSアプリの開発',
|
|
75
|
+
cancelBtn: 'やめておく', planBtn: '📋 採用計画を生成', planning: '🧠 秘書が計画中...',
|
|
76
|
+
},
|
|
77
|
+
planReview: {
|
|
78
|
+
title: '📋 採用計画レビュー', desc: '秘書が「{dept}」に以下のチームを計画しました:',
|
|
79
|
+
analysis: '🧠 秘書分析', mission: 'ミッション', teamSize: 'チーム規模: {n}名',
|
|
80
|
+
leader: '責任者', rejectBtn: '差し戻し', approveBtn: '✅ 承認、採用開始', hiring: '🔨 採用中...',
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
chat: {
|
|
84
|
+
secretary: '専属秘書', online: '専属秘書 · オンライン',
|
|
85
|
+
welcome: '{name}に何か言ってみよう', suggestions: ['各部門の進捗を確認', '電卓を作って', '会社の状況は?'],
|
|
86
|
+
typing: 'タイピング中...', inputPlaceholder: '{name}に何か言う...',
|
|
87
|
+
errorPrefix: '申し訳ありません、エラーが発生しました:',
|
|
88
|
+
taskAssigned: '📋 割り当て先: {dept}', running: '⚙️ 実行中...',
|
|
89
|
+
needNewDept: '💡 新部門の設立を提案', progressReport: '📊 進捗報告完了',
|
|
90
|
+
creatingDept: '🏗️ 部門作成中: {dept}', planningHiring: '⚙️ 計画・採用中...', deptCreated: '🎉 部門「{dept}」が作成されました',
|
|
91
|
+
},
|
|
92
|
+
mailbox: {
|
|
93
|
+
title: '💬 メッセージ', markAllRead: '全て既読にする',
|
|
94
|
+
tabs: { all: '全て', group: 'グループ', private: '個人', important: '重要' },
|
|
95
|
+
noMessages: 'まだ社員からのメッセージがありません', noMessagesHint: '部門を設立して採用すると、社員が挨拶に来ます',
|
|
96
|
+
selectChat: '会話を選択', selectChatHint: '左の連絡先をクリックしてチャットを開始',
|
|
97
|
+
viewRequirement: '📋 要件詳細を見る →', messages: '{n}件のメッセージ',
|
|
98
|
+
noGroupChat: 'グループチャットメッセージなし', noGroupChatHint: 'タスク実行時の社員間コミュニケーションがここに表示されます',
|
|
99
|
+
chatNotExist: 'この会話は存在しません', replying: '返信中...', replyTo: '{name}に返信...',
|
|
100
|
+
clickToChat: 'クリックで対話開始', sendBtn: '送信', you: 'あなた: ', personalSecretary: '専属秘書',
|
|
101
|
+
system: 'システム', chatHint: '{name}に何か言ってみましょう',
|
|
102
|
+
viewAgentDetail: '社員詳細を見る', groupChatCount: '🏢 {dept} · {n}件のメッセージ',
|
|
103
|
+
noGroupChatHint: 'タスク実行時の社員間コミュニケーションがここに表示されます',
|
|
104
|
+
groupChatInput: 'グループチャットで発言すると、リーダーが対応します...',
|
|
105
|
+
sendFailed: '送信に失敗しました',
|
|
106
|
+
thinkingReply: '返信を考え中...',
|
|
107
|
+
membersCount: '{n}名',
|
|
108
|
+
groupMembers: '👥 グループメンバー ({n})',
|
|
109
|
+
deptGroup: '{name} 部門グループ',
|
|
110
|
+
deptGroupInfo: '👥 {count}名 · {msgs}件のメッセージ',
|
|
111
|
+
deptGroupChat: '部門グループチャット',
|
|
112
|
+
taskTooltip: 'タスク: {tasks}',
|
|
113
|
+
},
|
|
114
|
+
dept: {
|
|
115
|
+
title: '🏢 組織構造', subtitle: '部門帝国を管理——構築、配置、最適化をワンストップで',
|
|
116
|
+
viewOrgTree: '🌳 組織図を見る', createDept: '➕ 新部門設立',
|
|
117
|
+
empty: 'まだ部門がありません', emptyHint: '秘書が疲れ知らずのAIチームを編成してくれます',
|
|
118
|
+
viewDetail: 'クリックで詳細 →', members: '{n}名', 'members.count': '{n}名',
|
|
119
|
+
detail: {
|
|
120
|
+
members: '👥 部門メンバー', requirements: '📋 要件リスト', reports: '📊 プロジェクト報告',
|
|
121
|
+
adjustBtn: '🔧 人員調整', disbandBtn: '💣 部門解散',
|
|
122
|
+
performance: 'パフォーマンス {score}', memory: 'メモリ {n}', tasks: 'タスク {n}', leader: '👔 責任者',
|
|
123
|
+
},
|
|
124
|
+
dismiss: {
|
|
125
|
+
title: '🔥 解雇確認', desc: '{name}を解雇しますか?解雇後は人材市場に移動します。',
|
|
126
|
+
reasonLabel: '解雇理由', reasonPlaceholder: '例:配置転換', confirmBtn: '解雇を確認',
|
|
127
|
+
},
|
|
128
|
+
disband: {
|
|
129
|
+
title: '💣 部門解散', desc: '{name}を解散しますか?', descSuffix: '全メンバーが解雇され人材市場に移動します。',
|
|
130
|
+
reasonLabel: '解散理由', reasonPlaceholder: '例:事業方針変更', confirmBtn: '解散を確認', disbanding: '💥 解散中...',
|
|
131
|
+
},
|
|
132
|
+
adjust: {
|
|
133
|
+
title: '🔧 人員調整', desc: '秘書に調整目標を伝えてください。現在の人員配置を分析し、増員か削減かを判断します。',
|
|
134
|
+
currentDept: '現在の部門', currentMembers: 'メンバー: {n}名',
|
|
135
|
+
goalLabel: '調整目標', goalPlaceholder: "例:'フロントエンドエンジニアを追加' / '低パフォーマー削減'",
|
|
136
|
+
planBtn: '📋 調整計画を生成', planning: '🧠 秘書が分析中...',
|
|
137
|
+
reviewTitle: '📋 調整計画レビュー', reviewDesc: '秘書が「{dept}」に作成した調整計画:',
|
|
138
|
+
firesTitle: '🔥 削減 ({n}名)', hiresTitle: '➕ 増員 ({n}名)',
|
|
139
|
+
noChanges: '秘書は現在の人員配置が適切と判断しました 🤷', rejectBtn: '差し戻し', approveBtn: '✅ 承認・実行', executing: '🔨 実行中...',
|
|
140
|
+
},
|
|
141
|
+
create: {
|
|
142
|
+
title: '🏢 新部門設立', nameLabel: '部門名', namePlaceholder: '例:永久機関プログラミング部',
|
|
143
|
+
missionLabel: '部門ミッション', missionPlaceholder: 'この部門が何をするかを詳細に説明してください',
|
|
144
|
+
cancelBtn: 'やめる', planBtn: '📋 計画を生成', planning: '🧠 秘書が計画中...',
|
|
145
|
+
reviewTitle: '📋 採用計画レビュー', reviewDesc: '秘書が「{dept}」に計画したチーム:',
|
|
146
|
+
rejectBtn: '差し戻し', approveBtn: '✅ 承認・採用', hiring: '🔨 採用中...',
|
|
147
|
+
},
|
|
148
|
+
orgTree: { title: '🌳 組織図' },
|
|
149
|
+
newReq: {
|
|
150
|
+
btn: '📋 新規要件',
|
|
151
|
+
title: '📋 新規要件',
|
|
152
|
+
nameLabel: '要件タイトル',
|
|
153
|
+
namePlaceholder: '例:ユーザーログインページを開発',
|
|
154
|
+
descLabel: '説明',
|
|
155
|
+
descPlaceholder: '要件を詳しく説明してください...',
|
|
156
|
+
workspaceDirLabel: '📁 カスタム作業ディレクトリ(オプション)',
|
|
157
|
+
workspaceDirPlaceholder: '例:/Users/xxx/my-project(空白の場合はデフォルトを使用)',
|
|
158
|
+
workspaceDirHint: '💡 この要件の作業ディレクトリとしてローカルフォルダを指定します。',
|
|
159
|
+
submitBtn: '🚀 作成・実行',
|
|
160
|
+
creating: '⏳ 作成中...',
|
|
161
|
+
browseTitle: '作業ディレクトリを選択',
|
|
162
|
+
selectDir: 'このディレクトリを選択',
|
|
163
|
+
emptyDir: 'このフォルダにサブディレクトリはありません',
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
talent: {
|
|
167
|
+
title: '🏪 人材市場', subtitle: '解雇された社員がここで新しい機会を待っています',
|
|
168
|
+
empty: '人材市場に人がいません', emptyHint: '解雇された社員が自動的に人材市場に入ります',
|
|
169
|
+
recallBtn: '📞 呼び戻す', deleteBtn: '🗑',
|
|
170
|
+
dismissReason: '📤 解雇理由: {reason}', memoryCount: '🧠 持ち出しメモリ: {n}件', registeredAt: '📅 市場参入: {date}', score: '{score}点',
|
|
171
|
+
recall: { title: '📞 {name}を呼び戻す', desc: '対象部門を選択——元のメモリとスキルを持って復帰します', deptLabel: '対象部門', deptPlaceholder: '部門を選択', confirmBtn: '呼び戻しを確認' },
|
|
172
|
+
deleteConfirm: { title: '🗑 {name}を削除', desc: 'この人材を完全に削除しますか?元に戻せません。', confirmBtn: '削除を確認', deleting: '削除中...' },
|
|
173
|
+
},
|
|
174
|
+
providers: {
|
|
175
|
+
title: '⚡ AIプロバイダー', subtitle: 'API Keyを設定すると、HRが対応する社員を採用できます。',
|
|
176
|
+
hint: { title: '💡 HR採用戦略', desc: 'HRは<strong class="text-green-400">高評価+低価格</strong>のプロバイダーを優先します。' },
|
|
177
|
+
categories: { general: '汎用職', drawing: '描画職', music: '音楽職', video: '動画職', cli: 'ローカルコーディングエンジン', browser: 'ブラウザ (DOM)' },
|
|
178
|
+
enabled: '{n}/{total} 有効',
|
|
179
|
+
configure: { title: '🔑 {name}を設定', provider: 'プロバイダー: {name}', apiKeyLabel: 'API Key', apiKeyPlaceholder: 'API Keyを入力' },
|
|
180
|
+
talentMarket: { btn: '人材市場' },
|
|
181
|
+
unknown: '不明',
|
|
182
|
+
apiKeyLabel: 'API キー',
|
|
183
|
+
pluginsCount: '{n} プラグイン',
|
|
184
|
+
toolsCount: '🔧 {n} ツール',
|
|
185
|
+
hooksCount: '🪝 {n} フック',
|
|
186
|
+
skillsCount: '{n} スキル',
|
|
187
|
+
cloudApiModels: 'クラウド API モデル',
|
|
188
|
+
noCliDetected: 'CLI エージェントは検出されませんでした',
|
|
189
|
+
},
|
|
190
|
+
requirements: {
|
|
191
|
+
title: '📋 要件ボード', subtitle: '全要件を管理——進捗追跡、成果物確認、グループチャット観察',
|
|
192
|
+
stats: { all: '全要件', inProgress: '進行中', completed: '完了', failed: '失敗' },
|
|
193
|
+
empty: 'まだ要件がありません', emptyHint: '秘書とチャットしてタスクを割り当てよう!',
|
|
194
|
+
status: { pending: '未処理', planning: '計画中', in_progress: '実行中', pending_approval: '承認待ち', completed: '完了', failed: '失敗' },
|
|
195
|
+
summary: { success: '✅ {n}/{total} 成功', duration: '⏱️ {n}秒' },
|
|
196
|
+
},
|
|
197
|
+
messages: {
|
|
198
|
+
title: '💬 通信ログ', subtitle: 'エージェント間のメッセージ通信記録',
|
|
199
|
+
totalMessages: '総メッセージ数', activeAgents: 'アクティブエージェント', messageTypes: 'メッセージタイプ',
|
|
200
|
+
noRecords: '通信記録なし', noRecordsHint: 'エージェントがタスク実行時に自動的に通信メッセージを生成します',
|
|
201
|
+
},
|
|
202
|
+
agent: {
|
|
203
|
+
notFound: '社員情報が見つかりません',
|
|
204
|
+
tabs: { info: '📋 基本情報', memory: '🧠 メモリ', performance: '📊 パフォーマンス', tasks: '📝 タスク履歴', usage: '💰 消費' },
|
|
205
|
+
memorySubTabs: { personal: '💭 個人', social: '👥 対人関係' },
|
|
206
|
+
avgPerformance: '平均パフォーマンス {score}', rolePrompt: 'ロールプロンプト', skills: 'スキル',
|
|
207
|
+
shortTermMemory: '⚡ 短期メモリ ({n})', longTermMemory: '💾 長期メモリ ({n})',
|
|
208
|
+
noShortTerm: '短期メモリなし', noLongTerm: '長期メモリなし',
|
|
209
|
+
noRelationships: '対人記憶なし',
|
|
210
|
+
relationshipName: '名前',
|
|
211
|
+
relationshipImpression: '印象',
|
|
212
|
+
relationshipAffinity: '好感度',
|
|
213
|
+
noPerformance: 'パフォーマンス記録なし', noTasks: 'タスク記録なし',
|
|
214
|
+
incentiveTitle: 'インセンティブ ({n})', incentive_outstanding: '卓越', incentive_excellent: '優秀', scorePoints: '{score}点',
|
|
215
|
+
totalCost: '総コスト', totalTokens: '総トークン', promptTokens: 'プロンプトトークン', completionTokens: '完了トークン',
|
|
216
|
+
callCount: 'LLM呼び出し回数', callUnit: '回', usageHint: '💡 消費データは実際のLLM API呼び出しのusage情報の累積です',
|
|
217
|
+
toolCalls: '🔧 {n}回のツール呼び出し',
|
|
218
|
+
taskEngine: 'タスクエンジン', chatEngine: 'チャットエンジン',
|
|
219
|
+
engineCli: '🖥️ {name}', engineLlm: '☁️ {name}',
|
|
220
|
+
engineFallbackHint: '(CLIはコードタスク専用、チャットは{name}が代行)',
|
|
221
|
+
highPerformer: 'ハイパフォーマー',
|
|
222
|
+
},
|
|
223
|
+
orgTree: {
|
|
224
|
+
title: '🌳 指揮系統', subtitle: '誰が誰を指揮するか一目瞭然。ノードをクリックして詳細を見る。',
|
|
225
|
+
boss: '究極の資本家', secretary: '専属秘書(首席共犯者)', noLeader: '責任者未定', empty: 'まだ部下がいない——孤独な暴君',
|
|
226
|
+
},
|
|
227
|
+
secretarySettings: {
|
|
228
|
+
title: '⚙️ 秘書設定', subtitle: '首席共犯者を調教する',
|
|
229
|
+
tabProfile: '👤 基本情報', tabSoul: '🧠 魂',
|
|
230
|
+
nameLabel: '秘書の名前', namePlaceholder: '例:アリス、ジャービス',
|
|
231
|
+
avatarStyle: 'アバタースタイル', refreshAvatar: '🔄 シャッフル',
|
|
232
|
+
previewStyle: 'スタイル', previewSeed: 'シード', previewHint: '💡 下のスタイルをクリックするか「シャッフル」でランダム生成',
|
|
233
|
+
providerLabel: '🧠 サービスプロバイダー', providerDesc: '秘書とHRアシスタントが使用するAIモデル。',
|
|
234
|
+
noProviders: '⚠️ 利用可能なプロバイダーがありません。まずAIプロバイダーページでAPI Keyを設定してください',
|
|
235
|
+
signatureLabel: '個性シグネチャー', signaturePlaceholder: '例:効率こそ命',
|
|
236
|
+
promptLabel: '🧠 洗脳スクリプト(システムプロンプト)',
|
|
237
|
+
promptDesc: '秘書の人格設定です。指示の理解、チーム計画、コミュニケーション方法を決定します。',
|
|
238
|
+
charCount: '文字数: {n}', restoreDefault: 'デフォルトに戻す',
|
|
239
|
+
modelInfo: 'モデル: {provider} · Token: {info}', withHR: 'HRアシスタント含む',
|
|
240
|
+
saved: '✅ 保存済み', saving: '⏳ 保存中...', saveBtn: '💾 設定を保存',
|
|
241
|
+
},
|
|
242
|
+
reqDetail: {
|
|
243
|
+
back: '← リストに戻る',
|
|
244
|
+
backShort: '戻る',
|
|
245
|
+
executingShort: '⚙️ 実行中',
|
|
246
|
+
status: { pending: '未処理', planning: '計画中', in_progress: '実行中', pending_approval: '承認待ち', completed: '完了', failed: '失敗' },
|
|
247
|
+
deleteBtn: '🗑 削除', restartBtn: '🔄 再実行',
|
|
248
|
+
tabs: { workflow: '📊 ワークフロー', chat: '💬 グループチャット', outputs: '📦 成果物', files: '📁 ファイル', office: '🏢 オフィス' },
|
|
249
|
+
deleteConfirm: { title: '🗑 要件削除', desc: 'この要件を削除しますか?元に戻せません。', confirmBtn: '削除を確認' },
|
|
250
|
+
summary: { tasks: '✅ {n}/{total} タスク', duration: '⏱️ {n}秒' },
|
|
251
|
+
timeDuration: '⏱ 所要時間 {n}秒',
|
|
252
|
+
workflow: { progress: '全体進捗', running: '実行中', completed: '完了', failed: '失敗', pending: '待機中', typing: '作業中...', notParsed: 'ワークフロー未解析', leader: 'リーダー', planning: '要件を分析・分解中...' },
|
|
253
|
+
live: {
|
|
254
|
+
stuck: '🔴 停止している可能性', waiting: '🟡 応答待ち...', running: '🟢 実行中',
|
|
255
|
+
secondsAgo: '{n}秒前', minutesAgo: '{n}分前',
|
|
256
|
+
restarting: '🔄 再起動中...', restart: '🔄 再起動',
|
|
257
|
+
deleteReq: '🗑️ 要件削除', confirmDelete: '削除を確認?', recentFiles: '最近のファイル:',
|
|
258
|
+
},
|
|
259
|
+
approvalHint: '「OK」と返信して承認、またはフィードバックを入力...',
|
|
260
|
+
chat: { noMessages: 'グループチャットメッセージなし', noMessagesHint: 'タスク実行時の社員間コミュニケーションがここに表示されます' },
|
|
261
|
+
outputs: { noOutputs: '成果物なし', noOutputsHint: 'タスク完了後の成果物がここに表示されます', noOutputsShort: '成果物なし', collapse: '折りたたむ ▲', expand: '展開する ▼' },
|
|
262
|
+
files: {
|
|
263
|
+
noChanges: 'ファイル変更なし', noChangesHint: 'タスク実行中に生成されたファイルがここに表示されます',
|
|
264
|
+
explorer: 'エクスプローラー', fileCount: '{n} ファイル', syncing: 'リアルタイム同期中', syncingShort: '同期中...',
|
|
265
|
+
loading: '読み込み中...', emptyFile: '(空ファイル)', noContent: '(内容なし)', readFailed: '(読み取り失敗)',
|
|
266
|
+
lines: '{n} 行', readOnly: '読み取り専用', clickToView: 'ファイルをクリックして内容を表示', syntaxHighlight: '構文ハイライト · リアルタイム同期',
|
|
267
|
+
},
|
|
268
|
+
members: {
|
|
269
|
+
blockingTitle: '⏱️ 現在のブロッキング', title: '👥 メンバー', count: '({n})',
|
|
270
|
+
running: '実行中', reviewing: 'レビュー中', revision: '修正中', waiting: '待機中', ready: '準備完了', completed: '完了', failed: '失敗',
|
|
271
|
+
working: '⚡作業中', noTask: 'タスクなし', peekFlow: 'フローを覗く', viewProfile: 'プロフィール表示',
|
|
272
|
+
taskTooltip: 'タスク: {tasks}',
|
|
273
|
+
},
|
|
274
|
+
flowPeek: {
|
|
275
|
+
title: '{name}のフローを覗く', tabFlow: '📋 作業ログ', tabThoughts: '💭 独白', tabHistory: '📜 履歴',
|
|
276
|
+
loading: '心を覗いています...', noFlowLogs: '作業ログなし', noFlowLogsHint: 'エージェントが作業を開始するとここに表示されます',
|
|
277
|
+
thinking: '🧠 思考中...', decided: '💬 発言を決定', silent: '🤫 沈黙', thought: '💭 独白', organizing: '思考整理中...',
|
|
278
|
+
noMonologue: 'アクティブな独白なし', noHistory: '履歴なし', recentlyThought: 'さっき思考した', spoke: '💬 発言', keptSilent: '🤫 沈黙を維持', codeBlock: '[コードブロック]',
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
display: {
|
|
282
|
+
ageYears: '{n}歳',
|
|
283
|
+
ageLabel: '年齢',
|
|
284
|
+
ageUnknown: '不明',
|
|
285
|
+
genderFemale: '👩',
|
|
286
|
+
genderMale: '👨',
|
|
287
|
+
genderFemaleText: '👩 女性',
|
|
288
|
+
genderMaleText: '👨 男性',
|
|
289
|
+
personality: '性格',
|
|
290
|
+
},
|
|
291
|
+
fileRef: {
|
|
292
|
+
viewFile: 'ファイルを表示',
|
|
293
|
+
loading: '読み込み中...',
|
|
294
|
+
loadFailed: 'ファイル内容の読み込みに失敗',
|
|
295
|
+
close: '閉じる',
|
|
296
|
+
lines: '{n} 行',
|
|
297
|
+
copyPath: 'パスをコピー',
|
|
298
|
+
copied: 'コピー済み!',
|
|
299
|
+
},
|
|
300
|
+
time: { justNow: 'たった今', minutesAgo: '{n}分前', sun: '日', mon: '月', tue: '火', wed: '水', thu: '木', fri: '金', sat: '土' },
|
|
301
|
+
agentChat: {
|
|
302
|
+
subtitle: '1対1プライベートチャット',
|
|
303
|
+
empty: '{name}に挨拶しよう!',
|
|
304
|
+
inputPlaceholder: '{name}にメッセージ...',
|
|
305
|
+
typing: '入力中...',
|
|
306
|
+
error: '送信失敗',
|
|
307
|
+
chatBtn: '💬 チャット',
|
|
308
|
+
},
|
|
309
|
+
team: {
|
|
310
|
+
back: '部門に戻る',
|
|
311
|
+
noDescription: '説明なし',
|
|
312
|
+
newSprint: '新しいスプリント',
|
|
313
|
+
members: '名',
|
|
314
|
+
sprints: 'スプリント',
|
|
315
|
+
leader: '👔 リーダー',
|
|
316
|
+
tab: { overview: '📋 概要', sprints: '🔄 スプリント', files: '📁 ファイル' },
|
|
317
|
+
membersTitle: '👥 チームメンバー',
|
|
318
|
+
skillsTitle: '🛠 チームスキル',
|
|
319
|
+
editSkills: '編集',
|
|
320
|
+
skillsPlaceholder: 'カンマ区切りスキル、例:React, Node.js, Python',
|
|
321
|
+
noSkills: 'スキル未設定',
|
|
322
|
+
workspaceTitle: '📁 ワークスペース',
|
|
323
|
+
selectWorkspace: 'ワークスペースを選択',
|
|
324
|
+
noWorkspace: 'ワークスペース未選択',
|
|
325
|
+
recentSprints: '🔄 最近のスプリント',
|
|
326
|
+
noSprints: 'スプリントなし——最初のスプリントを作成しましょう',
|
|
327
|
+
newTeamBtn: '👥 新チーム',
|
|
328
|
+
teamsCount: 'チーム',
|
|
329
|
+
teamsTitle: 'チーム一覧',
|
|
330
|
+
noTeams: 'チームなし——プロジェクトのためにチームを作成しましょう',
|
|
331
|
+
nameLabel: 'チーム名',
|
|
332
|
+
namePlaceholder: '例:プロジェクトAlphaチーム',
|
|
333
|
+
descLabel: '説明',
|
|
334
|
+
descPlaceholder: 'このチームは何をしますか?',
|
|
335
|
+
selectMembers: 'メンバーを選択',
|
|
336
|
+
selectLeader: 'リーダーを選択',
|
|
337
|
+
selectLeaderPlaceholder: '-- リーダーを選択 --',
|
|
338
|
+
createBtn: '🚀 チームを作成',
|
|
339
|
+
sprint: {
|
|
340
|
+
draft: '下書き',
|
|
341
|
+
discussing: '議論中',
|
|
342
|
+
pendingApproval: '承認待ち',
|
|
343
|
+
inProgress: '実行中',
|
|
344
|
+
completed: '完了',
|
|
345
|
+
failed: '失敗',
|
|
346
|
+
backToList: 'スプリント一覧に戻る',
|
|
347
|
+
startDiscussion: '💬 議論を開始',
|
|
348
|
+
approve: '✅ 承認・開始',
|
|
349
|
+
confirmDelete: 'このスプリントを削除しますか?',
|
|
350
|
+
goal: 'スプリント目標',
|
|
351
|
+
plan: 'スプリント計画',
|
|
352
|
+
noPlan: 'スプリント計画はまだありません',
|
|
353
|
+
chat: 'グループチャット',
|
|
354
|
+
workflow: 'ワークフロー',
|
|
355
|
+
outputs: '成果物',
|
|
356
|
+
noMessages: 'メッセージなし',
|
|
357
|
+
chatPlaceholder: 'チームにメッセージを送信...',
|
|
358
|
+
titleLabel: 'スプリントタイトル',
|
|
359
|
+
titlePlaceholder: '例:v1.0 MVPスプリント',
|
|
360
|
+
goalLabel: 'スプリント目標',
|
|
361
|
+
goalPlaceholder: 'このスプリントで達成すべきことを説明...',
|
|
362
|
+
createBtn: '🚀 スプリントを作成',
|
|
363
|
+
viewRequirement: '📋 要件を表示',
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
bossProfile: {
|
|
367
|
+
title: '👤 ボスプロフィール',
|
|
368
|
+
subtitle: 'アバターをカスタマイズ、最高資本家',
|
|
369
|
+
avatarTitle: 'アバターを選択',
|
|
370
|
+
refreshAvatar: '🔄 シャッフル',
|
|
371
|
+
saved: '✅ 保存済み',
|
|
372
|
+
saving: '⏳ 保存中...',
|
|
373
|
+
saveBtn: '💾 保存',
|
|
374
|
+
editAvatar: 'アバター編集',
|
|
375
|
+
},
|
|
376
|
+
systemSettings: {
|
|
377
|
+
title: '⚙️ システム設定',
|
|
378
|
+
subtitle: '定期タスク、プラグイン、システム健全性の管理',
|
|
379
|
+
cards: { audit: 'セキュリティ監査', routing: 'ルーティング', plugins: 'プラグイン', cron: '定期タスク', hooks: 'イベントフック', sessions: 'セッション', config: '設定' },
|
|
380
|
+
auditStats: { totalEvents: '総イベント', blocked: 'ブロック済み' },
|
|
381
|
+
pluginStats: { registered: '登録済み', enabled: '有効' },
|
|
382
|
+
cronStats: { running: '実行中', jobs: 'タスク数' },
|
|
383
|
+
hookStats: { handlers: 'ハンドラー', eventKeys: 'イベントキー' },
|
|
384
|
+
sessionStats: { total: '総セッション', messages: 'メッセージ' },
|
|
385
|
+
cronDetail: { jobList: '定期タスク一覧', createJob: '定期タスク作成', runs: '実行回数', noJobs: '定期タスクなし', noJobsHint: '定期タスクを作成して、エージェントの作業を自動化', activeJobs: 'アクティブ', totalRuns: '総実行回数' },
|
|
386
|
+
cronForm: { name: 'タスク名', schedule: 'スケジュール(例: every 30m, daily 09:00)', selectAgent: '-- エージェントを選択 --', taskPrompt: 'エージェントへの指示...', scheduleHint: '形式: "every 5m", "every 2h", "daily 09:00", "weekly mon 10:00"' },
|
|
387
|
+
pluginDetail: { noPlugins: 'プラグインなし', totalTools: 'ツール数' },
|
|
388
|
+
health: { title: 'システム健全性', providerHealth: 'AIプロバイダー健全性', recentAudit: '最近の監査イベント' },
|
|
389
|
+
cliBackends: {
|
|
390
|
+
title: 'CLIバックエンド', subtitle: 'ローカルCLIコーディングアシスタントをAgent実行エンジンとして統合',
|
|
391
|
+
detectAll: '全て検出', detecting: '検出中...', registerCustom: 'カスタムCLI登録',
|
|
392
|
+
noBackends: 'CLIバックエンドが検出されませんでした', noBackendsHint: 'Claude Code、Codex、CodeBuddyなどのCLIツールをインストールして検出をクリック',
|
|
393
|
+
status: { detected: '検出済み', not_found: '未検出', configured: '設定済み', error: 'エラー' },
|
|
394
|
+
version: 'バージョン', command: 'コマンド', nodeVersion: 'Nodeバージョン', builtin: '組込み', custom: 'カスタム', remove: '削除',
|
|
395
|
+
form: { id: 'バックエンドID', name: '表示名', execCommand: '実行コマンド', execArgs: '引数(カンマ区切り)', detectCommand: '検出コマンド', memoryDir: 'Memoryディレクトリ', memoryFile: 'Memoryファイル名', nvmNode: 'Nodeバージョン(nvm)', nvmNodeHint: '不要な場合は空欄' },
|
|
396
|
+
},
|
|
397
|
+
kbEntryTypes: {
|
|
398
|
+
note: '📝 ノート',
|
|
399
|
+
fact: '📌 事実',
|
|
400
|
+
decision: '⚖️ 決定',
|
|
401
|
+
procedure: '📋 手順',
|
|
402
|
+
reference: '📖 参考',
|
|
403
|
+
faq: '❓ よくある質問',
|
|
404
|
+
},
|
|
405
|
+
cronJobActions: {
|
|
406
|
+
pause: '一時停止',
|
|
407
|
+
resume: '再開',
|
|
408
|
+
retry: '再試行',
|
|
409
|
+
runNow: '今すぐ実行',
|
|
410
|
+
delete: '削除',
|
|
411
|
+
},
|
|
412
|
+
agentChanges: '⚡ エージェント変更',
|
|
413
|
+
monologue: '🧠 内なる独白',
|
|
414
|
+
noMonologueYet: 'このエージェントはまだ独白を生成していません',
|
|
415
|
+
sendToGroupChat: '[グループチャットに送信]',
|
|
416
|
+
autoSent: '自動送信',
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
// === API レスポンスメッセージ ===
|
|
420
|
+
api: {
|
|
421
|
+
noCompany: '最初に会社を作成してください',
|
|
422
|
+
internalError: '内部サーバーエラー',
|
|
423
|
+
unknownAction: '不明なアクション',
|
|
424
|
+
unknownOperation: '不明な操作',
|
|
425
|
+
missingField: '{field} は必須です',
|
|
426
|
+
missingFields: '必須フィールドがありません:{fields}',
|
|
427
|
+
companyNameRequired: '会社名を入力してください',
|
|
428
|
+
companyDissolved: '会社が解散され、すべてのデータが削除されました',
|
|
429
|
+
deptNameMissionRequired: '部署名とミッションは必須です',
|
|
430
|
+
deptIdRequired: '部署 ID は必須です',
|
|
431
|
+
deptIdAdjustGoalRequired: '部署 ID と調整目標は必須です',
|
|
432
|
+
deptIdMessageRequired: '部署 ID とメッセージは必須です',
|
|
433
|
+
adjustPlanIdRequired: '調整プラン ID は必須です',
|
|
434
|
+
planIdRequired: 'プラン ID は必須です',
|
|
435
|
+
deptNotFound: '部署が見つかりません',
|
|
436
|
+
deptNotFoundRestart: '部署が見つからないため、再起動できません',
|
|
437
|
+
agentNotFound: '従業員が見つかりません',
|
|
438
|
+
agentConfigUpdated: 'エージェント設定が更新されました',
|
|
439
|
+
messageRequired: 'メッセージを入力してください',
|
|
440
|
+
requirementNotFound: '要件が見つかりません',
|
|
441
|
+
requirementIdRequired: '要件 ID は必須です',
|
|
442
|
+
requirementDeptTitleRequired: 'departmentId と title は必須です',
|
|
443
|
+
requirementRestarted: '要件が再起動されました',
|
|
444
|
+
requirementIdMessageRequired: '要件 ID とメッセージは必須です',
|
|
445
|
+
teamNotFound: 'チームが見つかりません',
|
|
446
|
+
teamIdRequired: 'teamId は必須です',
|
|
447
|
+
teamCreateRequired: 'departmentId、name、memberIds、leaderId は必須です',
|
|
448
|
+
leaderNotFound: '部署にリーダーが見つかりません',
|
|
449
|
+
memberNotFound: '部署にメンバー {id} が見つかりません',
|
|
450
|
+
sprintNotFound: 'スプリントが見つかりません',
|
|
451
|
+
sprintCreateRequired: 'teamId、title、goal は必須です',
|
|
452
|
+
sprintDiscussRequired: 'teamId と sprintId は必須です',
|
|
453
|
+
sprintNotDraft: 'スプリントはドラフト状態ではありません',
|
|
454
|
+
sprintNotPendingApproval: 'スプリントは承認待ち状態ではありません',
|
|
455
|
+
sprintMessageRequired: 'teamId、sprintId、message は必須です',
|
|
456
|
+
teamDeleteIdRequired: 'チーム ID は必須です',
|
|
457
|
+
targetDeptRequired: 'ターゲット部署を選択してください',
|
|
458
|
+
secretarySettingRequired: '少なくとも1つの設定を提供してください',
|
|
459
|
+
providerNotFound: 'プロバイダーが見つかりません',
|
|
460
|
+
companyNotFound: '会社が見つかりません',
|
|
461
|
+
mailNotFound: 'メールが見つかりません',
|
|
462
|
+
kbNotFound: 'ナレッジベースが見つかりません',
|
|
463
|
+
kbUnknownAction: '不明なアクション:{action}',
|
|
464
|
+
cronMissingFields: '必須フィールドがありません:name、cronExpression、agentId、taskPrompt',
|
|
465
|
+
agentNotFoundId: 'エージェントが見つかりません:{id}',
|
|
466
|
+
missingPluginId: 'pluginId がありません',
|
|
467
|
+
missingSkillId: 'skillId がありません',
|
|
468
|
+
pluginUnknownAction: '不明なアクション:{action}',
|
|
469
|
+
missingBackendId: 'backendId がありません',
|
|
470
|
+
cliConfigRequired: '設定には少なくとも id と execCommand が必要です',
|
|
471
|
+
filePathRequired: 'ファイルパスは必須です(クエリパラメータ:path)',
|
|
472
|
+
fileNotFound: 'ファイルが見つかりません',
|
|
473
|
+
pathNotExist: 'パスが存在しません',
|
|
474
|
+
pathNotDirectory: 'パスはディレクトリではありません',
|
|
475
|
+
|
|
476
|
+
// Sprint group chat system messages (user-visible)
|
|
477
|
+
sprintCreated: '📋 スプリント「{title}」を作成しました。目標:{goal}',
|
|
478
|
+
sprintDiscussionOpening: '📢 皆さん、スプリント「{title}」の計画について議論しましょう。\n\n🎯 スプリント目標:{goal}\n\n各自の専門分野に基づいてご意見をお聞かせください。最終案にまとめます。',
|
|
479
|
+
sprintDiscussionComplete: '✅ 議論完了!チームのフィードバックを基に計画を修正しました。ボスの承認待ちです。',
|
|
480
|
+
sprintDiscussionError: '⚠️ 議論中にエラーが発生しました:{error}。現在の計画を承認申請します。',
|
|
481
|
+
sprintApproved: '✅ 承認されました!計画が受理され、チームのための要件タスクを作成しています。',
|
|
482
|
+
sprintRequirementCreated: '📋 要件「{title}」が作成され、開始されました。要件ボードで詳細を確認できます。',
|
|
483
|
+
sprintRequirementFailed: '❌ 要件の作成または実行に失敗しました:{error}',
|
|
484
|
+
},
|
|
485
|
+
pixelOffice: {
|
|
486
|
+
title: 'オフィス',
|
|
487
|
+
depts: '部門',
|
|
488
|
+
agents: '名のエージェント',
|
|
489
|
+
agentInfo: 'エージェント情報',
|
|
490
|
+
name: '名前',
|
|
491
|
+
role: '役職',
|
|
492
|
+
department: '部門',
|
|
493
|
+
motto: 'モットー',
|
|
494
|
+
skills: 'スキル',
|
|
495
|
+
lastMessage: '最新メッセージ',
|
|
496
|
+
clickAgent: 'エージェントをクリックして情報を表示',
|
|
497
|
+
bubbleHint: '吹き出しは最近のチャットを表示',
|
|
498
|
+
walkHint: 'エージェントはオフィス内を歩き回ります',
|
|
499
|
+
},
|
|
500
|
+
};
|
|
501
|
+
export default ja;
|