ltcai 9.9.5 → 10.0.0

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.
Files changed (129) hide show
  1. package/README.md +39 -37
  2. package/docs/CHANGELOG.md +234 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/ONBOARDING.md +1 -1
  6. package/docs/OPERATIONS.md +3 -1
  7. package/docs/PERMISSION_MODE.md +107 -0
  8. package/docs/SURFACE_PARITY.md +38 -8
  9. package/docs/TRUST_MODEL.md +1 -1
  10. package/docs/WHY_LATTICE.md +1 -1
  11. package/docs/kg-schema.md +1 -1
  12. package/lattice_brain/__init__.py +1 -1
  13. package/lattice_brain/context.py +39 -4
  14. package/lattice_brain/graph/_kg_common.py +189 -14
  15. package/lattice_brain/graph/curator.py +62 -0
  16. package/lattice_brain/graph/discovery.py +76 -0
  17. package/lattice_brain/graph/ingest.py +37 -7
  18. package/lattice_brain/graph/retrieval_vector.py +10 -0
  19. package/lattice_brain/ingestion.py +9 -106
  20. package/lattice_brain/ingestion_jobs.py +133 -0
  21. package/lattice_brain/runtime/multi_agent.py +1 -1
  22. package/latticeai/__init__.py +1 -1
  23. package/latticeai/api/brain_intelligence.py +8 -0
  24. package/latticeai/api/chat.py +9 -0
  25. package/latticeai/api/chat_agent_http.py +119 -2
  26. package/latticeai/api/chat_contracts.py +9 -0
  27. package/latticeai/api/chat_documents.py +16 -0
  28. package/latticeai/api/evidence_actions.py +48 -0
  29. package/latticeai/api/permission_mode.py +61 -0
  30. package/latticeai/api/project_sessions.py +112 -0
  31. package/latticeai/api/voice_capture.py +89 -0
  32. package/latticeai/app_factory.py +53 -0
  33. package/latticeai/core/agent.py +381 -43
  34. package/latticeai/core/agent_permission.py +160 -0
  35. package/latticeai/core/agent_profiles.py +110 -0
  36. package/latticeai/core/artifact_ledger.py +109 -0
  37. package/latticeai/core/context_builder.py +101 -2
  38. package/latticeai/core/legacy_compatibility.py +1 -1
  39. package/latticeai/core/marketplace.py +1 -1
  40. package/latticeai/core/permission_mode.py +296 -0
  41. package/latticeai/core/project_sessions.py +337 -0
  42. package/latticeai/core/run_explain.py +421 -0
  43. package/latticeai/core/run_store.py +5 -0
  44. package/latticeai/core/workspace_os.py +15 -80
  45. package/latticeai/core/workspace_review_items.py +107 -0
  46. package/latticeai/integrations/telegram_bot.py +188 -0
  47. package/latticeai/runtime/chat_wiring.py +8 -0
  48. package/latticeai/runtime/context_runtime.py +11 -0
  49. package/latticeai/runtime/permission_mode_wiring.py +116 -0
  50. package/latticeai/runtime/router_registration.py +9 -0
  51. package/latticeai/services/app_context.py +3 -0
  52. package/latticeai/services/architecture_readiness.py +1 -1
  53. package/latticeai/services/brain_intelligence.py +105 -0
  54. package/latticeai/services/evidence_actions.py +254 -0
  55. package/latticeai/services/funnel_metrics.py +111 -16
  56. package/latticeai/services/local_knowledge.py +26 -0
  57. package/latticeai/services/memory_service.py +12 -0
  58. package/latticeai/services/permission_mode_service.py +170 -0
  59. package/latticeai/services/product_readiness.py +1 -1
  60. package/latticeai/services/tool_dispatch.py +73 -4
  61. package/latticeai/services/voice_capture.py +189 -0
  62. package/package.json +6 -4
  63. package/scripts/check_bundle_budget.mjs +11 -0
  64. package/scripts/check_current_release_docs.mjs +1 -1
  65. package/scripts/check_i18n_namespace_coverage.mjs +148 -0
  66. package/skills/meeting_notes/SKILL.md +82 -0
  67. package/skills/meeting_notes/examples.md +41 -0
  68. package/skills/meeting_notes/risk.json +9 -0
  69. package/skills/meeting_notes/schema.json +55 -0
  70. package/skills/weekly_review/SKILL.md +75 -0
  71. package/skills/weekly_review/examples.md +39 -0
  72. package/skills/weekly_review/risk.json +9 -0
  73. package/skills/weekly_review/schema.json +55 -0
  74. package/src-tauri/Cargo.lock +1 -1
  75. package/src-tauri/Cargo.toml +1 -1
  76. package/src-tauri/tauri.conf.json +1 -1
  77. package/static/app/asset-manifest.json +37 -29
  78. package/static/app/assets/Act-BtCREeN1.js +1 -0
  79. package/static/app/assets/AdminConsole-TPeeN18T.js +1 -0
  80. package/static/app/assets/Brain-BKs6JAp0.js +321 -0
  81. package/static/app/assets/BrainHome-BPGOvSd6.js +2 -0
  82. package/static/app/assets/BrainSignals-CtzQZ15J.js +1 -0
  83. package/static/app/assets/Capture-1_NaHWqB.js +1 -0
  84. package/static/app/assets/CommandPalette-pqvQOXe4.js +1 -0
  85. package/static/app/assets/Library-DhvoPvC7.js +1 -0
  86. package/static/app/assets/{LivingBrain-BVWk58MW.js → LivingBrain-DlQ20Q75.js} +1 -1
  87. package/static/app/assets/ProductFlow-BZvGDRi_.js +1 -0
  88. package/static/app/assets/ReviewCard-BWgI0D2s.js +3 -0
  89. package/static/app/assets/System-CSMdYLMy.js +1 -0
  90. package/static/app/assets/activity-Dlfk8YC7.js +1 -0
  91. package/static/app/assets/{bot-VmP0kkeA.js → bot-CDvUB76P.js} +1 -1
  92. package/static/app/assets/brain-xczrohrt.js +1 -0
  93. package/static/app/assets/button-SOdH3Oyf.js +1 -0
  94. package/static/app/assets/{circle-pause-T9POo4qy.js → circle-pause-CG1ythH4.js} +1 -1
  95. package/static/app/assets/{circle-play-Bz5iTD0p.js → circle-play-HXwvjS6W.js} +1 -1
  96. package/static/app/assets/{cpu-CJhjRtNq.js → cpu-B0d-rGyk.js} +1 -1
  97. package/static/app/assets/download-BGIkTQL6.js +1 -0
  98. package/static/app/assets/{folder-open-B2K_22VI.js → folder-open-Dst_Z0_K.js} +1 -1
  99. package/static/app/assets/{hard-drive-CjJtYqHf.js → hard-drive-D53MsWkV.js} +1 -1
  100. package/static/app/assets/index-C_IrlQMV.js +10 -0
  101. package/static/app/assets/index-FxDusbr0.css +2 -0
  102. package/static/app/assets/{input-CSi6OBJ9.js → input-C5m0riF6.js} +1 -1
  103. package/static/app/assets/{network-Ck1nqc-v.js → network-C5a-E5iS.js} +1 -1
  104. package/static/app/assets/primitives-vNXYf58F.js +1 -0
  105. package/static/app/assets/search-DhbSgW6m.js +1 -0
  106. package/static/app/assets/shield-alert-Cc-WVXqN.js +1 -0
  107. package/static/app/assets/{textarea-C4wM0D-Z.js → textarea-BkZ0EqVO.js} +1 -1
  108. package/static/app/assets/{useFocusTrap-CsnIhsDJ.js → useFocusTrap-CTtKbAOU.js} +1 -1
  109. package/static/app/assets/{navigation-BPQqEQwr.js → useQuery-Dx1fi4Wu.js} +1 -1
  110. package/static/app/assets/users-BFpQXtEF.js +1 -0
  111. package/static/app/assets/utils-BA_lmW3J.js +7 -0
  112. package/static/app/assets/workspace-DBPB0jkX.js +1 -0
  113. package/static/app/index.html +4 -4
  114. package/static/sw.js +1 -1
  115. package/static/app/assets/Act-DmxfbqBp.js +0 -1
  116. package/static/app/assets/Brain-DK_zKCda.js +0 -321
  117. package/static/app/assets/BrainHome-CCE_0hni.js +0 -2
  118. package/static/app/assets/BrainSignals-r_J68_zh.js +0 -1
  119. package/static/app/assets/Capture-CvxwzpJZ.js +0 -1
  120. package/static/app/assets/CommandPalette-CVLiFIQC.js +0 -1
  121. package/static/app/assets/Library-4As9VUvy.js +0 -1
  122. package/static/app/assets/ProductFlow-B-Tz0Um4.js +0 -1
  123. package/static/app/assets/ReviewCard-Va3fPQuj.js +0 -3
  124. package/static/app/assets/System-DSR2zKWd.js +0 -1
  125. package/static/app/assets/index-7FAfYm4v.css +0 -2
  126. package/static/app/assets/index-CEu0Wqjl.js +0 -10
  127. package/static/app/assets/primitives-B2f9N7Dh.js +0 -1
  128. package/static/app/assets/shield-alert-yA_Y8lOB.js +0 -1
  129. package/static/app/assets/utils-BqoznzGP.js +0 -7
