kenaz 0.3.18 → 0.3.19
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/core/.claude/commands/agent-worker.md +1 -1
- package/core/.claude/commands/architect.md +1 -2
- package/core/.claude/commands/spec.md +1 -1
- package/core/.claude/commands//347/224/242/345/223/201.md +1 -1
- package/core/.claude/hooks/__tests__/task-1977-dedupe-guard.test.js +8 -8
- package/core/.claude/skills/architect_agent/SKILL.md +11 -92
- package/core/.claude/skills/assessment_agent/SKILL.md +0 -1
- package/core/.claude/skills/backend_engineer/SKILL.md +3 -6
- package/core/.claude/skills/code_reviewer/SKILL.md +1 -1
- package/core/.claude/skills/code_reviewer/patterns.yaml +1 -1
- package/core/.claude/skills/designer/SKILL.md +3 -6
- package/core/.claude/skills/dev_agent/SKILL.md +30 -491
- package/core/.claude/skills/developer/SKILL.md +3 -6
- package/core/.claude/skills/feature_agent/SKILL.md +3 -17
- package/core/.claude/skills/product_manager/SKILL.md +29 -1064
- package/core/.claude/skills/qa_engineer/SKILL.md +12 -17
- package/core/.claude/skills/spec_optimizer/SKILL.md +25 -275
- package/core/.claude/skills/sre_agent/SKILL.md +3 -6
- package/core/.collaboration/README.md +2 -3
- package/core/.collaboration/core/task-api.js +5 -138
- package/core/.collaboration/docs/CLI.md +0 -2
- package/core/.failure/INDEX.yaml +6 -40
- package/core/.failure/agent-execution/FAIL-013-search-cwd-drift-and-case-mismatch.yaml +1 -1
- package/core/.failure/tools/README.md +9 -227
- package/core/.formation/bifrost/launch.js +1 -6
- package/core/.formation/bifrost/launch.test.js +1 -1
- package/core/.formation/bifrost/shared/ansuz-boot-policy.js +3 -3
- package/core/.formation/bifrost/shared/ansuz-boot-policy.test.js +1 -2
- package/core/.formation/tools/__tests__/m1-hmap-convid.test.js +1 -124
- package/core/.formation/tools/dispatch.js +1 -1
- package/core/.formation/tools/loader.js +17 -140
- package/core/.formation/tools/post-complete.js +0 -31
- package/core/.rule/INDEX.yaml +0 -18
- package/core/.rule/general/agent-workflow.yaml +14 -164
- package/core/.rule/general/project-self-containment.yaml +8 -19
- package/core/.rule/general/rust-verify-target.yaml +6 -5
- package/core/.rule/general/synapse-code-intelligence.yaml +3 -3
- package/core/.specialist/Amelia/capability.yaml +12 -12
- package/core/.specialist/Amelia/workflow.yaml +2 -2
- package/core/.specialist/Ansuz/SYSTEM_DOC.md +20 -578
- package/core/.specialist/Ansuz/cognitive_principles.yaml +2 -3
- package/core/.specialist/Ansuz/concepts/boot_rules_summary.yaml +0 -1
- package/core/.specialist/Ansuz/concepts/deep_knowledge_pointers.yaml +1 -2
- package/core/.specialist/Ansuz/core.yaml +6 -108
- package/core/.specialist/Ansuz/guards/lesson_guards.yaml +0 -3
- package/core/.specialist/Ansuz/identity_contract.yaml +0 -1
- package/core/.specialist/Ansuz/knowledge.yaml +0 -4
- package/core/.specialist/Ansuz/rule.yaml +0 -1
- package/core/.specialist/Ansuz/tools/handoff-session-identity.test.js +6 -150
- package/core/.specialist/tests/runtime-discovery/README.md +1 -1
- package/core/.specialist/tools/__tests__/task-2374-usage-counter.test.js +1 -12
- package/core/.specialist/tools/prompt-files.test.js +1 -0
- package/core/.specialist/tools/task-bridge.js +1 -66
- package/core/.system/README.md +11 -552
- package/core/.system/collaboration/README.md +10 -174
- package/core/CLAUDE.md +1 -6
- package/core/KENAZ_CORE_VERSION +1 -1
- package/core/dev/scripts/js-yaml-resolution.test.js +1 -1
- package/core/dev/scripts/run-rust-tests.js +9 -45
- package/core/dev/scripts/rust-verify-worktree.js +4 -4
- package/core/dev/scripts/verify-target-dir.js +6 -6
- package/core/plugins/kenaz/INVENTORY.md +8 -8
- package/core/plugins/kenaz/commands/architect.md +1 -2
- package/core/plugins/kenaz/commands/spec.md +1 -1
- package/core/plugins/kenaz/commands//347/224/242/345/223/201.md +1 -1
- package/core/plugins/kenaz/guidance.md +1 -1
- package/core/plugins/kenaz/scripts/sync.js +1 -1
- package/core/plugins/kenaz/skills/architect_agent/SKILL.md +11 -92
- package/core/plugins/kenaz/skills/assessment_agent/SKILL.md +0 -1
- package/core/plugins/kenaz/skills/backend_engineer/SKILL.md +3 -6
- package/core/plugins/kenaz/skills/code_reviewer/SKILL.md +1 -1
- package/core/plugins/kenaz/skills/code_reviewer/patterns.yaml +1 -1
- package/core/plugins/kenaz/skills/designer/SKILL.md +3 -6
- package/core/plugins/kenaz/skills/dev_agent/SKILL.md +30 -491
- package/core/plugins/kenaz/skills/developer/SKILL.md +3 -6
- package/core/plugins/kenaz/skills/feature_agent/SKILL.md +3 -17
- package/core/plugins/kenaz/skills/product_manager/SKILL.md +29 -1064
- package/core/plugins/kenaz/skills/qa_engineer/SKILL.md +12 -17
- package/core/plugins/kenaz/skills/spec_optimizer/SKILL.md +25 -275
- package/core/plugins/kenaz/skills/sre_agent/SKILL.md +3 -6
- package/package.json +6 -6
- package/core/.claude/commands/archive.md +0 -24
- package/core/.claude/commands/init.md +0 -112
- package/core/.claude/commands/legacy_dev.md +0 -18
- package/core/.claude/commands/product-review.md +0 -131
- package/core/.claude/commands/strategy.md +0 -141
- package/core/.claude/commands/sunny.md +0 -1
- package/core/.claude/commands//347/224/242/345/223/201/346/252/242/350/246/226.md +0 -129
- package/core/.claude/commands//351/200/262/345/272/246.md +0 -15
- package/core/.claude/hooks/__tests__/substrate.test.js +0 -122
- package/core/.claude/hooks/_substrate-paths.js +0 -95
- package/core/.claude/hooks/context-check.js +0 -51
- package/core/.claude/hooks/fatigue-check.js +0 -52
- package/core/.claude/hooks/handoff-snapshot-on-commit.js +0 -154
- package/core/.claude/hooks/handoff-snapshot-on-question.js +0 -158
- package/core/.claude/hooks/handoff-staleness.js +0 -197
- package/core/.claude/hooks/jev-thalamus-context.js +0 -17
- package/core/.claude/hooks/jev-thalamus-context.test.js +0 -41
- package/core/.claude/hooks/lease-release.js +0 -119
- package/core/.claude/hooks/lease-touch.js +0 -96
- package/core/.claude/hooks/reflex-feedback.js +0 -5
- package/core/.claude/hooks/session-init.ps1 +0 -49
- package/core/.claude/hooks/sound-event.js +0 -70
- package/core/.claude/hooks/sound-event.sh +0 -37
- package/core/.claude/hooks/stream-delta.js +0 -169
- package/core/.claude/no-hooks.settings.json +0 -3
- package/core/.claude/skills/legacy_dev/SKILL.md +0 -202
- package/core/.claude/skills/sunny/SKILL.md +0 -74
- package/core/.collaboration/cli/commands/assign.js +0 -39
- package/core/.collaboration/cli/commands/claim.js +0 -33
- package/core/.collaboration/cli/commands/complete.js +0 -44
- package/core/.collaboration/cli/commands/create.js +0 -110
- package/core/.collaboration/cli/commands/get.js +0 -83
- package/core/.collaboration/cli/commands/index.js +0 -52
- package/core/.collaboration/cli/commands/list.js +0 -51
- package/core/.collaboration/cli/commands/lock.js +0 -45
- package/core/.collaboration/cli/commands/rebuild.js +0 -39
- package/core/.collaboration/cli/commands/search.js +0 -61
- package/core/.collaboration/cli/commands/stats.js +0 -61
- package/core/.collaboration/cli/commands/transfer.js +0 -41
- package/core/.collaboration/cli/commands/unlock.js +0 -48
- package/core/.collaboration/cli/formatters/help-formatter.js +0 -70
- package/core/.collaboration/cli/formatters/index.js +0 -7
- package/core/.collaboration/cli/task-cli.js +0 -46
- package/core/.collaboration/cli/utils/arg-parser.js +0 -74
- package/core/.collaboration/cli/utils/git-user.js +0 -25
- package/core/.collaboration/cli/utils/index.js +0 -9
- package/core/.collaboration/cli/utils/output.js +0 -10
- package/core/.collaboration/config/default.yaml +0 -189
- package/core/.collaboration/core/conflict-resolver.js +0 -461
- package/core/.collaboration/core/conflict-resolver.test.js +0 -389
- package/core/.collaboration/core/migrate-legacy.js +0 -260
- package/core/.collaboration/docs/API.md +0 -787
- package/core/.collaboration/docs/ARCHITECTURE.md +0 -596
- package/core/.collaboration/docs/FAQ.md +0 -695
- package/core/.collaboration/docs/MIGRATION.md +0 -804
- package/core/.collaboration/docs/examples/README.md +0 -320
- package/core/.collaboration/docs/examples/advanced-queries.js +0 -261
- package/core/.collaboration/docs/examples/basic-usage.js +0 -184
- package/core/.collaboration/docs/examples/team-workflow.js +0 -352
- package/core/.failure/agent-execution/FAIL-001-agent-no-output.yaml +0 -391
- package/core/.failure/agent-execution/FAIL-007-pm-lead-wrong-team-invocation.yaml +0 -0
- package/core/.failure/agent-execution/FAIL-010-phase0-poem-format-skipped.yaml +0 -28
- package/core/.failure/agent-execution/FAIL-010-skipping-cognitive-checkpoint-after-verification.yaml +0 -59
- package/core/.failure/agent-execution/FAIL-012-grep-shortcut-during-investigation.yaml +0 -85
- package/core/.failure/architecture/FAIL-006-python-version-compatibility.yaml +0 -445
- package/core/.failure/pipeline/FAIL-003-queue-pollution.yaml +0 -335
- package/core/.failure/pipeline/README.md +0 -95
- package/core/.failure/retired/FAIL-009-skipping-synapse-pulse-before-code-change.yaml +0 -49
- package/core/.failure/tools/USAGE_GUIDE.md +0 -323
- package/core/.failure/tools/check_failures.ps1 +0 -387
- package/core/.failure/tools/log_failure.ps1 +0 -474
- package/core/.formation/.episode-input.json +0 -10
- package/core/.formation/.merge-lock +0 -1
- package/core/.formation/lead.yaml +0 -118
- package/core/.formation/legacy.bak/designer.yaml +0 -57
- package/core/.formation/legacy.bak/pm.yaml +0 -57
- package/core/.formation/legacy.bak/qa.yaml +0 -57
- package/core/.formation/legacy.bak/review.yaml +0 -62
- package/core/.formation/legacy.bak/scheduler.yaml +0 -129
- package/core/.formation/legacy.bak/sre.yaml +0 -57
- package/core/.formation/role-map.yaml +0 -274
- package/core/.formation/roles/_shared/modules/code_review.yaml +0 -98
- package/core/.formation/roles/_shared/modules/security.yaml +0 -103
- package/core/.formation/roles/_shared/modules/testing.yaml +0 -14
- package/core/.formation/roles/backend/role.yaml +0 -93
- package/core/.formation/roles/code_reviewer/role.yaml +0 -102
- package/core/.formation/roles/database_optimizer/role.yaml +0 -107
- package/core/.formation/roles/designer/role.yaml +0 -66
- package/core/.formation/roles/developer/role.yaml +0 -75
- package/core/.formation/roles/frontend/role.yaml +0 -134
- package/core/.formation/roles/incident_response/role.yaml +0 -89
- package/core/.formation/roles/qa/role.yaml +0 -89
- package/core/.formation/roles/security/role.yaml +0 -87
- package/core/.formation/roles/sre/role.yaml +0 -66
- package/core/.formation/skills/coordinator.yaml +0 -52
- package/core/.formation/solo/diagnosis.yaml +0 -78
- package/core/.formation/solo/strategy.yaml +0 -121
- package/core/.formation/tests/hello.txt +0 -2
- package/core/.formation/tools/coordinator.js +0 -350
- package/core/.formation/tools/jev-correction.js +0 -214
- package/core/.formation/tools/jev-correction.test.js +0 -178
- package/core/.formation/tools/log-reader.js +0 -232
- package/core/.formation/tools/revert-daemon-state.js +0 -162
- package/core/.formation/tools/test-drift.js +0 -148
- package/core/.formation/unit/heimdall.yaml +0 -96
- package/core/.formation/unit/plan.yaml +0 -67
- package/core/.formation/unit/think.yaml +0 -58
- package/core/.kenaz/MUNINN_SNAPSHOT9_EPISODE.json +0 -32
- package/core/.kenaz/MUNINN_SNAPSHOT9_RUNE.json +0 -23
- package/core/.kenaz/MUNINN_SNAPSHOT9_SUMMARY.md +0 -89
- package/core/.kenaz/ash_TASK_1428-20260507.json +0 -14
- package/core/.kenaz/muninn_episode_write.ps1 +0 -17
- package/core/.kenaz/muninn_snapshot11_rune_candidates.md +0 -63
- package/core/.kenaz/muninn_snapshot1_rune_candidates.md +0 -49
- package/core/.kenaz/runes_TASK_1428.json +0 -57
- package/core/.kenaz/tmp_heimdall_proposal_8d3e392.json +0 -13
- package/core/.kenaz/tmp_props.json +0 -1
- package/core/.kenaz/tmp_sounddrop_t1_prompt.txt +0 -371
- package/core/.rule/MECHANIZED.md +0 -61
- package/core/.rule/general/cortex-memory-recall.yaml +0 -446
- package/core/.rule/general/pipeline.yaml +0 -246
- package/core/.rule/general/sunny-access-control.yaml +0 -60
- package/core/.rule/general/system-invariants.yaml +0 -231
- package/core/.rule/pipeline/PPL-002-completed-task-archival.yaml +0 -528
- package/core/.rule/pipeline/auto-update.yaml +0 -282
- package/core/.rule/pipeline/task-execution.yaml +0 -365
- package/core/.specialist/Ansuz/concepts/phase_protocol.yaml +0 -65
- package/core/.specialist/Ansuz/experiments/boot_ablation_replay.js +0 -197
- package/core/.specialist/Ansuz/tools/bootstrap-anchors.js +0 -289
- package/core/.specialist/Ansuz/workflow.yaml +0 -1225
- package/core/.specialist/experiments/rg_benchmark.js +0 -523
- package/core/.specialist/experiments/rg_benchmark_results.json +0 -27
- package/core/.specialist/tools/jev-optional-context.js +0 -107
- package/core/.specialist/tools/jev-optional-context.test.js +0 -152
- package/core/.specialist/tools/memory-action-log.js +0 -839
- package/core/.specialist/tools/phase-gate.js +0 -3534
- package/core/.specialist/tools/phase-gate.test.js +0 -85
- package/core/.specialist/tools/precompute-runner.js +0 -444
- package/core/.specialist/tools/rule-engine.js +0 -621
- package/core/.specialist/tools/task-bridge-jev.test.js +0 -170
- package/core/.synapse/memory-shared.json.sync +0 -1
- package/core/.system/agent-skills/README.md +0 -724
- package/core/.system/cli-tools/README.md +0 -724
- package/core/.system/cortex/MODULES.md +0 -1046
- package/core/.system/dashboard/FRONTEND.md +0 -812
- package/core/.system/dashboard/README.md +0 -737
- package/core/.system/failure/README.md +0 -723
- package/core/.system/formation/LEGACY_SKILLS.md +0 -974
- package/core/.system/formation/POST_COMPLETE.md +0 -602
- package/core/.system/formation/README.md +0 -1094
- package/core/.system/formation/TOOLS_REFERENCE.md +0 -1145
- package/core/.system/kenaz/README.md +0 -787
- package/core/.system/memory/README.md +0 -719
- package/core/.system/pipeline/README.md +0 -712
- package/core/.system/rule/README.md +0 -794
- package/core/.system/sunny/README.md +0 -476
- package/core/.system/sunny/RULES.json +0 -89
- package/core/.system/sunny/knowledge/INDEX.md +0 -37
- package/core/.system/sunny/knowledge/agent-teams-api.md +0 -0
- package/core/.system/sunny/knowledge/ansuz-specialist.md +0 -500
- package/core/.system/sunny/knowledge/claude-cli-spawn.md +0 -177
- package/core/.system/sunny/knowledge/collaboration-api.md +0 -925
- package/core/.system/sunny/teammates/README.md +0 -107
- package/core/.system/sunny/teammates/how_to_use.yaml +0 -101
- package/core/.system/sunny/teammates/tools/headless/launcher.js +0 -318
- package/core/.system/sunny/teammates/tools/powershell/launcher.js +0 -241
- package/core/.system/sunny/teammates/tools/powershell/start.bat +0 -50
- package/core/.system/sunny/teammates/tools/utils/env.js +0 -96
- package/core/.system/sunny/teammates/tools/utils/format-output.js +0 -329
- package/core/.system/sunny/tools.json +0 -101
- package/core/dev/scripts/cleanup-queue.js +0 -184
- package/core/dev/scripts/cleanup_queue.js +0 -86
- package/core/dev/scripts/legacy/README.md +0 -39
- package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +0 -536
- package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +0 -1978
- package/core/dev/scripts/matrix/CLI_README.md +0 -214
- package/core/dev/scripts/matrix/README.md +0 -310
- package/core/dev/scripts/matrix/package-lock.json +0 -4266
- package/core/dev/scripts/matrix/package.json +0 -55
- package/core/dev/scripts/matrix/src/abbreviations.ts +0 -295
- package/core/dev/scripts/matrix/src/cli/commands/convert.ts +0 -211
- package/core/dev/scripts/matrix/src/cli/commands/create.ts +0 -95
- package/core/dev/scripts/matrix/src/cli/commands/delete.ts +0 -102
- package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +0 -140
- package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +0 -173
- package/core/dev/scripts/matrix/src/cli/commands/query.ts +0 -261
- package/core/dev/scripts/matrix/src/cli/commands/read.ts +0 -77
- package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +0 -168
- package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +0 -126
- package/core/dev/scripts/matrix/src/cli/commands/update.ts +0 -147
- package/core/dev/scripts/matrix/src/cli/commands/validate.ts +0 -275
- package/core/dev/scripts/matrix/src/cli/index.ts +0 -350
- package/core/dev/scripts/matrix/src/cli/utils/file-handler.ts +0 -72
- package/core/dev/scripts/matrix/src/cli/utils/logger.ts +0 -65
- package/core/dev/scripts/matrix/src/index.ts +0 -62
- package/core/dev/scripts/matrix/src/indexer/tag-indexer.ts +0 -165
- package/core/dev/scripts/matrix/src/parser.ts +0 -281
- package/core/dev/scripts/matrix/src/serializer.ts +0 -151
- package/core/dev/scripts/matrix/src/validator.ts +0 -301
- package/core/dev/scripts/matrix/tests/abbreviations.test.ts +0 -122
- package/core/dev/scripts/matrix/tests/cli.test.ts +0 -177
- package/core/dev/scripts/matrix/tests/convert.test.ts +0 -143
- package/core/dev/scripts/matrix/tests/parser.test.ts +0 -203
- package/core/dev/scripts/matrix/tests/query.test.ts +0 -85
- package/core/dev/scripts/matrix/tests/serializer.test.ts +0 -197
- package/core/dev/scripts/matrix/tests/validate.test.ts +0 -141
- package/core/dev/scripts/matrix/tests/validator.test.ts +0 -167
- package/core/dev/scripts/matrix/tsconfig.json +0 -20
- package/core/dev/scripts/matrix/types/index.d.ts +0 -111
- package/core/dev/scripts/matrix/types/index.d.ts.map +0 -1
- package/core/dev/scripts/matrix/types/index.js +0 -8
- package/core/dev/scripts/matrix/types/index.js.map +0 -1
- package/core/dev/scripts/matrix/types/index.ts +0 -124
- package/core/dev/scripts/memory-usage-report.js +0 -152
- package/core/dev/scripts/probe/ansuz-scaffold-ablation.js +0 -579
- package/core/dev/scripts/probe/ansuz-scaffold-ablation.test.js +0 -244
- package/core/dev/scripts/probe/hook-latency-probe.js +0 -315
- package/core/dev/scripts/probe/hook-latency-probe.test.js +0 -105
- package/core/dev/scripts/probe/prediction-signal-auc.js +0 -483
- package/core/dev/scripts/probe/prediction-signal-auc.test.js +0 -200
- package/core/dev/scripts/test-pty-ws-tunnel.js +0 -229
- package/core/dev/scripts/validate_pipeline.js +0 -197
- package/core/dev/spikes/task2145-evidence-20261004/backend-log-excerpt.txt +0 -56
- package/core/dev/spikes/task2145-evidence-20261004/graph.shadow +0 -0
- package/core/dev/spikes/task2145-evidence-20261004/graph.wal +0 -0
- package/core/dev/spikes/task2145-evidence-20261004/graph_corrupt_suspect.marker +0 -1
- package/core/plugins/kenaz/commands/strategy.md +0 -141
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
**設計理念**:
|
|
8
8
|
- **目錄即狀態**:任務狀態由檔案所在目錄決定,無需在檔案中維護狀態欄位
|
|
9
9
|
- **YAML 格式**:人類可讀,支援多行文字和結構化資料
|
|
10
|
-
-
|
|
11
|
-
- **向後相容**:與舊 TASK_QUEUE.json 格式相容,支援平滑遷移
|
|
10
|
+
- **單一 API**:task-api.js(完整功能 + CLI,`--format json` 輸出機器可讀 JSON)
|
|
12
11
|
|
|
13
12
|
---
|
|
14
13
|
|
|
@@ -18,8 +17,7 @@
|
|
|
18
17
|
.collaboration/
|
|
19
18
|
├── core/ # 核心 API
|
|
20
19
|
│ ├── task-api.js # 主 API(完整功能 + CLI)
|
|
21
|
-
│
|
|
22
|
-
│ └── migrate-legacy.js # 遷移工具(dev/pipeline → .collaboration)
|
|
20
|
+
│ └── migrate-legacy.js # 一次性遷移工具(dev/pipeline → tasks)
|
|
23
21
|
├── tasks/ # 任務檔案(目錄即狀態)
|
|
24
22
|
│ ├── backlog/ # 待處理任務 (status: pending)
|
|
25
23
|
│ ├── active/ # 進行中任務 (status: in_progress)
|
|
@@ -191,69 +189,9 @@ node <core>/k-cli/dist/index.js task get TASK_XXX --project-path . --json
|
|
|
191
189
|
|
|
192
190
|
---
|
|
193
191
|
|
|
194
|
-
### 2.
|
|
192
|
+
### 2. JSON 輸出
|
|
195
193
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
**使用方式**:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# 輸出所有任務(JSON 格式)
|
|
202
|
-
node .collaboration/core/task-api-json.js
|
|
203
|
-
|
|
204
|
-
# 輸出單個任務
|
|
205
|
-
node .collaboration/core/task-api-json.js --task TASK_194
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
**輸出格式**:
|
|
209
|
-
|
|
210
|
-
```json
|
|
211
|
-
{
|
|
212
|
-
"version": "3.3.0",
|
|
213
|
-
"tasks": [
|
|
214
|
-
{
|
|
215
|
-
"id": "TASK_194",
|
|
216
|
-
"hash": "357cd130-e843-4718-b858-7cc56bdae4e5",
|
|
217
|
-
"title": "系統文檔:.collaboration 新任務系統",
|
|
218
|
-
"status": "in_progress",
|
|
219
|
-
"priority": "P1",
|
|
220
|
-
"role": "developer",
|
|
221
|
-
"rigor": "medium",
|
|
222
|
-
"tags": ["docs"],
|
|
223
|
-
"complexity": "simple",
|
|
224
|
-
"estimated_hours": 0.3,
|
|
225
|
-
"dependencies": [],
|
|
226
|
-
"scope_paths": [".system/collaboration/"],
|
|
227
|
-
"requirements": ["閱讀核心 JS 檔案", "建立 README.md"],
|
|
228
|
-
"acceptance_criteria": ["README.md 涵蓋 API 使用方式"],
|
|
229
|
-
"created_by": {
|
|
230
|
-
"name": "{os_user}",
|
|
231
|
-
"git_user": "{git_user}",
|
|
232
|
-
"timestamp": "2026-02-18T15:07:00.995Z"
|
|
233
|
-
},
|
|
234
|
-
"_file_path": ".collaboration/tasks/active/TASK_194_{git_user}.yaml",
|
|
235
|
-
"_source": "collaboration"
|
|
236
|
-
}
|
|
237
|
-
],
|
|
238
|
-
"statistics": {
|
|
239
|
-
"total": 124,
|
|
240
|
-
"pending": 2,
|
|
241
|
-
"in_progress": 1,
|
|
242
|
-
"completed": 108,
|
|
243
|
-
"blocked": 0,
|
|
244
|
-
"cancelled": 13
|
|
245
|
-
},
|
|
246
|
-
"metadata": {
|
|
247
|
-
"last_updated": "2026-02-18T15:30:00.000Z",
|
|
248
|
-
"directories": ["backlog", "active", "done", "cancel", "blocked", "archived"]
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
**關鍵轉換**:
|
|
254
|
-
- `role` 向後相容為 `agent_type`
|
|
255
|
-
- 人員欄位 (`created_by`, `executed_by`) 轉為 `TaskPerson` 格式(匹配 Rust struct)
|
|
256
|
-
- 陣列欄位確保為字串陣列(避免物件混入)
|
|
194
|
+
需要機器可讀輸出時用 `node .collaboration/core/task-api.js list --format json`。
|
|
257
195
|
|
|
258
196
|
---
|
|
259
197
|
|
|
@@ -306,118 +244,19 @@ keywords: []
|
|
|
306
244
|
|
|
307
245
|
## 與舊系統的關係
|
|
308
246
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
專案同時維護兩套任務系統,處於**漸進式遷移**階段:
|
|
312
|
-
|
|
313
|
-
| 系統 | 路徑 | ID 範圍 | 格式 | 狀態 | 適用場景 |
|
|
314
|
-
|------|------|---------|------|------|---------|
|
|
315
|
-
| **新系統(Collaboration)** | `.collaboration/tasks/{status}/` | TASK_151~196+ | 目錄 + YAML | ✅ 主力系統(推薦) | 手動協作、簡單流程 |
|
|
316
|
-
| **舊系統(Pipeline)** | `dev/pipeline/TASK_QUEUE.json` + `completed/` | TASK_134~187 | JSON + YAML | ⚠️ 相容支援(逐步淘汰) | 排程器、Multi-Agent 並行開發 |
|
|
317
|
-
|
|
318
|
-
**查詢任務時必須兩邊都查**:
|
|
319
|
-
- 新系統:`node .collaboration/core/task-api.js get TASK_XXX`
|
|
320
|
-
- 舊系統:`dev/pipeline/completed/TASK_XXX_*.yaml` 或 `dev/pipeline/TASK_QUEUE.json`
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
### 詳細差異對照
|
|
325
|
-
|
|
326
|
-
| 特性 | Pipeline System(舊) | Collaboration System(新) | 說明 |
|
|
327
|
-
|------|---------------------|--------------------------|------|
|
|
328
|
-
| **狀態管理** | JSON 索引集中式 | 目錄分散式 | 新系統移動檔案即改變狀態,簡化流程 |
|
|
329
|
-
| **任務格式** | JSON 索引 + YAML 檔案 | 純 YAML(目錄即狀態) | 新系統無需在 YAML 中維護狀態欄位 |
|
|
330
|
-
| **查詢介面** | Python API + JSON | Node.js CLI + JSON 輸出 | 新系統支援 `--help` 和過濾查詢 |
|
|
331
|
-
| **路徑鎖定** | ✅ `lock_manager.py` | ❌ 無 | 舊系統支援並行開發衝突檢測 |
|
|
332
|
-
| **依賴解析** | ✅ `dependency_resolver.py` | ⚠️ 基礎支援 | 舊系統有拓撲排序、循環檢測、關鍵路徑 |
|
|
333
|
-
| **統計查詢** | ✅ 豐富(含關鍵路徑、依賴圖) | ⚠️ 基礎(僅數量統計) | 舊系統功能更完善 |
|
|
334
|
-
| **排程器整合** | ✅ Single-Agent、Multi-Agent | ⚠️ Formation 有限支援 | 舊系統為排程器設計 |
|
|
335
|
-
| **Dashboard 支援** | ✅ Tauri API 呼叫 | ✅ Tauri API 呼叫 | 兩者皆支援 JSON 輸出 |
|
|
336
|
-
| **衝突避免** | ✅ `scope_paths` + 路徑鎖定 | ⚠️ `scope_paths` 欄位(無自動檢測) | 舊系統自動防衝突 |
|
|
337
|
-
| **孤兒鎖定清理** | ✅ 自動清理 | ❌ 不適用 | 舊系統處理 Agent crash |
|
|
338
|
-
| **驗證腳本** | ✅ `validate_pipeline.ps1` | ❌ 無 | 舊系統有一致性檢查 |
|
|
339
|
-
| **複雜度** | ⚠️ 較高(需理解鎖定機制) | ✅ 較低(目錄即狀態) | 新系統更易上手 |
|
|
340
|
-
| **適用場景** | 排程器、並行開發 | 手動協作、簡單流程 | 根據場景選擇系統 |
|
|
341
|
-
|
|
342
|
-
**選擇建議**:
|
|
343
|
-
- ✅ **使用新系統(Collaboration)**:手動協作、簡單任務流程、不需要並行開發
|
|
344
|
-
- ✅ **使用舊系統(Pipeline)**:需要自動化排程器、Multi-Agent 並行開發、路徑衝突檢測
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
### 遷移方向
|
|
349
|
-
|
|
350
|
-
**目標**:逐步將 Pipeline 系統的功能整合到 Collaboration 系統,最終淘汰舊系統。
|
|
351
|
-
|
|
352
|
-
**階段 1:雙軌制運行**(當前階段)
|
|
353
|
-
- ✅ 兩套系統並存,保持相容
|
|
354
|
-
- ✅ 新任務優先建立在 Collaboration 系統
|
|
355
|
-
- ✅ Formation 系統已支援三層 fallback(新系統 → 舊 YAML → 舊 JSON)
|
|
356
|
-
|
|
357
|
-
**階段 2:功能補齊**(計劃中)
|
|
358
|
-
- [ ] 實現路徑鎖定機制(移植 `lock_manager.py` 到 Node.js)
|
|
359
|
-
- [ ] 增強依賴解析(拓撲排序、循環檢測、關鍵路徑)
|
|
360
|
-
- [ ] 建立驗證工具(`validate_collaboration.js`)
|
|
361
|
-
- [ ] 統計查詢增強(依賴圖、執行時間預估)
|
|
362
|
-
|
|
363
|
-
**階段 3:排程器遷移**(計劃中)
|
|
364
|
-
- [ ] 更新 Single-Agent 排程器使用新系統
|
|
365
|
-
- [ ] 更新 Multi-Agent 排程器使用新系統
|
|
366
|
-
- [ ] 保留舊系統的 Python orchestrator 模組作為參考實現
|
|
367
|
-
|
|
368
|
-
**階段 4:全面遷移**(計劃中)
|
|
369
|
-
- [ ] 將 `dev/pipeline/TASK_QUEUE.json` 中的任務匯入新系統
|
|
370
|
-
- [ ] 封存舊系統文件至 `.legacy/`
|
|
371
|
-
- [ ] 更新 CLAUDE.md、規則文檔移除舊系統引用
|
|
372
|
-
|
|
373
|
-
**遷移工具**:
|
|
374
|
-
```bash
|
|
375
|
-
# 匯出新系統任務為舊格式(供排程器使用)
|
|
376
|
-
node .collaboration/core/migrate-legacy.js export
|
|
247
|
+
`dev/pipeline/TASK_QUEUE.json` 的舊任務佇列已凍結,不再新增或更新。所有任務在 `.kenaz/tasks/{status}/`(YAML,目錄即狀態);`.collaboration/tasks/` 只在 `.kenaz/tasks/` 不存在時作為 legacy fallback。查舊任務可參考 `dev/pipeline/` 的歷史檔案,新任務一律用 task-api。
|
|
377
248
|
|
|
378
|
-
|
|
379
|
-
node .collaboration/core/migrate-legacy.js import
|
|
380
|
-
|
|
381
|
-
# 雙向同步(開發中)
|
|
382
|
-
node .collaboration/core/migrate-legacy.js sync
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
**相關文檔**:
|
|
386
|
-
- 舊系統文檔:`.system/pipeline/README.md`
|
|
387
|
-
- 遷移腳本:`.collaboration/core/migrate-legacy.js`
|
|
388
|
-
- Formation 整合:`.formation/tools/loader.js:180-220`
|
|
249
|
+
`migrate-legacy.js` 為一次性遷移工具,僅供查閱歷史資料格式。
|
|
389
250
|
|
|
390
251
|
---
|
|
391
252
|
|
|
392
|
-
##
|
|
393
|
-
|
|
394
|
-
### 1. Formation 系統整合
|
|
395
|
-
|
|
396
|
-
`.formation/tools/loader.js` 已更新為三層 fallback:
|
|
397
|
-
1. 優先讀取新系統(`.collaboration/tasks/`)
|
|
398
|
-
2. 降級讀取舊 YAML(`dev/pipeline/completed/`)
|
|
399
|
-
3. 最終降級讀取舊 JSON(`dev/pipeline/TASK_QUEUE.json`)
|
|
400
|
-
|
|
401
|
-
### 2. Dashboard 整合
|
|
402
|
-
|
|
403
|
-
Tauri Dashboard 透過 Rust API 呼叫 `task-api-json.js`:
|
|
404
|
-
```rust
|
|
405
|
-
// dashboard/src-tauri/src/features/task/manager.rs
|
|
406
|
-
pub async fn get_tasks() -> Result<TaskQueue, TaskError> {
|
|
407
|
-
let output = Command::new("node")
|
|
408
|
-
.args(&[".collaboration/core/task-api-json.js"])
|
|
409
|
-
.output()?;
|
|
410
|
-
let json = String::from_utf8(output.stdout)?;
|
|
411
|
-
serde_json::from_str(&json)
|
|
412
|
-
}
|
|
413
|
-
```
|
|
253
|
+
## 使用場景
|
|
414
254
|
|
|
415
|
-
|
|
255
|
+
Ansuz 派工前先開卡(`create`),subagent 完成後 `complete`;任務卡的 scope_paths 供並行任務避免路徑衝突(無自動檢測,由派工者檢查)。
|
|
416
256
|
|
|
417
|
-
Dev Agent 使用新系統查詢任務:
|
|
418
257
|
```bash
|
|
419
258
|
# 列出待辦任務
|
|
420
|
-
node .collaboration/core/task-api.js list --status
|
|
259
|
+
node .collaboration/core/task-api.js list --status backlog --role developer
|
|
421
260
|
|
|
422
261
|
# 認領任務
|
|
423
262
|
node .collaboration/core/task-api.js claim TASK_194
|
|
@@ -554,16 +393,13 @@ async moveTask(taskId, newStatus) {
|
|
|
554
393
|
- **Claim 保號**:共享模式下從 Pool 認領任務保留原編號;只有真正的本地檔案碰撞才重編號(碰撞時先比對 `hash` 欄位 — 相同代表同一張卡返家,原地更新不重編)。重編號從 lease 消耗(counter 在共享模式下只記錄最後消耗的 lease 編號,不是配號權威)。
|
|
555
394
|
- **Relay 端**:`id_counters` 表以 `(team_id, project)` 隔離,單一 transaction 內原子配號。
|
|
556
395
|
|
|
557
|
-
**相關實作**:`task-api.js generateTaskID()/_allocateFromRelay()`、`
|
|
396
|
+
**相關實作**:`task-api.js generateTaskID()/_allocateFromRelay()`、`yggdrasil-relay/src/routes/tasks.rs allocate_ids`(端點文檔見 `yggdrasil-relay/DESIGN.md`)。
|
|
558
397
|
|
|
559
398
|
---
|
|
560
399
|
|
|
561
400
|
## 參考連結
|
|
562
401
|
|
|
563
402
|
- YAML 範例:`.collaboration/tasks/TASK_Example_{git_user}.yaml`
|
|
564
|
-
- 舊系統文檔:`.system/pipeline/README.md`(待建立)
|
|
565
|
-
- Formation 整合:`.formation/tools/loader.js:180-220`
|
|
566
|
-
- Dashboard 整合:`dashboard/src-tauri/src/features/task/manager.rs`
|
|
567
403
|
|
|
568
404
|
---
|
|
569
405
|
|
package/core/CLAUDE.md
CHANGED
|
@@ -38,7 +38,7 @@ session 開始時先鎖定語言(對照用戶第一條訊息 + cwd/CLAUDE.md
|
|
|
38
38
|
- 「這個檔案有哪些 symbol?」→ `kenaz_lsp_symbols`
|
|
39
39
|
- **文字 / 概念搜尋** → `Grep` / `Glob`(精確字串、正則、枚舉;需用 `|` 猜多個關鍵字時,就多組關鍵字一起 Grep)。
|
|
40
40
|
- Session 初始化時用 `ToolSearch "kenaz_lsp"` 偵測 LSP 工具。ToolSearch 未找到 → 該 session 全程降級用 Grep/Glob。
|
|
41
|
-
- 修改非 trivial symbol 前:用 `kenaz_lsp_references` / `kenaz_lsp_callers`
|
|
41
|
+
- 修改非 trivial symbol 前:用 `kenaz_lsp_references` / `kenaz_lsp_callers` 看影響範圍。trivial 改動可跳過。
|
|
42
42
|
- 所有 `kenaz_lsp_*` 呼叫必須明確帶 `projectPath`。
|
|
43
43
|
|
|
44
44
|
**記憶系統已移除(2026-10-11,TASK_2411)**:Synapse / Hippocampus / Cortex recall / embeddings 與 Alaya seeds/bijas 已移除,`synapse_*`、`hippocampus_*`、`cortex_*`、`alaya_recall` 不再存在;教訓用 `kenaz learn add` 與 Claude 原生記憶檔;`~/.kenaz/cortex/*.db` 與 `.synapse/` 資料留在磁碟上、不再開啟。
|
|
@@ -97,12 +97,7 @@ KenazAI 是一個 Claude Code 多 Agent 協作系統,包含:
|
|
|
97
97
|
| `/產品` | 需求分析、PRD |
|
|
98
98
|
| `/設計` | UI/UX 設計 |
|
|
99
99
|
| `/評估` | 深度評估 |
|
|
100
|
-
| `/sre` | Supabase 管理、部署、SLO/Error Budget |
|
|
101
|
-
| `/init` | 初始化新專案 |
|
|
102
|
-
| `/進度` | 查看開發進度 |
|
|
103
100
|
| `/spec` | 規格優化與文件整理 |
|
|
104
|
-
| `/strategy` | 策略智庫 |
|
|
105
|
-
| `/sunny` | 內部系統開發模式 |
|
|
106
101
|
|
|
107
102
|
完整指令列表見 `.claude/commands/`。
|
|
108
103
|
|
package/core/KENAZ_CORE_VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.19
|
|
@@ -17,7 +17,7 @@ const path = require('path');
|
|
|
17
17
|
const { spawnSync } = require('child_process');
|
|
18
18
|
|
|
19
19
|
const ROOT = path.resolve(__dirname, '..', '..');
|
|
20
|
-
const TARGETS = ['dev/scripts/check-file-size.js'
|
|
20
|
+
const TARGETS = ['dev/scripts/check-file-size.js'];
|
|
21
21
|
// Shipped modules (not CLIs): static check only. cognitive.js swallowed the missing
|
|
22
22
|
// module in a try/catch and silently returned fallback rules in kenaz-core.
|
|
23
23
|
const MODULES = ['.formation/tools/post-complete/cognitive.js'];
|
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* run-rust-tests.js —
|
|
3
|
+
* run-rust-tests.js — build the kenaz-dashboard lib test binary and run it (TASK_1619).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* verified empirically 2026-06-11: the build-script output file contains the
|
|
11
|
-
* directives while the rustc -v link invocation does not. Result: the loader
|
|
12
|
-
* binds comctl32 5.82 from WinSxS and dies with STATUS_ENTRYPOINT_NOT_FOUND
|
|
13
|
-
* (0xc0000139, bash exit 127) before any test runs.
|
|
14
|
-
*
|
|
15
|
-
* A global `cargo:rustc-link-arg` is NOT safe: tauri-build already embeds an
|
|
16
|
-
* RT_MANIFEST resource for the app binary; adding /MANIFESTINPUT there creates
|
|
17
|
-
* a duplicate-manifest link failure.
|
|
18
|
-
*
|
|
19
|
-
* Fix here: build with --no-run, copy the test exe to a stable fresh name
|
|
20
|
-
* (the copy's new timestamp busts the per-path SxS activation-context cache),
|
|
21
|
-
* drop an external .manifest beside it, then exec it with passthrough args.
|
|
5
|
+
* Builds with --no-run (so compiler errors can be rendered readably from the JSON
|
|
6
|
+
* message stream), locates the lib unittest executable and execs it with the filter
|
|
7
|
+
* and passthrough args. The Windows Common-Controls manifest workaround this script
|
|
8
|
+
* used to carry was only needed for rfd's static TaskDialogIndirect import; rfd is
|
|
9
|
+
* gone and the test exe starts fine without any manifest.
|
|
22
10
|
*
|
|
23
11
|
* Usage:
|
|
24
12
|
* node dev/scripts/run-rust-tests.js [test-filter] [-- extra-harness-args]
|
|
@@ -36,7 +24,6 @@ const { verifyTargetDir } = require('./verify-target-dir.js');
|
|
|
36
24
|
|
|
37
25
|
const repoRoot = path.resolve(__dirname, '..', '..');
|
|
38
26
|
const crateDir = path.join(repoRoot, 'dashboard', 'src-tauri');
|
|
39
|
-
const manifestSrc = path.join(crateDir, 'test.manifest');
|
|
40
27
|
|
|
41
28
|
// TASK_2058: parse `[test-filter] [-- extra-harness-args]`.
|
|
42
29
|
//
|
|
@@ -137,7 +124,7 @@ function main() {
|
|
|
137
124
|
const exeArgs = buildExeArgs(process.argv.slice(2));
|
|
138
125
|
|
|
139
126
|
// TASK_1879: default to the canonical shared verify target dir. Avoids both
|
|
140
|
-
// Windows MAX_PATH
|
|
127
|
+
// Windows MAX_PATH and the live tauri-dev lock on the
|
|
141
128
|
// repo's own target/. Explicit CARGO_TARGET_DIR still wins.
|
|
142
129
|
const env = { ...process.env };
|
|
143
130
|
if (!env.CARGO_TARGET_DIR) {
|
|
@@ -192,31 +179,8 @@ function main() {
|
|
|
192
179
|
fail(`could not locate lib test executable (got: ${testExe})`);
|
|
193
180
|
}
|
|
194
181
|
|
|
195
|
-
// 3.
|
|
196
|
-
|
|
197
|
-
const direct = spawnSync(testExe, exeArgs, { stdio: 'inherit' });
|
|
198
|
-
process.exit(direct.status ?? 1);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// 4. Windows: copy to a stable name + external manifest (cache-busting copy).
|
|
202
|
-
if (!fs.existsSync(manifestSrc)) {
|
|
203
|
-
fail(`test.manifest not found at ${manifestSrc}`);
|
|
204
|
-
}
|
|
205
|
-
const runDir = path.dirname(testExe);
|
|
206
|
-
const runExe = path.join(runDir, 'kenaz_dashboard_unit_tests.exe');
|
|
207
|
-
fs.copyFileSync(testExe, runExe); // fresh timestamp invalidates SxS manifest cache
|
|
208
|
-
fs.copyFileSync(manifestSrc, `${runExe}.manifest`);
|
|
209
|
-
// Stage the PDB too so panic backtraces keep symbols (best effort).
|
|
210
|
-
const pdb = testExe.replace(/\.exe$/i, '.pdb');
|
|
211
|
-
if (fs.existsSync(pdb)) {
|
|
212
|
-
try {
|
|
213
|
-
fs.copyFileSync(pdb, runExe.replace(/\.exe$/i, '.pdb'));
|
|
214
|
-
} catch {
|
|
215
|
-
/* non-fatal */
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const run = spawnSync(runExe, exeArgs, { stdio: 'inherit' });
|
|
182
|
+
// 3. Run the artifact directly.
|
|
183
|
+
const run = spawnSync(testExe, exeArgs, { stdio: 'inherit' });
|
|
220
184
|
process.exit(run.status ?? 1);
|
|
221
185
|
}
|
|
222
186
|
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* PROBLEM: a Rust-scoped worktree subagent cannot safely run `cargo`/
|
|
7
7
|
* `run-rust-tests.js` in its OWN task worktree. That worktree is a fresh
|
|
8
|
-
* source root, so
|
|
9
|
-
* has to be rebuilt from scratch
|
|
8
|
+
* source root, so the whole dependency tree (see verify-target-dir.js)
|
|
9
|
+
* has to be rebuilt from scratch — minutes, which blows the
|
|
10
10
|
* Bash foreground timeout and, per prompt.js rule 13/feedback_agent_orphan_
|
|
11
11
|
* build_holds_lock, leaves an orphan cargo holding the shared target-dir
|
|
12
12
|
* lock forever.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* FIX: ONE canonical, reused worktree (this script owns it) that agents
|
|
15
15
|
* check out their branch into, run a single narrow test filter in, and
|
|
16
16
|
* hand back. The cache stays warm across dispatches because it is always
|
|
17
|
-
* the SAME source root (
|
|
17
|
+
* the SAME source root (build artifacts are keyed per source root).
|
|
18
18
|
*
|
|
19
19
|
* Marker file `.kenaz-rust-verify` inside the worktree is the safety
|
|
20
20
|
* invariant: every subcommand that would touch (create/checkout/lock in)
|
|
@@ -67,7 +67,7 @@ const RUNNER_REL_PATH = path.join('dev', 'scripts', 'run-rust-tests.js');
|
|
|
67
67
|
// and the old `path.resolve(__dirname, '..', '..')` returned the WORKTREE
|
|
68
68
|
// root, not the main repo — deriving a stray `<repoRoot>/.kenaz-worktrees/
|
|
69
69
|
// <repoRoot-basename>/rust-verify` path nested inside the task worktree
|
|
70
|
-
// and paying a cold
|
|
70
|
+
// and paying a cold build, exactly what this script exists to avoid.
|
|
71
71
|
//
|
|
72
72
|
// Fix: ask git. `git rev-parse --git-common-dir` always resolves to the
|
|
73
73
|
// MAIN repo's shared `.git` directory, even when run from a linked
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* generators, taskgen templates, verify scripts, formation runner/integration)
|
|
7
7
|
* must take the value from here instead of inventing its own directory.
|
|
8
8
|
*
|
|
9
|
-
* Why a short path at all (Windows):
|
|
10
|
-
* MAX_PATH (260) when the target dir sits under the repo or a
|
|
11
|
-
* (worktree paths add ~40 chars). A short root like C:/t/...
|
|
9
|
+
* Why a short path at all (Windows): deep C/C++ dependency object paths
|
|
10
|
+
* can approach MAX_PATH (260) when the target dir sits under the repo or a
|
|
11
|
+
* worktree (worktree paths add ~40 chars). A short root like C:/t/... avoids it.
|
|
12
12
|
*
|
|
13
13
|
* Why ONE shared directory (user decision 2026-08-22): the previous convention
|
|
14
14
|
* — "each dispatch invents a unique dir (C:/t/vis, C:/t/emb, C:/t1599, ...)
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
* cargo.exe / build-script-build.exe at 0% CPU with NO rustc children
|
|
28
28
|
* (nothing is compiling). Only in the orphan case kill the holder.
|
|
29
29
|
*
|
|
30
|
-
* Cache-heat caveat:
|
|
31
|
-
*
|
|
30
|
+
* Cache-heat caveat: workspace crates' build artifacts are keyed per
|
|
31
|
+
* source root. Verifies from the SAME checkout (main repo, or a
|
|
32
32
|
* reused worktree) get the warm cache; a verify from a NEW worktree path
|
|
33
|
-
* recompiles
|
|
33
|
+
* recompiles them but coexists in the same dir without invalidating others.
|
|
34
34
|
* The dir therefore still grows across many distinct worktree roots — when it
|
|
35
35
|
* gets too big, delete the whole canonical dir while no cargo is running; it
|
|
36
36
|
* is pure cache and rebuilds itself.
|
|
@@ -13,7 +13,7 @@ off = every hook exits before reading stdin. assist = silent telemetry/bookkeepi
|
|
|
13
13
|
| agent-flow POST (Notification, Pre/PostToolUse, PostToolUseFailure, SessionEnd, Stop, SubagentStart/Stop; user-level curl) | ship | assist | skipped silently when backend down |
|
|
14
14
|
| SessionStart agent-flow ping | ship | assist | |
|
|
15
15
|
| SessionStart guidance (new, replaces injecting CLAUDE.md) | ship | full | `guidance.md` |
|
|
16
|
-
| _run-user-prompt.js (runs
|
|
16
|
+
| _run-user-prompt.js (runs daemon-outbox, turn-context, task-bridge, correction-detect; see DEFAULT_HOOKS) | ship | full | prints context |
|
|
17
17
|
| memory-guard.js | ship | full | |
|
|
18
18
|
| synapse-first-investigation.js | ship | full | |
|
|
19
19
|
| task-bridge.js (PostToolUse Task*) | ship | assist | |
|
|
@@ -26,19 +26,19 @@ off = every hook exits before reading stdin. assist = silent telemetry/bookkeepi
|
|
|
26
26
|
|
|
27
27
|
Hooks only act in Kenaz projects (`.kenaz/project.yaml`, `_project-guard.js`): run `/kenaz init` once in a fresh project.
|
|
28
28
|
|
|
29
|
-
## Commands (
|
|
29
|
+
## Commands (13)
|
|
30
30
|
| Class | Commands |
|
|
31
31
|
|---|---|
|
|
32
|
-
| ship (
|
|
33
|
-
| core | Huginn,
|
|
34
|
-
|
|
|
32
|
+
| ship (11 + new `/kenaz`) | Ansuz, Amelia, architect, incident, review, security, spec, 產品, 設計, 評估 |
|
|
33
|
+
| core | Huginn, canary, agent-worker (invoked by the Rust scheduler with `--task`/`--agent`) |
|
|
34
|
+
| removed | strategy (Strategy Agent skill gone), archive, init, 進度, legacy_dev, 產品檢視, product-review, sunny (Pipeline / TASK_QUEUE / retired-subsystem commands; `/dev`, `/lead`, `/開發`, `multi-agent` retired earlier with Formation) |
|
|
35
35
|
|
|
36
|
-
## Skills
|
|
36
|
+
## Skills
|
|
37
37
|
| Class | Skills |
|
|
38
38
|
|---|---|
|
|
39
39
|
| ship (34) | architect_agent, assessment_agent, backend_agent, backend_engineer, code_reviewer, dev_agent, designer, developer, feature_agent, frontend_agent, incident_response, product_manager, qa_engineer, security_agent, spec_optimizer, sre_agent, adapt, animate, audit, bolder, clarify, colorize, critique, delight, distill, extract, frontend-design, harden, normalize, onboard, optimize, polish, quieter, ui-ux-pro-max |
|
|
40
|
-
| core | heimdall, huginn,
|
|
41
|
-
|
|
|
40
|
+
| core | heimdall, huginn, optimization_agent |
|
|
41
|
+
| removed | legacy_dev, sunny |
|
|
42
42
|
| third-party / domain (not shipped; install separately from .agents/skills) | vercel-react-best-practices, supabase-postgres-best-practices, remotion-best-practices, pcb-review |
|
|
43
43
|
|
|
44
44
|
## Open items / caveats
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
- 撰寫模組接口規範
|
|
18
18
|
|
|
19
19
|
4. **產出文件**:
|
|
20
|
-
-
|
|
21
|
-
- 建立任務文件至 `dev/pipeline/tasks/`
|
|
20
|
+
- 用 `node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .collaboration/core/task-api.js create` 建立任務卡(`.kenaz/tasks/backlog/`)
|
|
22
21
|
- 撰寫接口文檔至 `docs/`
|
|
23
22
|
|
|
24
23
|
請開始執行系統架構設計。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[Kenaz plugin: mode full] Kenaz MCP tools (kenaz-dashboard) are available when kenaz-server runs on localhost:18080.
|
|
2
2
|
- Code navigation: kenaz_lsp_callers / kenaz_lsp_references / kenaz_lsp_definition / kenaz_lsp_symbols (always pass projectPath). Text search: Grep/Glob.
|
|
3
3
|
- Collaboration: kenaz_peer_send / kenaz_peer_threads (other sessions, other machines, Codex), /kenaz ygg status|join.
|
|
4
|
-
- Reply in the user's language. Commands: /Ansuz, /Amelia, /review, /security, /incident, /spec
|
|
4
|
+
- Reply in the user's language. Commands: /Ansuz, /Amelia, /review, /security, /incident, /spec.
|
|
5
5
|
- Switch: /kenaz off | assist | full (or env KENAZ_MODE). off disables every Kenaz hook.
|
|
@@ -16,7 +16,7 @@ const SKILLS = [
|
|
|
16
16
|
'adapt', 'animate', 'audit', 'bolder', 'clarify', 'colorize', 'critique', 'delight', 'distill', 'extract',
|
|
17
17
|
'frontend-design', 'harden', 'normalize', 'onboard', 'optimize', 'polish', 'quieter', 'ui-ux-pro-max',
|
|
18
18
|
];
|
|
19
|
-
const COMMANDS = ['Amelia', 'Ansuz', 'architect', 'incident', 'review', 'security', 'spec', '
|
|
19
|
+
const COMMANDS = ['Amelia', 'Ansuz', 'architect', 'incident', 'review', 'security', 'spec', '產品', '設計', '評估'];
|
|
20
20
|
|
|
21
21
|
// Core-relative references become plugin-relative / core-resolved.
|
|
22
22
|
// In a user's project (npm install) the core lives in ~/.kenaz/core, not the project folder, so a
|
|
@@ -13,7 +13,7 @@ description: 架構設計、需求拆解、任務分派、接口定義、多Agen
|
|
|
13
13
|
2. **任務拆解**:將大型需求拆解為可獨立執行的任務單元
|
|
14
14
|
3. **Scope 定義**:為每個任務定義精確的路徑範圍(避免衝突)
|
|
15
15
|
4. **接口設計**:定義模組之間的接口規範,確保整合順利
|
|
16
|
-
5.
|
|
16
|
+
5. **任務分派**:以 task-api 建立任務卡並指定適合的 role
|
|
17
17
|
|
|
18
18
|
## 技能
|
|
19
19
|
* **系統分析**:識別系統架構邊界和模組劃分
|
|
@@ -24,9 +24,8 @@ description: 架構設計、需求拆解、任務分派、接口定義、多Agen
|
|
|
24
24
|
|
|
25
25
|
## 文件路徑
|
|
26
26
|
* **產品規格**:`dev/PRODUCT_SPEC.md`
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* **待處理任務**:`dev/pipeline/tasks/`
|
|
27
|
+
* **任務卡**:`.kenaz/tasks/{backlog,active,done,blocked,cancel}/`(YAML,目錄即狀態)
|
|
28
|
+
* **任務 API**:`node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .collaboration/core/task-api.js`
|
|
30
29
|
* **接口文檔**:
|
|
31
30
|
- `docs/api_spec.md`(API 接口)
|
|
32
31
|
- `docs/component_spec.md`(組件接口)
|
|
@@ -171,97 +170,17 @@ def assign_agent(task: Task) -> str:
|
|
|
171
170
|
|
|
172
171
|
> "接口定義已撰寫至 [文件路徑]"
|
|
173
172
|
|
|
174
|
-
### 5.
|
|
175
|
-
|
|
173
|
+
### 5. 產出任務卡
|
|
174
|
+
**用 task-api 建立任務卡**(`node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .collaboration/core/task-api.js --help` 列出全部欄位)。
|
|
176
175
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
2. **寫入 TASK_QUEUE.json**:
|
|
182
|
-
```json
|
|
183
|
-
{
|
|
184
|
-
"id": "TASK_XXX",
|
|
185
|
-
"title": "實作用戶登入 UI",
|
|
186
|
-
"status": "pending",
|
|
187
|
-
"priority": "P1",
|
|
188
|
-
"estimated_hours": 4,
|
|
189
|
-
"scope": ["src/components/auth/", "src/utils/auth.ts"],
|
|
190
|
-
"dependencies": ["TASK_AAA"],
|
|
191
|
-
"blocked_by": ["TASK_AAA"],
|
|
192
|
-
"blocks": [],
|
|
193
|
-
"source": "用戶需求 / PRD P1 項目",
|
|
194
|
-
"source_file": "TASK_XXX_login_ui.md",
|
|
195
|
-
"created_at": "2026-01-31T10:00:00.000Z"
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
**重要**:`source_file` 字段必須與步驟 1 建立的任務文件名稱一致,Dashboard 依賴此字段讀取任務詳細描述。
|
|
200
|
-
|
|
201
|
-
3. **更新 PROGRESS.md**
|
|
202
|
-
|
|
203
|
-
> "已建立 [N] 個新任務,已更新 TASK_QUEUE.json"
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## 使用 Orchestrator 模組
|
|
208
|
-
|
|
209
|
-
Architect Agent 可以使用 `dev/pipeline/orchestrator/` 中的工具:
|
|
210
|
-
|
|
211
|
-
### 任務佇列管理
|
|
212
|
-
```python
|
|
213
|
-
from dev.pipeline.orchestrator.task_queue import (
|
|
214
|
-
TaskQueue, Task, TaskStatus, TaskPriority, AgentType, TaskScope
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
# 載入任務佇列
|
|
218
|
-
queue = TaskQueue("dev/pipeline/TASK_QUEUE.json")
|
|
219
|
-
|
|
220
|
-
# 建立新任務
|
|
221
|
-
new_task = Task(
|
|
222
|
-
id="TASK_022",
|
|
223
|
-
title="實作用戶登入 UI",
|
|
224
|
-
status=TaskStatus.PENDING,
|
|
225
|
-
priority=TaskPriority.P1,
|
|
226
|
-
scope=TaskScope(paths=["src/components/auth/"], files=[]),
|
|
227
|
-
dependencies=["TASK_021"],
|
|
228
|
-
assigned_agent=AgentType.FRONTEND
|
|
229
|
-
)
|
|
230
|
-
|
|
231
|
-
queue.add_task(new_task)
|
|
232
|
-
queue.save()
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 依賴驗證
|
|
236
|
-
```python
|
|
237
|
-
from dev.pipeline.orchestrator.dependency_resolver import DependencyResolver
|
|
238
|
-
|
|
239
|
-
resolver = DependencyResolver()
|
|
240
|
-
|
|
241
|
-
# 添加任務和依賴
|
|
242
|
-
resolver.add_task("TASK_022", dependencies=["TASK_021"])
|
|
243
|
-
resolver.add_task("TASK_023", dependencies=["TASK_021", "TASK_022"])
|
|
244
|
-
|
|
245
|
-
# 驗證無循環依賴
|
|
246
|
-
if not resolver.validate_no_cycles():
|
|
247
|
-
cycle = resolver.get_cycle()
|
|
248
|
-
print(f"檢測到循環依賴: {cycle}")
|
|
249
|
-
|
|
250
|
-
# 查看依賴圖
|
|
251
|
-
print(resolver.visualize())
|
|
176
|
+
```bash
|
|
177
|
+
node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .collaboration/core/task-api.js create --title "實作用戶登入 UI" --description "..." --priority P1 --role frontend --tags code
|
|
178
|
+
node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .collaboration/core/task-api.js update TASK_XXX --append --acceptance-criteria "..." --technical-notes "..."
|
|
252
179
|
```
|
|
253
180
|
|
|
254
|
-
|
|
255
|
-
```python
|
|
256
|
-
from dev.pipeline.orchestrator.lock_manager import PathLockManager
|
|
257
|
-
|
|
258
|
-
lock_manager = PathLockManager("dev/pipeline/LOCK_STATE.json")
|
|
181
|
+
每張卡寫明 scope_paths(精確路徑,避免並行衝突)、dependencies(不得循環)、requirements、acceptance_criteria。
|
|
259
182
|
|
|
260
|
-
|
|
261
|
-
if lock_manager.is_locked("src/components/auth/"):
|
|
262
|
-
holder = lock_manager.get_lock_holder("src/components/auth/")
|
|
263
|
-
print(f"路徑已被 {holder} 鎖定")
|
|
264
|
-
```
|
|
183
|
+
> "已建立 [N] 張任務卡:TASK_..."
|
|
265
184
|
|
|
266
185
|
---
|
|
267
186
|
|
|
@@ -284,7 +203,7 @@ if lock_manager.is_locked("src/components/auth/"):
|
|
|
284
203
|
- TASK_023 → TASK_022
|
|
285
204
|
- TASK_024 → TASK_022
|
|
286
205
|
5. 撰寫接口規範
|
|
287
|
-
6.
|
|
206
|
+
6. 以 task-api 建立任務卡
|
|
288
207
|
```
|
|
289
208
|
|
|
290
209
|
### 範例 2:處理並行開發
|