kd-engine 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. kd_engine-1.0.0.dist-info/METADATA +19 -0
  2. kd_engine-1.0.0.dist-info/RECORD +118 -0
  3. kd_engine-1.0.0.dist-info/WHEEL +5 -0
  4. kd_engine-1.0.0.dist-info/entry_points.txt +2 -0
  5. kd_engine-1.0.0.dist-info/licenses/LICENSE-MIT +21 -0
  6. kd_engine-1.0.0.dist-info/top_level.txt +1 -0
  7. ytk/__init__.py +2 -0
  8. ytk/__main__.py +21 -0
  9. ytk/batch/__init__.py +39 -0
  10. ytk/batch/runner.py +1149 -0
  11. ytk/cache/__init__.py +34 -0
  12. ytk/cache/v2.py +562 -0
  13. ytk/cleaning/density.py +40 -0
  14. ytk/cleaning/fillers.py +18 -0
  15. ytk/cleaning/sentence_boundary.py +30 -0
  16. ytk/cleaning/service.py +62 -0
  17. ytk/cli.py +1281 -0
  18. ytk/commands/__init__.py +3 -0
  19. ytk/commands/merge.py +600 -0
  20. ytk/config.py +757 -0
  21. ytk/dedup/service.py +166 -0
  22. ytk/doctor.py +891 -0
  23. ytk/dotenv.py +334 -0
  24. ytk/errors.py +38 -0
  25. ytk/extraction/service.py +451 -0
  26. ytk/extraction/strategies/base.py +16 -0
  27. ytk/extraction/strategies/code_block.py +285 -0
  28. ytk/extraction/strategies/heuristic.py +791 -0
  29. ytk/extraction/strategies/local_model.py +56 -0
  30. ytk/extraction/text_context.py +177 -0
  31. ytk/extraction/visual_context.py +159 -0
  32. ytk/ingestion/adapters/__init__.py +1 -0
  33. ytk/ingestion/adapters/_common.py +865 -0
  34. ytk/ingestion/adapters/base.py +160 -0
  35. ytk/ingestion/adapters/bilibili.py +271 -0
  36. ytk/ingestion/adapters/douyin.py +445 -0
  37. ytk/ingestion/adapters/tiktok.py +102 -0
  38. ytk/ingestion/adapters/xiaohongshu.py +758 -0
  39. ytk/ingestion/adapters/youtube.py +74 -0
  40. ytk/ingestion/browser_acquired.py +220 -0
  41. ytk/ingestion/http_client.py +43 -0
  42. ytk/ingestion/local_import.py +202 -0
  43. ytk/ingestion/media.py +468 -0
  44. ytk/ingestion/providers/asr.py +902 -0
  45. ytk/ingestion/providers/base.py +13 -0
  46. ytk/ingestion/providers/dtk_client.py +816 -0
  47. ytk/ingestion/providers/minimax.py +350 -0
  48. ytk/ingestion/providers/transcript_api.py +336 -0
  49. ytk/ingestion/providers/xhs_client.py +646 -0
  50. ytk/ingestion/providers/ytdlp.py +400 -0
  51. ytk/ingestion/registry.py +189 -0
  52. ytk/ingestion/resolver.py +417 -0
  53. ytk/ingestion/search.py +56 -0
  54. ytk/ingestion/service.py +167 -0
  55. ytk/ingestion/subtitles.py +602 -0
  56. ytk/ingestion/transcript_cache.py +212 -0
  57. ytk/ingestion/url_parser.py +53 -0
  58. ytk/ingestion/video_frames.py +292 -0
  59. ytk/ingestion/ytdlp_acquire.py +754 -0
  60. ytk/logging.py +383 -0
  61. ytk/models/common.py +20 -0
  62. ytk/models/content.py +451 -0
  63. ytk/models/knowledge.py +43 -0
  64. ytk/models/migrations.py +262 -0
  65. ytk/models/skill.py +13 -0
  66. ytk/models/source.py +265 -0
  67. ytk/models/topic.py +18 -0
  68. ytk/models/transcript.py +30 -0
  69. ytk/ocr/__init__.py +65 -0
  70. ytk/ocr/engine.py +245 -0
  71. ytk/ocr/layout.py +347 -0
  72. ytk/ocr/pipeline.py +440 -0
  73. ytk/ocr/rapidocr_engine.py +144 -0
  74. ytk/pipeline/acquisition_checkpoint.py +240 -0
  75. ytk/pipeline/artifacts.py +18 -0
  76. ytk/pipeline/orchestrator.py +598 -0
  77. ytk/pipeline/processing_identity.py +18 -0
  78. ytk/pipeline/retry.py +728 -0
  79. ytk/pipeline/runners.py +578 -0
  80. ytk/pipeline/state.py +1107 -0
  81. ytk/pipeline/v2.py +1863 -0
  82. ytk/py.typed +1 -0
  83. ytk/quality/__init__.py +9 -0
  84. ytk/quality/completeness.py +260 -0
  85. ytk/renderers/base.py +9 -0
  86. ytk/renderers/citation_alignment.py +617 -0
  87. ytk/renderers/evidence_formatter.py +362 -0
  88. ytk/renderers/json_renderer.py +13 -0
  89. ytk/renderers/jsonl_renderer.py +18 -0
  90. ytk/renderers/knowledge_doc_renderer.py +1984 -0
  91. ytk/renderers/markdown_renderer.py +540 -0
  92. ytk/renderers/obsidian_renderer.py +138 -0
  93. ytk/renderers/skill_package.py +21 -0
  94. ytk/renderers/source_links.py +309 -0
  95. ytk/renderers/summary_renderer.py +163 -0
  96. ytk/renderers/v2.py +171 -0
  97. ytk/renderers/v2_jsonl.py +165 -0
  98. ytk/renderers/v2_markdown.py +477 -0
  99. ytk/renderers/v2_obsidian.py +113 -0
  100. ytk/renderers/v2_summary.py +220 -0
  101. ytk/segmentation/change_points.py +50 -0
  102. ytk/segmentation/embeddings.py +45 -0
  103. ytk/segmentation/service.py +318 -0
  104. ytk/skill_builder/__init__.py +1 -0
  105. ytk/skill_builder/builder.py +419 -0
  106. ytk/skill_builder/templates/SKILL.md.j2 +85 -0
  107. ytk/skill_builder/templates/evals/evals.json.j2 +25 -0
  108. ytk/skill_builder/templates/examples/example-input.md.j2 +5 -0
  109. ytk/skill_builder/templates/examples/example-output.md.j2 +8 -0
  110. ytk/skill_builder/templates/references/commands.md.j2 +34 -0
  111. ytk/skill_builder/templates/references/concepts.md.j2 +22 -0
  112. ytk/skill_builder/templates/references/configs.md.j2 +31 -0
  113. ytk/skill_builder/templates/references/evidence-policy.md.j2 +27 -0
  114. ytk/skill_builder/templates/references/source-summary.md.j2 +24 -0
  115. ytk/skill_builder/templates/scripts/build_skill.py.j2 +14 -0
  116. ytk/skill_builder/templates/scripts/validate_output.py.j2 +136 -0
  117. ytk/skill_builder/templates.py +29 -0
  118. ytk/text_normalization.py +44 -0
