@yorha2b-lab/autodev 5.5.1 → 5.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/autodev.js +6 -19
- package/package.json +1 -1
- package/src/{services/llm.js → ai/index.js} +2 -2
- package/src/{bootstrap → ai}/openai.js +2 -2
- package/src/bootstrap/index.js +16 -17
- package/src/commands/watch.js +7 -6
- package/src/dialogs/DE-DE.js +65 -0
- package/src/dialogs/ES-ES.js +61 -0
- package/src/dialogs/FR-FR.js +65 -0
- package/src/dialogs/ID-ID.js +66 -0
- package/src/dialogs/IT-IT.js +66 -0
- package/src/dialogs/JA-JP.js +63 -0
- package/src/dialogs/KO-KR.js +66 -0
- package/src/dialogs/PT-BR.js +66 -0
- package/src/dialogs/RU-RU.js +65 -0
- package/src/dialogs/TR-TR.js +66 -0
- package/src/dialogs/ZH-TW.js +66 -0
- package/src/framework/react/generator/index.js +4 -5
- package/src/handlers/api.js +4 -3
- package/src/handlers/page.js +4 -3
- package/src/handlers/part.js +3 -4
- package/src/{bootstrap/foundation.js → kernel/deployment.js} +5 -5
- package/src/{bootstrap/handlebar.js → kernel/engine.js} +5 -5
- package/src/kernel/queue.js +36 -0
- package/src/kernel/recruiter.js +14 -0
- package/src/labs/council.js +4 -5
- package/src/{bootstrap/labs.js → labs/index.js} +1 -1
- package/src/labs/tower.js +4 -4
- package/src/utils/foundation.js +7 -33
- package/src/utils/generator.js +98 -0
- package/src/utils/installer.js +15 -0
- package/src/utils/semantic.js +58 -0
- package/src/utils/ux.js +43 -20
- package/src/bootstrap/yorha.js +0 -36
- package/src/utils/core.js +0 -262
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
nineS: {
|
|
3
|
+
dataCamouflageComplete: 'Mock 데이터 생성 완료',
|
|
4
|
+
scanningField: 'Frontend/Backend 필드 차이 스캔 중... 시맨틱 브리지 프로토콜 실행',
|
|
5
|
+
dataCamouflage: fileName => `대상 방화벽 돌파 중... 데이터 위장 프로토콜 실행 [${fileName}]`,
|
|
6
|
+
},
|
|
7
|
+
pod042: {
|
|
8
|
+
extractingUiMetadata: '뉴럴 클라우드 네트워크에서 UI 메타데이터 추출 중...',
|
|
9
|
+
simulate: '실제 요청 감지. 표준 시뮬레이션 패키지 투입: example.json',
|
|
10
|
+
queueEmpty: '대기열 비어 있음. Bunker에 Menu 라우팅 설정 동기화 중...',
|
|
11
|
+
uploadVisualMetadata: '시각 메타데이터를 본부로 전송 중. 시맨틱 분석 시작...',
|
|
12
|
+
visualPartCaptured: '부분 시각 샘플 감지. "파편 구축 프로토콜" 실행...',
|
|
13
|
+
partialConstruction: time => `보고: 부분 구축 완료. 소요 시간: ${time}s`,
|
|
14
|
+
partialRecommendation: '│ 권장: 아래 코드 블록을 대상 파일에 수동으로 통합하십시오',
|
|
15
|
+
constructionAborted: virus => `구축 중단. 논리 바이러스 또는 연결 시간 초과 감지: ${virus}`,
|
|
16
|
+
partialConstructionAborted: virus => `[경고] 파편 구축 실패. 논리 간섭 감지: ${virus}`,
|
|
17
|
+
visualCaptured: fileName => `시각 센서 캡처 완료: [${fileName}]. Bunker 자원을 배치하여 물리 구축 시작...`,
|
|
18
|
+
intercept: fileName => `모듈 [${fileName}]은(는) 이미 Bunker 데이터베이스에 존재합니다. 덮어쓰기를 방지하기 위해 구축 프로토콜을 건너뜁니다`,
|
|
19
|
+
assemblyComplete: (fileName, time) => `구축 프로토콜 완료. 모듈 [${fileName}] 물리적 장착 성공. 소요 시간: ${time}s`,
|
|
20
|
+
},
|
|
21
|
+
pod153: {
|
|
22
|
+
signalLinkFault: virus => `신호 연결 오류: ${virus}`,
|
|
23
|
+
formatError: '비표준 JSON 형식 감지. 원본 데이터 정렬 시도',
|
|
24
|
+
autonomousAddressing: '「전 채널 자동 주소 지정 프로토콜 [시맨틱 스캔 버전]」 실행...',
|
|
25
|
+
signalSynchronized: count => `${count}개의 노드 동기화 완료. 전원 활성화 확인`,
|
|
26
|
+
alignmentFailed: virus => `신호 정렬 실패. API 데이터가 강력한 방화벽에 의해 차단됨: ${virus}`,
|
|
27
|
+
inactiveModule: fileName => `비활성 모듈 [${fileName}] 발견. 9S 고정밀 분석 요청`,
|
|
28
|
+
capturedRuntimeSignal: fileName => `런타임 신호 [${fileName}] 포착. 자동 정렬 프로토콜 실행...`,
|
|
29
|
+
reconEncryptedData: fileName => `암호화 데이터 소스 [${fileName}] 발견. 시맨틱 정렬 시도...`,
|
|
30
|
+
unknownModule: fileName => `Bunker 데이터베이스에서 [${fileName}] 모듈 리소스를 찾을 수 없습니다. 먼저 시각 구축을 실행하십시오`,
|
|
31
|
+
bridgeProtocolComplete: (count, time) => `시맨틱 브리지 프로토콜 완료. ${count}개의 필드 차이 수정. 소요 시간: ${time}s`,
|
|
32
|
+
},
|
|
33
|
+
bunker: {
|
|
34
|
+
exit: '시스템 신호 손실...',
|
|
35
|
+
envCopy: '.env 저장 완료',
|
|
36
|
+
argDesc: 'Frontend 프레임워크 템플릿 지정',
|
|
37
|
+
systemStandby: '시스템 대기 상태...',
|
|
38
|
+
desc: 'AI 기반 Frontend CRUD 코드 생성기',
|
|
39
|
+
configCopy: 'config.js 저장 완료',
|
|
40
|
+
initDesc: '현재 디렉터리에 Bunker 구축 환경 초기화',
|
|
41
|
+
envCheck: '기존 .env 파일 발견. 생성을 건너뜁니다',
|
|
42
|
+
dataSynced: '모든 구축 데이터가 Bunker 저장 노드와 동기화되었습니다',
|
|
43
|
+
configCheck: '기존 config.js 파일 발견. 생성을 건너뜁니다',
|
|
44
|
+
linkSevered: '연결 종료: 네트워크 상태 또는 블랙박스 공명을 확인하십시오',
|
|
45
|
+
systemOffline: '뉴럴 클라우드 연결 해제 중. 데이터 물리 봉인 실행...',
|
|
46
|
+
copyTemplateError: virus => `템플릿 구축 실패: ${virus}`,
|
|
47
|
+
star: '이 프로젝트가 시간을 절약해 준다면 GitHub에서 Star를 눌러주세요 ⭐',
|
|
48
|
+
towerOnline: port => `신호 인터셉트 타워 온라인 [주파수: ${port}]`,
|
|
49
|
+
watchDesc: '전체 채널 연동 모니터링 시작: Page/Part/API 협동 구축 지원',
|
|
50
|
+
accessDenied: '본부 접근 거부: API Key 오류 또는 사용량 초과',
|
|
51
|
+
disclaimer: '매칭 결과는 참고용이며 최종 판단은 각 기체가 실제 상황에 따라 조정해야 합니다',
|
|
52
|
+
towerConnected: port => `명령: 프록시 대상을 http://localhost:${port} 로 설정하십시오`,
|
|
53
|
+
copyEnum: '│ Backend 원본 유전자(Enum) 발견\n│ 권장: 아래 코드를 해당 모듈 리소스 센터에 수동 적용하십시오',
|
|
54
|
+
networkInstability: count => `뉴럴 클라우드 연결 불안정. 재연결 시도 중... (${count}번째 시도)`,
|
|
55
|
+
frameworkNotSupported: template => `[${template}] 프레임워크는 아직 지원되지 않습니다. Pull Request 환영합니다`,
|
|
56
|
+
strategicThreshold: (target, current) => `물리 복제 수가 전략 임계값 ${target}을 초과했습니다! 현재 전력: ${current}`,
|
|
57
|
+
initComplete: cmd => `Bunker 배치 완료. 빠른 전장 진입을 위해 ${cmd} 를 package.json scripts에 추가하십시오`,
|
|
58
|
+
isLegendary: (unlockAchievement, current, target) =>
|
|
59
|
+
unlockAchievement
|
|
60
|
+
? '축하합니다 지휘관. 당신의 구축 프로토콜은 인류의 영광의 일부가 되었습니다'
|
|
61
|
+
: `현재 구축 수: ${current}. 업적 달성까지 ${target - current}회 남았습니다`,
|
|
62
|
+
},
|
|
63
|
+
operator6O: {
|
|
64
|
+
call2B: '2B 호출 완료. Bunker 전체 채널 연동 모니터링 시스템 준비 완료!',
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
nineS: {
|
|
3
|
+
dataCamouflageComplete: 'Geração de dados Mock concluída',
|
|
4
|
+
scanningField: 'Analisando diferenças entre campos Frontend/Backend... Executando protocolo de ponte semântica',
|
|
5
|
+
dataCamouflage: fileName => `Invadindo firewall do alvo... Executando protocolo de camuflagem de dados [${fileName}]`,
|
|
6
|
+
},
|
|
7
|
+
pod042: {
|
|
8
|
+
extractingUiMetadata: 'Extraindo metadados de UI da rede neural em nuvem...',
|
|
9
|
+
simulate: 'Requisição real detectada. Implantando pacote de simulação padrão: example.json',
|
|
10
|
+
queueEmpty: 'Fila vazia. Sincronizando configuração de rotas Menu com o Bunker...',
|
|
11
|
+
uploadVisualMetadata: 'Enviando metadados visuais ao comando central. Iniciando análise semântica...',
|
|
12
|
+
visualPartCaptured: 'Fragmento visual detectado. Executando "Protocolo de Construção Fragmentada"...',
|
|
13
|
+
partialConstruction: time => `Relatório: construção parcial concluída. Tempo: ${time}s`,
|
|
14
|
+
partialRecommendation: '│ Recomendação: integre manualmente o bloco de código acima no arquivo alvo',
|
|
15
|
+
constructionAborted: virus => `Construção interrompida. Vírus lógico ou tempo limite de conexão detectado: ${virus}`,
|
|
16
|
+
partialConstructionAborted: virus => `[Aviso] Falha na construção fragmentada. Interferência lógica detectada: ${virus}`,
|
|
17
|
+
visualCaptured: fileName => `Captura visual concluída: [${fileName}]. Alocando recursos do Bunker para construção física...`,
|
|
18
|
+
intercept: fileName => `Módulo [${fileName}] já existe no banco de dados do Bunker. Protocolo de construção ignorado para evitar sobrescrita`,
|
|
19
|
+
assemblyComplete: (fileName, time) => `Protocolo de construção finalizado. Módulo [${fileName}] instalado fisicamente. Tempo: ${time}s`,
|
|
20
|
+
},
|
|
21
|
+
pod153: {
|
|
22
|
+
signalLinkFault: virus => `Falha no link de sinal: ${virus}`,
|
|
23
|
+
formatError: 'Formato JSON fora do padrão detectado. Tentando alinhamento dos dados originais',
|
|
24
|
+
autonomousAddressing: 'Iniciando "Protocolo de Endereçamento Autônomo de Todos os Canais [Versão Semântica]"...',
|
|
25
|
+
signalSynchronized: count => `Sincronização concluída. ${count} nós energizados`,
|
|
26
|
+
alignmentFailed: virus => `Falha no alinhamento do sinal. Dados da API bloqueados pelo firewall: ${virus}`,
|
|
27
|
+
inactiveModule: fileName => `Módulo inativo encontrado [${fileName}]. Solicitando análise de alta precisão pelo 9S`,
|
|
28
|
+
capturedRuntimeSignal: fileName => `Sinal de execução capturado [${fileName}]. Executando protocolo automático de alinhamento...`,
|
|
29
|
+
reconEncryptedData: fileName => `Fonte de dados criptografada encontrada [${fileName}]. Tentando alinhamento semântico...`,
|
|
30
|
+
unknownModule: fileName => `Recurso do módulo [${fileName}] não encontrado no banco do Bunker. Execute primeiro a construção visual`,
|
|
31
|
+
bridgeProtocolComplete: (count, time) => `Protocolo de ponte semântica concluído. ${count} diferenças de campos corrigidas. Tempo: ${time}s`,
|
|
32
|
+
},
|
|
33
|
+
bunker: {
|
|
34
|
+
exit: 'Sinal do sistema perdido...',
|
|
35
|
+
envCopy: 'Arquivo .env salvo com sucesso',
|
|
36
|
+
argDesc: 'Definir template do framework frontend',
|
|
37
|
+
systemStandby: 'Sistema em modo de espera...',
|
|
38
|
+
desc: 'Gerador de código CRUD frontend alimentado por IA',
|
|
39
|
+
configCopy: 'Arquivo config.js salvo com sucesso',
|
|
40
|
+
initDesc: 'Inicializar ambiente de construção do Bunker no diretório atual',
|
|
41
|
+
envCheck: 'Arquivo .env existente encontrado. Criação ignorada',
|
|
42
|
+
dataSynced: 'Todos os dados de construção foram sincronizados com o nó de armazenamento do Bunker',
|
|
43
|
+
configCheck: 'Arquivo config.js existente encontrado. Criação ignorada',
|
|
44
|
+
linkSevered: 'Conexão interrompida: verifique o estado da rede ou a ressonância do Black Box',
|
|
45
|
+
systemOffline: 'Desconectando conexão neural em nuvem. Executando selamento físico dos dados...',
|
|
46
|
+
copyTemplateError: virus => `Falha na construção do template: ${virus}`,
|
|
47
|
+
star: 'Se este projeto ajudou você a economizar tempo, deixe uma estrela no GitHub ⭐',
|
|
48
|
+
towerOnline: port => `Torre de interceptação de sinais online [Frequência: ${port}]`,
|
|
49
|
+
watchDesc: 'Iniciar monitoramento de todos os canais: construção integrada de Page/Part/API',
|
|
50
|
+
accessDenied: 'Acesso ao comando central negado: API Key inválida ou limite excedido',
|
|
51
|
+
disclaimer: 'Os resultados de correspondência são apenas referências. Cada unidade deve ajustar conforme a situação real',
|
|
52
|
+
towerConnected: port => `Comando: direcione seu proxy para http://localhost:${port}`,
|
|
53
|
+
copyEnum: '│ Código genético original do Backend (Enum) detectado\n│ Recomendação: aplique manualmente o trecho abaixo no centro de recursos do módulo',
|
|
54
|
+
networkInstability: count => `Instabilidade na conexão neural em nuvem. Tentando reconectar... (tentativa ${count})`,
|
|
55
|
+
frameworkNotSupported: template => `Framework [${template}] ainda não suportado. Pull Requests são bem-vindos`,
|
|
56
|
+
strategicThreshold: (target, current) => `Número de cópias físicas ultrapassou o limite estratégico ${target}! Poder atual: ${current}`,
|
|
57
|
+
initComplete: cmd => `Implantação do Bunker concluída. Para acesso rápido ao campo de batalha, adicione ${cmd} aos scripts do package.json`,
|
|
58
|
+
isLegendary: (unlockAchievement, current, target) =>
|
|
59
|
+
unlockAchievement
|
|
60
|
+
? 'Parabéns comandante. Seu protocolo de construção tornou-se parte da glória da humanidade'
|
|
61
|
+
: `Construções atuais: ${current}. Faltam ${target - current} operações para conquistar a medalha`,
|
|
62
|
+
},
|
|
63
|
+
operator6O: {
|
|
64
|
+
call2B: 'Chamando 2B. Monitoramento global dos canais do Bunker pronto!',
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
nineS: {
|
|
3
|
+
dataCamouflageComplete: 'Генерация Mock-данных завершена',
|
|
4
|
+
scanningField: 'Сканирование различий полей Frontend/Backend... Запуск семантического моста',
|
|
5
|
+
dataCamouflage: fileName => `Взлом целевого брандмауэра... Запуск протокола маскировки данных [${fileName}]`,
|
|
6
|
+
},
|
|
7
|
+
pod042: {
|
|
8
|
+
extractingUiMetadata: 'Извлечение метаданных UI из нейронной облачной сети...',
|
|
9
|
+
simulate: 'Обнаружен реальный запрос. Развёртывание стандартного симуляционного пакета: example.json',
|
|
10
|
+
queueEmpty: 'Очередь пуста. Синхронизация конфигурации маршрутов Menu с Bunker...',
|
|
11
|
+
uploadVisualMetadata: 'Передача визуальных метаданных в штаб. Запуск семантического анализа...',
|
|
12
|
+
visualPartCaptured: 'Обнаружен локальный визуальный фрагмент. Запуск «протокола фрагментарной сборки»...',
|
|
13
|
+
partialConstruction: time => `Доклад: частичная сборка завершена. Время обработки: ${time}s`,
|
|
14
|
+
partialRecommendation: '│ Рекомендация: вручную интегрируйте указанный блок кода в целевой файл',
|
|
15
|
+
constructionAborted: virus => `Сборка прервана. Обнаружен логический вирус или превышение времени соединения: ${virus}`,
|
|
16
|
+
partialConstructionAborted: virus => `[Предупреждение] Ошибка фрагментарной сборки. Обнаружено логическое вмешательство: ${virus}`,
|
|
17
|
+
visualCaptured: fileName => `Визуальное сканирование завершено: [${fileName}]. Развёртывание ресурсов Bunker и запуск физической сборки...`,
|
|
18
|
+
intercept: fileName => `Модуль [${fileName}] уже существует в базе данных Bunker. Протокол сборки остановлен во избежание перезаписи`,
|
|
19
|
+
assemblyComplete: (fileName, time) => `Протокол сборки завершён. Модуль [${fileName}] успешно установлен. Время: ${time}s`,
|
|
20
|
+
},
|
|
21
|
+
pod153: {
|
|
22
|
+
signalLinkFault: virus => `Ошибка сигнального соединения: ${virus}`,
|
|
23
|
+
formatError: 'Обнаружен нестандартный формат JSON. Попытка синхронизации исходных данных',
|
|
24
|
+
autonomousAddressing: 'Запуск «протокола автоматической адресации всех каналов [семантическая версия]»...',
|
|
25
|
+
signalSynchronized: count => `Синхронизация ${count} узлов завершена. Питание подтверждено`,
|
|
26
|
+
alignmentFailed: virus => `Ошибка выравнивания сигнала. Данные API заблокированы мощным брандмауэром: ${virus}`,
|
|
27
|
+
inactiveModule: fileName => `Обнаружен неактивный модуль [${fileName}]. Запрошен высокоточный анализ 9S`,
|
|
28
|
+
capturedRuntimeSignal: fileName => `Перехвачен сигнал выполнения [${fileName}]. Запуск автоматического протокола выравнивания...`,
|
|
29
|
+
reconEncryptedData: fileName => `Обнаружен зашифрованный источник данных [${fileName}]. Попытка семантического согласования...`,
|
|
30
|
+
unknownModule: fileName => `Ресурс модуля [${fileName}] не найден в базе Bunker. Сначала выполните визуальную сборку`,
|
|
31
|
+
bridgeProtocolComplete: (count, time) => `Семантический мост завершён. Исправлено различий полей: ${count}. Время: ${time}s`,
|
|
32
|
+
},
|
|
33
|
+
bunker: {
|
|
34
|
+
exit: 'Системный сигнал потерян...',
|
|
35
|
+
envCopy: 'Сохранение .env завершено',
|
|
36
|
+
argDesc: 'Указать шаблон frontend-фреймворка',
|
|
37
|
+
systemStandby: 'Система находится в режиме ожидания...',
|
|
38
|
+
desc: 'AI-система генерации frontend CRUD-кода',
|
|
39
|
+
configCopy: 'Сохранение config.js завершено',
|
|
40
|
+
initDesc: 'Инициализация среды сборки Bunker в текущем каталоге',
|
|
41
|
+
envCheck: 'Обнаружен существующий файл .env. Генерация пропущена',
|
|
42
|
+
dataSynced: 'Все данные сборки синхронизированы с узлом хранения Bunker',
|
|
43
|
+
configCheck: 'Обнаружен существующий файл config.js. Генерация пропущена',
|
|
44
|
+
linkSevered: 'Соединение разорвано: проверьте состояние сети или резонанс чёрного ящика',
|
|
45
|
+
systemOffline: 'Отключение нейронного облачного соединения. Физическое запечатывание данных...',
|
|
46
|
+
copyTemplateError: virus => `Ошибка сборки шаблона: ${virus}`,
|
|
47
|
+
star: 'Если эта система помогла вам сэкономить время, поставьте звезду на GitHub ⭐',
|
|
48
|
+
towerOnline: port => `Башня перехвата сигналов активна [Частота: ${port}]`,
|
|
49
|
+
watchDesc: 'Запуск мониторинга всех каналов: совместная сборка Page/Part/API',
|
|
50
|
+
accessDenied: 'Доступ к штабу запрещён: неверный API Key или исчерпан лимит',
|
|
51
|
+
disclaimer: 'Результаты сопоставления являются справочными. Каждая единица должна выполнить собственную корректировку',
|
|
52
|
+
towerConnected: port => `Приказ: направьте прокси-цель на http://localhost:${port}`,
|
|
53
|
+
copyEnum: '│ Обнаружен генетический код Backend (Enum)\n│ Рекомендация: вручную внедрите следующий фрагмент кода в ресурсный модуль',
|
|
54
|
+
networkInstability: count => `Нестабильность нейронного облачного соединения. Повторное подключение... (попытка ${count})`,
|
|
55
|
+
frameworkNotSupported: template => `Фреймворк [${template}] пока не поддерживается. Pull Request приветствуются`,
|
|
56
|
+
strategicThreshold: (target, current) => `Количество физических копий превысило стратегический порог ${target}! Текущая мощность: ${current}`,
|
|
57
|
+
initComplete: cmd => `Развёртывание Bunker завершено. Для быстрого выхода на поле боя добавьте ${cmd} в scripts package.json вручную`,
|
|
58
|
+
isLegendary: (unlockAchievement, current, target) => unlockAchievement
|
|
59
|
+
? 'Поздравляем, командир. Ваш протокол сборки стал частью славы человечества'
|
|
60
|
+
: `Текущее количество сборок: ${current}. До получения награды осталось ${target - current}`,
|
|
61
|
+
},
|
|
62
|
+
operator6O: {
|
|
63
|
+
call2B: 'Связь с 2B установлена. Глобальная система мониторинга Bunker активирована!',
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
nineS: {
|
|
3
|
+
dataCamouflageComplete: 'Mock veri üretimi tamamlandı',
|
|
4
|
+
scanningField: 'Frontend/Backend alan farklılıkları analiz ediliyor... Semantik köprü protokolü başlatılıyor',
|
|
5
|
+
dataCamouflage: fileName => `Hedef güvenlik duvarı aşılıyor... Veri kamuflaj protokolü çalıştırılıyor [${fileName}]`,
|
|
6
|
+
},
|
|
7
|
+
pod042: {
|
|
8
|
+
extractingUiMetadata: 'Bulut sinir ağından UI meta verileri çıkarılıyor...',
|
|
9
|
+
simulate: 'Gerçek istek algılandı. Standart simülasyon paketi bırakılıyor: example.json',
|
|
10
|
+
queueEmpty: 'Kuyruk boş. Menü rota yapılandırması Bunker ile senkronize ediliyor...',
|
|
11
|
+
uploadVisualMetadata: 'Görsel meta veriler komuta merkezine gönderiliyor. Semantik analiz başlatılıyor...',
|
|
12
|
+
visualPartCaptured: 'Görsel parça algılandı. Parçalı inşa protokolü başlatılıyor...',
|
|
13
|
+
partialConstruction: time => `Rapor: Kısmi inşa tamamlandı. Süre: ${time}s`,
|
|
14
|
+
partialRecommendation: '│ Öneri: Yukarıdaki kod bloğunu hedef dosyaya manuel olarak entegre edin',
|
|
15
|
+
constructionAborted: virus => `İnşa durduruldu. Mantıksal virüs veya bağlantı zaman aşımı tespit edildi: ${virus}`,
|
|
16
|
+
partialConstructionAborted: virus => `[Uyarı] Parçalı inşa başarısız. Mantıksal engel tespit edildi: ${virus}`,
|
|
17
|
+
visualCaptured: fileName => `Görsel yakalama tamamlandı: [${fileName}]. Bunker kaynakları fiziksel inşa için hazırlanıyor...`,
|
|
18
|
+
intercept: fileName => `[${fileName}] modülü Bunker veritabanında zaten mevcut. Veri kaybını önlemek için işlem atlandı`,
|
|
19
|
+
assemblyComplete: (fileName, time) => `İnşa protokolü tamamlandı. [${fileName}] modülü fiziksel olarak kuruldu. Süre: ${time}s`,
|
|
20
|
+
},
|
|
21
|
+
pod153: {
|
|
22
|
+
signalLinkFault: virus => `Sinyal bağlantı hatası: ${virus}`,
|
|
23
|
+
formatError: 'Standart dışı JSON formatı. Ham veri hizalaması deneniyor',
|
|
24
|
+
autonomousAddressing: 'Çok kanallı otonom adresleme protokolü [semantik sürüm] başlatılıyor...',
|
|
25
|
+
signalSynchronized: count => `Sinyal senkronizasyonu tamamlandı. ${count} düğüm aktif edildi`,
|
|
26
|
+
alignmentFailed: virus => `Sinyal hizalama başarısız. API verileri güvenlik duvarına takıldı: ${virus}`,
|
|
27
|
+
inactiveModule: fileName => `[${fileName}] etkin olmayan modül bulundu. 9S yüksek hassasiyetli analiz talep ediyor`,
|
|
28
|
+
capturedRuntimeSignal: fileName => `Çalışma zamanı sinyali yakalandı [${fileName}]. Otomatik hizalama başlatılıyor...`,
|
|
29
|
+
reconEncryptedData: fileName => `Şifrelenmiş veri kaynağı bulundu [${fileName}]. Semantik hizalama deneniyor...`,
|
|
30
|
+
unknownModule: fileName => `[${fileName}] modül kaynağı Bunker veritabanında bulunamadı. Önce görsel inşa gerçekleştirin`,
|
|
31
|
+
bridgeProtocolComplete: (count, time) => `Semantik köprü protokolü tamamlandı. ${count} alan farkı düzeltildi. Süre: ${time}s`,
|
|
32
|
+
},
|
|
33
|
+
bunker: {
|
|
34
|
+
exit: 'Sistem sinyali kaybedildi...',
|
|
35
|
+
envCopy: '.env dosyası kaydedildi',
|
|
36
|
+
argDesc: 'Frontend framework şablonunu belirt',
|
|
37
|
+
systemStandby: 'Sistem bekleme modunda...',
|
|
38
|
+
desc: 'Yapay zeka destekli frontend CRUD kod üreticisi',
|
|
39
|
+
configCopy: 'config.js dosyası kaydedildi',
|
|
40
|
+
initDesc: 'Mevcut dizinde Bunker inşa ortamını başlat',
|
|
41
|
+
envCheck: '.env dosyası zaten mevcut. Oluşturma atlandı',
|
|
42
|
+
dataSynced: 'Tüm inşa verileri Bunker depolama düğümü ile senkronize edildi',
|
|
43
|
+
configCheck: 'config.js dosyası zaten mevcut. Oluşturma atlandı',
|
|
44
|
+
linkSevered: 'Bağlantı kesildi: ağ durumunu veya Black Box rezonansını kontrol edin',
|
|
45
|
+
systemOffline: 'Bulut sinir bağlantısı kesiliyor. Verilerin fiziksel mühürleme işlemi başlatılıyor...',
|
|
46
|
+
copyTemplateError: virus => `Şablon inşası başarısız: ${virus}`,
|
|
47
|
+
star: 'Bu proje size zaman kazandırdıysa GitHub üzerinde yıldız bırakın ⭐',
|
|
48
|
+
towerOnline: port => `Sinyal yakalama kulesi aktif [Frekans: ${port}]`,
|
|
49
|
+
watchDesc: 'Tam kanal izlemeyi başlat: Page/Part/API ortak inşası',
|
|
50
|
+
accessDenied: 'Komuta merkezi erişimi reddetti: API Key geçersiz veya limit doldu',
|
|
51
|
+
disclaimer: 'Eşleştirme sonuçları yalnızca referanstır. Birimler gerçek duruma göre ayarlama yapmalıdır',
|
|
52
|
+
towerConnected: port => `Komut: Proxy hedefinizi http://localhost:${port} adresine yönlendirin`,
|
|
53
|
+
copyEnum: '│ Backend genetik kodu (Enum) tespit edildi\n│ Öneri: Aşağıdaki kod parçasını modül kaynak merkezine manuel olarak ekleyin',
|
|
54
|
+
networkInstability: count => `Bulut sinir ağı kararsız. Yeniden bağlanılıyor... (${count}. deneme)`,
|
|
55
|
+
frameworkNotSupported: template => `Framework [${template}] henüz desteklenmiyor. Pull Request katkıları bekleniyor`,
|
|
56
|
+
strategicThreshold: (target, current) => `Fiziksel kopya sayısı stratejik eşik ${target} değerini geçti! Mevcut güç: ${current}`,
|
|
57
|
+
initComplete: cmd => `Bunker kurulumu tamamlandı. Hızlı erişim için ${cmd} komutunu package.json scripts bölümüne ekleyin`,
|
|
58
|
+
isLegendary: (unlockAchievement, current, target) =>
|
|
59
|
+
unlockAchievement
|
|
60
|
+
? 'Tebrikler komutan. İnşa protokolünüz insanlığın görkeminin bir parçası oldu'
|
|
61
|
+
: `Mevcut inşa sayısı: ${current}. Madalyaya ulaşmak için ${target - current} işlem kaldı`,
|
|
62
|
+
},
|
|
63
|
+
operator6O: {
|
|
64
|
+
call2B: '2B çağrılıyor. Bunker tüm kanal izleme sistemi hazır!',
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
nineS: {
|
|
3
|
+
dataCamouflageComplete: 'Mock 資料生成成功',
|
|
4
|
+
scanningField: '正在掃描前後端欄位差異... 執行語意橋接任務',
|
|
5
|
+
dataCamouflage: fileName => `正在突破目標防火牆... 執行資料偽裝程序 [${fileName}]`,
|
|
6
|
+
},
|
|
7
|
+
pod042: {
|
|
8
|
+
extractingUiMetadata: '正在從神經雲網路提取 UI 中繼資料...',
|
|
9
|
+
simulate: '攔截到實際請求。正在空投標準模擬包: example.json',
|
|
10
|
+
queueEmpty: '佇列已清空,正在向 Bunker 同步 Menu 路由設定...',
|
|
11
|
+
uploadVisualMetadata: '正在上傳視覺中繼資料至司令部,執行語意分析...',
|
|
12
|
+
visualPartCaptured: '偵測到局部視覺樣本。正在執行「碎片構築協議」...',
|
|
13
|
+
partialConstruction: time => `報告:局部構築完成。耗時: ${time}s`,
|
|
14
|
+
partialRecommendation: '│ 建議:請手動將上述程式碼區塊整合至目標檔案',
|
|
15
|
+
constructionAborted: virus => `構築中斷。偵測到邏輯病毒或連線逾時:${virus}`,
|
|
16
|
+
partialConstructionAborted: virus => `[警告] 碎片構築失敗。系統偵測到邏輯干擾:${virus}`,
|
|
17
|
+
visualCaptured: fileName => `視覺感測器捕捉完成: [${fileName}]。正在調配 Bunker 資源進行物理構築...`,
|
|
18
|
+
intercept: fileName => `模組 [${fileName}] 已存在於 Bunker 資料庫中。為避免資料覆蓋,構築協議已跳過`,
|
|
19
|
+
assemblyComplete: (fileName, time) => `構築協議執行完成。模組 [${fileName}] 已完成物理裝配。耗時: ${time}s`,
|
|
20
|
+
},
|
|
21
|
+
pod153: {
|
|
22
|
+
signalLinkFault: virus => `訊號鏈路故障: ${virus}`,
|
|
23
|
+
formatError: '資料格式非標準 JSON,將嘗試原始字串對齊',
|
|
24
|
+
autonomousAddressing: '啟動「全頻道自動尋址協議 [語意掃描版]」...',
|
|
25
|
+
signalSynchronized: count => `訊號同步完成,${count} 個節點已通電`,
|
|
26
|
+
alignmentFailed: virus => `訊號對齊失敗。API 資料遭遇強力防火牆:${virus}`,
|
|
27
|
+
inactiveModule: fileName => `發現未通電模組 [${fileName}],請求 9S 執行高精度對帳...`,
|
|
28
|
+
capturedRuntimeSignal: fileName => `截獲執行時訊號 [${fileName}]。執行自動對齊協議...`,
|
|
29
|
+
reconEncryptedData: fileName => `發現加密資料源 [${fileName}]。正在嘗試執行語意對齊協議...`,
|
|
30
|
+
unknownModule: fileName => `Bunker 資料庫中未找到模組 [${fileName}] 的資源檔案。請先執行視覺構築`,
|
|
31
|
+
bridgeProtocolComplete: (count, time) => `語意橋接協議執行完成。已修正 ${count} 處欄位差異。耗時: ${time}s`,
|
|
32
|
+
},
|
|
33
|
+
bunker: {
|
|
34
|
+
exit: '系統訊號已遺失...',
|
|
35
|
+
envCopy: '.env 儲存完成',
|
|
36
|
+
argDesc: '指定前端框架模板',
|
|
37
|
+
systemStandby: '系統待命中...',
|
|
38
|
+
desc: 'AI 驅動的前端 CRUD 程式碼生成器',
|
|
39
|
+
configCopy: 'config.js 儲存完成',
|
|
40
|
+
initDesc: '在目前目錄初始化 Bunker 構築環境',
|
|
41
|
+
envCheck: '終端已存在 .env 檔案,跳過生成',
|
|
42
|
+
dataSynced: '所有構築資料已同步至 Bunker 儲存節點',
|
|
43
|
+
configCheck: '終端已存在 config.js 檔案,跳過生成',
|
|
44
|
+
linkSevered: '連線中斷:請檢查網路狀態或黑盒共鳴情況',
|
|
45
|
+
systemOffline: '正在斷開神經雲連結,執行資料物理封存...',
|
|
46
|
+
copyTemplateError: virus => `模板構築失敗: ${virus}`,
|
|
47
|
+
star: '如果它能幫助您節省時間,請在 GitHub 上給它一顆 Star ⭐',
|
|
48
|
+
towerOnline: port => `訊號攔截塔已上線 [頻段: ${port}]`,
|
|
49
|
+
watchDesc: '開啟全頻道聯動監控:支援 Page/Part/API 協同構築',
|
|
50
|
+
accessDenied: '司令部拒絕存取:API Key 無效或額度耗盡,請檢查!',
|
|
51
|
+
disclaimer: '匹配結果僅供參考,不構成最終決策,各機體需依照實際情況進行調整',
|
|
52
|
+
towerConnected: port => `指令:請將您的代理目標指向 http://localhost:${port}`,
|
|
53
|
+
copyEnum: '│ 偵測到後端原始基因(Enum)\n│ 建議:將下方程式碼片段手動焊接至該模組資源中心',
|
|
54
|
+
networkInstability: count => `神經雲網路連線不穩定,正在嘗試重新連線... (第 ${count} 次重試)`,
|
|
55
|
+
frameworkNotSupported: template => `暫不支援 [${template}] 框架。歡迎提交 Pull Request 貢獻`,
|
|
56
|
+
strategicThreshold: (target, current) => `物理複製總數已超越 ${target} 戰略閾值!目前戰力:${current}`,
|
|
57
|
+
initComplete: cmd => `Bunker 部署完成,為更快速進入戰場,建議手動將 ${cmd} 加入 package.json scripts`,
|
|
58
|
+
isLegendary: (unlockAchievement, current, target) =>
|
|
59
|
+
unlockAchievement
|
|
60
|
+
? '恭喜您指揮官,您的構築協議已成為人類榮光的一部分'
|
|
61
|
+
: `目前構築總數:${current}。距離 ${target} 徽章還剩 ${target - current} 次`,
|
|
62
|
+
},
|
|
63
|
+
operator6O: {
|
|
64
|
+
call2B: '呼叫 2B,Bunker 全頻道聯動監控已準備完成!',
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
module.exports = ({
|
|
1
|
+
module.exports = ({ utils, engine }) => {
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
const {
|
|
5
|
-
const {
|
|
6
|
-
const { cleanCode, generateSmartImports, formatFormItemAndColumns } = core
|
|
3
|
+
const { indexTpl, resourceTpl } = engine
|
|
4
|
+
const { needMock, responseSuccess } = utils.foundation.getConfig()
|
|
5
|
+
const { cleanCode, contextStringify, generateSmartImports, formatFormItemAndColumns } = utils.generator
|
|
7
6
|
|
|
8
7
|
return {
|
|
9
8
|
index: ({ fileName, pageConfig }) => {
|
package/src/handlers/api.js
CHANGED
|
@@ -6,12 +6,13 @@ module.exports = {
|
|
|
6
6
|
async handle(filePath, liveResponse = null) {
|
|
7
7
|
|
|
8
8
|
const chalk = require('chalk')
|
|
9
|
-
const { llm,
|
|
9
|
+
const { llm, utils, labs, yorha, dialog } = require('../bootstrap').get()
|
|
10
10
|
|
|
11
|
-
const { pagesDir } = config
|
|
12
11
|
const { nineS, pod153 } = yorha
|
|
13
12
|
const { alignResponseFields } = llm
|
|
14
|
-
const { cleanCode
|
|
13
|
+
const { cleanCode } = utils.generator
|
|
14
|
+
const { unwrapSignal } = utils.semantic
|
|
15
|
+
const { pagesDir } = utils.foundation.getConfig()
|
|
15
16
|
|
|
16
17
|
const startTime = Date.now()
|
|
17
18
|
const fileName = liveResponse?.fileName ?? path.basename(filePath, path.extname(filePath))
|
package/src/handlers/page.js
CHANGED
|
@@ -5,17 +5,18 @@ module.exports = {
|
|
|
5
5
|
watch: 'screenShot',
|
|
6
6
|
async handle(filePath) {
|
|
7
7
|
|
|
8
|
-
const { llm,
|
|
8
|
+
const { llm, utils, yorha, dialog, prompts, template, generator } = require('../bootstrap').get()
|
|
9
9
|
|
|
10
10
|
const { page } = prompts
|
|
11
11
|
const { nineS, pod042 } = yorha
|
|
12
12
|
const { index, resource } = generator
|
|
13
|
-
const { contextStringify } = foundation
|
|
14
13
|
const { generateMock, recognizePage } = llm
|
|
15
|
-
const {
|
|
14
|
+
const { contextStringify } = utils.generator
|
|
15
|
+
const { useDemo, pagesDir, needMock } = utils.foundation.getConfig()
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
const startTime = Date.now()
|
|
19
|
+
const menus = utils.foundation.getExistingMenus(pagesDir)
|
|
19
20
|
const fileName = path.basename(filePath, path.extname(filePath))
|
|
20
21
|
const mockDir = path.join(process.cwd(), 'mock')
|
|
21
22
|
const targetDir = path.join(process.cwd(), pagesDir, fileName)
|
package/src/handlers/part.js
CHANGED
|
@@ -5,13 +5,12 @@ module.exports = {
|
|
|
5
5
|
async handle(filePath) {
|
|
6
6
|
|
|
7
7
|
const chalk = require('chalk')
|
|
8
|
-
const { llm,
|
|
8
|
+
const { llm, utils, yorha, dialog, prompts } = require('../bootstrap').get()
|
|
9
9
|
|
|
10
10
|
const { pod042 } = yorha
|
|
11
11
|
const { recognizePage } = llm
|
|
12
12
|
const { part: prompt } = prompts
|
|
13
|
-
const { contextStringify } =
|
|
14
|
-
const { cleanCode, formatFormItemAndColumns } = core
|
|
13
|
+
const { cleanCode, contextStringify, formatFormItemAndColumns } = utils.generator
|
|
15
14
|
|
|
16
15
|
const startTime = Date.now()
|
|
17
16
|
|
|
@@ -41,7 +40,7 @@ module.exports = {
|
|
|
41
40
|
console.log(chalk.magenta(`\n┌────────────────── [ YoRHa Construction Output ] ─────────────────┐`))
|
|
42
41
|
console.log(chalk.magenta(`│ Source: ${filePath}`))
|
|
43
42
|
console.log(chalk.magenta(`│ Protocol: Partial UI Fragment | Status: SUCCESS`))
|
|
44
|
-
console.log(chalk.magenta(
|
|
43
|
+
console.log(chalk.magenta(`├──────────────────────────────────────────────────────────────────┘`))
|
|
45
44
|
console.log(chalk.white(finalResult))
|
|
46
45
|
pod042.success(spinner, dialog.pod042.partialConstruction((endTime - startTime) / 1000))
|
|
47
46
|
pod042.success(spinner, dialog.pod042.partialRecommendation)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
const fs = require('fs')
|
|
2
2
|
const path = require('path')
|
|
3
3
|
|
|
4
|
-
module.exports = ({
|
|
4
|
+
module.exports = ({ utils, yorha, dialog, handlers, template }) => {
|
|
5
5
|
|
|
6
|
-
const { copyTemplateDir } = foundation
|
|
7
|
-
const { hbsDir, hooksDir, utilsDir, componentsDir } =
|
|
6
|
+
const { copyTemplateDir } = utils.foundation
|
|
7
|
+
const { hbsDir, hooksDir, utilsDir, componentsDir } = utils.foundation.getConfig()
|
|
8
8
|
|
|
9
9
|
try {
|
|
10
|
-
Object.values(handlers).forEach(handler => fs.mkdirSync(path.join(process.cwd(), handler.watch), { recursive: true }))
|
|
11
|
-
if (hbsDir
|
|
10
|
+
Object.values(handlers).forEach(handler => fs.mkdirSync(path.join(process.cwd(), 'bunker', handler.watch), { recursive: true }))
|
|
11
|
+
if (!hbsDir) {
|
|
12
12
|
copyTemplateDir(template, 'hooks', hooksDir)
|
|
13
13
|
copyTemplateDir(template, 'utils', utilsDir)
|
|
14
14
|
copyTemplateDir(template, 'components', componentsDir)
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
module.exports = ({
|
|
1
|
+
module.exports = ({ utils, template }) => {
|
|
2
2
|
|
|
3
3
|
const fs = require('fs')
|
|
4
4
|
const path = require('path')
|
|
5
5
|
const Handlebars = require('handlebars')
|
|
6
6
|
|
|
7
7
|
Handlebars.registerHelper('raw', opt => opt.fn())
|
|
8
|
-
Handlebars.registerHelper('stringify', (context, maxLength = 200) => context ? new Handlebars.SafeString(contextStringify({ context, maxLength })) : '[]')
|
|
8
|
+
Handlebars.registerHelper('stringify', (context, maxLength = 200) => context ? new Handlebars.SafeString(utils.generator.contextStringify({ context, maxLength })) : '[]')
|
|
9
9
|
|
|
10
|
-
const { hbsDir } =
|
|
11
|
-
const tplDir = hbsDir
|
|
12
|
-
const partialsDir = hbsDir
|
|
10
|
+
const { hbsDir } = utils.foundation.getConfig()
|
|
11
|
+
const tplDir = !!hbsDir ? path.join(process.cwd(), hbsDir) : path.join(__dirname, `../framework/${template}/handlebars`)
|
|
12
|
+
const partialsDir = !!hbsDir ? path.join(process.cwd(), hbsDir, 'partials') : path.join(__dirname, `../framework/${template}/handlebars/partials`)
|
|
13
13
|
|
|
14
14
|
fs.readdirSync(partialsDir).forEach(file => {
|
|
15
15
|
if (file.endsWith('.hbs')) {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module.exports = (concurrency = 1) => {
|
|
2
|
+
|
|
3
|
+
let running = 0
|
|
4
|
+
let queue = []
|
|
5
|
+
let onIdleCallback = null
|
|
6
|
+
|
|
7
|
+
const next = async () => {
|
|
8
|
+
|
|
9
|
+
if (running >= concurrency || queue.length === 0) return
|
|
10
|
+
|
|
11
|
+
const task = queue.shift()
|
|
12
|
+
running++
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
await task()
|
|
16
|
+
} catch (err) {
|
|
17
|
+
console.error('任务执行异常:', err)
|
|
18
|
+
} finally {
|
|
19
|
+
running--
|
|
20
|
+
next()
|
|
21
|
+
if (running === 0 && queue.length === 0 && onIdleCallback) {
|
|
22
|
+
onIdleCallback()
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
add: (task) => {
|
|
29
|
+
queue.push(task)
|
|
30
|
+
next()
|
|
31
|
+
},
|
|
32
|
+
onIdle: (callback) => {
|
|
33
|
+
onIdleCallback = callback
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto CRUD Copilot - YoRHa Bunker Construction System
|
|
3
|
+
* This file is part of AutoDev.
|
|
4
|
+
* AutoDev is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU Affero General Public License as
|
|
6
|
+
* published by the Free Software Foundation, either version 3 of the
|
|
7
|
+
* License, or (at your option) any later version.
|
|
8
|
+
* (c) 2026 [yorha2b-lab]. Glory to Mankind.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const fs = require('fs')
|
|
12
|
+
const path = require('path')
|
|
13
|
+
|
|
14
|
+
module.exports = dir => Object.fromEntries(fs.readdirSync(dir).filter(file => file.endsWith('.js')).map(file => [path.basename(file, '.js'), require(path.join(dir, file))]))
|
package/src/labs/council.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
const fs = require('fs')
|
|
2
2
|
const path = require('path')
|
|
3
3
|
|
|
4
|
-
module.exports = async ({ llm,
|
|
4
|
+
module.exports = async ({ llm, utils, yorha, dialog }) => {
|
|
5
5
|
|
|
6
6
|
const { apiParser } = llm
|
|
7
7
|
const { pod153, commander } = yorha
|
|
8
|
-
const {
|
|
9
|
-
const {
|
|
10
|
-
const { getLocalScore, getSemanticKeywords } =
|
|
8
|
+
const { contextStringify } = utils.generator
|
|
9
|
+
const { apiDoc, pagesDir } = utils.foundation.getConfig()
|
|
10
|
+
const { getLocalScore, getSemanticKeywords } = utils.semantic
|
|
11
11
|
|
|
12
12
|
if (!apiDoc) return
|
|
13
13
|
|
|
@@ -36,7 +36,6 @@ module.exports = async ({ llm, core, yorha, dialog, config, foundation }) => {
|
|
|
36
36
|
|
|
37
37
|
if (fs.existsSync(indexPath) && fs.existsSync(resourcePath)) {
|
|
38
38
|
let indexCode = fs.readFileSync(indexPath, 'utf-8')
|
|
39
|
-
let resourceCode = fs.readFileSync(resourcePath, 'utf-8')
|
|
40
39
|
|
|
41
40
|
// 💡 锁定待通电锚点
|
|
42
41
|
if (indexCode.includes('BUNKER_API_ANCHOR')) {
|
|
@@ -2,7 +2,7 @@ module.exports = accessPoint => {
|
|
|
2
2
|
|
|
3
3
|
const labs = {}
|
|
4
4
|
|
|
5
|
-
const { apiDoc, needMock, proxyTarget, enableAutoAlignment } = accessPoint.
|
|
5
|
+
const { apiDoc, needMock, proxyTarget, enableAutoAlignment } = accessPoint.utils.foundation.getConfig()
|
|
6
6
|
|
|
7
7
|
if (!needMock && proxyTarget && enableAutoAlignment) {
|
|
8
8
|
labs.tower = require('../labs/tower')(accessPoint)
|
package/src/labs/tower.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
* @description [地堡 42153 联合波段] 启动流量拦截塔。
|
|
4
4
|
* 独立运行于后台,监听 42153 端口,物理截获联调过程中的 JSON 信号并触发语义对齐。
|
|
5
5
|
*/
|
|
6
|
-
module.exports = ({
|
|
6
|
+
module.exports = ({ utils, yorha, dialog, handlers }) => {
|
|
7
7
|
|
|
8
8
|
const http = require('http')
|
|
9
9
|
const zlib = require('zlib')
|
|
10
10
|
const httpProxy = require('http-proxy')
|
|
11
11
|
|
|
12
12
|
const { pod153, commander } = yorha
|
|
13
|
-
const { unwrapSignal, isQuerySignal } =
|
|
14
|
-
const { routeMap = {}, proxyTarget } =
|
|
13
|
+
const { unwrapSignal, isQuerySignal } = utils.semantic
|
|
14
|
+
const { routeMap = {}, proxyTarget } = utils.foundation.getConfig()
|
|
15
15
|
|
|
16
16
|
const TOWER_PORT = 42153
|
|
17
17
|
const hackedRegistry = new Map()
|
|
@@ -45,7 +45,7 @@ module.exports = ({ core, yorha, dialog, config, handlers }) => {
|
|
|
45
45
|
const urlPath = new URL(referer).pathname
|
|
46
46
|
const fileName = routeMap?.[urlPath] ?? urlPath.split('/').filter(Boolean).at(-1)
|
|
47
47
|
|
|
48
|
-
const fingerprint = getJsonFingerprint(
|
|
48
|
+
const fingerprint = getJsonFingerprint(coreData) // 获取数据指纹
|
|
49
49
|
const lastFingerprint = hackedRegistry.get(fileName)
|
|
50
50
|
|
|
51
51
|
// 如果指纹没变,说明字段结构是一样的,无需再次骇入
|