@@ -0,0 +1,41 @@
1
+ # meeting_notes — Examples
2
+
3
+ ## 1. 붙여넣은 메모 → 정리된 노트 (success)
4
+
5
+ **Input**
6
+ ```json
7
+ {
8
+ "path": "notes/2026-07-27-weekly.md",
9
+ "notes": "주간회의. 1분기 예산 1200만원으로 확정함. 마케팅 40%. 태수님이 예산안 공유하기로. 2분기 계획은 이사회 승인 필요한데 일정 미정.",
10
+ "content": "# 2026-07-27 주간회의\n\n## 결정사항\n- 1분기 예산 1,200만원 확정 (마케팅 40%)\n\n## 할 일\n- [ ] 예산안 공유 — 태수\n\n## 미해결 질문\n- 2분기 계획 이사회 승인 일정 미정\n"
11
+ }
12
+ ```
13
+ **Output**
14
+ ```json
15
+ { "success": true, "path": "notes/2026-07-27-weekly.md", "bytes": 178 }
16
+ ```
17
+
18
+ 메모에 담당자가 적힌 항목만 담당자가 채워졌고, 기한은 어디에도 없었으므로
19
+ 비워 두었다 — 추측해서 채우지 않는다.
20
+
21
+ ## 2. 결정사항이 없는 회의 (success, 정직한 빈 섹션)
22
+
23
+ **Input**
24
+ ```json
25
+ {
26
+ "path": "notes/2026-07-28-sync.md",
27
+ "notes": "짧은 싱크. 다들 진행 상황 공유만 하고 끝.",
28
+ "content": "# 2026-07-28 싱크\n\n## 결정사항\n- 결정된 사항 없음\n\n## 할 일\n- 없음\n\n## 미해결 질문\n- 없음\n"
29
+ }
30
+ ```
31
+ **Output**
32
+ ```json
33
+ { "success": true, "path": "notes/2026-07-28-sync.md", "bytes": 96 }
34
+ ```
35
+
36
+ 없는 결정을 만들어 내는 대신 "결정된 사항 없음"을 그대로 적는다.
37
+
38
+ ## 3. 기존 노트를 덮어쓰는 경우 (변경 제안)
39
+
40
+ 이미 있는 파일을 대상으로 하면 ChangeGovernor가 변경 제안으로 돌린다. 디스크는
41
+ 승인 전까지 바뀌지 않으며, 검토함(Review Center)에서 승인해야 적용된다.
@@ -0,0 +1,9 @@
1
+ {
2
+ "risk": "write",
3
+ "destructive": false,
4
+ "shell": false,
5
+ "network": false,
6
+ "auto_approve": true,
7
+ "sandbox": "workspace",
8
+ "rollback": "snapshot"
9
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "meeting_notes",
4
+ "version": "1.0.0",
5
+ "action": "write_file",
6
+ "input": {
7
+ "required": ["path", "content"],
8
+ "optional": ["notes", "source_path"],
9
+ "properties": {
10
+ "path": { "type": "string", "description": "저장할 노트 경로 (워크스페이스 상대 경로, .md)" },
11
+ "content": { "type": "string", "description": "결정사항/할 일/미해결 질문으로 정리된 마크다운 본문" },
12
+ "notes": { "type": "string", "description": "원본 회의 메모 (붙여넣기)" },
13
+ "source_path": { "type": "string", "description": "원본 메모 파일 경로 (notes 대신 사용)" }
14
+ }
15
+ },
16
+ "output": {
17
+ "oneOf": [
18
+ {
19
+ "title": "success",
20
+ "properties": {
21
+ "success": { "const": true },
22
+ "path": { "type": "string" },
23
+ "bytes": { "type": "integer" }
24
+ },
25
+ "required": ["path"]
26
+ },
27
+ {
28
+ "title": "failure",
29
+ "properties": {
30
+ "success": { "const": false },
31
+ "error": { "type": "string", "enum": ["INVALID_INPUT","FILE_NOT_FOUND","MODEL_NOT_LOADED"] },
32
+ "message": { "type": "string" }
33
+ },
34
+ "required": ["success","error","message"]
35
+ }
36
+ ]
37
+ },
38
+ "evals": [
39
+ {
40
+ "id": "writes_a_note",
41
+ "description": "정리된 노트를 워크스페이스에 저장한다",
42
+ "input": {
43
+ "path": "notes/meeting-notes-eval.md",
44
+ "content": "# 회의 노트\n\n## 결정사항\n- 1분기 예산 1200만원 확정\n\n## 할 일\n- [ ] 예산안 공유 (담당 미정)\n\n## 미해결 질문\n- 2분기 계획 승인 일정\n"
45
+ },
46
+ "pass_criteria": "success == true"
47
+ },
48
+ {
49
+ "id": "rejects_empty_input",
50
+ "description": "경로 없이 호출하면 거절한다",
51
+ "input": { "content": "x" },
52
+ "pass_criteria": "success == false"
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,75 @@
1
+ # Skill: weekly_review
2
+
3
+ description: 이번 주 Brain에 들어온 것과 남은 할 일로 주간 회고 문서를 만든다.
4
+
5
+ ## 메타데이터
6
+ - **버전**: 1.0.0
7
+ - **카테고리**: knowledge
8
+ - **위험도**: low
9
+ - **필요 권한**: workspace_write
10
+
11
+ ## 설명
12
+
13
+ 지난 한 주 동안 Brain에 실제로 들어온 자료(문서·메모·대화)와 아직 열려 있는
14
+ 항목을 근거로 주간 회고 문서를 만든다. 사람이 기억을 짜내는 대신, **Brain이
15
+ 가진 기록에서만** 한 주를 재구성한다.
16
+
17
+ 설치하자마자 값이 보이는 이유: 이미 쌓인 것만 쓰기 때문에 추가 입력이 필요 없고,
18
+ 결과가 그대로 다음 주 계획의 출발점이 된다.
19
+
20
+ ## 거버넌스
21
+
22
+ `risk.json` 참고. 요약: `risk=write`, `destructive=false`, `shell=false`,
23
+ `network=false`, `auto_approve=true`, `sandbox=workspace`, `rollback=snapshot`.
24
+
25
+ ## 트리거 조건
26
+
27
+ 호출해야 하는 상황:
28
+ - "이번 주 정리해줘", "주간 회고 써줘"
29
+ - 금요일/월요일 루틴으로 한 주를 닫고 열 때
30
+ - 프로젝트 세션의 남은 할 일을 한 장으로 보고 싶을 때
31
+
32
+ 호출하면 **안** 되는 상황:
33
+ - 특정 문서 하나의 요약 → `summarize_document`
34
+ - 회의 하나의 결정/할 일 정리 → `meeting_notes`
35
+
36
+ ## 근거 규칙 (중요)
37
+
38
+ - 이 주에 **Brain에 기록이 있는 것만** 쓴다. 기록이 없는 성과를 지어내지 않는다.
39
+ - 각 항목 뒤에 출처(문서 제목/파일명)를 남긴다.
40
+ - 한 주 동안 들어온 것이 없으면 "이번 주 새로 들어온 자료가 없습니다"라고 쓰고
41
+ 끝낸다. 빈 주를 채우지 않는다.
42
+
43
+ ## Side Effects
44
+
45
+ | 항목 | 내용 |
46
+ |------|------|
47
+ | 파일 변경 | 대상 경로에 마크다운 1개 생성 (기존 파일이면 변경 제안) |
48
+ | 생성 파일 | `reviews/<week>.md` (기본) |
49
+ | 프로세스 | 없음 |
50
+ | 네트워크 | 없음 |
51
+
52
+ ## Rollback
53
+
54
+ `rollback=snapshot`. 실패 시 쓰기 전 상태로 복구된다.
55
+
56
+ ## 입력/출력 스키마
57
+
58
+ `schema.json` 참고.
59
+
60
+ ## 실행 조건
61
+
62
+ - LLM 모델이 로드되어 있어야 함
63
+ - Brain에 최소 1건의 자료가 있어야 의미 있는 결과가 나온다 (없으면 위 규칙대로
64
+ "없음"을 그대로 기록한다)
65
+
66
+ ## 예제
67
+
68
+ `examples.md` 참고.
69
+
70
+ ## 실패 처리
71
+
72
+ | 에러 코드 | 원인 | 처리 방법 |
73
+ |-----------|------|-----------|
74
+ | `INVALID_INPUT` | path 누락 | 저장 경로 지정 |
75
+ | `MODEL_NOT_LOADED` | 모델 미로드 | 모델을 먼저 로드 |
@@ -0,0 +1,39 @@
1
+ # weekly_review — Examples
2
+
3
+ ## 1. 자료가 있는 한 주 (success)
4
+
5
+ **Input**
6
+ ```json
7
+ {
8
+ "path": "reviews/2026-W30.md",
9
+ "week": "2026-W30",
10
+ "content": "# 2026-W30 주간 회고\n\n## 이번 주 들어온 것\n- 1분기 예산 1,200만원 확정 (출처: docs/budget.md)\n- 주간회의 노트 (출처: notes/2026-07-27-weekly.md)\n\n## 남은 할 일\n- [ ] 2분기 계획 이사회 승인\n\n## 다음 주\n- 이사회 일정 확정하기\n"
11
+ }
12
+ ```
13
+ **Output**
14
+ ```json
15
+ { "success": true, "path": "reviews/2026-W30.md", "bytes": 241 }
16
+ ```
17
+
18
+ 모든 항목에 출처가 붙어 있다 — Brain에 기록이 있는 것만 썼다는 증거다.
19
+
20
+ ## 2. 자료가 없는 한 주 (success, 빈 주를 채우지 않음)
21
+
22
+ **Input**
23
+ ```json
24
+ {
25
+ "path": "reviews/2026-W31.md",
26
+ "content": "# 2026-W31 주간 회고\n\n이번 주 새로 들어온 자료가 없습니다.\n"
27
+ }
28
+ ```
29
+ **Output**
30
+ ```json
31
+ { "success": true, "path": "reviews/2026-W31.md", "bytes": 62 }
32
+ ```
33
+
34
+ 없는 성과를 지어내는 대신 없다고 적는다.
35
+
36
+ ## 3. 프로젝트 세션과 함께
37
+
38
+ `project_id`를 주면 그 프로젝트가 만든 파일과 남은 TODO, 마지막 검증 결과가
39
+ "남은 할 일" 섹션의 근거가 된다 (`GET /api/projects/{id}`).
@@ -0,0 +1,9 @@
1
+ {
2
+ "risk": "write",
3
+ "destructive": false,
4
+ "shell": false,
5
+ "network": false,
6
+ "auto_approve": true,
7
+ "sandbox": "workspace",
8
+ "rollback": "snapshot"
9
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "weekly_review",
4
+ "version": "1.0.0",
5
+ "action": "write_file",
6
+ "input": {
7
+ "required": ["path", "content"],
8
+ "optional": ["week", "project_id"],
9
+ "properties": {
10
+ "path": { "type": "string", "description": "저장할 회고 경로 (워크스페이스 상대 경로, .md)" },
11
+ "content": { "type": "string", "description": "Brain 기록을 근거로 작성한 회고 본문 (각 항목에 출처 표기)" },
12
+ "week": { "type": "string", "description": "대상 주 (예: 2026-W30). 생략 시 이번 주" },
13
+ "project_id": { "type": "string", "description": "프로젝트 세션 id — 남은 할 일을 함께 반영" }
14
+ }
15
+ },
16
+ "output": {
17
+ "oneOf": [
18
+ {
19
+ "title": "success",
20
+ "properties": {
21
+ "success": { "const": true },
22
+ "path": { "type": "string" },
23
+ "bytes": { "type": "integer" }
24
+ },
25
+ "required": ["path"]
26
+ },
27
+ {
28
+ "title": "failure",
29
+ "properties": {
30
+ "success": { "const": false },
31
+ "error": { "type": "string", "enum": ["INVALID_INPUT","MODEL_NOT_LOADED"] },
32
+ "message": { "type": "string" }
33
+ },
34
+ "required": ["success","error","message"]
35
+ }
36
+ ]
37
+ },
38
+ "evals": [
39
+ {
40
+ "id": "writes_a_review",
41
+ "description": "근거가 표기된 회고 문서를 저장한다",
42
+ "input": {
43
+ "path": "reviews/weekly-review-eval.md",
44
+ "content": "# 2026-W30 주간 회고\n\n## 이번 주 들어온 것\n- 1분기 예산 확정 (출처: docs/budget.md)\n\n## 남은 할 일\n- [ ] 2분기 계획 승인 받기\n\n## 다음 주\n- 이사회 일정 확정\n"
45
+ },
46
+ "pass_criteria": "success == true"
47
+ },
48
+ {
49
+ "id": "rejects_missing_path",
50
+ "description": "저장 경로 없이 호출하면 거절한다",
51
+ "input": { "content": "x" },
52
+ "pass_criteria": "success == false"
53
+ }
54
+ ]
55
+ }
@@ -1584,7 +1584,7 @@ dependencies = [
1584
1584
 
1585
1585
  [[package]]
1586
1586
  name = "lattice-ai-desktop"
1587
- version = "9.9.5"
1587
+ version = "10.0.0"
1588
1588
  dependencies = [
1589
1589
  "plist",
1590
1590
  "serde",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "9.9.5"
3
+ version = "10.0.0"
4
4
  description = "Lattice AI Digital Brain desktop shell"
5
5
  authors = ["TaeSoo Park"]
6
6
  edition = "2021"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Lattice AI",
4
- "version": "9.9.5",
4
+ "version": "10.0.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,37 +1,45 @@
1
1
  {
2
- "version": "9.9.5",
2
+ "version": "10.0.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
- "app": "/static/app/assets/index-CEu0Wqjl.js"
5
+ "app": "/static/app/assets/index-C_IrlQMV.js"
6
6
  },
7
7
  "assets": {
8
8
  "../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
9
- "_BrainSignals-r_J68_zh.js": "/static/app/assets/BrainSignals-r_J68_zh.js",
10
- "_LivingBrain-BVWk58MW.js": "/static/app/assets/LivingBrain-BVWk58MW.js",
11
- "_ReviewCard-Va3fPQuj.js": "/static/app/assets/ReviewCard-Va3fPQuj.js",
12
- "_bot-VmP0kkeA.js": "/static/app/assets/bot-VmP0kkeA.js",
13
- "_circle-pause-T9POo4qy.js": "/static/app/assets/circle-pause-T9POo4qy.js",
14
- "_circle-play-Bz5iTD0p.js": "/static/app/assets/circle-play-Bz5iTD0p.js",
15
- "_cpu-CJhjRtNq.js": "/static/app/assets/cpu-CJhjRtNq.js",
16
- "_folder-open-B2K_22VI.js": "/static/app/assets/folder-open-B2K_22VI.js",
17
- "_hard-drive-CjJtYqHf.js": "/static/app/assets/hard-drive-CjJtYqHf.js",
18
- "_input-CSi6OBJ9.js": "/static/app/assets/input-CSi6OBJ9.js",
19
- "_navigation-BPQqEQwr.js": "/static/app/assets/navigation-BPQqEQwr.js",
20
- "_network-Ck1nqc-v.js": "/static/app/assets/network-Ck1nqc-v.js",
21
- "_primitives-B2f9N7Dh.js": "/static/app/assets/primitives-B2f9N7Dh.js",
22
- "_shield-alert-yA_Y8lOB.js": "/static/app/assets/shield-alert-yA_Y8lOB.js",
23
- "_textarea-C4wM0D-Z.js": "/static/app/assets/textarea-C4wM0D-Z.js",
24
- "_useFocusTrap-CsnIhsDJ.js": "/static/app/assets/useFocusTrap-CsnIhsDJ.js",
25
- "_utils-BqoznzGP.js": "/static/app/assets/utils-BqoznzGP.js",
26
- "index.html": "/static/app/assets/index-CEu0Wqjl.js",
27
- "assets/index-7FAfYm4v.css": "/static/app/assets/index-7FAfYm4v.css",
28
- "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-B-Tz0Um4.js",
29
- "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-CCE_0hni.js",
30
- "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-CVLiFIQC.js",
31
- "src/pages/Act.tsx": "/static/app/assets/Act-DmxfbqBp.js",
32
- "src/pages/Brain.tsx": "/static/app/assets/Brain-DK_zKCda.js",
33
- "src/pages/Capture.tsx": "/static/app/assets/Capture-CvxwzpJZ.js",
34
- "src/pages/Library.tsx": "/static/app/assets/Library-4As9VUvy.js",
35
- "src/pages/System.tsx": "/static/app/assets/System-DSR2zKWd.js"
9
+ "_BrainSignals-CtzQZ15J.js": "/static/app/assets/BrainSignals-CtzQZ15J.js",
10
+ "_LivingBrain-DlQ20Q75.js": "/static/app/assets/LivingBrain-DlQ20Q75.js",
11
+ "_ReviewCard-BWgI0D2s.js": "/static/app/assets/ReviewCard-BWgI0D2s.js",
12
+ "_activity-Dlfk8YC7.js": "/static/app/assets/activity-Dlfk8YC7.js",
13
+ "_bot-CDvUB76P.js": "/static/app/assets/bot-CDvUB76P.js",
14
+ "_brain-xczrohrt.js": "/static/app/assets/brain-xczrohrt.js",
15
+ "_button-SOdH3Oyf.js": "/static/app/assets/button-SOdH3Oyf.js",
16
+ "_circle-pause-CG1ythH4.js": "/static/app/assets/circle-pause-CG1ythH4.js",
17
+ "_circle-play-HXwvjS6W.js": "/static/app/assets/circle-play-HXwvjS6W.js",
18
+ "_cpu-B0d-rGyk.js": "/static/app/assets/cpu-B0d-rGyk.js",
19
+ "_download-BGIkTQL6.js": "/static/app/assets/download-BGIkTQL6.js",
20
+ "_folder-open-Dst_Z0_K.js": "/static/app/assets/folder-open-Dst_Z0_K.js",
21
+ "_hard-drive-D53MsWkV.js": "/static/app/assets/hard-drive-D53MsWkV.js",
22
+ "_input-C5m0riF6.js": "/static/app/assets/input-C5m0riF6.js",
23
+ "_network-C5a-E5iS.js": "/static/app/assets/network-C5a-E5iS.js",
24
+ "_primitives-vNXYf58F.js": "/static/app/assets/primitives-vNXYf58F.js",
25
+ "_search-DhbSgW6m.js": "/static/app/assets/search-DhbSgW6m.js",
26
+ "_shield-alert-Cc-WVXqN.js": "/static/app/assets/shield-alert-Cc-WVXqN.js",
27
+ "_textarea-BkZ0EqVO.js": "/static/app/assets/textarea-BkZ0EqVO.js",
28
+ "_useFocusTrap-CTtKbAOU.js": "/static/app/assets/useFocusTrap-CTtKbAOU.js",
29
+ "_useQuery-Dx1fi4Wu.js": "/static/app/assets/useQuery-Dx1fi4Wu.js",
30
+ "_users-BFpQXtEF.js": "/static/app/assets/users-BFpQXtEF.js",
31
+ "_utils-BA_lmW3J.js": "/static/app/assets/utils-BA_lmW3J.js",
32
+ "_workspace-DBPB0jkX.js": "/static/app/assets/workspace-DBPB0jkX.js",
33
+ "index.html": "/static/app/assets/index-C_IrlQMV.js",
34
+ "assets/index-FxDusbr0.css": "/static/app/assets/index-FxDusbr0.css",
35
+ "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-BZvGDRi_.js",
36
+ "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole-TPeeN18T.js",
37
+ "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-BPGOvSd6.js",
38
+ "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-pqvQOXe4.js",
39
+ "src/pages/Act.tsx": "/static/app/assets/Act-BtCREeN1.js",
40
+ "src/pages/Brain.tsx": "/static/app/assets/Brain-BKs6JAp0.js",
41
+ "src/pages/Capture.tsx": "/static/app/assets/Capture-1_NaHWqB.js",
42
+ "src/pages/Library.tsx": "/static/app/assets/Library-DhvoPvC7.js",
43
+ "src/pages/System.tsx": "/static/app/assets/System-CSMdYLMy.js"
36
44
  }
37
45
  }