kenaz 0.3.21 → 0.3.23

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 (481) hide show
  1. package/core/.claude/commands/Ansuz.md +2 -0
  2. package/core/.claude/hooks/__tests__/peer-session-fill.test.js +37 -0
  3. package/core/.claude/hooks/_ansuz-conversation.js +32 -1
  4. package/core/.claude/hooks/_user-scope.js +1 -1
  5. package/core/.claude/hooks/core-resolve.js +1 -1
  6. package/core/.claude/hooks/peer-optin.test.js +74 -0
  7. package/core/.claude/hooks/peer-session-fill.js +38 -0
  8. package/core/.claude/hooks/turn-context.js +5 -4
  9. package/core/.claude/hooks/worktree-create.js +6 -6
  10. package/core/.claude/hooks/worktree-remove.js +4 -4
  11. package/core/.claude/settings.json +9 -0
  12. package/core/.collaboration/core/reconcile.js +16 -1
  13. package/core/.collaboration/core/task-2467-lifecycle.test.js +63 -0
  14. package/core/.collaboration/core/task-api.js +37 -7
  15. package/core/.formation/bifrost/launch.js +1 -1
  16. package/core/.formation/bifrost/openai/codex-hook-shim.js +21 -4
  17. package/core/.formation/bifrost/openai/codex-peer-pull.test.js +42 -0
  18. package/core/.formation/bifrost/provider-launch.js +2 -1
  19. package/core/.formation/tools/kenaz-stats.js +1 -1
  20. package/core/.formation/tools/post-complete/git-merge.js +1 -1
  21. package/core/.formation/tools/prompt.js +1 -1
  22. package/core/.kenaz/specialist/ansuz_rules.yaml +7 -51
  23. package/core/.kenaz/specialist/ansuz_session_handoff.schema.json +2 -6
  24. package/core/.rule/general/project-self-containment.yaml +2 -2
  25. package/core/.specialist/Amelia/README.md +1 -1
  26. package/core/.specialist/Amelia/rule.yaml +1 -1
  27. package/core/.specialist/Ansuz/RULES.md +1 -1
  28. package/core/.specialist/Ansuz/concepts/commitment_layer.yaml +1 -1
  29. package/core/.specialist/Ansuz/concepts/evolvable_guardrails.yaml +1 -1
  30. package/core/.specialist/Ansuz/knowledge.yaml +1 -3
  31. package/core/.specialist/tools/__tests__/task-2409-lessons.test.js +10 -0
  32. package/core/.specialist/tools/__tests__/task-2427-harvest.test.js +25 -0
  33. package/core/.specialist/tools/ansuz-boot-fast.js +1 -1
  34. package/core/.specialist/tools/failure-detector.js +4 -4
  35. package/core/.specialist/tools/handoff-doc.js +1 -1
  36. package/core/.specialist/tools/lessons.js +2 -2
  37. package/core/CLAUDE.md +5 -5
  38. package/core/KENAZ_CORE_VERSION +1 -1
  39. package/core/dashboard/scripts/install-kenaz-cli.js +471 -0
  40. package/core/dev/scripts/check-file-size.js +1 -1
  41. package/core/dev/scripts/ci-feedback.js +1 -1
  42. package/core/dev/scripts/gc-agent-worktrees.js +11 -11
  43. package/core/dev/scripts/kenaz-session.js +3 -3
  44. package/core/dev/scripts/peer-identity-e2e.js +3 -3
  45. package/core/dev/scripts/run-rust-tests.js +2 -2
  46. package/core/dev/scripts/skill-routing-replay.js +3 -3
  47. package/core/dev/scripts/task1961/selftest.js +2 -2
  48. package/core/dev/scripts/windows-hide-guard.test.js +97 -0
  49. package/core/plugins/kenaz/commands/Ansuz.md +2 -0
  50. package/core/plugins/kenaz/guidance.md +2 -0
  51. package/core/plugins/kenaz/hooks/core-resolve.js +1 -1
  52. package/core/plugins/kenaz/hooks/hooks.json +9 -0
  53. package/core/plugins/kenaz/hooks/kenaz-hook.js +53 -4
  54. package/core/plugins/kenaz/scripts/kenaz.test.js +72 -5
  55. package/core/plugins/kenaz/scripts/ygg.js +40 -4
  56. package/core/plugins/kenaz/scripts/ygg.test.js +63 -3
  57. package/core/plugins/kenaz-peer/hooks/register.test.ts +59 -2
  58. package/core/plugins/kenaz-peer/hooks/register.ts +24 -1
  59. package/lib/cli.js +9 -5
  60. package/package.json +6 -6
  61. package/vendor/install-kenaz-cli.js +21 -6
  62. package/core/.kenaz/designs/METAPLASTICITY_CONFIDENCE_DESIGN.md +0 -537
  63. package/core/.kenaz/designs/REFLEX_INITIATOR_DESIGN.md +0 -501
  64. package/core/.kenaz/designs/TASK_1385_handoff_mcp_design.md +0 -426
  65. package/core/.kenaz/designs/TASK_932_hippocampus_consolidation.md +0 -103
  66. package/core/.kenaz/designs/TASK_934_efe_signal_engine.md +0 -97
  67. package/core/.kenaz/designs/TASK_935_self_evolution_framework.md +0 -154
  68. package/core/.kenaz/designs/VISION_cognitive_architecture_roadmap.md +0 -159
  69. package/core/.kenaz/designs/metaplasticity_simulation_results.json +0 -696
  70. package/core/.kenaz/main-memory/README.md +0 -230
  71. package/core/.kenaz/main-memory/kenaz/cortex/001_cortex_overview.md +0 -168
  72. package/core/.kenaz/main-memory/kenaz/cortex/001_rag_engine_overview.md +0 -30
  73. package/core/.kenaz/main-memory/kenaz/memory-system/001_three_tier_architecture.md +0 -361
  74. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_execution_flow.md +0 -117
  75. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_granularity.md +0 -154
  76. package/core/.kenaz/main-memory/kenaz/pipeline/002_team_priority.md +0 -51
  77. package/core/.kenaz/main-memory/kenaz/pipeline/003_feature_id_system.md +0 -46
  78. package/core/.kenaz/main-memory/kenaz/rules/001_gen_007_self_containment.md +0 -108
  79. package/core/.kenaz/main-memory/kenaz/rules/001_rule_priority_system.md +0 -121
  80. package/core/.kenaz/main-memory/kenaz/rules/002_agt_006_pre_check.md +0 -0
  81. package/core/.kenaz/main-memory/kenaz/rules/003_ppl_002_task_archival.md +0 -48
  82. package/core/.kenaz/main-memory/kenaz/system/001_dual_track_task_system.md +0 -197
  83. package/core/.kenaz/main-memory/knowledge/patterns/001_json_bom_issue.md +0 -78
  84. package/core/.kenaz/main-memory/knowledge/patterns/001_leader_worker_pattern.md +0 -0
  85. package/core/.kenaz/main-memory/knowledge/patterns/002_scope_path_conflict.md +0 -115
  86. package/core/.kenaz/main-memory/knowledge/patterns/002_task_dependency_resolution.md +0 -223
  87. package/core/.kenaz/main-memory/knowledge/patterns/003_question_protocol.md +0 -242
  88. package/core/.kenaz/main-memory/knowledge/patterns/004_user_insight_value.md +0 -111
  89. package/core/.kenaz/main-memory/knowledge/patterns/005_file_lock_pattern.md +0 -274
  90. package/core/.kenaz/main-memory/knowledge/references/001_ppl_rules.md +0 -28
  91. package/core/.kenaz/main-memory/knowledge/solutions/001_json_bom_issue.md +0 -137
  92. package/core/.kenaz/main-memory/knowledge/solutions/001_team_invocation.md +0 -0
  93. package/core/.kenaz/main-memory/knowledge/solutions/002_passive_monitoring.md +0 -0
  94. package/core/.kenaz/main-memory/knowledge/solutions/003_windows_file_race_condition.md +0 -239
  95. package/core/.kenaz/main-memory/registry.json +0 -326
  96. package/core/.kenaz/main-memory/version.yaml +0 -58
  97. package/core/.kenaz/specialist/memory_guard_fired.json +0 -1
  98. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +0 -1
  99. package/core/.kenaz/specialist/memory_source_priority.yaml +0 -260
  100. package/core/.kenaz/specialist/prompt_1775.txt +0 -317
  101. package/core/.kenaz/specialist/prompt_1776.txt +0 -326
  102. package/core/.kenaz/specialist/prompt_1791.txt +0 -320
  103. package/core/.kenaz/specialist/prompt_1792.txt +0 -320
  104. package/core/.kenaz/specialist/prompt_1795.txt +0 -281
  105. package/core/.kenaz/specialist/prompt_1813.txt +0 -332
  106. package/core/.kenaz/specialist/prompt_1814.txt +0 -401
  107. package/core/.kenaz/specialist/prompt_1815.txt +0 -394
  108. package/core/.kenaz/specialist/prompt_1816.txt +0 -437
  109. package/core/.kenaz/specialist/prompt_1818.txt +0 -361
  110. package/core/.kenaz/specialist/prompt_1819.txt +0 -421
  111. package/core/.kenaz/specialist/prompt_1821.txt +0 -345
  112. package/core/.kenaz/specialist/prompt_1822.txt +0 -313
  113. package/core/.kenaz/specialist/prompt_1824.txt +0 -348
  114. package/core/.kenaz/specialist/prompt_1826.txt +0 -388
  115. package/core/.kenaz/specialist/rune_efe_salience_gap.md +0 -21
  116. package/core/.kenaz/specialist/task1825_update.json +0 -43
  117. package/core/.kenaz/specialist/taskgen/consolidation_i.json +0 -38
  118. package/core/.kenaz/specialist/taskgen/csharp_a.json +0 -44
  119. package/core/.kenaz/specialist/taskgen/csharp_b.json +0 -40
  120. package/core/.kenaz/specialist/taskgen/embedding_e.json +0 -34
  121. package/core/.kenaz/specialist/taskgen/hygiene_fg.json +0 -39
  122. package/core/.kenaz/specialist/taskgen/pathology_h.json +0 -36
  123. package/core/.kenaz/specialist/taskgen/unity_noise_d.json +0 -38
  124. package/core/.kenaz/specialist/taskgen/visibility_c.json +0 -38
  125. package/core/.specialist/Ansuz/decisions/ADR-requirement-graph-layer.md +0 -390
  126. package/core/.specialist/Ansuz/self_model_seed.backup.json +0 -100
  127. package/core/.specialist/ansuz_session_handoff.json +0 -96
  128. package/core/dev/ALAYA_FIELD_FEEDBACK_DESIGN.md +0 -126
  129. package/core/dev/ANSUZ_SCAFFOLD_DIET_2026-09-20.md +0 -231
  130. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +0 -355
  131. package/core/dev/ANSUZ_WORKFLOW_MODERNIZATION.md +0 -143
  132. package/core/dev/CORTEX_META_GRAPH_ASSESSMENT.md +0 -99
  133. package/core/dev/FREYA_DOWNSTREAM_BUGS_2026-09-19.md +0 -44
  134. package/core/dev/GLOBAL_MEMORY_IDENTITY_CONSOLIDATION.md +0 -263
  135. package/core/dev/GUARD_EFFECTIVENESS_DESIGN.md +0 -180
  136. package/core/dev/HEALTH_GATE_VARIANCE_ASSESSMENT.md +0 -271
  137. package/core/dev/HOOK_DIET_2026-09-21.md +0 -126
  138. package/core/dev/JEV_INTEGRATION_PLAN.md +0 -189
  139. package/core/dev/KENAZ_AGENT_CONNECT_v1_SPEC.md +0 -139
  140. package/core/dev/MOBILE_DESIGN_SPEC.md +0 -569
  141. package/core/dev/MULTI_ANSUZ_SPEC.md +0 -136
  142. package/core/dev/MUNINN_RETIREMENT.md +0 -115
  143. package/core/dev/PHASE3_ATTRIBUTION_POPULATION_DIAGNOSIS.md +0 -211
  144. package/core/dev/PHASE3_P3-2B_TASKLEVEL_PROBE.md +0 -83
  145. package/core/dev/PHASE3_P3-2_POPULATION_DISJOINTNESS.md +0 -83
  146. package/core/dev/PHASE3_P3-2_REMEASURE_REPORT.md +0 -231
  147. package/core/dev/PREDICTION_GROUNDING_DESIGN.md +0 -376
  148. package/core/dev/PRODUCT_SPEC.md +0 -317
  149. package/core/dev/PROJECT_REGISTRY_DUPLICATE_ASSESSMENT.md +0 -86
  150. package/core/dev/STARTUP_TIMELINE_TASK_1995.md +0 -181
  151. package/core/dev/SYNAPSE_WORKER_PER_PROJECT.md +0 -881
  152. package/core/dev/TASK_1680_P3-3_DISPATCH_SPEC.md +0 -96
  153. package/core/dev/TASK_1684_CALIBRATION_IMPACT_ANALYSIS.md +0 -170
  154. package/core/dev/TASK_1684_FORK_A_GOODHART_DESIGN.md +0 -171
  155. package/core/dev/TASK_1684_P3_2_REMEASURE_VALIDATION.md +0 -262
  156. package/core/dev/TASK_1903_SIGNAL_AUC_MEASUREMENT.md +0 -207
  157. package/core/dev/TASK_1904_BRANCH_INTEGRITY_AUDIT.md +0 -146
  158. package/core/dev/ansuz-eval/README.md +0 -38
  159. package/core/dev/ansuz-eval/build-fixtures.js +0 -87
  160. package/core/dev/ansuz-eval/grade.js +0 -96
  161. package/core/dev/ansuz-eval/grader.test.js +0 -117
  162. package/core/dev/ansuz-eval/tasks.md +0 -32
  163. package/core/dev/archive/ansuz/BOOT_FULL.md +0 -141
  164. package/core/dev/archive/ansuz/agents/ansuz-boot.md +0 -176
  165. package/core/dev/archive/ansuz/designs/alaya-passive-surfacing.md +0 -84
  166. package/core/dev/archive/ansuz/designs/cc_memory_indexing.md +0 -307
  167. package/core/dev/archive/ansuz/designs/check_guard.md +0 -322
  168. package/core/dev/archive/ansuz/designs/consequence_loop.md +0 -227
  169. package/core/dev/archive/ansuz/designs/mcp_kuzudb_lock_architecture.md +0 -312
  170. package/core/dev/archive/ansuz/designs/phase0_git_enrichment.md +0 -278
  171. package/core/dev/archive/ansuz/designs/refactor_mcp_tools_synapse.md +0 -490
  172. package/core/dev/archive/ansuz/designs/semantic_markdown_extraction.md +0 -167
  173. package/core/dev/archive/ansuz/designs/task_1372_prompt_injects_into.md +0 -193
  174. package/core/dev/archive/ansuz/designs/thought_stack.md +0 -286
  175. package/core/dev/archive/ansuz/investigations/reachability_unified_api_2026-04-11.md +0 -330
  176. package/core/dev/archive/ansuz/investigations/synapse_orphans_indexing_bug_2026-04-11.md +0 -352
  177. package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md +0 -48
  178. package/core/dev/archive/ansuz/investigations/synapse_orphans_verification_2026-04-11.md +0 -170
  179. package/core/dev/archive/ansuz/legacy/kernel.yaml +0 -399
  180. package/core/dev/archive/ansuz/legacy/phases/phase_0.yaml +0 -418
  181. package/core/dev/archive/ansuz/legacy/phases/phase_1.yaml +0 -376
  182. package/core/dev/archive/ansuz/legacy/phases/phase_10.yaml +0 -35
  183. package/core/dev/archive/ansuz/legacy/phases/phase_11.yaml +0 -582
  184. package/core/dev/archive/ansuz/legacy/phases/phase_2.yaml +0 -94
  185. package/core/dev/archive/ansuz/legacy/phases/phase_3.yaml +0 -274
  186. package/core/dev/archive/ansuz/legacy/phases/phase_4.yaml +0 -67
  187. package/core/dev/archive/ansuz/legacy/phases/phase_5.yaml +0 -32
  188. package/core/dev/archive/ansuz/legacy/phases/phase_6.yaml +0 -91
  189. package/core/dev/archive/ansuz/legacy/phases/phase_7.yaml +0 -58
  190. package/core/dev/archive/ansuz/legacy/phases/phase_8.yaml +0 -146
  191. package/core/dev/archive/ansuz/legacy/phases/phase_9.yaml +0 -424
  192. package/core/dev/archive/ansuz/specs/INDEX_bifrost_hook_parity.yaml +0 -92
  193. package/core/dev/archive/ansuz/specs/active-inference-formation.yaml +0 -453
  194. package/core/dev/archive/ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml +0 -191
  195. package/core/dev/archive/ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml +0 -250
  196. package/core/dev/archive/ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml +0 -301
  197. package/core/dev/archive/ansuz/specs/brief_TASK_1231_verification.yaml +0 -272
  198. package/core/dev/archive/skills/feature_agent/SKILL.md +0 -289
  199. package/core/dev/design/PHASE4_DESIGN.md +0 -559
  200. package/core/dev/design/dashboard_docs_integration_PLAN.md +0 -388
  201. package/core/dev/design/matrix_format_ABBREVIATIONS.md +0 -655
  202. package/core/dev/design/matrix_format_DESIGN_SPEC.md +0 -601
  203. package/core/dev/design/matrix_format_DISCUSSION_SUMMARY.md +0 -484
  204. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +0 -13
  205. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +0 -9
  206. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +0 -14
  207. package/core/dev/design/matrix_format_SYNTAX_BNF.md +0 -754
  208. package/core/dev/design/matrix_format_TOKEN_COMPARISON.md +0 -484
  209. package/core/dev/design/matrix_v2_COGNITIVE_DESIGN.md +0 -503
  210. package/core/dev/design/matrix_v2_DISCUSSION_SUMMARY.md +0 -414
  211. package/core/dev/design/matrix_v2_EXAMPLE.matrix +0 -67
  212. package/core/dev/designs/EXPANDABLE_CARD_DESIGN_SPEC.md +0 -509
  213. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +0 -52
  214. package/core/dev/jev-eval/ANNOTATION_GUIDE.md +0 -68
  215. package/core/dev/jev-eval/BASELINE_COMPARISON.md +0 -45
  216. package/core/dev/jev-eval/CONTEXT_REVIEW.md +0 -31
  217. package/core/dev/jev-eval/EVALUATION_STATUS.md +0 -39
  218. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +0 -33
  219. package/core/dev/jev-eval/PACKAGING_VERIFICATION.md +0 -42
  220. package/core/dev/jev-eval/README.md +0 -101
  221. package/core/dev/jev-eval/THALAMUS_RANKING.md +0 -58
  222. package/core/dev/jev-eval/VALIDATION_PROGRESS.md +0 -54
  223. package/core/dev/jev-eval/cli.mjs +0 -50
  224. package/core/dev/jev-eval/context.mjs +0 -183
  225. package/core/dev/jev-eval/corpus.mjs +0 -186
  226. package/core/dev/jev-eval/fixtures/conversation-review.seed.jsonl +0 -6
  227. package/core/dev/jev-eval/fixtures/synthetic.jsonl +0 -11
  228. package/core/dev/jev-eval/metrics.mjs +0 -67
  229. package/core/dev/jev-eval/muninn-baseline.mjs +0 -119
  230. package/core/dev/jev-eval/providers.mjs +0 -95
  231. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +0 -32
  232. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +0 -48
  233. package/core/dev/jev-eval/reports/conversation-review.pending.json +0 -151
  234. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +0 -52
  235. package/core/dev/jev-eval/reports/length-probe-2026-09-20.json +0 -133
  236. package/core/dev/jev-eval/reports/live-smoke-2026-09-20.json +0 -616
  237. package/core/dev/jev-eval/reports/muninn-baseline-2026-09-20.json +0 -52
  238. package/core/dev/jev-eval/reports/resilience-2026-09-20.json +0 -520
  239. package/core/dev/jev-eval/reports/rules-baseline.json +0 -197
  240. package/core/dev/jev-eval/reports/synthetic-review.pending.json +0 -357
  241. package/core/dev/jev-eval/resilience.mjs +0 -71
  242. package/core/dev/jev-eval/review.mjs +0 -78
  243. package/core/dev/jev-eval/schema.mjs +0 -87
  244. package/core/dev/jev-eval/test/context.test.mjs +0 -95
  245. package/core/dev/jev-eval/test/corpus.test.mjs +0 -102
  246. package/core/dev/jev-eval/test/eval.test.mjs +0 -146
  247. package/core/dev/jev-eval/test/muninn-baseline.test.mjs +0 -71
  248. package/core/dev/jev-eval/test/resilience.test.mjs +0 -72
  249. package/core/dev/jev-eval/test/review.test.mjs +0 -61
  250. package/core/dev/pipeline/PHASE3_PLANNING_SUMMARY.md +0 -338
  251. package/core/dev/pipeline/PROGRESS.md +0 -113
  252. package/core/dev/pipeline/PROGRESS_template.md +0 -860
  253. package/core/dev/pipeline/QA_REPORT_F008.md +0 -431
  254. package/core/dev/pipeline/QA_REPORT_LOCAL_CLAUDE_DIAGNOSIS.md +0 -583
  255. package/core/dev/pipeline/README.md +0 -210
  256. package/core/dev/pipeline/WORKFLOW_GUIDE.md +0 -824
  257. package/core/dev/pipeline/archived/TASK_015_tauri_init.yaml +0 -53
  258. package/core/dev/pipeline/archived/TASK_016_tauri_commands.yaml +0 -54
  259. package/core/dev/pipeline/archived/TASK_017_rust_pty.yaml +0 -54
  260. package/core/dev/pipeline/archived/TASK_018_tauri_bundle.yaml +0 -53
  261. package/core/dev/pipeline/archived/TASK_019_release_workflow.yaml +0 -56
  262. package/core/dev/pipeline/archived/TASK_020_update_ui.yaml +0 -54
  263. package/core/dev/pipeline/archived/TASK_021_update_notification_ui.yaml +0 -55
  264. package/core/dev/pipeline/archived/TASK_022_remove_node_pty.yaml +0 -65
  265. package/core/dev/pipeline/archived/TASK_023_api_routes_migration.yaml +0 -86
  266. package/core/dev/pipeline/archived/TASK_024_feature_id_system.yaml +0 -51
  267. package/core/dev/pipeline/archived/TASK_025_executable_acceptance.yaml +0 -66
  268. package/core/dev/pipeline/archived/TASK_026_spec_versioning.yaml +0 -56
  269. package/core/dev/pipeline/archived/TASK_027_drift_detection.yaml +0 -60
  270. package/core/dev/pipeline/archived/TASK_028_tauri_pty_manager.yaml +0 -60
  271. package/core/dev/pipeline/archived/TASK_029_tauri_pty_commands.yaml +0 -62
  272. package/core/dev/pipeline/archived/TASK_030_frontend_session_adapter.yaml +0 -54
  273. package/core/dev/pipeline/archived/TASK_031_terminal_tauri_events.yaml +0 -56
  274. package/core/dev/pipeline/archived/TASK_041_scheduler_data_models.yaml +0 -54
  275. package/core/dev/pipeline/archived/TASK_042_path_lock_manager.yaml +0 -53
  276. package/core/dev/pipeline/archived/TASK_043_process_manager.yaml +0 -57
  277. package/core/dev/pipeline/archived/TASK_044_git_integration.yaml +0 -85
  278. package/core/dev/pipeline/archived/TASK_045_task_queue_manager.yaml +0 -54
  279. package/core/dev/pipeline/archived/TASK_046_scheduler_dispatcher.yaml +0 -60
  280. package/core/dev/pipeline/archived/TASK_047_tauri_scheduler_commands.yaml +0 -55
  281. package/core/dev/pipeline/archived/TASK_048_realtime_status_push.yaml +0 -92
  282. package/core/dev/pipeline/archived/TASK_049_frontend_scheduler_integration.yaml +0 -58
  283. package/core/dev/pipeline/archived/TASK_050_error_recovery.yaml +0 -56
  284. package/core/dev/pipeline/archived/TASK_051_optimization_proposals_backend.yaml +0 -53
  285. package/core/dev/pipeline/archived/TASK_052_optimization_proposals_ui.yaml +0 -58
  286. package/core/dev/pipeline/archived/TASK_053_optimization_proposals_diff_view.yaml +0 -54
  287. package/core/dev/pipeline/archived/TASK_054_multi_project_scheduler_state.yaml +0 -76
  288. package/core/dev/pipeline/archived/TASK_055_scheduler_api_project_scope.yaml +0 -64
  289. package/core/dev/pipeline/archived/TASK_056_frontend_scheduler_project_scope.yaml +0 -62
  290. package/core/dev/pipeline/archived/TASK_057_scheduler_module_structure.yaml +0 -54
  291. package/core/dev/pipeline/archived/TASK_058_scheduler_models_extract.yaml +0 -51
  292. package/core/dev/pipeline/archived/TASK_059_scheduler_core_extract.yaml +0 -51
  293. package/core/dev/pipeline/archived/TASK_060_scheduler_commands_extract.yaml +0 -51
  294. package/core/dev/pipeline/archived/TASK_061_scheduler_specialized_commands.yaml +0 -53
  295. package/core/dev/pipeline/archived/TASK_062_process_manager_module_structure.yaml +0 -56
  296. package/core/dev/pipeline/archived/TASK_063_process_manager_core_extract.yaml +0 -56
  297. package/core/dev/pipeline/archived/TASK_064_recovery_module_structure.yaml +0 -57
  298. package/core/dev/pipeline/archived/TASK_065_recovery_core_extract.yaml +0 -56
  299. package/core/dev/pipeline/archived/TASK_066_self_enhancement_scheduler_models.yaml +0 -60
  300. package/core/dev/pipeline/archived/TASK_067_agents_section_quick_actions.yaml +0 -53
  301. package/core/dev/pipeline/archived/TASK_067_self_enhancement_scheduler_core.yaml +0 -65
  302. package/core/dev/pipeline/archived/TASK_068_agent_workflow_rule_enhancement.yaml +0 -46
  303. package/core/dev/pipeline/archived/TASK_068_self_enhancement_tauri_commands.yaml +0 -61
  304. package/core/dev/pipeline/archived/TASK_069_agent_wizard_responsive.yaml +0 -46
  305. package/core/dev/pipeline/archived/TASK_069_self_enhancement_ui.yaml +0 -62
  306. package/core/dev/pipeline/archived/TASK_070_preview_panel_redesign.yaml +0 -62
  307. package/core/dev/pipeline/archived/TASK_070_self_enhancement_integration.yaml +0 -57
  308. package/core/dev/pipeline/archived/TASK_071_preview_panel_qa.yaml +0 -98
  309. package/core/dev/pipeline/archived/TASK_071_single_agent_config.yaml +0 -57
  310. package/core/dev/pipeline/archived/TASK_072_preview_modal_esc_fix.yaml +0 -71
  311. package/core/dev/pipeline/archived/TASK_072_product_review_module.yaml +0 -57
  312. package/core/dev/pipeline/archived/TASK_073_agents_page_component_refactor.yaml +0 -68
  313. package/core/dev/pipeline/archived/TASK_073_rename_single_agent.yaml +0 -64
  314. package/core/dev/pipeline/archived/TASK_074_preview_mode_ui_diagnosis.yaml +0 -71
  315. package/core/dev/pipeline/archived/TASK_074_single_agent_ui_toggle.yaml +0 -56
  316. package/core/dev/pipeline/archived/TASK_075_agents_page_component_refactor.yaml +0 -69
  317. package/core/dev/pipeline/archived/TASK_075_single_agent_integration_test.yaml +0 -75
  318. package/core/dev/pipeline/archived/TASK_076_preview_mode_ui_diagnosis.yaml +0 -70
  319. package/core/dev/pipeline/archived/TASK_076_single_agent_continuous_mode.yaml +0 -65
  320. package/core/dev/pipeline/archived/TASK_077_failure_directory_structure.yaml +0 -51
  321. package/core/dev/pipeline/archived/TASK_077_single_agent_typescript_types.yaml +0 -59
  322. package/core/dev/pipeline/archived/TASK_078_fail_001_agent_no_output.yaml +0 -53
  323. package/core/dev/pipeline/archived/TASK_078_single_agent_ui_simplify.yaml +0 -74
  324. package/core/dev/pipeline/archived/TASK_079_dashboard_rwd_responsive.yaml +0 -63
  325. package/core/dev/pipeline/archived/TASK_079_fail_002_json_bom.yaml +0 -56
  326. package/core/dev/pipeline/archived/TASK_080_fail_003_queue_pollution.yaml +0 -56
  327. package/core/dev/pipeline/archived/TASK_080_http_server_module.yaml +0 -55
  328. package/core/dev/pipeline/archived/TASK_081_failure_logging_tools.yaml +0 -57
  329. package/core/dev/pipeline/archived/TASK_081_http_api_routes.yaml +0 -62
  330. package/core/dev/pipeline/archived/TASK_082_frontend_api_adapter.yaml +0 -51
  331. package/core/dev/pipeline/archived/TASK_082_integrate_failure_to_workflow.yaml +0 -60
  332. package/core/dev/pipeline/archived/TASK_083_cleanup_nextjs_api.yaml +0 -48
  333. package/core/dev/pipeline/archived/TASK_083_task_queue_cleanup.yaml +0 -67
  334. package/core/dev/pipeline/archived/TASK_084_rust_dead_code_cleanup.yaml +0 -66
  335. package/core/dev/pipeline/archived/TASK_084_scheduler_sync_logic_fix.yaml +0 -68
  336. package/core/dev/pipeline/archived/TASK_085_http_api_web_mode_fixes.yaml +0 -46
  337. package/core/dev/pipeline/archived/TASK_085_memory_consolidation_0204_0205.yaml +0 -98
  338. package/core/dev/pipeline/archived/TASK_086_collapsible_preview_panel.yaml +0 -161
  339. package/core/dev/pipeline/archived/TASK_086_web_mode_feature_parity.yaml +0 -62
  340. package/core/dev/pipeline/archived/TASK_087_manual_memory_archival.yaml +0 -163
  341. package/core/dev/pipeline/archived/TASK_087_mobile_http_control.yaml +0 -68
  342. package/core/dev/pipeline/archived/TASK_088_fail_003_to_ppl_002_rule.yaml +0 -63
  343. package/core/dev/pipeline/archived/TASK_088_mobile_http_qa.yaml +0 -121
  344. package/core/dev/pipeline/archived/TASK_089_agent_collaboration_topic.yaml +0 -60
  345. package/core/dev/pipeline/archived/TASK_089_web_mode_monitor_fix.yaml +0 -58
  346. package/core/dev/pipeline/archived/TASK_090_cli_detection_fix.yaml +0 -61
  347. package/core/dev/pipeline/archived/TASK_090_ui_ux_lessons_topic.yaml +0 -63
  348. package/core/dev/pipeline/archived/TASK_091_expandable_card_design.yaml +0 -56
  349. package/core/dev/pipeline/archived/TASK_091_move_agent_section_components.yaml +0 -65
  350. package/core/dev/pipeline/archived/TASK_092_expandable_card_component.yaml +0 -60
  351. package/core/dev/pipeline/archived/TASK_092_refactor_agent_create_wizard.yaml +0 -84
  352. package/core/dev/pipeline/archived/TASK_093_taskcard_detail_integration.yaml +0 -57
  353. package/core/dev/pipeline/archived/TASK_093_update_barrel_exports_test.yaml +0 -84
  354. package/core/dev/pipeline/archived/TASK_094_ai_agent_generation_enhancement.yaml +0 -115
  355. package/core/dev/pipeline/archived/TASK_094_proposalcard_detail_integration.yaml +0 -55
  356. package/core/dev/pipeline/archived/TASK_095_preview_fixes.yaml +0 -129
  357. package/core/dev/pipeline/archived/TASK_095_single_agent_task_selector.yaml +0 -60
  358. package/core/dev/pipeline/archived/TASK_096_agents_page_ux_improvements.yaml +0 -163
  359. package/core/dev/pipeline/archived/TASK_096_single_agent_status_sync.yaml +0 -60
  360. package/core/dev/pipeline/archived/TASK_097_local_claude_error_logging.yaml +0 -59
  361. package/core/dev/pipeline/archived/TASK_097_single_agent_monitor_events.yaml +0 -59
  362. package/core/dev/pipeline/archived/TASK_098_product_manager_team_phase2.yaml +0 -60
  363. package/core/dev/pipeline/archived/TASK_098_single_agent_refactor_test.yaml +0 -58
  364. package/core/dev/pipeline/archived/TASK_099_backend_team_creation.yaml +0 -258
  365. package/core/dev/pipeline/archived/TASK_100_frontend_team_creation.yaml +0 -61
  366. package/core/dev/pipeline/archived/TASK_101_orchestrator_system.yaml +0 -403
  367. package/core/dev/pipeline/archived/TASK_102_designer_sre_teams.yaml +0 -90
  368. package/core/dev/pipeline/archived/TASK_103_integration_testing.yaml +0 -86
  369. package/core/dev/pipeline/archived/TASK_128_integration_testing.yaml +0 -83
  370. package/core/dev/pipeline/archived/TASK_134_cortex_v2_phase3_file_watcher.yaml +0 -65
  371. package/core/dev/pipeline/archived/TASK_134_team_http_api.yaml +0 -96
  372. package/core/dev/pipeline/archived/TASK_135_cortex_v2_phase3_git_monitor.yaml +0 -63
  373. package/core/dev/pipeline/archived/TASK_136_cortex_v2_phase3_change_analyzer.yaml +0 -69
  374. package/core/dev/pipeline/archived/TASK_137_cortex_v2_phase3_cache_invalidator.yaml +0 -67
  375. package/core/dev/pipeline/archived/TASK_137_team_orchestrator_integration.yaml +0 -93
  376. package/core/dev/pipeline/archived/TASK_138_cortex_v2_phase3_distributed_cache.yaml +0 -68
  377. package/core/dev/pipeline/archived/TASK_138_matrix_folder_structure.yaml +0 -61
  378. package/core/dev/pipeline/archived/TASK_139_cortex_v2_phase3_cache_prewarming.yaml +0 -65
  379. package/core/dev/pipeline/archived/TASK_146_unified_documentation.yaml +0 -141
  380. package/core/dev/pipeline/archived/TASK_147_pipeline_execution_rules.yaml +0 -76
  381. package/core/dev/pipeline/archived/TASK_148_update_claude_md.yaml +0 -77
  382. package/core/dev/pipeline/archived/TASK_149_fix_nextjs_mdx_serialization.yaml +0 -63
  383. package/core/dev/pipeline/archived/TASK_149_update_team_docs.yaml +0 -77
  384. package/core/dev/pipeline/archived/TASK_150_pipeline_workflow_guide.yaml +0 -82
  385. package/core/dev/pipeline/archived/TASK_164_fix_smart_context_switch.yaml +0 -49
  386. package/core/dev/pipeline/archived/TASK_165_ctags_symbol_index.yaml +0 -53
  387. package/core/dev/pipeline/archived/TASK_166_symbol_search_mcp_tool.yaml +0 -48
  388. package/core/dev/pipeline/archived/TASK_167_llm_module_summary.yaml +0 -55
  389. package/core/dev/pipeline/archived/TASK_168_map_reduce_context.yaml +0 -51
  390. package/core/dev/pipeline/archived/TASK_169_v2_integration_testing.yaml +0 -52
  391. package/core/dev/pipeline/backups/archive_2026-02-04T22-07-22/TASK_QUEUE_backup.json +0 -95
  392. package/core/dev/pipeline/docs/multi-agent-coordination.md +0 -446
  393. package/core/dev/pipeline/docs/overview.md +0 -406
  394. package/core/dev/pipeline/docs/task-management.md +0 -412
  395. package/core/dev/pipeline/docs/workflows.md +0 -32
  396. package/core/dev/pipeline/orchestrator/schemas/task_queue_schema.json +0 -58
  397. package/core/dev/pipeline/orchestrator/schemas/task_schema.json +0 -139
  398. package/core/dev/pipeline/plans/PLAN_task_cli_refactor.md +0 -281
  399. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +0 -27
  400. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +0 -68
  401. package/core/dev/plans/CLI_FIRST_INSTALL_FLOW.md +0 -120
  402. package/core/dev/plans/FORMATION_RETIREMENT_PLAN.md +0 -313
  403. package/core/dev/plans/KUZU_REPLACEMENT_PLAN.md +0 -126
  404. package/core/dev/scripts/CRASH_DIAGNOSIS.md +0 -47
  405. package/core/dev/scripts/README.md +0 -142
  406. package/core/dev/scripts/RUN_ONCE.bat +0 -40
  407. package/core/dev/scripts/START_DEV_AGENT.bat +0 -63
  408. package/core/dev/scripts/START_MULTI_AGENT.bat +0 -80
  409. package/core/dev/scripts/dev_agent_scheduler.ps1 +0 -536
  410. package/core/dev/scripts/init_git.ps1 +0 -396
  411. package/core/dev/scripts/init_git.sh +0 -337
  412. package/core/dev/scripts/init_project.ps1 +0 -851
  413. package/core/dev/scripts/init_project.sh +0 -477
  414. package/core/dev/scripts/multi_agent_scheduler.ps1 +0 -2021
  415. package/core/dev/scripts/multi_agent_scheduler.sh +0 -1344
  416. package/core/dev/scripts/run_once.sh +0 -47
  417. package/core/dev/scripts/setup_rag.ps1 +0 -304
  418. package/core/dev/scripts/setup_rag.sh +0 -230
  419. package/core/dev/scripts/start_dev_agent.sh +0 -137
  420. package/core/dev/scripts/start_multi_agent.sh +0 -41
  421. package/core/dev/scripts/sync_task_queue.ps1 +0 -505
  422. package/core/dev/scripts/sync_task_queue.sh +0 -392
  423. package/core/dev/specs/agent-connect/PROTOCOL.md +0 -177
  424. package/core/dev/specs/agent-connect/SDK_GUIDE.md +0 -915
  425. package/core/dev/specs/agent-connect/examples/minimal-site/README.md +0 -137
  426. package/core/dev/specs/agent-connect/examples/minimal-site/package.json +0 -12
  427. package/core/dev/specs/agent-connect/examples/minimal-site/public/index.html +0 -116
  428. package/core/dev/specs/agent-connect/examples/minimal-site/public/install-redirect.js +0 -73
  429. package/core/dev/specs/agent-connect/examples/minimal-site/server.js +0 -516
  430. package/core/dev/specs/agent-connect/examples/minimal-site/test/smoke.test.mjs +0 -263
  431. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-empty-prompt-no-first-turn.md +0 -77
  432. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-prompt-mojibake.md +0 -90
  433. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-07.md +0 -61
  434. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-08_relay-v1-conformance.md +0 -76
  435. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-09_v0.4-session-channel.md +0 -87
  436. package/core/dev/specs/agent-connect/history/FLOWPIX_REPLY_agent-hub_2026-09-08_relay-v1-answers.md +0 -68
  437. package/core/dev/specs/agent-connect/history/FLOWPIX_bridge_CONTRACT.md +0 -642
  438. package/core/dev/specs/agent-connect/history/FLOWPIX_spikes_relay_spike_relay.mjs +0 -244
  439. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-07.md +0 -77
  440. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_direction-change-v0.3.md +0 -44
  441. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-answers-ack.md +0 -37
  442. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-conformance.md +0 -56
  443. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_annotations-install-coldstart.md +0 -44
  444. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_empty-prompt-first-turn.md +0 -56
  445. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_prompt-mojibake-fixed.md +0 -48
  446. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_session-channel.md +0 -57
  447. package/core/dev/specs/agent-connect/history/PROTOCOL_v0.3_snapshot.md +0 -379
  448. package/core/dev/specs/agent-connect/history/README.md +0 -47
  449. package/core/dev/specs/peer/CODEX_INTERACTIVE_PUSH.md +0 -65
  450. package/core/dev/specs/peer/CODEX_MANAGED_DAEMON.md +0 -54
  451. package/core/dev/specs/peer/CODEX_PEER_PULL_SPIKE.md +0 -54
  452. package/core/dev/specs/peer/MODS_SPIKE.md +0 -133
  453. package/core/dev/specs/peer/PER_PROJECT_ADDRESSING.md +0 -143
  454. package/core/dev/specs/peer/SWARM_PROTOCOLS.md +0 -256
  455. package/core/dev/specs/peer/codex-hook-shim-peer.test.js +0 -113
  456. package/core/dev/specs/peer/codex-push-launcher.test.js +0 -142
  457. package/core/dev/specs/peer/setup-codex-hooks.test.js +0 -60
  458. package/core/dev/specs/peer-ansuz/DELIVERY_SPIKE.md +0 -397
  459. package/core/dev/specs/peer-ansuz/DESIGN.md +0 -109
  460. package/core/dev/specs/peer-ansuz/spike/claude_poke.js +0 -129
  461. package/core/dev/specs/peer-ansuz/spike/claude_session_start_hook.js +0 -37
  462. package/core/dev/specs/peer-ansuz/spike/claude_settings_hook.json +0 -14
  463. package/core/dev/specs/peer-ansuz/spike/codex_appserver_client.js +0 -105
  464. package/core/dev/specs/peer-ansuz/spike/codex_appserver_query.js +0 -29
  465. package/core/dev/specs/peer-ansuz/spike/extract_timeline.js +0 -26
  466. package/core/dev/specs/synapse/SYMBOL_IDENTITY.md +0 -305
  467. package/core/dev/spikes/A4-cypher-varlen.md +0 -176
  468. package/core/dev/spikes/bloat-rounds.sh +0 -25
  469. package/core/dev/spikes/mods/clean-claude.js +0 -9
  470. package/core/dev/spikes/mods/drive-probe.js +0 -29
  471. package/core/dev/spikes/mods/e2e-peer.js +0 -71
  472. package/core/dev/spikes/mods/evidence/e2e-peer-control.json +0 -17
  473. package/core/dev/spikes/mods/evidence/e2e-peer-mod.json +0 -17
  474. package/core/dev/spikes/mods/evidence/probe-006a6e65-d807-4bc1-b648-fd7d1edfe0b4.jsonl +0 -4
  475. package/core/dev/spikes/mods/evidence/probe-cebdf1f7-f9c4-47a8-83cd-7c0786177404.jsonl +0 -12
  476. package/core/dev/spikes/mods/evidence/probe-eb21147d-10ce-4c32-93ed-37ca37d88d5a.jsonl +0 -11
  477. package/core/dev/spikes/mods/evidence/stream-cebdf1f7.jsonl +0 -18
  478. package/core/dev/spikes/mods/kenaz-mod-probe/.claude-plugin/plugin.json +0 -1
  479. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/hooks.json +0 -1
  480. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/register.ts +0 -65
  481. package/core/dev/spikes/mods/kenaz-mod-probe/tsconfig.json +0 -3