@@ -0,0 +1,19 @@
1
+ Metadata-Version: 2.4
2
+ Name: kd-engine
3
+ Version: 1.0.0
4
+ Summary: Knowledge distillation engine: multi-platform acquisition, evidence-linked extraction, cross-source synthesis.
5
+ License: Proprietary
6
+ Requires-Python: >=3.11
7
+ License-File: LICENSE-MIT
8
+ Requires-Dist: httpx>=0.27.0
9
+ Requires-Dist: jinja2>=3.1.4
10
+ Requires-Dist: pydantic>=2.7.0
11
+ Requires-Dist: rich>=13.7.1
12
+ Requires-Dist: typer>=0.12.3
13
+ Requires-Dist: yt-dlp>=2025.3.31
14
+ Requires-Dist: youtube-transcript-api<2,>=1.2
15
+ Provides-Extra: asr
16
+ Requires-Dist: faster-whisper==1.2.1; extra == "asr"
17
+ Requires-Dist: av==16.0.0; extra == "asr"
18
+ Requires-Dist: ctranslate2==4.8.4; extra == "asr"
19
+ Dynamic: license-file
@@ -0,0 +1,118 @@
1
+ kd_engine-1.0.0.dist-info/licenses/LICENSE-MIT,sha256=l9k8ehAZJ889ru1PSEwzaUccKJB_WIwh5FUdhUYiPyk,1065
2
+ ytk/__init__.py,sha256=oGVAMCW4YI5TTFccwG_yRcqhNh-6nMI1XrS5y60thy8,36
3
+ ytk/__main__.py,sha256=SfbGpqNoXm8Q7vEiL3p0sc_9Mcdcl0onxPZZc9XcLmY,859
4
+ ytk/cli.py,sha256=fkQ65TsdqHo32S61yiho-fIYVxG0Nc3LQhjjNahprPY,52211
5
+ ytk/config.py,sha256=-8ZA3gk-H3LN9c8siYBO_t3hTy3czrfDehu_-bShWQo,32010
6
+ ytk/doctor.py,sha256=J_MNeb8KLTOV1Y8JVKw1DZtX4u4Dg2CD-nCzaLg7b6g,39232
7
+ ytk/dotenv.py,sha256=H3QZDr_pTCt9ILgGF3DsfinkKEOGshPw0NCtEVRXmr4,13259
8
+ ytk/errors.py,sha256=WfIGH_IeuiZXWbUSlhm7DcZgcpiw3wJl7GDMNCMKkoU,1339
9
+ ytk/logging.py,sha256=x4foN2ApAlOLG7Mn0dOzl38LEEIRGsjGEGnM9fE5ikA,13165
10
+ ytk/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
11
+ ytk/text_normalization.py,sha256=ta3GXA3k8aXqTBeoG5Uo3YuQeHu8fg_nOTl35Wex-1Y,1715
12
+ ytk/batch/__init__.py,sha256=KSaSZINfRLdyEmDvGv5bMl5b7eY1p4YkFXIp2D50BOk,955
13
+ ytk/batch/runner.py,sha256=dsMQbNwc8YcMU4gY9DpDMVtLTsTwv0IU7gE0ZxiGfnM,42901
14
+ ytk/cache/__init__.py,sha256=7ViUwfnHWYfEsELiHhZWWc7wZU3-d2gUgPXsjzUww60,900
15
+ ytk/cache/v2.py,sha256=zThaTx2TpWsozMWkHo5WjZ60GHiB5vK-ikx0cMaY2gw,20217
16
+ ytk/cleaning/density.py,sha256=5QyprdgqWiKmxDYVwLN6ETQ6___bY7v5wpWhiyX-vJc,845
17
+ ytk/cleaning/fillers.py,sha256=W7EVDLvKLTr54HBl0xlFyPbxDA40Kd7BD-nf4BqMl-Q,483
18
+ ytk/cleaning/sentence_boundary.py,sha256=1lLyYhaLk_F92MottIiW9Nna_4ZNwFHzh7yj1giQ8e4,1177
19
+ ytk/cleaning/service.py,sha256=vB4q-f5tW312BI6n5F44Yv7-bAdrPxQYWagp0uY5AsA,2567
20
+ ytk/commands/__init__.py,sha256=6uCJ9HeisNF-SBsIovAXFKK5aOZ6_aW-NtqWvIwrZdQ,176
21
+ ytk/commands/merge.py,sha256=rzF8XbGpEfNmaoGdNFQMDmGm1YR5G32PnOAjx7KwnGA,24033
22
+ ytk/dedup/service.py,sha256=J52mcziToQXIC21prrAECSXftEn2UhzZQpfqViaBtwQ,5440
23
+ ytk/extraction/service.py,sha256=6omzM8DAiD-BEZTEfWIb2KhtkiWtiVafQn5Ua_IFsf8,18745
24
+ ytk/extraction/text_context.py,sha256=ZvPszStUapY32xEswBrfaOHj8bJACenDgX_jDNQ8y7M,8948
25
+ ytk/extraction/visual_context.py,sha256=VJYhiZw0xbtXOuGuOrL5bRvPT-7BSjYh_Ek7m085irk,7183
26
+ ytk/extraction/strategies/base.py,sha256=jMrzYuHCMBQMzdCme5pTfFnkFMYytl-5rbov_9I7_D4,428
27
+ ytk/extraction/strategies/code_block.py,sha256=0esVvtoag5W74JUAlF_FN_qAWyfJfKu2wrY-rZsQcGo,12576
28
+ ytk/extraction/strategies/heuristic.py,sha256=1a4ohq4g35tFKAjeAaCAcO-N9iwGu076kKayzY50k7U,34826
29
+ ytk/extraction/strategies/local_model.py,sha256=stuXEWI8JF4JroTeAnQP7OLOPI5sUkqjHmQXwzXeBJw,1828
30
+ ytk/ingestion/browser_acquired.py,sha256=9MAxkAlk_NSuB4uoiliSkMOy3UosiCdLwuOB3DIDvNc,13020
31
+ ytk/ingestion/http_client.py,sha256=5CauRWbCZQMUlvZGJ00uaIfFxptyZxUmZ4SkNe9HKv8,1632
32
+ ytk/ingestion/local_import.py,sha256=ZjrYi-PGSk38mppBER37gS15S3JCzFQzoWyFCZfqAgc,12241
33
+ ytk/ingestion/media.py,sha256=xR_JoHowBsyoNJGs0yrFrIyC5twyx6qTpyIkZFGlpHw,17501
34
+ ytk/ingestion/registry.py,sha256=PtPAEYehiBsPfNRMxBcDGSxh93VbZmVfNB7xO-SaZ5c,7695
35
+ ytk/ingestion/resolver.py,sha256=kFwzBc7n5jQqQLX6_aTvLuimXywL6Pgw2fONSVFkqhk,15454
36
+ ytk/ingestion/search.py,sha256=7C3AZ-RCAvgVWN1iRBxd85PMSphUq6OzwWNusiy6BVM,1778
37
+ ytk/ingestion/service.py,sha256=FjzTb8JmG_2VYddJvSNOtdHn5LQ9YTmUzQrzh2GbTjg,7600
38
+ ytk/ingestion/subtitles.py,sha256=3QbVEGVAMQoqUZZFF5I_2PdcJU2jwN1pV_3tKJrUNUw,23071
39
+ ytk/ingestion/transcript_cache.py,sha256=xEjGc4q3PAKD32XddcRDdh8Fju3gT1PRCuf_eziissU,8839
40
+ ytk/ingestion/url_parser.py,sha256=K76ZiLJHTfg0QjXztv5xKZ2TtZQ3GixQlj26IVJScdM,1704
41
+ ytk/ingestion/video_frames.py,sha256=BADHFJbcxTmo6Jt9HR15JDjCWYq5ikhQG7SABRsCmUI,16927
42
+ ytk/ingestion/ytdlp_acquire.py,sha256=_QLhDKHEsS4ielorXglZwLztBi4VaXH8199eri_pFjQ,31843
43
+ ytk/ingestion/adapters/__init__.py,sha256=jJEVh1rbAqJdGo-FK8jyouMdxyzB7eWMNEYa0C47dQk,62
44
+ ytk/ingestion/adapters/_common.py,sha256=QHwloKqqBrAdjnmdoN4QQrm68KlPP25NoRwEVP-jc4Q,30432
45
+ ytk/ingestion/adapters/base.py,sha256=3wr9SKrDTb7-fF2VKpQ1-oaN-9AUAE3H_x9tqBHAfu4,6227
46
+ ytk/ingestion/adapters/bilibili.py,sha256=pv6vyj9mRb5I3lP2O7DS_Cfbs3rtOdrwPmFiu4ojGFY,11188
47
+ ytk/ingestion/adapters/douyin.py,sha256=FfdFdW3toiLQhCCwmSyVO-Ko9uD3qF95SPdGRQfc14Q,18318
48
+ ytk/ingestion/adapters/tiktok.py,sha256=T3qU8SOAMxgUrzoCH_nvHZt9I1KBoJQ946_qqByC8wc,3985
49
+ ytk/ingestion/adapters/xiaohongshu.py,sha256=LiX6HhAgit1kwoiLjl5RMZ4aUs4iUw1paNbUQoN9I8U,31745
50
+ ytk/ingestion/adapters/youtube.py,sha256=FagzFeVphETz6b7tGgrwcL0JlkHiFztxNH5VX9TRG7U,2797
51
+ ytk/ingestion/providers/asr.py,sha256=Pk2BY14kbvxhPvvoMuVZVBRgray4r9dVNw6dkH65uSM,37239
52
+ ytk/ingestion/providers/base.py,sha256=-PAlpLC6vdlWv2jjUGplPEZseNodhkJknpyW8ve4mr0,363
53
+ ytk/ingestion/providers/dtk_client.py,sha256=RCbQo8eni5xO6jjFzmv9-sN_myVUS308tXOyqe75bfo,34866
54
+ ytk/ingestion/providers/minimax.py,sha256=ZxuH-HT3DTtb-xPcwhoLMQ1Bx4SVJjKxypcpUZpb_sA,12903
55
+ ytk/ingestion/providers/transcript_api.py,sha256=h85Lbe6qq8yJEP3h7no5llRpmmrhEyIXLDdBYI5MlRk,12779
56
+ ytk/ingestion/providers/xhs_client.py,sha256=fygciy0Z1nSjfUz6EQXT6UozRo-5hAXdmWUWJeDReQ8,25414
57
+ ytk/ingestion/providers/ytdlp.py,sha256=yHz-b92mwFPP3e9hSsU6Z5qZslqYshxWaoaxe8yYDIk,14942
58
+ ytk/models/common.py,sha256=WqvoI2mS0H0QRGYag8FycEsV0TVe4xM7FNYKwFa9zzE,568
59
+ ytk/models/content.py,sha256=AtcFucf4OWV27_2u7MIl1dVaj0J4FyjnIrANRCToIfs,17599
60
+ ytk/models/knowledge.py,sha256=BzjtlPVrZLt8DVcURvhocnwM45e0r3nIf3BoFlE4f-s,1059
61
+ ytk/models/migrations.py,sha256=cRwojFH_0HCj9lazL1NSqW7YXlJ7NpeqeN5LPtXfrLM,9861
62
+ ytk/models/skill.py,sha256=yJdPxi1HxrpPfS9pZ5ItqSqYm9Ik-ulWo6wh6pacglQ,348
63
+ ytk/models/source.py,sha256=t1HoZJGptD1-vtBBa4_0cC_kauqy7JKWHBkTORnrWYM,10016
64
+ ytk/models/topic.py,sha256=peREO9XtHUO2X-nVqWCqV-SEchcT4BGxrL2mG1xWlxc,549
65
+ ytk/models/transcript.py,sha256=tFT7NucToMbXEvmj5-DBFwVKU4Fyo-TO44j4rHkifoo,815
66
+ ytk/ocr/__init__.py,sha256=Vcejhs1YmBSwTFH_6fzM-w4zR9Vjs8izB-G0hRdFwAE,1722
67
+ ytk/ocr/engine.py,sha256=ipY23yQlozPp05Z_mtZaP6wzxT8DmQ1lDxJUENEwoTY,8547
68
+ ytk/ocr/layout.py,sha256=cINkCCljyIu2b_YMSVo6oybYqb3zXi3BVn6DQP1t78M,11482
69
+ ytk/ocr/pipeline.py,sha256=QDnU8UeXIAkYX5AmiM8Li5h9lV_vVESMPgHbE6OqcDA,16034
70
+ ytk/ocr/rapidocr_engine.py,sha256=yA5i9Qt6GnjcUF48Faq8Xo0D_Uu3CWAs8eYb7wU_Kiw,5582
71
+ ytk/pipeline/acquisition_checkpoint.py,sha256=4Mbe_P6chn510Cb0Fen3edWPsQXIAprEkdV8tjW8MBI,11735
72
+ ytk/pipeline/artifacts.py,sha256=hTJO-EVbg1E8WAZlOWC4YH2Pc0bXJOlgTKWy70niSR4,403
73
+ ytk/pipeline/orchestrator.py,sha256=ks-yxvT6Vw9mPsFBYrtJTUUF1J5n6CAek3kFcrCVbL4,26134
74
+ ytk/pipeline/processing_identity.py,sha256=CsaXdk53XIz0JrMCQGI4djUidpDEIa_3dLDIaZjiD7A,739
75
+ ytk/pipeline/retry.py,sha256=ZkDHAQEvRZwk5agMQtxeh5BFZ3hIJ3G7Qn_J2UYYujo,23000
76
+ ytk/pipeline/runners.py,sha256=rF8tOJUfHzpXaoADKCUV4c0XaffMTyzNOJpsX3u6KeI,26841
77
+ ytk/pipeline/state.py,sha256=lRe8ld9ARVitt0jo0ghNx3xZkH3dvXEoFDSRWoc_Ifo,44225
78
+ ytk/pipeline/v2.py,sha256=o5reEPtKmzRzira0V7dZmJW7lYRcpfDsCsOir2dTcaA,85402
79
+ ytk/quality/__init__.py,sha256=b_UNk_DX5mknivpKX9XHmk1zR9VDC18Vg9gaGZKUTNs,250
80
+ ytk/quality/completeness.py,sha256=7ECXnChMCZ8-_h7m9SGAv90WzQztaMdj9AwCADBYeR8,11021
81
+ ytk/renderers/base.py,sha256=s-S3FQUZnQPzAIyWtHMRRPIpMFeUaHv_W87UAtrVaCQ,241
82
+ ytk/renderers/citation_alignment.py,sha256=Gi3csx1FdWDSpSb4YISZTzetJJa7SCP6Rlorm7ZG31g,24818
83
+ ytk/renderers/evidence_formatter.py,sha256=Kz2Qd8mtUqNvEtkosHt47U-dMMlZFaTVUP6JXzxO6vk,14624
84
+ ytk/renderers/json_renderer.py,sha256=W4032Btb7rw_IUgPwfbhH7-ABdnqQ_1pd8qjKzvVzr4,360
85
+ ytk/renderers/jsonl_renderer.py,sha256=fsjDDv6JCrEO6X7wuBEM-MXPUee9FxGKdkhYrsIigFU,648
86
+ ytk/renderers/knowledge_doc_renderer.py,sha256=HQ6qzDBXEjHLGlYHWt8sA9HIISg3J0Fez0M7d-NzX9o,91156
87
+ ytk/renderers/markdown_renderer.py,sha256=wa0rE_h4ITgrNxAKCI8UtBZvxR4qaW-2J9t7VVON7Rk,21880
88
+ ytk/renderers/obsidian_renderer.py,sha256=JKJzLe0v_jdyj1zhkawBk8VGAEM0NyDz7HzRNZ2wZlA,5397
89
+ ytk/renderers/skill_package.py,sha256=PbHkT7NtvbQ5RDUI0NOt8dSbDZ5ks5fgXe6pDjNm-Rk,681
90
+ ytk/renderers/source_links.py,sha256=ZEqVkNPKhDWsTCx32pya4qIhf-omBHTc1sDKP5R3Q84,11314
91
+ ytk/renderers/summary_renderer.py,sha256=e79wPHdiXOR0NhovwvfmXZipERKgRJLp6aDAdtowQB4,7742
92
+ ytk/renderers/v2.py,sha256=fchU_EncmTxHPfxzWtDe0HzDeWhEtHvcaOLZARF9kXU,6230
93
+ ytk/renderers/v2_jsonl.py,sha256=brdr9yypKFB6GXjcE4LnIjWu5F1AOUO9DtDIYIA4XKE,6516
94
+ ytk/renderers/v2_markdown.py,sha256=suUrTcQPQ_zh0YzwbtsOJ38bTUO-RpYpBGGZa7DZcw0,20589
95
+ ytk/renderers/v2_obsidian.py,sha256=C45wNnyFxhPxS7rSvAXsXS3oZk797E-wRFn3Blzj1Jw,4281
96
+ ytk/renderers/v2_summary.py,sha256=s1ZmRAYYTH7kfEfhJc4NBnfRcMTgttxLhnYTYQeZLjI,7883
97
+ ytk/segmentation/change_points.py,sha256=HOwFKE9SUZKXkf-hqv1XpHsepKkVUaaDplW_2tH4kLI,1488
98
+ ytk/segmentation/embeddings.py,sha256=Yn8nUJEQFLEdNuqnX5F5Uu2jrjaQQNSzbwQGodOIeVE,1412
99
+ ytk/segmentation/service.py,sha256=5yQX099PJY1lwpPbddr3hvypjIfkzkn8391adlmH-d4,11929
100
+ ytk/skill_builder/__init__.py,sha256=is_RQZAMdZXkYsXqRu4NQbT10UOwT4jMxiW0RVe8Ens,40
101
+ ytk/skill_builder/builder.py,sha256=3mhkC74_NJw9Shr6a8kfVEvv6CW5KkbH5OoR3P6brS4,15081
102
+ ytk/skill_builder/templates.py,sha256=fOmIf5axeoz_m0zvwegPS5nKJkpeQyw5w7xI8AAbQ20,963
103
+ ytk/skill_builder/templates/SKILL.md.j2,sha256=MWdyHCSRDqgUoUkdDNWNXrCc1X3mtolYxx4cO8xbdoA,3536
104
+ ytk/skill_builder/templates/evals/evals.json.j2,sha256=vzn4NS9kGHKx3cS43ns0REeSzj7EyOgGdkXmow4-ZoA,822
105
+ ytk/skill_builder/templates/examples/example-input.md.j2,sha256=TrOyAvD83n5AANWqz2Ei4QzBGg3NuqT_DD9voKPjdv0,208
106
+ ytk/skill_builder/templates/examples/example-output.md.j2,sha256=pNlJszgMWVJrIVIWfeji-QQiwGMJW31XeWxUil0YJSo,361
107
+ ytk/skill_builder/templates/references/commands.md.j2,sha256=FH3Ma7hQR5xW2YcKRfjmn7i-OhaSdW6zzYooVzEB3sw,1192
108
+ ytk/skill_builder/templates/references/concepts.md.j2,sha256=WC45cqYd3I2Gv_r5D7PgiuUl33D2X2-eZIV7R2iaNX0,694
109
+ ytk/skill_builder/templates/references/configs.md.j2,sha256=k9WI4x6Ne7yG36l8lnzKzAhGLcQgpVyDOyFOo5PhMWU,1101
110
+ ytk/skill_builder/templates/references/evidence-policy.md.j2,sha256=uYwwyoLtRSyx0vBqcQRCdbK4ItZNfxqw_HLQfqDjhEg,1108
111
+ ytk/skill_builder/templates/references/source-summary.md.j2,sha256=6GwAgYET-mlaCPhkXfio6--7ka8BPg8oEyf4X_eDoZo,828
112
+ ytk/skill_builder/templates/scripts/build_skill.py.j2,sha256=c5sK1IJNM1KB82SerYBGI3ef4ynUr37s-vU2Jzt9eGg,327
113
+ ytk/skill_builder/templates/scripts/validate_output.py.j2,sha256=Qi9RX2HhN1-w2ZJ6bOdtA1_H-JdQjj62moiv5kCS-EI,4268
114
+ kd_engine-1.0.0.dist-info/METADATA,sha256=uSxg8ea8EwNbINw9geO4fSbbvR6Y6SHF2qZ21gvsOZE,656
115
+ kd_engine-1.0.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
116
+ kd_engine-1.0.0.dist-info/entry_points.txt,sha256=neg4klyUQSZL9mCsgs1jUZKDMNk-dIiphxusKDOlZ0c,42
117
+ kd_engine-1.0.0.dist-info/top_level.txt,sha256=oh8et_GI_Yahoq6uj6tqUcCrpHyMJuUp4WBhlKRaL2Q,4
118
+ kd_engine-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ kd-engine = ytk.cli:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shockang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ ytk
ytk/__init__.py ADDED
@@ -0,0 +1,2 @@
1
+ """knowledge-distiller package."""
2
+
ytk/__main__.py ADDED
@@ -0,0 +1,21 @@
1
+ """``python -m ytk`` entry point.
2
+
3
+ The ``YTK_NO_DOTENV=1`` guard must take effect *before* any project module
4
+ that could read environment files is imported, so this entry talks to the
5
+ stdlib-only :mod:`ytk.dotenv` loader directly instead of importing
6
+ ``ytk.cli`` first (``ytk.cli`` pulls in config/pipeline/doctor and is much
7
+ heavier). ``import ytk.cli`` itself never mutates ``os.environ``.
8
+
9
+ Root-cause note (2026-08-18 cron incident): the project ``.env`` is loaded at
10
+ the CLI entry so a caller running from an arbitrary cwd still gets the same
11
+ keys the ``.env`` author intended. The same behaviour is preserved here for
12
+ normal users; offline checks set ``YTK_NO_DOTENV=1`` and the file is not even
13
+ opened.
14
+ """
15
+ from ytk.dotenv import load_project_dotenv
16
+
17
+ load_project_dotenv()
18
+
19
+ from ytk.cli import app # noqa: E402 (must follow the dotenv guard)
20
+
21
+ app()
ytk/batch/__init__.py ADDED
@@ -0,0 +1,39 @@
1
+ """Batch execution helpers (T40.1/T40.2).
2
+
3
+ The CLI ``batch run`` command is a thin wrapper over
4
+ :func:`ytk.batch.runner.run_batch`; identity, stable directories, dedupe,
5
+ per-format resume and the per-platform/format/status report all live here so
6
+ ``cli.py`` stays thin.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from ytk.batch.runner import (
12
+ BATCH_ALIASES_FILENAME,
13
+ BATCH_MARKER_FILENAME,
14
+ BATCH_REPORT_FILENAME,
15
+ BatchReport,
16
+ SourceResult,
17
+ default_formats_for,
18
+ legacy_output_dirs,
19
+ requested_formats_for,
20
+ resolve_batch_identity,
21
+ run_batch,
22
+ stable_output_dir,
23
+ stable_source_dirname,
24
+ )
25
+
26
+ __all__ = [
27
+ "BATCH_ALIASES_FILENAME",
28
+ "BATCH_MARKER_FILENAME",
29
+ "BATCH_REPORT_FILENAME",
30
+ "BatchReport",
31
+ "SourceResult",
32
+ "default_formats_for",
33
+ "legacy_output_dirs",
34
+ "requested_formats_for",
35
+ "resolve_batch_identity",
36
+ "run_batch",
37
+ "stable_output_dir",
38
+ "stable_source_dirname",
39
+ ]