agent-bios 0.19.0 → 0.19.2
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/DEPENDENCIES.md +27 -27
- package/INSTALL.md +4 -4
- package/README.md +58 -28
- package/claude/CLAUDE.md +1 -1
- package/claude/guides/claude-prompting.md +1 -1
- package/claude/guides/cli-multi-model-workflow.md +3 -3
- package/claude/guides/documentation-hygiene.md +3 -0
- package/claude/guides/gpt-prompting.md +1 -1
- package/claude/guides/korean-writing.md +153 -0
- package/claude/guides/learning-flow.md +4 -4
- package/claude/guides/session-distill-workflow.md +8 -8
- package/claude/guides/slide-writing/RUNBOOK.md +5 -5
- package/claude/skills/repo-charter/SKILL.md +3 -3
- package/claude/skills/understand/SKILL.md +58 -28
- package/codex/AGENTS.md +1 -1
- package/codex/guides/claude-prompting.md +1 -1
- package/codex/guides/cli-multi-model-workflow.md +3 -3
- package/codex/guides/documentation-hygiene.md +3 -0
- package/codex/guides/gpt-prompting.md +1 -1
- package/codex/guides/korean-writing.md +153 -0
- package/codex/guides/learning-flow.md +4 -4
- package/codex/guides/session-distill-workflow.md +8 -8
- package/codex/guides/slide-writing/RUNBOOK.md +5 -5
- package/compose/app_bridge/SKILL.md +12 -12
- package/compose/app_bridge/scripts/bridge.py +15 -7
- package/compose/assemble.py +5 -5
- package/compose/bootstrap/SKILL.md +18 -18
- package/compose/canary.sh +4 -4
- package/compose/check-domains.py +6 -6
- package/compose/corpus-state.py +16 -1168
- package/compose/corpus.py +13 -402
- package/compose/corpus_app.py +14 -450
- package/compose/corpus_catalog.py +15 -926
- package/compose/corpus_import.py +14 -523
- package/compose/corpus_install.py +14 -1841
- package/compose/corpus_session.py +16 -848
- package/compose/corpus_setup.py +16 -670
- package/compose/corpus_setup_cli.py +15 -577
- package/compose/corpus_setup_i18n.py +20 -318
- package/compose/corpus_setup_ui.py +18 -631
- package/compose/corpus_store.py +16 -1621
- package/compose/corpus_transaction.py +15 -284
- package/compose/corpus_ui.py +17 -972
- package/compose/corpus_ui_runtime.py +16 -274
- package/compose/corpus_understand.py +13 -520
- package/compose/domains.json +2 -1
- package/compose/instructions-state.py +1175 -0
- package/compose/instructions.py +409 -0
- package/compose/instructions_app.py +464 -0
- package/compose/instructions_catalog.py +931 -0
- package/compose/instructions_import.py +529 -0
- package/compose/instructions_install.py +1866 -0
- package/compose/instructions_session.py +852 -0
- package/compose/instructions_setup.py +676 -0
- package/compose/instructions_setup_cli.py +586 -0
- package/compose/instructions_setup_i18n.py +324 -0
- package/compose/instructions_setup_ui.py +647 -0
- package/compose/instructions_store.py +1668 -0
- package/compose/instructions_transaction.py +306 -0
- package/compose/instructions_ui.py +975 -0
- package/compose/instructions_ui_runtime.py +278 -0
- package/compose/instructions_understand.py +678 -0
- package/compose/register-hooks.py +1 -1
- package/compose/setup/START.md +24 -13
- package/docs/advanced-launch.md +11 -11
- package/docs/instructions-compatibility.md +86 -0
- package/docs/{corpus.md → instructions.md} +35 -8
- package/docs/recovery.md +8 -8
- package/docs/releases/0.19.2.md +38 -0
- package/docs/session-model.md +23 -20
- package/docs/setup.md +42 -25
- package/docs/understand.md +57 -9
- package/install.sh +70 -69
- package/launch/agent-launch.py +306 -295
- package/launch/agent-launch.toml +2 -2
- package/launch/i18n/en.toml +55 -55
- package/launch/i18n/ja.toml +56 -56
- package/launch/i18n/ko.toml +56 -56
- package/launch/shell_integration.py +4 -4
- package/learn/collect-learning.py +10 -10
- package/learn/learning.schema.json +1 -1
- package/learn/migrate-learnings.py +51 -51
- package/package.json +27 -11
- package/provenance.json +1 -1
- /package/docs/assets/{corpus-studio.svg → instructions-studio.svg} +0 -0
package/launch/i18n/ko.toml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"mode.swe.label" = "Software Engineer"
|
|
5
5
|
"mode.swe.description" = "기존 프로젝트에서 CLI의 기본 지침 로딩 방식으로 작업합니다. Vanilla는 런처의 추가 설정 없이 시작하고, Custom에서는 모델과 리뷰 방식을 직접 고릅니다."
|
|
6
6
|
"mode.builder.label" = "Builder"
|
|
7
|
-
"mode.builder.description" = "설치된
|
|
7
|
+
"mode.builder.description" = "설치된 지침을 활용하는 일반 개발 모드입니다. Balanced·Deep review·Fast batch·Solo 또는 Custom에서 메인 모델, 위임, 리뷰, 실행 권한을 고릅니다."
|
|
8
8
|
"mode.distill.label" = "Session distill"
|
|
9
9
|
"mode.distill.description" = "지난 AI 작업 대화를 살펴보고 공통 지침에 반영할 교훈을 제안합니다. 상태 확인과 실행 메뉴를 엽니다. 현재 이 작업에는 agent-bios 소스 저장소가 필요합니다."
|
|
10
10
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"preset.custom.label" = "직접 설정 (Custom)"
|
|
19
19
|
|
|
20
20
|
"language.label" = "언어"
|
|
21
|
-
"language.description" = "TUI 언어를 선택합니다 (English / 한국어 / 日本語). AI가 소비하는
|
|
21
|
+
"language.description" = "TUI 언어를 선택합니다 (English / 한국어 / 日本語). AI가 소비하는 지침은 영어 그대로이며, 런처 화면만 바뀝니다."
|
|
22
22
|
"language.title" = "언어"
|
|
23
23
|
|
|
24
24
|
"shell.title" = "셸 연결"
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"shell.restore" = "연결 복원"
|
|
29
29
|
"shell.restore.description" = ".zshrc를 백업하고 관리 구간 하나를 추가합니다. 인자가 있거나 비대화형인 호출은 추가 권한 옵션 없이 원본 CLI로 전달합니다."
|
|
30
30
|
"shell.remove" = "연결 제거"
|
|
31
|
-
"shell.remove.description" = "agent-bios의 셸 연결만 제거합니다. 다른 셸 설정과
|
|
31
|
+
"shell.remove.description" = "agent-bios의 셸 연결만 제거합니다. 다른 셸 설정과 지침 항목은 그대로 보존합니다."
|
|
32
32
|
"shell.back" = "셸 연결을 변경하지 않고 돌아갑니다."
|
|
33
33
|
"shell.confirm" = "셸 연결 변경을 적용할까요?"
|
|
34
34
|
"shell.cancel" = "취소"
|
|
35
35
|
"shell.apply" = "적용"
|
|
36
|
-
"shell.scope" = "zsh 시작 파일의 연결 구간과 관리 스크립트만 변경합니다. 전역 AGENTS.md/CLAUDE.md, 프로젝트 파일,
|
|
36
|
+
"shell.scope" = "zsh 시작 파일의 연결 구간과 관리 스크립트만 변경합니다. 전역 AGENTS.md/CLAUDE.md, 프로젝트 파일, 지침 내용은 바꾸지 않습니다."
|
|
37
37
|
"shell.preview" = "미리보기만 실행했습니다. 셸 파일은 변경하지 않았습니다."
|
|
38
38
|
"shell.restored" = "연결을 복원했습니다. 새 터미널을 열거나 .zshrc를 source하여 불러오세요."
|
|
39
39
|
"shell.removed" = "연결을 제거했습니다. 이미 열린 셸도 다음 명령에서 관리 래퍼를 해제합니다. 새 터미널 역시 연결 없이 시작합니다."
|
|
@@ -41,36 +41,36 @@
|
|
|
41
41
|
"language.ko.description" = "런처 화면을 한국어로 표시합니다."
|
|
42
42
|
"language.ja.description" = "ランチャーの画面を日本語で表示します。"
|
|
43
43
|
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
44
|
+
"instructions.label" = "지침 패키지"
|
|
45
|
+
"instructions.private.title" = "Instructions Studio"
|
|
46
|
+
"instructions.private.description" = "개인 지침 항목을 조회·생성·편집·삭제·복원합니다. 변경은 다음 활성 세션에 반영되고, 실행 중인 세션은 고정한 내용을 유지합니다."
|
|
47
|
+
"instructions.private.relationship" = "지침은 별도 저장소에 보관됩니다. Builder는 선택한 사본을 활성화하고, 기본 CLI와 Vanilla에는 자동 추가하지 않습니다. 기존 전역 설치는 별도 이전이 필요합니다."
|
|
48
|
+
"instructions.private.vanilla" = "기본 CLI와 사용자가 설정한 개인·프로젝트 지시문을 사용합니다. agent-bios의 개인 지침, 스킬 설명, 실행 설정은 추가하지 않습니다."
|
|
49
|
+
"instructions.description" = "AI가 참고할 작업 지침을 고릅니다. 개발·여러 에이전트의 협업·스프레드시트 같은 작업별 묶음입니다. 패키지를 고른 뒤 ‘선택 적용’으로 설치합니다. 이 컴퓨터의 이후 CLI 실행에 쓰는 공통 지침을 바꾸므로 다른 프로젝트에도 영향을 줍니다."
|
|
50
|
+
"instructions.title" = "지침 패키지"
|
|
51
|
+
"instructions.core.line" = "목표 설정·의사결정·교훈 기록의 기본 규칙(core + infra)은 항상 포함됩니다. 아래에서 작업별 패키지를 고르세요."
|
|
52
|
+
"instructions.toggle.description" = "이 패키지를 선택하거나 해제합니다. ‘선택 적용’은 체크된 패키지 전체를 함께 설치하고 해제한 패키지는 설치 목록에서 뺍니다. 적용 전에 뒤로 돌아가거나 취소하면 설치 상태는 그대로입니다."
|
|
53
|
+
"instructions.size.legend" = "각 패키지 옆의 크기는 모든 세션이 읽는 전역에 더해지는 양입니다. 가이드도 함께 배포되지만 규칙이 가리킬 때만 읽힙니다."
|
|
54
|
+
"instructions.size.detail" = "모든 세션에 규칙 {rules}개({size})를 더하고, 규칙이 가리킬 때만 읽히는 가이드 {guides}개({guide_size})를 배포합니다."
|
|
55
|
+
"instructions.size.detail.noguides" = "모든 세션에 규칙 {rules}개({size})를 더하고, 배포하는 가이드는 없습니다."
|
|
56
|
+
"instructions.apply.label" = "선택 적용{pending}"
|
|
57
|
+
"instructions.apply.description" = "체크한 패키지를 설치하고 해제한 패키지를 이 컴퓨터의 공통 지침에서 뺍니다. 설치 후 AI가 지침을 읽을 수 있는지 확인하고 결과를 보여 줍니다. 다른 프로젝트에서도 사용하는 지침이며, 프로젝트 코드를 바꾸는 작업은 아닙니다."
|
|
58
|
+
"instructions.apply.unchanged" = "체크된 집합이 적용된 집합과 같습니다 — 적용할 것이 없습니다"
|
|
59
|
+
"instructions.unavailable.line1" = "지침 상태 요약이 없거나 도메인 보고 이전 버전입니다."
|
|
60
|
+
"instructions.none.line" = "이 투영에는 선택 가능한 도메인 패키지가 없습니다 — core와 infra는 항상 설치되므로 여기서 고를 것이 없습니다."
|
|
61
|
+
"instructions.unavailable.line2" = "실행: agent-bios install (이 화면이 읽는 projection을 다시 씁니다)"
|
|
62
|
+
"instructions.back.hint" = "모드 메뉴로 돌아갑니다."
|
|
63
63
|
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
64
|
+
"instructions.launch.relationship" = "모드와 프리셋은 세션의 실행 방식을 정합니다. 설치된 지침 선택은 그대로 유지되며, 변경은 ‘지침 패키지’에서 합니다. Vanilla에서도 호스트의 기본 지침 로딩을 통해 설치된 전역 규칙을 읽습니다."
|
|
65
|
+
"instructions.launch.applied" = "현재 적용된 지침:"
|
|
66
|
+
"instructions.launch.base" = "core + infra: 목표·제약 확인, 선택지 비교, 검증 결과 보고, 다음 세션에 재사용할 교훈 기록을 다룹니다."
|
|
67
|
+
"instructions.launch.unknown" = "이 설치본에서 패키지 내용을 확인할 수 없습니다."
|
|
68
|
+
"instructions.domain.builder-base.label" = "개발 기본 원칙"
|
|
69
|
+
"instructions.domain.llm-pipeline-dev.label" = "LLM 파이프라인 개발"
|
|
70
|
+
"instructions.domain.multi-agent-orchestration.label" = "여러 에이전트의 협업"
|
|
71
|
+
"instructions.domain.visualization-docs.label" = "도표와 구현 지도"
|
|
72
|
+
"instructions.domain.office-work.label" = "스프레드시트 작업"
|
|
73
|
+
"instructions.domain.builder-base" = """
|
|
74
74
|
소프트웨어 구현·검증·유지보수에 공통으로 쓰는 개발 원칙입니다.
|
|
75
75
|
• Coding(개발 절차): 완료 기준을 정하고 작업을 계획한 뒤, 필요한 부분을 수정하고 결과를 리뷰합니다.
|
|
76
76
|
• Verification menus(검증 선택): 코드·설정·문서 등 작업 대상에 맞는 검사를 고르고 실제 변경 경로를 검증합니다.
|
|
@@ -81,14 +81,14 @@
|
|
|
81
81
|
• Review requests & defect criteria(리뷰 기준): 근거와 구체적인 실패 기준을 리뷰어에게 주고 중요한 지적을 해결합니다.
|
|
82
82
|
• Repository instructions(저장소 지침): repo-charter 스킬로 저장소 코드에 근거한 AGENTS.md 작업 규칙을 만듭니다.
|
|
83
83
|
"""
|
|
84
|
-
"
|
|
84
|
+
"instructions.domain.llm-pipeline-dev" = """
|
|
85
85
|
모델의 판단과 코드로 보장할 계약을 구분해 LLM 파이프라인을 만듭니다.
|
|
86
86
|
• Capability boundary(역할 경계): 의미 해석과 선택은 모델이 맡고, 정확한 계산과 변환은 도구가 수행합니다.
|
|
87
87
|
• Structured output(구조화 출력): 제출 형식을 제한하고 코드가 검증·직렬화·최종 산출물 생성을 맡습니다.
|
|
88
88
|
• Runtime authority(실행 권한): 실제 도구와 소비 경로에서 권한·실행 경로를 보장합니다. 프롬프트나 읽히지 않는 플래그만으로는 동작이 바뀌지 않습니다.
|
|
89
89
|
• Failure handling(실패 처리): 계약을 어긴 출력은 거부하고 불확실한 품질 판단은 사용자에게 알립니다. 모델 출력을 몰래 보정하지 않습니다.
|
|
90
90
|
"""
|
|
91
|
-
"
|
|
91
|
+
"instructions.domain.multi-agent-orchestration" = """
|
|
92
92
|
여러 모델과 CLI 에이전트의 역할·인수인계·독립 리뷰를 조율합니다.
|
|
93
93
|
• Delegation(위임): 독립 작업이나 반복 작업에 에이전트가 유용한지 판단하고 범위와 완료 기준을 정해 맡깁니다.
|
|
94
94
|
• Model allocation(모델 배분): 난도와 영향에 따라 티어를 배정하고 저렴한 모델의 구현에는 검증을 보강합니다.
|
|
@@ -96,13 +96,13 @@
|
|
|
96
96
|
• Independent review(독립 리뷰): 제공자와 관점을 비교하고 요청한 모델·설정에서 리뷰가 실제로 실행됐는지 확인합니다.
|
|
97
97
|
• Continuation & batches(재개·일괄 작업): 재개 가능한 산출물을 보존하고 세션 상태를 재확인하며 사용량 제한의 반복 재시도를 멈춥니다.
|
|
98
98
|
"""
|
|
99
|
-
"
|
|
99
|
+
"instructions.domain.visualization-docs" = """
|
|
100
100
|
시스템과 의사결정을 도표로 설명하고 현재 구현 상태를 지도로 관리합니다.
|
|
101
101
|
• Visual explanations(시각 설명): 비교·흐름·상태 변화를 가장 잘 전달하는 텍스트·표·HTML 표현을 고릅니다.
|
|
102
102
|
• SVG diagrams(SVG 도표): 역할·경계·의존성·방향을 읽기 쉬운 배치와 일관된 표기로 나타냅니다.
|
|
103
103
|
• Implementation map(구현 지도): 구조·목표·위험·결정·검증 상태를 현재 시점의 대시보드로 유지합니다.
|
|
104
104
|
"""
|
|
105
|
-
"
|
|
105
|
+
"instructions.domain.office-work" = """
|
|
106
106
|
스프레드시트 작업을 설치된 spreadsheet-processing 스킬로 안내합니다.
|
|
107
107
|
• Spreadsheet processing(시트 작업): 스킬이 있으면 통합문서 편집·생성·대사·검증에 사용합니다.
|
|
108
108
|
• Formula verification(수식 검증): 수식에 의존하는 Excel 결과를 실제 Microsoft Excel 엔진으로 확인합니다.
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"wizard.perspectives.refused" = "관점을 최소 1개 적어 주세요 — 리뷰어에게 무엇을 보라고 지시할지입니다."
|
|
130
130
|
"wizard.trials.label" = "Trials (격리 패스 횟수; 1 이상)"
|
|
131
131
|
"wizard.trials.refused" = "1 이상의 정수가 필요합니다."
|
|
132
|
-
"wizard.instructions.label" = "
|
|
132
|
+
"wizard.instructions.label" = "지침 (slot: {command} {model} {effort} {provider} {host} {service_tier} {perspectives} {trials} {severities})"
|
|
133
133
|
"wizard.emits.label" = "리뷰어가 실제로 보고하는 severity 값들, 그대로 (쉼표 구분)"
|
|
134
134
|
"wizard.map.title" = "canonical ladder로 매핑 — {value}"
|
|
135
135
|
"wizard.confirm.title" = "reader가 이 블록을 수락했습니다 — 기록할까요?"
|
|
@@ -213,15 +213,15 @@
|
|
|
213
213
|
"policy.claude.standard.label" = "표준"
|
|
214
214
|
"policy.claude.standard.description" = "정책 플래그를 전달하지 않고 Claude의 기본 권한 확인을 사용합니다."
|
|
215
215
|
|
|
216
|
-
# 세션 디스틸 영역 —
|
|
216
|
+
# 세션 디스틸 영역 — 지침 내용의 버전, 패키지, 롤백.
|
|
217
217
|
"distill.title" = "Session Distill"
|
|
218
218
|
"distill.start.label" = "Session distill 실행 시작"
|
|
219
219
|
"distill.start.description" = "Session distill 프리셋으로 실행합니다. 미션 라인이 세션을 워크플로 가이드와 SSOT로 안내합니다."
|
|
220
220
|
"distill.start.unavailable" = "프리셋 {preset}이(가) 설정되지 않았습니다"
|
|
221
|
-
"distill.packages.label" = "
|
|
222
|
-
"distill.packages.description" = "어떤
|
|
221
|
+
"distill.packages.label" = "지침 패키지"
|
|
222
|
+
"distill.packages.description" = "어떤 지침 내용이 적용돼 있는지 설치 가능한 패키지 단위로 봅니다 (v1: 단일 core 지침)."
|
|
223
223
|
"distill.versions.label" = "버전 및 롤백"
|
|
224
|
-
"distill.versions.description" = "
|
|
224
|
+
"distill.versions.description" = "지침 내용의 버전입니다(시스템 배포와는 별개). 지침을 이전 또는 이후 버전으로 되돌립니다."
|
|
225
225
|
"distill.back.label" = "뒤로"
|
|
226
226
|
"distill.back.hint" = "Session distill로 돌아갑니다."
|
|
227
227
|
"distill.back.launch" = "실행 메뉴로 돌아갑니다."
|
|
@@ -229,19 +229,19 @@
|
|
|
229
229
|
"distill.version.description" = "closed {closed} · commit {commit} · {summary}"
|
|
230
230
|
"distill.version.applied.title" = "{version}이(가) 현재 적용된 버전입니다"
|
|
231
231
|
"distill.version.applied.line" = "롤백하거나 롤포워드하려면 다른 버전을 선택하세요."
|
|
232
|
-
"distill.package.core.label" = "core
|
|
233
|
-
"distill.package.core.description" = "도메인 패키징이 도입되기 전까지 모든
|
|
234
|
-
"distill.rollback.title" = "
|
|
232
|
+
"distill.package.core.label" = "core 지침 @ {version}"
|
|
233
|
+
"distill.package.core.description" = "도메인 패키징이 도입되기 전까지 모든 지침 도메인이 하나의 패키지입니다(백로그). 레이어: {layers}. 도메인별 선택·버전·롤백은 이후 여기에 표시됩니다."
|
|
234
|
+
"distill.rollback.title" = "지침을 {version}(으)로 롤백할까요?"
|
|
235
235
|
"distill.rollback.cancel.label" = "취소"
|
|
236
|
-
"distill.rollback.cancel.description" = "현재 배포된
|
|
236
|
+
"distill.rollback.cancel.description" = "현재 배포된 지침 내용을 그대로 유지합니다."
|
|
237
237
|
"distill.rollback.confirm.label" = "{version}(으)로 롤백"
|
|
238
|
-
"distill.rollback.confirm.description" = "해당
|
|
238
|
+
"distill.rollback.confirm.description" = "해당 지침 버전 시점의 globals/guides/hooks를 다시 배포합니다. 시스템 배포(런처, 래퍼)는 현재 상태를 유지합니다. 최신 버전을 선택하면 다시 롤포워드됩니다."
|
|
239
239
|
"distill.rollback.done" = "롤백 완료."
|
|
240
240
|
"distill.rollback.failed" = "롤백 실패."
|
|
241
241
|
|
|
242
|
-
#
|
|
242
|
+
# 지침 상태 패널 — Session Distill 영역과 체크리스트가 함께 씁니다.
|
|
243
243
|
# 라벨은 표시 셀 기준으로 정렬되므로 번역 길이가 달라도 어긋나지 않습니다.
|
|
244
|
-
"panel.unprojected" = "
|
|
244
|
+
"panel.unprojected" = "지침 상태가 아직 생성되지 않았습니다 — 실행: agent-bios install"
|
|
245
245
|
"panel.version.label" = "적용 버전"
|
|
246
246
|
"panel.mechanisms.label" = "메커니즘"
|
|
247
247
|
"panel.ledger.label" = "원장"
|
|
@@ -258,7 +258,7 @@
|
|
|
258
258
|
"panel.ledger.value" = "배치 {placed} · 인큐베이팅 {incubating} · 버전 {versions}"
|
|
259
259
|
"panel.domains.unset" = "(아직 선택 안 함)"
|
|
260
260
|
"panel.last-apply" = "⚠ 마지막 적용 {outcome} @ {at} — 요청: {requested}"
|
|
261
|
-
"
|
|
261
|
+
"instructions.core-only" = "core+infra만"
|
|
262
262
|
|
|
263
263
|
# Numbered-prompt chrome. These were printed as English literals from the renderer
|
|
264
264
|
# while every line of content around them was translated, so the Korean and Japanese
|
|
@@ -281,7 +281,7 @@
|
|
|
281
281
|
"global-instructions.exclude.private-unavailable" = "agent-bios 활성 세션이 필요합니다. Vanilla와 일반 CLI 실행은 네이티브 지침 로딩을 유지합니다."
|
|
282
282
|
"setup.inactive.label" = "비활성"
|
|
283
283
|
"setup.inactive.value" = "{tiers} — 비활성, 투영되지 않음 ({reason})"
|
|
284
|
-
"tui.
|
|
284
|
+
"tui.instructions.title" = "지침 상태"
|
|
285
285
|
"tui.detail.title" = "선택 중인 항목 설명"
|
|
286
286
|
"tui.detail.scroll" = "j/k: 설명 아래/위 · Shift+PgUp/PgDn"
|
|
287
287
|
"tui.options.header" = "항목 (1-{count} / {count})"
|
|
@@ -302,10 +302,10 @@
|
|
|
302
302
|
"prompt.unavailable" = "사용 불가"
|
|
303
303
|
"prompt.unavailable.retry" = "사용 불가: {reason}. 사용 가능한 항목을 선택하세요."
|
|
304
304
|
"prompt.no.previous" = "이전 메뉴가 없습니다. q로 취소하세요."
|
|
305
|
-
"prompt.
|
|
305
|
+
"prompt.instructions.header" = "-- 지침 상태 --"
|
|
306
306
|
|
|
307
|
-
"understand.title" = "Understand! ·
|
|
308
|
-
"understand.description" = "
|
|
309
|
-
"understand.empty" = "이
|
|
307
|
+
"understand.title" = "Understand! · 지침 원리 이해"
|
|
308
|
+
"understand.description" = "지침 묶음이 존재하는 이유, 규칙의 배경과 맥락, 작동 원리와 한계를 문답으로 이해합니다."
|
|
309
|
+
"understand.empty" = "이 instructions에는 학습할 수 있는 묶음이 없습니다."
|
|
310
310
|
"understand.bundle.detail" = "관련 자료 {count}개 · 개별 파일이 아니라 하나의 묶음으로 학습합니다."
|
|
311
|
-
"understand.session.scope" = "선택한 내용을 고정한 새 대화 세션에서 학습합니다.
|
|
311
|
+
"understand.session.scope" = "선택한 내용을 고정한 새 대화 세션에서 학습합니다. 지침 훅을 활성화하거나 전역 지침 파일을 수정하지 않습니다."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Opt-in zsh entrypoints, independent of native instruction files and
|
|
1
|
+
"""Opt-in zsh entrypoints, independent of native instruction files and instructions content."""
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import argparse
|
|
@@ -39,7 +39,7 @@ class ShellIntegration:
|
|
|
39
39
|
compose = str(Path(__file__).resolve().parent.parent / "compose")
|
|
40
40
|
if compose not in sys.path:
|
|
41
41
|
sys.path.insert(0, compose)
|
|
42
|
-
from
|
|
42
|
+
from instructions_transaction import reject_symlink_ancestors, TransactionError
|
|
43
43
|
try:
|
|
44
44
|
reject_symlink_ancestors(path)
|
|
45
45
|
except TransactionError as exc:
|
|
@@ -195,12 +195,12 @@ class ShellIntegration:
|
|
|
195
195
|
|
|
196
196
|
def apply(self, action, dry_run=False):
|
|
197
197
|
# One writer lock is shared with install/reset/migrate. Imports stay lazy so
|
|
198
|
-
# status and help do not create state or require an installed
|
|
198
|
+
# status and help do not create state or require an installed instructions.
|
|
199
199
|
import sys
|
|
200
200
|
compose = str(Path(__file__).resolve().parent.parent / "compose")
|
|
201
201
|
if compose not in sys.path:
|
|
202
202
|
sys.path.insert(0, compose)
|
|
203
|
-
from
|
|
203
|
+
from instructions_transaction import transaction_lock, guard_pending
|
|
204
204
|
lock = contextlib.nullcontext() if dry_run else transaction_lock(self.state)
|
|
205
205
|
with lock:
|
|
206
206
|
guard_pending(self.state)
|
|
@@ -9,8 +9,8 @@ optional criteria / classification / proposed_domain / context) plus its session
|
|
|
9
9
|
* mints learning_id (a lowercase UUID) + created (ISO-8601) + schema_version;
|
|
10
10
|
* validates the full record against learn/learning.schema.json — the single
|
|
11
11
|
validation source, reused from learn/check-learning.py (no second schema);
|
|
12
|
-
* appends the exact record to the private
|
|
13
|
-
* supplies it to future activated snapshots through
|
|
12
|
+
* appends the exact record to the private instructions's host-qualified events.jsonl;
|
|
13
|
+
* supplies it to future activated snapshots through InstructionsStore, without changing
|
|
14
14
|
native global instructions or the running session;
|
|
15
15
|
* drains explicitly configured ingestion from that immutable private event source.
|
|
16
16
|
|
|
@@ -23,7 +23,7 @@ never patches the payload to make it pass (runtime enforces, does not reason).
|
|
|
23
23
|
|
|
24
24
|
Input: the semantic payload as one JSON object on stdin.
|
|
25
25
|
Host: --host claude|codex (default: the tool prefix of supporting_sessions[0]).
|
|
26
|
-
Private storage: $
|
|
26
|
+
Private storage: $AGENT_BIOS_INSTRUCTIONS_DIR, else ~/.config/agent-bios/corpus.
|
|
27
27
|
Legacy storage: --config-dir, else $CLAUDE_CONFIG_DIR / $CODEX_HOME by host.
|
|
28
28
|
--config-dir requires AGENT_BIOS_LEGACY_INSTALL=1; it cannot relocate private capture.
|
|
29
29
|
After the local writes it best-effort uploads not-yet-delivered records to
|
|
@@ -52,7 +52,7 @@ REPO = pathlib.Path(__file__).resolve().parent.parent
|
|
|
52
52
|
OWNED_FIELDS = ("schema_version", "learning_id", "created")
|
|
53
53
|
# Free-text the LLM authored — scrubbed through the shared secret-redaction floor
|
|
54
54
|
# at capture, so secrets never reach the durable log, the upload, or the curator
|
|
55
|
-
# export (design/collection-loop/PHASE3-CURATION-DESIGN.md; the
|
|
55
|
+
# export (design/collection-loop/PHASE3-CURATION-DESIGN.md; the instructions floor in
|
|
56
56
|
# design/corpus-domain-packaging.md). Pattern-locked fields (domain,
|
|
57
57
|
# supporting_sessions, criteria) carry no free text and are left untouched.
|
|
58
58
|
FREE_TEXT_FIELDS = ("lesson", "context")
|
|
@@ -74,7 +74,7 @@ def import_line_index(body, directive):
|
|
|
74
74
|
example, or named in a sentence, loads nothing — and reading it as an import made
|
|
75
75
|
two different files claim a file was wired when it was not: capture reported the
|
|
76
76
|
entry `present` and wrote nothing, and migrate-learnings read a fenced central
|
|
77
|
-
import as evidence the
|
|
77
|
+
import as evidence the instructions was loaded, which is half of what authorizes deleting
|
|
78
78
|
a user's personal copy. An import is a line whose whole content is the directive.
|
|
79
79
|
|
|
80
80
|
Fences are tracked rather than stripped so the index is an index into `body`'s own
|
|
@@ -276,7 +276,7 @@ def apply_codex(home, bullet, dry):
|
|
|
276
276
|
if agents.exists():
|
|
277
277
|
body = agents.read_text(encoding="utf-8")
|
|
278
278
|
else:
|
|
279
|
-
# Degenerate (
|
|
279
|
+
# Degenerate (instructions not installed): seed EMPTY central markers so a
|
|
280
280
|
# later assemble fills them and keeps our region in the preserved tail.
|
|
281
281
|
body = f"{CENTRAL_START}\n{CENTRAL_END}\n"
|
|
282
282
|
if PERSONAL_START in body and PERSONAL_END in body:
|
|
@@ -1151,7 +1151,7 @@ def main():
|
|
|
1151
1151
|
help="session host (default: tool prefix of supporting_sessions[0])")
|
|
1152
1152
|
ap.add_argument("--config-dir", default=None,
|
|
1153
1153
|
help="legacy host home only (requires AGENT_BIOS_LEGACY_INSTALL=1); "
|
|
1154
|
-
"private capture uses
|
|
1154
|
+
"private capture uses AGENT_BIOS_INSTRUCTIONS_DIR")
|
|
1155
1155
|
ap.add_argument("--dry-run", action="store_true",
|
|
1156
1156
|
help="validate and print actions; write nothing")
|
|
1157
1157
|
ap.add_argument("--no-upload", action="store_true",
|
|
@@ -1167,7 +1167,7 @@ def main():
|
|
|
1167
1167
|
legacy = os.environ.get("AGENT_BIOS_LEGACY_INSTALL") == "1"
|
|
1168
1168
|
if args.config_dir is not None and not legacy:
|
|
1169
1169
|
ap.error("--config-dir applies only to AGENT_BIOS_LEGACY_INSTALL=1; "
|
|
1170
|
-
"set
|
|
1170
|
+
"set AGENT_BIOS_INSTRUCTIONS_DIR to relocate private learning storage")
|
|
1171
1171
|
|
|
1172
1172
|
payload = read_payload()
|
|
1173
1173
|
host = resolve_host(args.host, payload)
|
|
@@ -1186,8 +1186,8 @@ def main():
|
|
|
1186
1186
|
# Capture is an immutable private source. Model-visible projections are
|
|
1187
1187
|
# composed when an activated session is started, never written globally.
|
|
1188
1188
|
sys.path.insert(0, str(REPO / "compose"))
|
|
1189
|
-
from
|
|
1190
|
-
store =
|
|
1189
|
+
from instructions_store import InstructionsStore
|
|
1190
|
+
store = InstructionsStore(REPO)
|
|
1191
1191
|
destination = store.user_root / "learnings" / host
|
|
1192
1192
|
if dry:
|
|
1193
1193
|
print(f"collect-learning: [dry] private capture host={host} -> {destination / 'events.jsonl'}")
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"type": "string",
|
|
29
29
|
"minLength": 8,
|
|
30
30
|
"maxLength": 2000,
|
|
31
|
-
"description": "The captured lesson prose stored in the private
|
|
31
|
+
"description": "The captured lesson prose stored in the private instructions's host-qualified events.jsonl and supplied to future selected, activated-session snapshots. Ledger-compatible with entries[].lesson."
|
|
32
32
|
},
|
|
33
33
|
"domain": {
|
|
34
34
|
"type": "string",
|