@@ -1,851 +0,0 @@
1
- # ============================================================
2
- # Kenaz AI - 新專案初始化腳本
3
- # ============================================================
4
- # 用途:快速重置 Pipeline 並準備開始新專案開發
5
- # ============================================================
6
-
7
- param(
8
- [switch]$SkipRAG, # 跳過 RAG 設置
9
- [switch]$SkipCleanup, # 跳過清理舊任務
10
- [switch]$SkipCopy, # 跳過複製 .claude/、.agents/、CLAUDE.md
11
- [switch]$AutoStart, # 自動啟動 /產品 流程
12
- [switch]$Quiet, # 靜默模式(無互動確認)
13
- [string]$WorkingDirectory, # 工作目錄
14
- [switch]$nopause # 從 Tauri 調用時使用(跳過暫停)
15
- )
16
-
17
- # Helper function to normalize Windows extended path format (\\?\)
18
- function Get-NormalizedPath {
19
- param([string]$Path)
20
- if ($Path -and $Path.StartsWith("\\?\")) {
21
- return $Path.Substring(4)
22
- }
23
- return $Path
24
- }
25
-
26
- # Use KENAZ_PROJECT_PATH env var if WorkingDirectory not specified
27
- if (-not $WorkingDirectory) {
28
- if ($env:KENAZ_PROJECT_PATH) {
29
- $WorkingDirectory = $env:KENAZ_PROJECT_PATH
30
- } else {
31
- $WorkingDirectory = (Get-Location).Path
32
- }
33
- }
34
-
35
- # Normalize WorkingDirectory to handle \\?\ prefix from Tauri
36
- $WorkingDirectory = Get-NormalizedPath $WorkingDirectory
37
-
38
- # If nopause is set (from Tauri), also enable Quiet mode
39
- if ($nopause) {
40
- $Quiet = $true
41
- }
42
-
43
- # 顏色輸出函數
44
- function Write-Color {
45
- param([string]$Text, [string]$Color = "White")
46
- Write-Host $Text -ForegroundColor $Color
47
- }
48
-
49
- function Write-Step {
50
- param([int]$Num, [string]$Text)
51
- Write-Host ""
52
- Write-Color "[$Num] $Text" "Cyan"
53
- Write-Host "------------------------------------------------------------"
54
- }
55
-
56
- function Write-Success {
57
- param([string]$Text)
58
- Write-Color " OK $Text" "Green"
59
- }
60
-
61
- function Write-Skip {
62
- param([string]$Text)
63
- Write-Color " -- $Text (skipped)" "Yellow"
64
- }
65
-
66
- function Write-Fail {
67
- param([string]$Text)
68
- Write-Color " XX $Text" "Red"
69
- }
70
-
71
- # ============================================================
72
- # 主程式
73
- # ============================================================
74
-
75
- Clear-Host
76
- Write-Host ""
77
- Write-Color "============================================================" "Magenta"
78
- Write-Color " Kenaz AI - New Project Initialization" "Magenta"
79
- Write-Color "============================================================" "Magenta"
80
- Write-Host ""
81
- Write-Host "Working Directory: $WorkingDirectory"
82
- Write-Host ""
83
-
84
- # ============================================================
85
- # Step 1: 清理舊的 Pipeline 狀態
86
- # ============================================================
87
- Write-Step 1 "Cleaning up old pipeline state"
88
-
89
- if (-not $SkipCleanup) {
90
- $tasksDir = Join-Path $WorkingDirectory "dev\pipeline\tasks"
91
- $completedDir = Join-Path $WorkingDirectory "dev\pipeline\completed"
92
- $logsDir = Join-Path $WorkingDirectory "dev\pipeline\logs"
93
- $statusFile = Join-Path $WorkingDirectory "dev\pipeline\SELF_ENHANCEMENT_STATUS.json"
94
- $progressFile = Join-Path $WorkingDirectory "dev\pipeline\PROGRESS.md"
95
-
96
- # 清空 tasks 目錄
97
- if (Test-Path $tasksDir) {
98
- $taskFiles = Get-ChildItem -Path $tasksDir -Filter "*.md" -ErrorAction SilentlyContinue
99
- if ($taskFiles.Count -gt 0) {
100
- Remove-Item "$tasksDir\*.md" -Force -ErrorAction SilentlyContinue
101
- Write-Success "Cleared $($taskFiles.Count) task files from tasks/"
102
- } else {
103
- Write-Success "tasks/ already empty"
104
- }
105
- }
106
-
107
- # 備份並清空 completed 目錄
108
- if (Test-Path $completedDir) {
109
- $completedFiles = Get-ChildItem -Path $completedDir -Filter "*.md" -ErrorAction SilentlyContinue
110
- if ($completedFiles.Count -gt 0) {
111
- $backupDir = Join-Path $WorkingDirectory "dev\pipeline\archive\$(Get-Date -Format 'yyyy-MM-dd_HHmmss')"
112
- New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
113
- Move-Item "$completedDir\*.md" $backupDir -Force
114
- Write-Success "Archived $($completedFiles.Count) completed tasks to archive/"
115
- } else {
116
- Write-Success "completed/ already empty"
117
- }
118
- }
119
-
120
- # 刪除狀態文件
121
- if (Test-Path $statusFile) {
122
- Remove-Item $statusFile -Force
123
- Write-Success "Removed SELF_ENHANCEMENT_STATUS.json"
124
- }
125
-
126
- # 確保 dev 目錄及 pipeline 子目錄存在
127
- $devDir = Join-Path $WorkingDirectory "dev"
128
- $pipelineDir = Join-Path $devDir "pipeline"
129
- $tasksDir = Join-Path $pipelineDir "tasks"
130
- $completedDir = Join-Path $pipelineDir "completed"
131
- $logsDir = Join-Path $pipelineDir "logs"
132
- $archiveDir = Join-Path $pipelineDir "archive"
133
-
134
- # 建立 dev 目錄
135
- if (-not (Test-Path $devDir)) {
136
- New-Item -ItemType Directory -Path $devDir -Force | Out-Null
137
- Write-Success "Created dev directory"
138
- }
139
-
140
- # 建立 pipeline 主目錄
141
- if (-not (Test-Path $pipelineDir)) {
142
- New-Item -ItemType Directory -Path $pipelineDir -Force | Out-Null
143
- Write-Success "Created dev\pipeline directory"
144
- }
145
-
146
- # 建立子目錄
147
- if (-not (Test-Path $tasksDir)) {
148
- New-Item -ItemType Directory -Path $tasksDir -Force | Out-Null
149
- Write-Success "Created dev\pipeline\tasks directory"
150
- }
151
-
152
- if (-not (Test-Path $completedDir)) {
153
- New-Item -ItemType Directory -Path $completedDir -Force | Out-Null
154
- Write-Success "Created dev\pipeline\completed directory"
155
- }
156
-
157
- if (-not (Test-Path $logsDir)) {
158
- New-Item -ItemType Directory -Path $logsDir -Force | Out-Null
159
- Write-Success "Created dev\pipeline\logs directory"
160
- }
161
-
162
- if (-not (Test-Path $archiveDir)) {
163
- New-Item -ItemType Directory -Path $archiveDir -Force | Out-Null
164
- Write-Success "Created dev\pipeline\archive directory"
165
- }
166
-
167
- # 初始化 TASK_QUEUE.json
168
- $taskQueueFile = Join-Path $pipelineDir "TASK_QUEUE.json"
169
- if (-not (Test-Path $taskQueueFile)) {
170
- $taskQueueContent = @"
171
- {
172
- "version": "1.0",
173
- "last_updated": "$(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")",
174
- "tasks": []
175
- }
176
- "@
177
- Set-Content -Path $taskQueueFile -Value $taskQueueContent -Encoding UTF8
178
- Write-Success "Created TASK_QUEUE.json"
179
- }
180
-
181
- # 初始化/重置 AGENT_STATE.json(總是重置以清除 stale scheduler 狀態)
182
- $agentStateFile = Join-Path $pipelineDir "AGENT_STATE.json"
183
- $agentStateContent = @"
184
- {
185
- "version": "1.0",
186
- "agents": [],
187
- "scheduler": {
188
- "status": "stopped"
189
- },
190
- "last_updated": "$(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")Z"
191
- }
192
- "@
193
- Set-Content -Path $agentStateFile -Value $agentStateContent -Encoding UTF8
194
- if (Test-Path $agentStateFile) {
195
- Write-Success "Reset AGENT_STATE.json (scheduler status: stopped)"
196
- } else {
197
- Write-Success "Created AGENT_STATE.json"
198
- }
199
-
200
- # 初始化 LOCK_STATE.json
201
- $lockStateFile = Join-Path $pipelineDir "LOCK_STATE.json"
202
- if (-not (Test-Path $lockStateFile)) {
203
- $lockStateContent = @"
204
- {
205
- "version": "1.0",
206
- "locks": {}
207
- }
208
- "@
209
- Set-Content -Path $lockStateFile -Value $lockStateContent -Encoding UTF8
210
- Write-Success "Created LOCK_STATE.json"
211
- }
212
-
213
- # 初始化 PIPELINE_CONFIG.json
214
- $pipelineConfigFile = Join-Path $pipelineDir "PIPELINE_CONFIG.json"
215
- if (-not (Test-Path $pipelineConfigFile)) {
216
- $pipelineConfigContent = @"
217
- {
218
- "version": "1.0",
219
- "max_parallel_agents": 3,
220
- "task_timeout_minutes": 60,
221
- "poll_interval_seconds": 30,
222
- "auto_enhancement": {
223
- "enabled": false,
224
- "max_cycles": 3
225
- }
226
- }
227
- "@
228
- Set-Content -Path $pipelineConfigFile -Value $pipelineConfigContent -Encoding UTF8
229
- Write-Success "Created PIPELINE_CONFIG.json"
230
- }
231
-
232
- # 重置 PROGRESS.md
233
- $progressTemplate = @"
234
- # Pipeline Progress Tracking
235
-
236
- ## Last Update
237
- - **Time**: $(Get-Date -Format "yyyy-MM-dd HH:mm")
238
- - **Agent**: System
239
- - **Session**: Project Initialized
240
-
241
- ---
242
-
243
- ## Current Status
244
-
245
- ### Running Tasks
246
- | Task ID | Name | Progress | Next Step |
247
- |--------|------|-----|-------|
248
- | - | None | - | Run /product to start |
249
-
250
- ### Pending Task Queue
251
- | Priority | Task ID | Name | Status | Est. Hours |
252
- |-------|--------|------|-----|---------|
253
- | - | - | None | - | - |
254
-
255
- ### Completed Tasks
256
- | Task ID | Name | Completion Date |
257
- |--------|------|---------|
258
- | - | - | - |
259
-
260
- ---
261
-
262
- ## Statistics
263
-
264
- ### Overall Progress
265
- ``````
266
- Total Tasks: 0
267
- Completed: 0 (0%)
268
- In Progress: 0 (0%)
269
- Pending: 0 (0%)
270
- Blocked: 0 (0%)
271
- ``````
272
-
273
- ### Project Status
274
- ``````
275
- Waiting for product requirements...
276
- Run /product to start requirement analysis
277
- ``````
278
-
279
- ---
280
-
281
- ## Change History
282
-
283
- | Date | Action | Description |
284
- |-----|------|-----|
285
- | $(Get-Date -Format "yyyy-MM-dd") | Initialize | New project initialized |
286
- "@
287
- Set-Content -Path $progressFile -Value $progressTemplate -Encoding UTF8
288
- Write-Success "Reset PROGRESS.md"
289
-
290
- } else {
291
- Write-Skip "Cleanup"
292
- }
293
-
294
- # ============================================================
295
- # Step 2: 檢查 Python 環境
296
- # ============================================================
297
- Write-Step 2 "Checking Python environment"
298
-
299
- $pythonCmd = $null
300
- if (Get-Command python -ErrorAction SilentlyContinue) {
301
- $pythonCmd = "python"
302
- $pythonVersion = & python --version 2>&1
303
- Write-Success "Found $pythonVersion"
304
- } elseif (Get-Command python3 -ErrorAction SilentlyContinue) {
305
- $pythonCmd = "python3"
306
- $pythonVersion = & python3 --version 2>&1
307
- Write-Success "Found $pythonVersion"
308
- } else {
309
- Write-Fail "Python not found (RAG features will be disabled)"
310
- }
311
-
312
- # ============================================================
313
- # Step 3: 設置 RAG 環境(可選)
314
- # ============================================================
315
- Write-Step 3 "Setting up RAG environment"
316
-
317
- if (-not $SkipRAG -and $pythonCmd) {
318
- $cortexDir = Join-Path $WorkingDirectory "kenaz-cortex"
319
-
320
- if (Test-Path $cortexDir) {
321
- # 檢查是否已安裝
322
- $cortexInstalled = $false
323
- try {
324
- & $pythonCmd -c "import cortex" 2>$null
325
- $cortexInstalled = $true
326
- } catch {}
327
-
328
- if (-not $cortexInstalled) {
329
- if (-not $Quiet) {
330
- Write-Host ""
331
- $install = Read-Host " Install kenaz-cortex RAG engine? (y/N)"
332
- } else {
333
- $install = "y"
334
- }
335
-
336
- if ($install -eq "y" -or $install -eq "Y") {
337
- Write-Host " Installing kenaz-cortex..."
338
- Push-Location $cortexDir
339
- & $pythonCmd -m pip install -e . --quiet 2>$null
340
- Pop-Location
341
-
342
- # 驗證安裝
343
- try {
344
- & $pythonCmd -c "import cortex" 2>$null
345
- Write-Success "kenaz-cortex installed"
346
- } catch {
347
- Write-Fail "Failed to install kenaz-cortex"
348
- }
349
- } else {
350
- Write-Skip "kenaz-cortex installation"
351
- }
352
- } else {
353
- Write-Success "kenaz-cortex already installed"
354
- }
355
-
356
- # 設置 Git Hooks
357
- $gitDir = Join-Path $WorkingDirectory ".git"
358
- $hooksPath = Join-Path $WorkingDirectory ".githooks"
359
-
360
- if ((Test-Path $gitDir) -and (Test-Path $hooksPath)) {
361
- $currentHooksPath = git config --get core.hooksPath 2>$null
362
- if ($currentHooksPath -ne ".githooks") {
363
- git config core.hooksPath .githooks
364
- Write-Success "Git hooks configured (.githooks)"
365
- } else {
366
- Write-Success "Git hooks already configured"
367
- }
368
- }
369
- } else {
370
- Write-Skip "kenaz-cortex directory not found"
371
- }
372
- } else {
373
- Write-Skip "RAG setup"
374
- }
375
-
376
- # ============================================================
377
- # Step 4: 複製 Claude Code 配置文件
378
- # ============================================================
379
- Write-Step 4 "Copying Claude Code configuration files"
380
-
381
- # Helper function to normalize Windows extended path format (\\?\)
382
- function Get-NormalizedPath {
383
- param([string]$Path)
384
- if ($Path -and $Path.StartsWith("\\?\")) {
385
- return $Path.Substring(4)
386
- }
387
- return $Path
388
- }
389
-
390
- # Helper function to check if a directory contains KenazAI templates
391
- function Test-KenazSourceDir {
392
- param([string]$Path)
393
- $Path = Get-NormalizedPath $Path
394
- if (-not $Path -or -not (Test-Path $Path)) { return $false }
395
-
396
- # Check multiple indicators - any one is sufficient
397
- $hasClaudeCommands = Test-Path (Join-Path $Path ".claude\commands")
398
- $hasClaudeSkills = Test-Path (Join-Path $Path ".claude\skills")
399
- $hasClaudeMd = Test-Path (Join-Path $Path "CLAUDE.md")
400
- $hasAgents = Test-Path (Join-Path $Path ".agents")
401
- $hasGithooks = Test-Path (Join-Path $Path ".githooks")
402
-
403
- return ($hasClaudeCommands -or $hasClaudeSkills -or $hasClaudeMd -or $hasAgents -or $hasGithooks)
404
- }
405
-
406
- # 確定 KenazAI 模板目錄位置
407
- $kenazSourceDir = $null
408
-
409
- # 優先順序:1. 環境變數 2. 環境變數的父目錄 3. 腳本所在目錄 4. 遍歷上層目錄
410
- # Normalize the KENAZ_SOURCE_DIR to remove \\?\ prefix if present
411
- $normalizedSourceDir = Get-NormalizedPath $env:KENAZ_SOURCE_DIR
412
-
413
- if ($normalizedSourceDir) {
414
- # 先檢查環境變數本身
415
- if (Test-KenazSourceDir $normalizedSourceDir) {
416
- $kenazSourceDir = $normalizedSourceDir
417
- Write-Host " Found source via KENAZ_SOURCE_DIR env var" -ForegroundColor Gray
418
- } else {
419
- # 環境變數可能指向 dashboard/,嘗試檢查父目錄(KenazAI 根目錄)
420
- $envParent = Split-Path -Parent $normalizedSourceDir
421
- if ($envParent -and (Test-KenazSourceDir $envParent)) {
422
- $kenazSourceDir = $envParent
423
- Write-Host " Found source via KENAZ_SOURCE_DIR parent: $envParent" -ForegroundColor Gray
424
- } else {
425
- # 再往上一層(可能是 KenazAI/dashboard/src-tauri -> KenazAI)
426
- $envGrandparent = Split-Path -Parent $envParent
427
- if ($envGrandparent -and (Test-KenazSourceDir $envGrandparent)) {
428
- $kenazSourceDir = $envGrandparent
429
- Write-Host " Found source via KENAZ_SOURCE_DIR grandparent: $envGrandparent" -ForegroundColor Gray
430
- }
431
- }
432
- }
433
- }
434
-
435
- if (-not $kenazSourceDir) {
436
- # 嘗試從腳本路徑推導(dev/scripts/init_project.ps1 -> KenazAI root)
437
- # Normalize the script path first
438
- $normalizedScriptPath = Get-NormalizedPath $MyInvocation.MyCommand.Path
439
- $scriptDir = Split-Path -Parent $normalizedScriptPath
440
-
441
- if ($scriptDir) {
442
- # Walk up from script directory to find KenazAI root (up to 10 levels for dev mode)
443
- # In dev mode: target/debug/dev/scripts -> ... -> KenazAI (7 levels up)
444
- $current = $scriptDir
445
- for ($i = 0; $i -lt 10; $i++) {
446
- $current = Split-Path -Parent $current
447
- if (-not $current) { break }
448
-
449
- if (Test-KenazSourceDir $current) {
450
- $kenazSourceDir = $current
451
- Write-Host " Found source at level $($i + 1): $current" -ForegroundColor Gray
452
- break
453
- }
454
- }
455
- }
456
-
457
- # 最後檢查工作目錄本身(用戶可能在 KenazAI 倉庫中工作)
458
- if (-not $kenazSourceDir -and (Test-KenazSourceDir $WorkingDirectory)) {
459
- $kenazSourceDir = $WorkingDirectory
460
- Write-Host " Working directory is KenazAI source" -ForegroundColor Gray
461
- }
462
- }
463
-
464
- if ($kenazSourceDir -and ($kenazSourceDir -ne $WorkingDirectory)) {
465
- Write-Host " Source: $kenazSourceDir"
466
-
467
- # 複製 .claude 目錄(排除 settings.local.json)
468
- $claudeSource = Join-Path $kenazSourceDir ".claude"
469
- $claudeDest = Join-Path $WorkingDirectory ".claude"
470
-
471
- if (Test-Path $claudeSource) {
472
- if (-not (Test-Path $claudeDest)) {
473
- # 首次複製整個目錄
474
- Copy-Item -Path $claudeSource -Destination $claudeDest -Recurse -Force
475
- # 刪除 settings.local.json(這是用戶特定的權限設定)
476
- $localSettings = Join-Path $claudeDest "settings.local.json"
477
- if (Test-Path $localSettings) {
478
- Remove-Item $localSettings -Force
479
- }
480
- Write-Success "Copied .claude/ directory (commands, skills, hooks)"
481
- } else {
482
- # 目錄已存在,只更新 commands 和 skills
483
- $commandsSource = Join-Path $claudeSource "commands"
484
- $commandsDest = Join-Path $claudeDest "commands"
485
- if (Test-Path $commandsSource) {
486
- if (-not (Test-Path $commandsDest)) {
487
- New-Item -ItemType Directory -Path $commandsDest -Force | Out-Null
488
- }
489
- Copy-Item -Path "$commandsSource\*" -Destination $commandsDest -Recurse -Force
490
- Write-Success "Updated .claude/commands/"
491
- }
492
-
493
- $skillsSource = Join-Path $claudeSource "skills"
494
- $skillsDest = Join-Path $claudeDest "skills"
495
- if (Test-Path $skillsSource) {
496
- if (-not (Test-Path $skillsDest)) {
497
- New-Item -ItemType Directory -Path $skillsDest -Force | Out-Null
498
- }
499
- Copy-Item -Path "$skillsSource\*" -Destination $skillsDest -Recurse -Force
500
- Write-Success "Updated .claude/skills/"
501
- }
502
-
503
- $hooksSource = Join-Path $claudeSource "hooks"
504
- $hooksDest = Join-Path $claudeDest "hooks"
505
- if (Test-Path $hooksSource) {
506
- if (-not (Test-Path $hooksDest)) {
507
- New-Item -ItemType Directory -Path $hooksDest -Force | Out-Null
508
- }
509
- Copy-Item -Path "$hooksSource\*" -Destination $hooksDest -Recurse -Force
510
- Write-Success "Updated .claude/hooks/"
511
- }
512
-
513
- # 複製 settings.json(但不覆蓋 settings.local.json)
514
- $settingsSource = Join-Path $claudeSource "settings.json"
515
- $settingsDest = Join-Path $claudeDest "settings.json"
516
- if ((Test-Path $settingsSource) -and (-not (Test-Path $settingsDest))) {
517
- Copy-Item -Path $settingsSource -Destination $settingsDest -Force
518
- Write-Success "Copied .claude/settings.json"
519
- }
520
- }
521
- } else {
522
- Write-Fail ".claude/ not found in source"
523
- }
524
-
525
- # 複製 .agents 目錄(外部 skills)
526
- $agentsSource = Join-Path $kenazSourceDir ".agents"
527
- $agentsDest = Join-Path $WorkingDirectory ".agents"
528
-
529
- if (Test-Path $agentsSource) {
530
- if (-not (Test-Path $agentsDest)) {
531
- Copy-Item -Path $agentsSource -Destination $agentsDest -Recurse -Force
532
- Write-Success "Copied .agents/ directory (external skills)"
533
- } else {
534
- Write-Success ".agents/ already exists"
535
- }
536
- }
537
-
538
- # 複製 .githooks 目錄(Git hooks for RAG indexing)
539
- $githooksSource = Join-Path $kenazSourceDir ".githooks"
540
- $githooksDest = Join-Path $WorkingDirectory ".githooks"
541
-
542
- if (Test-Path $githooksSource) {
543
- if (-not (Test-Path $githooksDest)) {
544
- Copy-Item -Path $githooksSource -Destination $githooksDest -Recurse -Force
545
- Write-Success "Copied .githooks/ directory (Git hooks)"
546
- } else {
547
- Write-Success ".githooks/ already exists"
548
- }
549
- }
550
-
551
- # 複製 CLAUDE.md
552
- $claudeMdSource = Join-Path $kenazSourceDir "CLAUDE.md"
553
- $claudeMdDest = Join-Path $WorkingDirectory "CLAUDE.md"
554
-
555
- if (Test-Path $claudeMdSource) {
556
- if (-not (Test-Path $claudeMdDest)) {
557
- Copy-Item -Path $claudeMdSource -Destination $claudeMdDest -Force
558
- Write-Success "Copied CLAUDE.md"
559
- } else {
560
- if (-not $Quiet) {
561
- Write-Host ""
562
- $overwrite = Read-Host " CLAUDE.md exists. Overwrite? (y/N)"
563
- if ($overwrite -eq "y" -or $overwrite -eq "Y") {
564
- Copy-Item -Path $claudeMdSource -Destination $claudeMdDest -Force
565
- Write-Success "Updated CLAUDE.md"
566
- } else {
567
- Write-Success "Kept existing CLAUDE.md"
568
- }
569
- } else {
570
- Write-Success "CLAUDE.md already exists (kept)"
571
- }
572
- }
573
- }
574
-
575
- # NOTE: 不複製 dev/scripts/ 到用戶項目
576
- # 腳本應該從 Tauri bundled resources 或 KenazAI 源目錄運行
577
- # 如果複製到用戶項目,會導致腳本無法找到模板文件
578
-
579
- } elseif ($kenazSourceDir -eq $WorkingDirectory) {
580
- Write-Success "Working in KenazAI source directory (no copy needed)"
581
- } else {
582
- Write-Host ""
583
- Write-Color " ============================================================" "Yellow"
584
- Write-Color " WARNING: KenazAI template files not found!" "Yellow"
585
- Write-Color " ============================================================" "Yellow"
586
- Write-Host ""
587
- Write-Color " The following AI configuration files are required:" "Yellow"
588
- Write-Host " - .claude/ (commands, skills, hooks)"
589
- Write-Host " - .agents/ (external skills)"
590
- Write-Host " - .githooks/ (Git hooks for RAG)"
591
- Write-Host " - CLAUDE.md (project instructions)"
592
- Write-Host ""
593
- Write-Color " To fix this, choose one of the following:" "White"
594
- Write-Host ""
595
- Write-Host " Option 1: Set environment variable"
596
- Write-Color " `$env:KENAZ_SOURCE_DIR = 'C:\path\to\KenazAI'" "Cyan"
597
- Write-Host ""
598
- Write-Host " Option 2: Clone KenazAI repository"
599
- Write-Color " git clone https://github.com/anthropics/kenaz-ai.git" "Cyan"
600
- Write-Host " Then run init_project.ps1 from that directory"
601
- Write-Host ""
602
- Write-Host " Option 3: Manual copy"
603
- Write-Host " Copy .claude/, .agents/, and CLAUDE.md from KenazAI to:"
604
- Write-Color " $WorkingDirectory" "Cyan"
605
- Write-Host ""
606
- Write-Color " ============================================================" "Yellow"
607
-
608
- # Check what actually exists in working directory for debugging
609
- Write-Host ""
610
- Write-Host " Current directory status:"
611
- if (Test-Path (Join-Path $WorkingDirectory ".claude")) {
612
- Write-Color " .claude/ : EXISTS" "Green"
613
- } else {
614
- Write-Color " .claude/ : MISSING" "Red"
615
- }
616
- if (Test-Path (Join-Path $WorkingDirectory ".agents")) {
617
- Write-Color " .agents/ : EXISTS" "Green"
618
- } else {
619
- Write-Color " .agents/ : MISSING" "Red"
620
- }
621
- if (Test-Path (Join-Path $WorkingDirectory ".githooks")) {
622
- Write-Color " .githooks/ : EXISTS" "Green"
623
- } else {
624
- Write-Color " .githooks/ : MISSING" "Red"
625
- }
626
- if (Test-Path (Join-Path $WorkingDirectory "CLAUDE.md")) {
627
- Write-Color " CLAUDE.md : EXISTS" "Green"
628
- } else {
629
- Write-Color " CLAUDE.md : MISSING" "Red"
630
- }
631
- }
632
-
633
- # ============================================================
634
- # Step 5: 檢查 PRODUCT_SPEC
635
- # ============================================================
636
- Write-Step 5 "Checking PRODUCT_SPEC"
637
-
638
- $specFile = Join-Path $WorkingDirectory "dev\PRODUCT_SPEC.md"
639
- $templateFile = Join-Path $WorkingDirectory "dev\PRODUCT_SPEC_FOR_AI_template.md"
640
-
641
- if (Test-Path $specFile) {
642
- $specContent = Get-Content $specFile -Raw -Encoding UTF8
643
- $lineCount = ($specContent -split "`n").Count
644
-
645
- if ($lineCount -gt 50) {
646
- Write-Color " Found existing PRODUCT_SPEC.md ($lineCount lines)" "Yellow"
647
- if (-not $Quiet) {
648
- Write-Host ""
649
- $keepSpec = Read-Host " Keep existing spec? (Y/n)"
650
- if ($keepSpec -eq "n" -or $keepSpec -eq "N") {
651
- $backupSpec = "${specFile}.bak.$(Get-Date -Format 'yyyyMMdd_HHmmss')"
652
- Move-Item $specFile $backupSpec -Force
653
- Write-Success "Backed up to $backupSpec"
654
-
655
- if (Test-Path $templateFile) {
656
- Copy-Item $templateFile $specFile
657
- Write-Success "Created new PRODUCT_SPEC.md from template"
658
- }
659
- } else {
660
- Write-Success "Keeping existing PRODUCT_SPEC.md"
661
- }
662
- }
663
- } else {
664
- Write-Success "PRODUCT_SPEC.md exists (ready for editing)"
665
- }
666
- } elseif (Test-Path $templateFile) {
667
- Copy-Item $templateFile $specFile
668
- Write-Success "Created PRODUCT_SPEC.md from template"
669
- } else {
670
- # 沒有模板時建立基本的 PRODUCT_SPEC.md
671
- $basicSpec = @"
672
- # Product Specification
673
-
674
- ## Overview
675
- <!-- Describe your product here -->
676
-
677
- ## Features
678
- <!-- List the main features -->
679
-
680
- ## Technical Requirements
681
- <!-- List technical requirements -->
682
-
683
- ## Target Users
684
- <!-- Describe target users -->
685
-
686
- ---
687
- *Created by Kenaz AI on $(Get-Date -Format "yyyy-MM-dd")*
688
- "@
689
- Set-Content -Path $specFile -Value $basicSpec -Encoding UTF8
690
- Write-Success "Created basic PRODUCT_SPEC.md (no template found)"
691
- }
692
-
693
- # ============================================================
694
- # Step 6: Initialize .kenaz/ structure (multi-project support)
695
- # ============================================================
696
- Write-Step 6 "Initializing .kenaz/ structure (multi-project)"
697
-
698
- # Only init .kenaz/ for sub-projects (not KenazAI core itself)
699
- $isSubProject = ($kenazSourceDir -and ($kenazSourceDir -ne $WorkingDirectory))
700
-
701
- if ($isSubProject) {
702
- $kenazStructDir = Join-Path $WorkingDirectory ".kenaz"
703
- $projectInitScript = $null
704
-
705
- # Find project-init.js from KenazAI source
706
- if ($kenazSourceDir) {
707
- $candidatePath = Join-Path $kenazSourceDir ".projects\project-init.js"
708
- if (Test-Path $candidatePath) {
709
- $projectInitScript = $candidatePath
710
- }
711
- }
712
-
713
- if ($projectInitScript) {
714
- $projectName = Split-Path -Leaf $WorkingDirectory
715
- $initArgs = "init --path `"$WorkingDirectory`" --name `"$projectName`" --core-path `"$kenazSourceDir`""
716
-
717
- try {
718
- $initResult = & node $projectInitScript $initArgs.Split(" ") 2>&1
719
- $initResult | ForEach-Object { Write-Host " $_" }
720
- Write-Success "Initialized .kenaz/ structure"
721
- } catch {
722
- Write-Fail "Failed to initialize .kenaz/ structure: $_"
723
- }
724
- } else {
725
- # Fallback: create .kenaz/ structure manually
726
- $kenazTaskDirs = @("backlog", "active", "done", "blocked", "cancel")
727
- $kenazLogDirs = @("unit", "solo", "squad", "legion", "misc")
728
-
729
- # Create tasks directories
730
- foreach ($dir in $kenazTaskDirs) {
731
- $dirPath = Join-Path $kenazStructDir "tasks\$dir"
732
- if (-not (Test-Path $dirPath)) {
733
- New-Item -ItemType Directory -Path $dirPath -Force | Out-Null
734
- New-Item -ItemType File -Path (Join-Path $dirPath ".gitkeep") -Force | Out-Null
735
- }
736
- }
737
-
738
- # Create logs directories
739
- foreach ($dir in $kenazLogDirs) {
740
- $dirPath = Join-Path $kenazStructDir "logs\$dir"
741
- if (-not (Test-Path $dirPath)) {
742
- New-Item -ItemType Directory -Path $dirPath -Force | Out-Null
743
- New-Item -ItemType File -Path (Join-Path $dirPath ".gitkeep") -Force | Out-Null
744
- }
745
- }
746
-
747
- # Create project.yaml if not exists
748
- $projectYamlPath = Join-Path $kenazStructDir "project.yaml"
749
- if (-not (Test-Path $projectYamlPath)) {
750
- $projectName = Split-Path -Leaf $WorkingDirectory
751
- $projId = "proj_$([DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds())_$(Get-Random -Maximum 9999999)"
752
- $corePath = if ($kenazSourceDir) { '__kenaz_core__' } else { '' }
753
- $yamlContent = @"
754
- schema_version: 1
755
- project_id: $projId
756
- project_name: $projectName
757
- core_path: $corePath
758
- created_at: '$(Get-Date -Format "yyyy-MM-ddTHH:mm:ss.fffZ")'
759
- "@
760
- Set-Content -Path $projectYamlPath -Value $yamlContent -Encoding UTF8
761
- }
762
-
763
- Write-Success "Created .kenaz/ structure (manual fallback)"
764
- }
765
- } else {
766
- Write-Success "Core project - .kenaz/ not needed (uses .collaboration/)"
767
- }
768
-
769
- # ============================================================
770
- # Step 7: Initialize Git (sub-project only)
771
- # ============================================================
772
- if ($isSubProject) {
773
- $gitDir = Join-Path $WorkingDirectory ".git"
774
- if (-not (Test-Path $gitDir)) {
775
- Write-Step 7 "Initializing Git repository"
776
- try {
777
- Push-Location $WorkingDirectory
778
- & git init --initial-branch=main 2>$null
779
- if ($LASTEXITCODE -ne 0) {
780
- & git init
781
- & git checkout -b main 2>$null
782
- }
783
-
784
- # .gitignore
785
- $gitignorePath = Join-Path $WorkingDirectory ".gitignore"
786
- if (-not (Test-Path $gitignorePath)) {
787
- @(
788
- "node_modules/", "__pycache__/", "*.pyc", "venv/",
789
- ".env", ".env.local", "*.db", ".chroma/"
790
- ) | Set-Content -Path $gitignorePath -Encoding UTF8
791
- }
792
-
793
- & git add -A
794
- & git commit -m "Initial commit: Kenaz AI project setup" --allow-empty 2>$null
795
- Write-Success "Git initialized with initial commit"
796
- } catch {
797
- Write-Fail "Git initialization failed: $_"
798
- } finally {
799
- Pop-Location
800
- }
801
- } else {
802
- # .git exists — check for initial commit
803
- try {
804
- Push-Location $WorkingDirectory
805
- & git rev-parse HEAD 2>$null | Out-Null
806
- if ($LASTEXITCODE -ne 0) {
807
- Write-Step 7 "Creating initial commit (empty repo detected)"
808
- & git add -A
809
- & git commit -m "Initial commit: Kenaz AI project setup" --allow-empty 2>$null
810
- Write-Success "Initial commit created"
811
- } else {
812
- Write-Success "Git already initialized"
813
- }
814
- } catch {
815
- Write-Fail "Git check failed: $_"
816
- } finally {
817
- Pop-Location
818
- }
819
- }
820
- } else {
821
- Write-Success "Core project - Git managed separately"
822
- }
823
-
824
- # ============================================================
825
- # Step 8: 顯示摘要和下一步
826
- # ============================================================
827
- Write-Host ""
828
- Write-Color "============================================================" "Green"
829
- Write-Color " Initialization Complete!" "Green"
830
- Write-Color "============================================================" "Green"
831
- Write-Host ""
832
- Write-Host "Next Steps:"
833
- Write-Host ""
834
- Write-Color " 1. Describe your product idea to Claude" "White"
835
- Write-Color " or use: /product" "Cyan"
836
- Write-Host ""
837
- Write-Color " 2. After PRD is ready, start development:" "White"
838
- Write-Color " Manual: /dev" "Cyan"
839
- Write-Color " Automated: .\dev\scripts\START_DEV_AGENT.bat" "Cyan"
840
- Write-Host ""
841
- Write-Color " 3. Check progress anytime:" "White"
842
- Write-Color " /progress" "Cyan"
843
- Write-Host ""
844
- Write-Color "============================================================" "Green"
845
- Write-Host ""
846
-
847
- # 自動啟動
848
- if ($AutoStart) {
849
- Write-Host "Starting Claude with /product..."
850
- Start-Process -FilePath "claude" -ArgumentList "/product" -NoNewWindow
851
- }