kenaz 0.3.2 → 0.3.3
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/.agents/skills/typesafe-ai/LICENSE +21 -21
- package/core/.agents/skills/typesafe-ai/SKILL.md +149 -149
- package/core/.claude/commands/Ansuz.md +19 -30
- package/core/.claude/hooks/_ansuz-conversation.js +1 -0
- package/core/.claude/hooks/_ansuz-conversation.test.js +6 -0
- package/core/.claude/hooks/_run-user-prompt.js +0 -4
- package/core/.claude/hooks/_run-user-prompt.test.js +2 -3
- package/core/.claude/hooks/session-init.ps1 +49 -49
- package/core/.claude/settings.json +0 -37
- package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -26
- package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -97
- package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -101
- package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -31
- package/core/.claude/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -68
- package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +57 -57
- package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
- package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
- package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -253
- package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
- package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -106
- package/core/.collaboration/core/task-api.js +3 -8
- package/core/.formation/tests/hello.txt +2 -2
- package/core/.formation/tools/prompt.js +58 -5
- package/core/.formation/tools/prompt.test.js +29 -0
- package/core/.kenaz/claude-hooks-manifest.json +16 -16
- package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
- package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
- package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
- package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
- package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
- package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
- package/core/.kenaz/muninn_episode_write.ps1 +17 -17
- package/core/.kenaz/specialist/field_report_watermark.json +1 -1
- package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
- package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
- package/core/.kenaz/specialist/t1777_probe.txt +1 -1
- package/core/.matrix/index.matrix +5 -5
- package/core/.specialist/Ansuz/RULES.md +6 -10
- package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +17 -1
- package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +17 -1
- package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +6 -5
- package/core/.specialist/tools/ansuz-boot-fast.js +44 -100
- package/core/.specialist/tools/ansuz-boot-fast.test.js +45 -1
- package/core/KENAZ_CORE_VERSION +1 -1
- package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
- package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
- package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
- package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
- package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
- package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
- package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
- package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
- package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
- package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
- package/core/dev/jev-eval/README.md +99 -99
- package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
- package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
- package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
- package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
- package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
- package/core/dev/pipeline/tasks/.gitkeep +1 -1
- package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
- package/core/dev/plans/ANSUZ_SLIM_PLAN.md +68 -0
- package/core/dev/scripts/init_git.sh +0 -0
- package/core/dev/scripts/init_project.sh +0 -0
- package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
- package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
- package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
- package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
- package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
- package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
- package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
- package/core/dev/scripts/run_once.sh +0 -0
- package/core/dev/scripts/setup_mcp.sh +0 -0
- package/core/dev/scripts/setup_rag.sh +0 -0
- package/core/dev/scripts/start_dev_agent.sh +0 -0
- package/core/dev/scripts/start_multi_agent.sh +0 -0
- package/core/dev/scripts/sync_task_queue.sh +0 -0
- package/core/k-cli/dist/alaya/run.js +91 -0
- package/core/k-cli/dist/core/output.js +24 -0
- package/core/k-cli/dist/core/process.js +38 -0
- package/core/k-cli/dist/core/project.js +80 -0
- package/core/k-cli/dist/core/spawn.js +268 -0
- package/core/k-cli/dist/core/types.js +2 -0
- package/core/k-cli/dist/dashboard/update.js +53 -0
- package/core/k-cli/dist/dashboard/version.js +20 -0
- package/core/k-cli/dist/dispatch/run.js +241 -0
- package/core/k-cli/dist/dispatch/status.js +103 -0
- package/core/k-cli/dist/index.js +283 -0
- package/core/k-cli/dist/project/initialize.js +301 -0
- package/core/k-cli/dist/project/install.js +89 -0
- package/core/k-cli/dist/project/status.js +138 -0
- package/core/k-cli/dist/specialist/list.js +100 -0
- package/core/k-cli/dist/specialist/run.js +93 -0
- package/core/k-cli/dist/task/create.js +194 -0
- package/core/k-cli/dist/task/delete.js +98 -0
- package/core/k-cli/dist/task/get.js +55 -0
- package/core/k-cli/dist/task/list.js +58 -0
- package/core/k-cli/dist/task/submit.js +156 -0
- package/core/k-cli/dist/ygg/run.js +51 -0
- package/core/k-cli/node_modules/.bin/yaml +16 -0
- package/core/k-cli/node_modules/.bin/yaml.cmd +17 -0
- package/core/k-cli/node_modules/.bin/yaml.ps1 +28 -0
- package/core/k-cli/node_modules/.package-lock.json +23 -0
- package/core/k-cli/node_modules/yaml/LICENSE +13 -0
- package/core/k-cli/node_modules/yaml/README.md +172 -0
- package/core/k-cli/node_modules/yaml/bin.mjs +11 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +217 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/core/k-cli/node_modules/yaml/browser/dist/errors.js +57 -0
- package/core/k-cli/node_modules/yaml/browser/dist/index.js +17 -0
- package/core/k-cli/node_modules/yaml/browser/dist/log.js +11 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +967 -0
- package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/core/k-cli/node_modules/yaml/browser/dist/util.js +11 -0
- package/core/k-cli/node_modules/yaml/browser/dist/visit.js +233 -0
- package/core/k-cli/node_modules/yaml/browser/index.js +5 -0
- package/core/k-cli/node_modules/yaml/browser/package.json +3 -0
- package/core/k-cli/node_modules/yaml/dist/cli.d.ts +8 -0
- package/core/k-cli/node_modules/yaml/dist/cli.mjs +201 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/core/k-cli/node_modules/yaml/dist/compose/composer.js +222 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/core/k-cli/node_modules/yaml/dist/doc/Document.js +337 -0
- package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/core/k-cli/node_modules/yaml/dist/doc/directives.js +178 -0
- package/core/k-cli/node_modules/yaml/dist/errors.d.ts +21 -0
- package/core/k-cli/node_modules/yaml/dist/errors.js +62 -0
- package/core/k-cli/node_modules/yaml/dist/index.d.ts +25 -0
- package/core/k-cli/node_modules/yaml/dist/index.js +50 -0
- package/core/k-cli/node_modules/yaml/dist/log.d.ts +3 -0
- package/core/k-cli/node_modules/yaml/dist/log.js +19 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +116 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/core/k-cli/node_modules/yaml/dist/options.d.ts +350 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/core/k-cli/node_modules/yaml/dist/parse/cst.js +112 -0
- package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +719 -0
- package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/core/k-cli/node_modules/yaml/dist/parse/parser.js +972 -0
- package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/core/k-cli/node_modules/yaml/dist/public-api.js +107 -0
- package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/core/k-cli/node_modules/yaml/dist/schema/tags.js +99 -0
- package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/core/k-cli/node_modules/yaml/dist/test-events.js +134 -0
- package/core/k-cli/node_modules/yaml/dist/util.d.ts +16 -0
- package/core/k-cli/node_modules/yaml/dist/util.js +28 -0
- package/core/k-cli/node_modules/yaml/dist/visit.d.ts +102 -0
- package/core/k-cli/node_modules/yaml/dist/visit.js +236 -0
- package/core/k-cli/node_modules/yaml/package.json +97 -0
- package/core/k-cli/node_modules/yaml/util.js +2 -0
- package/core/plugins/kenaz/commands/Ansuz.md +19 -30
- package/core/plugins/kenaz/hooks/hooks.json +1 -5
- package/core/plugins/kenaz/hooks/kenaz-hook.js +0 -4
- package/core/plugins/kenaz/scripts/kenaz.test.js +1 -1
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
- package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
- package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
- package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
- package/lib/cli.js +36 -2
- package/lib/cli.test.js +24 -0
- package/lib/dashboard.js +10 -0
- package/package.json +6 -6
- package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +0 -99
- package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +0 -129
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.run = run;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const project_1 = require("../core/project");
|
|
39
|
+
const process_1 = require("../core/process");
|
|
40
|
+
const spawn_1 = require("../core/spawn");
|
|
41
|
+
const output_1 = require("../core/output");
|
|
42
|
+
async function run(taskId, opts = {}) {
|
|
43
|
+
const isAuto = opts.auto === true;
|
|
44
|
+
const hasTaskId = taskId && taskId.startsWith("TASK_");
|
|
45
|
+
if (!isAuto && !hasTaskId) {
|
|
46
|
+
console.error("Usage:");
|
|
47
|
+
console.error(" k-cli dispatch run TASK_XXX # dispatch 指定任務");
|
|
48
|
+
console.error(" k-cli dispatch run --auto # 自動掃描待辦任務並 dispatch");
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const project = (0, project_1.resolveProject)(opts.projectPath);
|
|
52
|
+
const corePath = project.core_path;
|
|
53
|
+
// Assemble Ansuz prompt
|
|
54
|
+
const sessionJs = path.join(corePath, ".specialist", "tools", "session.js");
|
|
55
|
+
let ansuzPrompt;
|
|
56
|
+
try {
|
|
57
|
+
ansuzPrompt = await (0, process_1.nodeProcess)([sessionJs, "prompt", "Ansuz", "--mode=assembled", "--no-muninn"], corePath, 15000);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
console.error("Error: Failed to assemble Ansuz prompt:", e.message);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const headlessV2Path = path.join(corePath, ".formation", "tools", "headless-v2.js");
|
|
64
|
+
const headlessV1Path = path.join(corePath, ".formation", "tools", "headless.js");
|
|
65
|
+
const taskApiPath = path.join(corePath, ".collaboration", "core", "task-api.js");
|
|
66
|
+
const roleMapPath = path.join(corePath, ".formation", "role-map.yaml");
|
|
67
|
+
const projectPathFlag = project.mode === "sub-project" ? ` --project-path "${project.path}"` : "";
|
|
68
|
+
// headless-v2.js 雙軸架構:
|
|
69
|
+
// --base = do|plan|think(行為模式,來自 unit/*.yaml)
|
|
70
|
+
// --role = developer|frontend|...(角色專業,來自 role-map.yaml 對照表)
|
|
71
|
+
// 已內建:Auto-claim、依賴預檢、Post-complete、Auto-select
|
|
72
|
+
//
|
|
73
|
+
// Ansuz 的職責:讀取任務 role → 決定 --base 和 --role
|
|
74
|
+
const formationReference = `
|
|
75
|
+
## Formation Headless V2 參考
|
|
76
|
+
|
|
77
|
+
### headless-v2.js 雙軸架構
|
|
78
|
+
- **--base**:行為模式(do=執行, plan=規劃, think=分析)
|
|
79
|
+
- **--role**:角色專業(從 role-map.yaml 查找,注入角色 identity 和 strengths)
|
|
80
|
+
|
|
81
|
+
### headless-v2.js 已自動處理
|
|
82
|
+
- Auto-claim(backlog → active)
|
|
83
|
+
- 依賴預檢(dependencies 未滿足會擋住)
|
|
84
|
+
- Post-complete(archive + git)
|
|
85
|
+
你不需要手動 claim 或 complete,只需正確組合參數。
|
|
86
|
+
|
|
87
|
+
### Role 對照表
|
|
88
|
+
先讀取 ${roleMapPath} 了解所有可用 role。
|
|
89
|
+
每個 role 有 skill_path、identity、strengths、best_for、not_for。
|
|
90
|
+
|
|
91
|
+
常見 role:
|
|
92
|
+
| role | 說明 | 適合 |
|
|
93
|
+
|------|------|------|
|
|
94
|
+
| developer | 泛用開發者(全棧) | 跨前後端、系統整合 |
|
|
95
|
+
| frontend | 前端開發 | React/TypeScript UI |
|
|
96
|
+
| backend | 後端工程 | API、DB、Python |
|
|
97
|
+
| designer | UI/UX 設計 | 設計規範產出 |
|
|
98
|
+
| qa | QA 工程師 | 測試、Bug 驗證 |
|
|
99
|
+
| sre | SRE | 基礎設施、部署 |
|
|
100
|
+
|
|
101
|
+
### Base 選擇
|
|
102
|
+
| base | 用途 | 適合情境 |
|
|
103
|
+
|------|------|---------|
|
|
104
|
+
| do(預設) | 直接執行,交付成果 | 功能開發、Bug 修復 |
|
|
105
|
+
| plan | 拆解問題,交付行動方案 | 需求分析、任務拆解 |
|
|
106
|
+
| think | 深入分析,交付結論 | 根因調查、架構評估 |
|
|
107
|
+
|
|
108
|
+
### 進階陣型(非 unit)
|
|
109
|
+
如任務複雜度超出 unit 能力,改用 headless.js(V1):
|
|
110
|
+
| 陣型 | 條件 | headless.js 參數 |
|
|
111
|
+
|------|------|-----------------|
|
|
112
|
+
| solo | 需多角度分析 | --formation=solo --skill=strategy --task=TASK_XXX |
|
|
113
|
+
| squad | 多子任務可並行 | --formation=squad --skill=blitz --task=TASK_XXX |
|
|
114
|
+
| legion | 有順序依賴 | --formation=legion --skill=forge --task=TASK_XXX |
|
|
115
|
+
`;
|
|
116
|
+
let dispatchInstruction;
|
|
117
|
+
if (hasTaskId) {
|
|
118
|
+
// === 指定任務模式 ===
|
|
119
|
+
dispatchInstruction = `
|
|
120
|
+
[k-cli dispatch run — 指定任務模式]
|
|
121
|
+
|
|
122
|
+
你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行,遇到錯誤直接輸出錯誤訊息並結束。
|
|
123
|
+
|
|
124
|
+
## 你的任務
|
|
125
|
+
|
|
126
|
+
Dispatch 指定任務:${taskId}
|
|
127
|
+
|
|
128
|
+
${formationReference}
|
|
129
|
+
|
|
130
|
+
## 執行步驟(必須依序完成)
|
|
131
|
+
|
|
132
|
+
### Step 1: 讀取任務詳情
|
|
133
|
+
\`\`\`bash
|
|
134
|
+
node "${taskApiPath}"${projectPathFlag} get ${taskId}
|
|
135
|
+
\`\`\`
|
|
136
|
+
確認任務存在。記下 role 欄位。
|
|
137
|
+
|
|
138
|
+
### Step 2: 判斷 --base 和 --role
|
|
139
|
+
1. **讀取 ${roleMapPath}** 了解所有可用 role 及其 strengths
|
|
140
|
+
2. 任務的 role 欄位 → 作為 --role 值
|
|
141
|
+
3. 根據任務性質判斷 --base(do=執行, plan=規劃, think=分析),預設 do
|
|
142
|
+
4. **輸出決策說明**:說明為什麼選了這個 base 和 role
|
|
143
|
+
|
|
144
|
+
### Step 3: Dispatch
|
|
145
|
+
使用 headless-v2.js(雙軸架構):
|
|
146
|
+
\`\`\`bash
|
|
147
|
+
# unit(最常用)— headless-v2.js
|
|
148
|
+
node "${headlessV2Path}" --base={base} --role={role} --task=${taskId}${projectPathFlag}
|
|
149
|
+
|
|
150
|
+
# 進階陣型 — 仍用 headless.js(V1)
|
|
151
|
+
node "${headlessV1Path}" --formation={formation} --skill={skill} --task=${taskId}${projectPathFlag}
|
|
152
|
+
\`\`\`
|
|
153
|
+
headless-v2.js 會自動處理 claim、依賴檢查、post-complete。
|
|
154
|
+
|
|
155
|
+
### Step 4: 輸出結果
|
|
156
|
+
輸出:
|
|
157
|
+
- 任務 ID、role、--base、--role、dispatch 狀態
|
|
158
|
+
- **決策理由**:為什麼選這個 base(任務性質)、為什麼選這個 role(role-map 的 strengths 匹配)
|
|
159
|
+
|
|
160
|
+
## 專案資訊
|
|
161
|
+
- 專案路徑:${project.path}
|
|
162
|
+
- Core 路徑:${corePath}
|
|
163
|
+
- 模式:${project.mode}
|
|
164
|
+
`;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// === Auto 模式(掃描全部待辦) ===
|
|
168
|
+
dispatchInstruction = `
|
|
169
|
+
[k-cli dispatch run --auto — 自動掃描模式]
|
|
170
|
+
|
|
171
|
+
你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行,遇到錯誤直接輸出錯誤訊息並結束。
|
|
172
|
+
|
|
173
|
+
## 你的任務
|
|
174
|
+
|
|
175
|
+
掃描所有待辦任務,判斷陣型與 skill,依序 dispatch。
|
|
176
|
+
|
|
177
|
+
${formationReference}
|
|
178
|
+
|
|
179
|
+
## 執行步驟
|
|
180
|
+
|
|
181
|
+
### Step 1: 查看待辦任務
|
|
182
|
+
\`\`\`bash
|
|
183
|
+
node "${taskApiPath}"${projectPathFlag} list --status backlog
|
|
184
|
+
\`\`\`
|
|
185
|
+
如果沒有待辦任務,輸出「無待辦任務」並結束。
|
|
186
|
+
|
|
187
|
+
### Step 2: 分析每個任務
|
|
188
|
+
對每個待辦任務:
|
|
189
|
+
1. 讀取詳情(task get)→ 記下 role
|
|
190
|
+
2. **讀取 ${roleMapPath}** 確認 role 存在且了解其 strengths
|
|
191
|
+
3. 判斷 --base(do/plan/think)和 --role
|
|
192
|
+
4. 輸出每個任務的決策理由(base 選擇原因、role 匹配原因)
|
|
193
|
+
|
|
194
|
+
### Step 3: 依序 Dispatch
|
|
195
|
+
按優先級(P0 > P1 > P2 > P3)排序,逐個執行 headless-v2.js:
|
|
196
|
+
\`\`\`bash
|
|
197
|
+
node "${headlessV2Path}" --base={base} --role={role} --task=TASK_XXX${projectPathFlag}
|
|
198
|
+
\`\`\`
|
|
199
|
+
- headless-v2.js 自動處理 claim、依賴檢查、post-complete
|
|
200
|
+
- 無依賴的任務可並行 dispatch(上限 5)
|
|
201
|
+
- 有依賴的等前置完成再 dispatch
|
|
202
|
+
|
|
203
|
+
### Step 4: 輸出結果
|
|
204
|
+
輸出所有 dispatch 的任務摘要表格:任務 ID、標題、--base、--role、決策理由、狀態。
|
|
205
|
+
|
|
206
|
+
## 專案資訊
|
|
207
|
+
- 專案路徑:${project.path}
|
|
208
|
+
- Core 路徑:${corePath}
|
|
209
|
+
- 模式:${project.mode}
|
|
210
|
+
`;
|
|
211
|
+
}
|
|
212
|
+
const fullPrompt = `${ansuzPrompt}\n\n${dispatchInstruction}`;
|
|
213
|
+
const mode = hasTaskId ? taskId : "--auto";
|
|
214
|
+
if (opts.dryRun) {
|
|
215
|
+
const dryResult = {
|
|
216
|
+
dryRun: true,
|
|
217
|
+
action: "dispatch run",
|
|
218
|
+
mode,
|
|
219
|
+
promptLength: fullPrompt.length,
|
|
220
|
+
projectPath: project.path,
|
|
221
|
+
};
|
|
222
|
+
if (opts.json) {
|
|
223
|
+
(0, output_1.output)(dryResult, { json: true });
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
console.log(`\n[dry-run] dispatch run ${mode}`);
|
|
227
|
+
console.log(` Project: ${project.path}`);
|
|
228
|
+
console.log(` Prompt length: ${fullPrompt.length.toLocaleString()} chars`);
|
|
229
|
+
console.log(" Would spawn Ansuz (not executed)");
|
|
230
|
+
}
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
console.log(`Dispatching via Ansuz (${mode})...`);
|
|
234
|
+
console.log(` Project: ${project.path}`);
|
|
235
|
+
const child = (0, spawn_1.spawnClaude)({
|
|
236
|
+
prompt: fullPrompt,
|
|
237
|
+
cwd: corePath,
|
|
238
|
+
projectPath: project.mode === "sub-project" ? project.path : null,
|
|
239
|
+
});
|
|
240
|
+
return (0, spawn_1.streamClaudeOutput)(child);
|
|
241
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.run = run;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const project_1 = require("../core/project");
|
|
40
|
+
const process_1 = require("../core/process");
|
|
41
|
+
async function run(taskId, opts = {}) {
|
|
42
|
+
if (!taskId) {
|
|
43
|
+
console.error("Error: task ID is required");
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const project = (0, project_1.resolveProject)(opts.projectPath);
|
|
47
|
+
const corePath = project.core_path;
|
|
48
|
+
const logReaderJs = path.join(corePath, ".formation", "tools", "log-reader.js");
|
|
49
|
+
const tail = opts.tail || 50;
|
|
50
|
+
// Determine log directory: sub-project uses .kenaz/logs/, core uses .formation/logs/
|
|
51
|
+
const logsDir = project.mode === "sub-project"
|
|
52
|
+
? path.join(project.path, ".kenaz", "logs")
|
|
53
|
+
: path.join(corePath, ".formation", "logs");
|
|
54
|
+
// Search for the latest log containing the taskId
|
|
55
|
+
let logFile = null;
|
|
56
|
+
if (fs.existsSync(logsDir)) {
|
|
57
|
+
const formations = ["unit", "solo", "squad", "legion", "misc", "legacy"];
|
|
58
|
+
let latestTime = 0;
|
|
59
|
+
for (const f of formations) {
|
|
60
|
+
const dir = path.join(logsDir, f);
|
|
61
|
+
if (!fs.existsSync(dir))
|
|
62
|
+
continue;
|
|
63
|
+
const files = fs.readdirSync(dir).filter((name) => name.endsWith(".log"));
|
|
64
|
+
for (const file of files) {
|
|
65
|
+
const filePath = path.join(dir, file);
|
|
66
|
+
const stat = fs.statSync(filePath);
|
|
67
|
+
// Check if log content mentions taskId (by filename pattern or content)
|
|
68
|
+
if (file.toLowerCase().includes(taskId.toLowerCase()) ||
|
|
69
|
+
stat.mtimeMs > latestTime) {
|
|
70
|
+
// Read first few lines to check if it mentions the task
|
|
71
|
+
const head = fs.readFileSync(filePath, "utf-8").slice(0, 2000);
|
|
72
|
+
if (head.includes(taskId)) {
|
|
73
|
+
if (stat.mtimeMs > latestTime) {
|
|
74
|
+
latestTime = stat.mtimeMs;
|
|
75
|
+
logFile = filePath;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!logFile) {
|
|
83
|
+
// Fallback: try log-reader.js --task (searches core logs)
|
|
84
|
+
try {
|
|
85
|
+
const result = await (0, process_1.nodeProcess)([logReaderJs, "--task", taskId, "--tail", String(tail)], corePath);
|
|
86
|
+
console.log(result);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
console.error(`No log found for ${taskId}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Use log-reader.js --log <path> for the found log
|
|
95
|
+
try {
|
|
96
|
+
const result = await (0, process_1.nodeProcess)([logReaderJs, "--log", logFile, "--tail", String(tail)], corePath);
|
|
97
|
+
console.log(result);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
console.error(`Error: ${e.message}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const project_1 = require("./core/project");
|
|
38
|
+
const args = process.argv.slice(2);
|
|
39
|
+
const command = args[0];
|
|
40
|
+
const subcommand = args[1];
|
|
41
|
+
// Positional arg after subcommand (e.g. task get TASK_123)
|
|
42
|
+
const positional = args[2] && !args[2].startsWith("--") ? args[2] : undefined;
|
|
43
|
+
// Collect all non-flag args after subcommand as free-text prompt
|
|
44
|
+
const positionalAll = args.slice(2).filter((a) => !a.startsWith("--")).join(" ") || undefined;
|
|
45
|
+
function parseFlags(argv) {
|
|
46
|
+
const flags = {};
|
|
47
|
+
for (let i = 0; i < argv.length; i++) {
|
|
48
|
+
const arg = argv[i];
|
|
49
|
+
if (arg === "--json")
|
|
50
|
+
flags.json = true;
|
|
51
|
+
else if (arg === "--dry-run")
|
|
52
|
+
flags.dryRun = true;
|
|
53
|
+
else if (arg === "--help" || arg === "-h")
|
|
54
|
+
flags.help = true;
|
|
55
|
+
else if (arg.startsWith("--project-path="))
|
|
56
|
+
flags.projectPath = arg.split("=")[1];
|
|
57
|
+
else if (arg === "--project-path" && argv[i + 1])
|
|
58
|
+
flags.projectPath = argv[++i];
|
|
59
|
+
else if (arg.startsWith("--agent="))
|
|
60
|
+
flags.agent = arg.split("=")[1];
|
|
61
|
+
else if (arg === "--agent" && argv[i + 1])
|
|
62
|
+
flags.agent = argv[++i];
|
|
63
|
+
else if (arg.startsWith("--prompt="))
|
|
64
|
+
flags.prompt = arg.split("=")[1];
|
|
65
|
+
else if (arg === "--prompt" && argv[i + 1])
|
|
66
|
+
flags.prompt = argv[++i];
|
|
67
|
+
else if (arg.startsWith("--max-length="))
|
|
68
|
+
flags.maxLength = parseInt(arg.split("=")[1], 10);
|
|
69
|
+
else if (arg === "--max-length" && argv[i + 1])
|
|
70
|
+
flags.maxLength = parseInt(argv[++i], 10);
|
|
71
|
+
else if (arg.startsWith("--status="))
|
|
72
|
+
flags.status = arg.split("=")[1];
|
|
73
|
+
else if (arg === "--status" && argv[i + 1])
|
|
74
|
+
flags.status = argv[++i];
|
|
75
|
+
else if (arg.startsWith("--title="))
|
|
76
|
+
flags.title = arg.split("=")[1];
|
|
77
|
+
else if (arg === "--title" && argv[i + 1])
|
|
78
|
+
flags.title = argv[++i];
|
|
79
|
+
else if (arg.startsWith("--priority="))
|
|
80
|
+
flags.priority = arg.split("=")[1];
|
|
81
|
+
else if (arg === "--priority" && argv[i + 1])
|
|
82
|
+
flags.priority = argv[++i];
|
|
83
|
+
else if (arg.startsWith("--formation="))
|
|
84
|
+
flags.formation = arg.split("=")[1];
|
|
85
|
+
else if (arg === "--formation" && argv[i + 1])
|
|
86
|
+
flags.formation = argv[++i];
|
|
87
|
+
else if (arg.startsWith("--skill="))
|
|
88
|
+
flags.skill = arg.split("=")[1];
|
|
89
|
+
else if (arg === "--skill" && argv[i + 1])
|
|
90
|
+
flags.skill = argv[++i];
|
|
91
|
+
else if (arg.startsWith("--tail="))
|
|
92
|
+
flags.tail = parseInt(arg.split("=")[1], 10);
|
|
93
|
+
else if (arg === "--tail" && argv[i + 1])
|
|
94
|
+
flags.tail = parseInt(argv[++i], 10);
|
|
95
|
+
else if (arg === "--no-git")
|
|
96
|
+
flags.initGit = false;
|
|
97
|
+
else if (arg.startsWith("--core-path="))
|
|
98
|
+
flags.corePath = arg.split("=")[1];
|
|
99
|
+
else if (arg === "--core-path" && argv[i + 1])
|
|
100
|
+
flags.corePath = argv[++i];
|
|
101
|
+
else if (arg === "--force")
|
|
102
|
+
flags.force = true;
|
|
103
|
+
else if (arg === "--auto")
|
|
104
|
+
flags.auto = true;
|
|
105
|
+
}
|
|
106
|
+
return flags;
|
|
107
|
+
}
|
|
108
|
+
const flags = parseFlags(args);
|
|
109
|
+
if (!command || flags.help) {
|
|
110
|
+
console.log(`
|
|
111
|
+
k-cli — KenazAI CLI
|
|
112
|
+
|
|
113
|
+
Usage: k-cli <command> [subcommand] [options]
|
|
114
|
+
|
|
115
|
+
Commands:
|
|
116
|
+
specialist list List all Specialists (name + prompt)
|
|
117
|
+
specialist run --agent <name> Run a Specialist
|
|
118
|
+
task list List tasks
|
|
119
|
+
task get <id> Get task details
|
|
120
|
+
task create --title <title> Create task (via Ansuz)
|
|
121
|
+
task submit --title <t> ... Create task directly (no Ansuz; for scripts/processes)
|
|
122
|
+
task delete <id> Delete task
|
|
123
|
+
dispatch run <taskId> Dispatch specific task (via Ansuz)
|
|
124
|
+
dispatch run --auto Auto-scan & dispatch all pending tasks
|
|
125
|
+
dispatch status <taskId> Check dispatch status
|
|
126
|
+
dashboard version Show current Dashboard version
|
|
127
|
+
dashboard update Check for update and install
|
|
128
|
+
dashboard update --force Auto-install without prompt
|
|
129
|
+
project status Project overview
|
|
130
|
+
project initialize Initialize sub-project (.kenaz/)
|
|
131
|
+
project install <target> Install template (e.g. k-cli)
|
|
132
|
+
ygg join <key> [--project|--global] Join Yggdrasil without the Dashboard
|
|
133
|
+
ygg status | ygg leave Room/relay/peers/mail; remove project key
|
|
134
|
+
alaya register Register this device with Alaya (device-code login, no Dashboard)
|
|
135
|
+
alaya status Alaya registered / not registered + outbox depth
|
|
136
|
+
ping Health check
|
|
137
|
+
|
|
138
|
+
Global Options:
|
|
139
|
+
--json Output JSON format
|
|
140
|
+
--dry-run Validate without executing
|
|
141
|
+
--project-path <path> Specify sub-project path
|
|
142
|
+
--help, -h Show help
|
|
143
|
+
`);
|
|
144
|
+
process.exit(0);
|
|
145
|
+
}
|
|
146
|
+
(async () => {
|
|
147
|
+
try {
|
|
148
|
+
switch (command) {
|
|
149
|
+
case "specialist": {
|
|
150
|
+
if (subcommand === "list") {
|
|
151
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./specialist/list")));
|
|
152
|
+
await run(flags);
|
|
153
|
+
}
|
|
154
|
+
else if (subcommand === "run") {
|
|
155
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./specialist/run")));
|
|
156
|
+
await run(positionalAll || "", flags);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
console.error(`Unknown subcommand: specialist ${subcommand}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
case "task": {
|
|
165
|
+
if (subcommand === "list") {
|
|
166
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./task/list")));
|
|
167
|
+
await run(flags);
|
|
168
|
+
}
|
|
169
|
+
else if (subcommand === "get") {
|
|
170
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./task/get")));
|
|
171
|
+
await run(positional || "", flags);
|
|
172
|
+
}
|
|
173
|
+
else if (subcommand === "create") {
|
|
174
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./task/create")));
|
|
175
|
+
await run(positionalAll || "", flags);
|
|
176
|
+
}
|
|
177
|
+
else if (subcommand === "submit") {
|
|
178
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./task/submit")));
|
|
179
|
+
await run(args.slice(2), flags);
|
|
180
|
+
}
|
|
181
|
+
else if (subcommand === "delete") {
|
|
182
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./task/delete")));
|
|
183
|
+
await run(positional || "", flags);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
console.error(`Unknown subcommand: task ${subcommand}`);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case "dispatch": {
|
|
192
|
+
if (subcommand === "run") {
|
|
193
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./dispatch/run")));
|
|
194
|
+
await run(positional || "", flags);
|
|
195
|
+
}
|
|
196
|
+
else if (subcommand === "status") {
|
|
197
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./dispatch/status")));
|
|
198
|
+
await run(positional || "", flags);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.error(`Unknown subcommand: dispatch ${subcommand}`);
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case "dashboard": {
|
|
207
|
+
if (subcommand === "version") {
|
|
208
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./dashboard/version")));
|
|
209
|
+
await run(flags);
|
|
210
|
+
}
|
|
211
|
+
else if (subcommand === "update") {
|
|
212
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./dashboard/update")));
|
|
213
|
+
await run(flags);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
console.error(`Unknown subcommand: dashboard ${subcommand}`);
|
|
217
|
+
process.exit(1);
|
|
218
|
+
}
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
case "project": {
|
|
222
|
+
if (subcommand === "status") {
|
|
223
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./project/status")));
|
|
224
|
+
await run(flags);
|
|
225
|
+
}
|
|
226
|
+
else if (subcommand === "initialize" || subcommand === "init") {
|
|
227
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./project/initialize")));
|
|
228
|
+
await run(flags);
|
|
229
|
+
}
|
|
230
|
+
else if (subcommand === "install") {
|
|
231
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./project/install")));
|
|
232
|
+
await run(positional || "", flags);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
console.error(`Unknown subcommand: project ${subcommand}`);
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
case "ygg": {
|
|
241
|
+
const { run } = await Promise.resolve().then(() => __importStar(require("./ygg/run")));
|
|
242
|
+
run(args.slice(1));
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
case "alaya": {
|
|
246
|
+
const mod = await Promise.resolve().then(() => __importStar(require("./alaya/run")));
|
|
247
|
+
if (subcommand === "register")
|
|
248
|
+
await mod.register(flags);
|
|
249
|
+
else if (subcommand === "status")
|
|
250
|
+
await mod.status(flags);
|
|
251
|
+
else {
|
|
252
|
+
console.error(`Unknown subcommand: alaya ${subcommand}`);
|
|
253
|
+
process.exit(1);
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case "ping": {
|
|
258
|
+
const project = (0, project_1.resolveProject)(flags.projectPath);
|
|
259
|
+
const result = {
|
|
260
|
+
status: "ok",
|
|
261
|
+
version: "0.1.0",
|
|
262
|
+
project: project.name,
|
|
263
|
+
mode: project.mode,
|
|
264
|
+
corePath: project.core_path,
|
|
265
|
+
};
|
|
266
|
+
if (flags.json) {
|
|
267
|
+
console.log(JSON.stringify(result, null, 2));
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
console.log(`k-cli v0.1.0 — ${project.name} (${project.mode})`);
|
|
271
|
+
}
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
default:
|
|
275
|
+
console.error(`Unknown command: ${command}`);
|
|
276
|
+
process.exit(1);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
console.error(`Error: ${e.message}`);
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
})();
|