@iducky/media-agent 1.1.0 → 1.1.1

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 (36) hide show
  1. package/README.md +3 -3
  2. package/SHA256SUMS +34 -30
  3. package/bin/media-agent.mjs +19 -7
  4. package/docs/guides/capabilities.md +6 -2
  5. package/docs/guides/installation.md +42 -6
  6. package/manifest.json +74 -58
  7. package/package.json +1 -1
  8. package/pyproject.toml +1 -1
  9. package/resources/capabilities.json +43 -1
  10. package/skills/douyin-creator-index/SKILL.md +2 -0
  11. package/skills/douyin-creator-publish/SKILL.md +3 -1
  12. package/skills/douyin-enterprise-short-video-export/SKILL.md +2 -0
  13. package/skills/douyin-enterprise-video-rankings/SKILL.md +2 -0
  14. package/skills/xiaohongshu-creator-publish/SKILL.md +3 -1
  15. package/src/media_agent/cli.py +5 -0
  16. package/src/media_agent/commands.sh +20 -20
  17. package/src/media_agent/platforms/douyin/check_login.py +8 -11
  18. package/src/media_agent/platforms/douyin/collect_industry_taxonomy.py +10 -1
  19. package/src/media_agent/platforms/douyin/collect_video_rankings.py +14 -5
  20. package/src/media_agent/platforms/douyin/douyin_hotspot_v2.py +12 -3
  21. package/src/media_agent/platforms/douyin/douyin_publish.py +65 -218
  22. package/src/media_agent/platforms/douyin/enterprise_login.py +6 -11
  23. package/src/media_agent/platforms/douyin/export_short_video.py +10 -1
  24. package/src/media_agent/platforms/douyin/login_controller.py +4 -15
  25. package/src/media_agent/platforms/toutiao/toutiao_login_controller.py +4 -22
  26. package/src/media_agent/platforms/xiaohongshu/xiaohongshu_check_login.py +8 -11
  27. package/src/media_agent/platforms/xiaohongshu/xiaohongshu_login_controller.py +5 -17
  28. package/src/media_agent/platforms/xiaohongshu/xiaohongshu_publish.py +63 -182
  29. package/src/media_agent/runtime/account_manager.py +16 -88
  30. package/src/media_agent/runtime/arguments.py +69 -0
  31. package/src/media_agent/runtime/diagnostics.py +186 -0
  32. package/src/media_agent/runtime/locking.py +74 -0
  33. package/src/media_agent/runtime/publish_control.py +98 -0
  34. package/src/node/skills.mjs +2 -1
  35. package/tools/artifacts.py +1 -0
  36. package/tools/install_runtime.py +5 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 当前状态
6
6
 
7
- - 版本:`1.1.0`;npm 包:`@iducky/media-agent`。
7
+ - 版本:`1.1.1`;npm 包:`@iducky/media-agent`。
8
8
  - 15 个 Skill:覆盖既有抖音、小红书、头条能力;行业分类已合并到企业号视频榜单。
9
9
  - 新增抖音、小红书图文 Skill:Agent 使用现有可见持久化浏览器,仅发布提供的图片与成稿,不使用第三方 MCP,不生成素材。
10
10
  - 图文能力仍为 `ADAPTED_UNVERIFIED`;小红书视频 CLI 的在线待验收状态不因重构改变。
@@ -14,7 +14,7 @@
14
14
  从 npm 安装指定版本:
15
15
 
16
16
  ```bash
17
- npm install -g @iducky/media-agent@1.1.0
17
+ npm install -g @iducky/media-agent@1.1.1
18
18
  media-agent skills install --target /absolute/agent/skills
19
19
  media-agent setup
20
20
  media-agent doctor
@@ -24,7 +24,7 @@ media-agent doctor
24
24
 
25
25
  ```bash
26
26
  python3 tools/build_release.py --output dist
27
- npm install -g ./dist/iducky-media-agent-1.1.0.tgz
27
+ npm install -g ./dist/iducky-media-agent-1.1.1.tgz
28
28
  media-agent skills install --target /absolute/agent/skills --dry-run
29
29
  media-agent skills install --target /absolute/agent/skills
30
30
  media-agent setup
package/SHA256SUMS CHANGED
@@ -1,12 +1,12 @@
1
- f9e5f92209a3a5b0fd65e17322bf6d363c9335b993125be66e959fc24803632d README.md
2
- 4ff69bc7c27219ea2760afe95ae58379721d8637d564fb6efbb550e1a687ddfa bin/media-agent.mjs
3
- d58f69e08ac99fbf4651a343bf768071d2c0e0aaf966e7bc9f3d056cc71379d6 docs/guides/capabilities.md
1
+ c46e4b57a261ee0be74a5907fdc29928709c809a57eb1b217c8fd92470f467a1 README.md
2
+ cea5aed016608b747cb432b826786ea154151c9c43f97c008796f9556735ba1b bin/media-agent.mjs
3
+ 9d0b46bbf9c019b8a3f46a68413c6d24ea4b8e58b8d28f999fa80ea2a32f6d5a docs/guides/capabilities.md
4
4
  b50e649c04ef4a22f4988604b6f5cef091c0671aaa183e52e782e955e323222b docs/guides/image-text-publishing.md
5
- 0929fcc2eddb0fc0e2d21291b564e3fab239a36895fe702b7e4ff4ddb771332b docs/guides/installation.md
5
+ 22c812426012066ed344fb25cab34dd54396faf71910936d4a3104e2255c4879 docs/guides/installation.md
6
6
  42f137161763150ccff3c027908b3f33732dfccba2d8e754451a418bcf33c134 docs/guides/runtime.md
7
- 4a2489155e77bb1d5227259c2707678f6541a6fa7aa861884d38ef0faa7a5b4e package.json
8
- 70de33ef9e8436793e7f17df42a48ac5920ed015a76ab9ba21ff43484953b617 pyproject.toml
9
- 7a44ed8bdc9b0dc3e1b2b4951eae4f2c2e48a6c6de3c38d614ba874c4cbb98ea resources/capabilities.json
7
+ a92d2a1931a45826fbfc38357d38ea0c416c5ab426f80d39beeb044c33fd438c package.json
8
+ 1cdcb09fbf5d3893bfc69b5573e148f023c22a3c21adbb093dbd86e0b77dd673 pyproject.toml
9
+ dca57a44d96c1cc72ca7bf43672f708a8f7c2990298399736c58c8e8fce3f30b resources/capabilities.json
10
10
  991295ddb6cb6e566f7b61625b7cc4b27e9c48bbe2174ccc4b8f7924b3174a54 resources/configs/accounts.yaml
11
11
  23d019759870d3919e2c095f3e92061d4c7bb21ab8e563366a808c1d94e5bb17 resources/configs/profile.template.json
12
12
  1d022c8432540d54f7721cc31cc8bfe4bcf5c221769bed231026600fe93fd274 resources/configs/ranking-profiles.yaml
@@ -21,19 +21,19 @@ cfe24a8f44b11c5e894ccd19b730fdbc884301c2be7a6ea49fb8b39ceb8beea9 skills/douyin-
21
21
  8fd1171ac198090942b3e7f15887ec682cf010227e7afe74ee97f57351fd9f36 skills/douyin-creator-image-text-publish/references/LICENSE.social-auto-upload
22
22
  3b4100deb63efccbd771aa200f912d2c88d2b4996712bb1b412ffd1ec061988b skills/douyin-creator-image-text-publish/references/execution-contract.md
23
23
  050128427ee874f5b4fede8e048cc2bd737e97f4983eda1a8481bf9c6a7eb04b skills/douyin-creator-image-text-publish/references/upstream.md
24
- 396d4426a1e91582636b56b82ef1731e44020e6d5d65cf205c352025bd410c5a skills/douyin-creator-index/SKILL.md
24
+ 73b93e9c8701321077b3679ce7b3e9f5fbba5db3248faea2e63d839c3ebab1e6 skills/douyin-creator-index/SKILL.md
25
25
  73648aa2c38b4fed46950e00d5726f1c85c632ff32ad9dc471ff72a244c9f5d3 skills/douyin-creator-index/agents/openai.yaml
26
26
  c0d6bfbc5c1b8ecfc28cf5c37645948c4ae3c5c3ce801b0d02b64cac0c6e16d6 skills/douyin-creator-login/SKILL.md
27
27
  a4454ea33c2717c75240c6761dbdf563782a456dca4da9419d00c5e8f041160a skills/douyin-creator-login/agents/openai.yaml
28
- 9405109644e4b1171706844f22ef2142c9ff888e13b423d38f3175558d72e790 skills/douyin-creator-publish/SKILL.md
28
+ 58bb629902d94bc03aa6fcac61d02f6a8446f65b65d57c2359b5d1f32d91a949 skills/douyin-creator-publish/SKILL.md
29
29
  a901c8b4704aa328a2afdb5b5f2223d5bbe6355fe80984e5c6cb203d109be075 skills/douyin-creator-publish/agents/openai.yaml
30
30
  dede04df0a162404ca96bd8cf10ec0495d746b3ede5a0160e26b3dd67712a33c skills/douyin-enterprise-leads-login/SKILL.md
31
31
  76a7a8a2537b01b28bd131ecef7c878457678247a76e508475e234198b391bdd skills/douyin-enterprise-leads-login/agents/openai.yaml
32
32
  8b7b4a1f6969b729929fb7fae8a4d3dd1e039cb17251c7c397d7ac615ffff6e0 skills/douyin-enterprise-leads/SKILL.md
33
33
  ccfdc00953377bac4ba4f91f58a1747b25791a44054b04ad76e8925f95806f12 skills/douyin-enterprise-leads/agents/openai.yaml
34
- e12142fdb89381e1cd10adebe4023c9a890ea8ffca3b1502b8048fc2a605f6a5 skills/douyin-enterprise-short-video-export/SKILL.md
34
+ df7e3b34eca684334547cbd2b0cc844c51fab41c7dd49956a67b34c2357a3e95 skills/douyin-enterprise-short-video-export/SKILL.md
35
35
  bad374a6c819bf02c0d60d6cd42670384dd9bc5acce25930d4c5d3238001f4d3 skills/douyin-enterprise-short-video-export/agents/openai.yaml
36
- ae64dff3805efba2697483511d8cd81c4c8f52e3b48e7483fcaaff8535952414 skills/douyin-enterprise-video-rankings/SKILL.md
36
+ 81cd57bb3ce0f136d03ba4a97377fdcd55697d4f294b294511194a28f473e8a7 skills/douyin-enterprise-video-rankings/SKILL.md
37
37
  80e56219c96f392e8ea6bcfd07b85290905df034db8f4c9abe49c3f12972eefa skills/douyin-enterprise-video-rankings/agents/openai.yaml
38
38
  fb7193750db29be9f8cc93e21c53ed4753fde27b8424029057852fa1db8ef0b7 skills/douyin-enterprise-video-rankings/references/industry-taxonomy.md
39
39
  a419f42a677e55f8dc1da46419a5b73c87deb716f87e05d311294133b754a936 skills/douyin-web-login/SKILL.md
@@ -49,46 +49,50 @@ a419f42a677e55f8dc1da46419a5b73c87deb716f87e05d311294133b754a936 skills/douyin-
49
49
  52b36451770166681e7b10f8c73bcf6a85334da5366c9122ac45b7fa117823c8 skills/xiaohongshu-creator-image-text-publish/references/upstream.md
50
50
  871fe010e8d2f419b172a10b3ec6ab15b851d1f8c799b14220a10e520b7709e2 skills/xiaohongshu-creator-login/SKILL.md
51
51
  ef3c4c9cba3b079f26a0a676b55b195ff39a114f66757f992986f08aba2a841f skills/xiaohongshu-creator-login/agents/openai.yaml
52
- 9a738ef1cd78204b518e57eff377e163fb4acd058e24f446e5f4d136860acdff skills/xiaohongshu-creator-publish/SKILL.md
52
+ 17a8a40293c0cdd045db82aba4848ae0488f2bc20e1884ecb0975c9ad2970f30 skills/xiaohongshu-creator-publish/SKILL.md
53
53
  a75940ca97d7b641c32dde6962edf437fb3312dc8374f039922d72edc977df64 skills/xiaohongshu-creator-publish/agents/openai.yaml
54
54
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/__init__.py
55
- 5d8cdfae8a77d37cde70737f4b8ac8ad850330cf75512184cfcafc7dab9f2346 src/media_agent/cli.py
56
- b0a8cbd3ad0ba993984bac0d6e9314ad92429be6e9edc5133321c6584c52a3e0 src/media_agent/commands.sh
55
+ 1439ad26629c6f81fcd59034930a4e136c084a54accb82cd60489735079c3d39 src/media_agent/cli.py
56
+ 9a0ef70ee4719dd13dd5a6d76be240571744456c5d5c3aa13f0b82611c90cf6a src/media_agent/commands.sh
57
57
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/platforms/__init__.py
58
58
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/platforms/douyin/__init__.py
59
- b73756a197b70c81aa1a62c88c138318e5504c783e0e4bcfa5de7ac33536392c src/media_agent/platforms/douyin/check_login.py
60
- 9d91d831760579f5e0cf2f6b413fdd917f14f46081aff4fb221f681bf281c704 src/media_agent/platforms/douyin/collect_industry_taxonomy.py
61
- d117921fd6a4c313ce359f40a13bcf719f0379fc7bf20eea7d8095bf5de4280a src/media_agent/platforms/douyin/collect_video_rankings.py
59
+ d43b2e7a49b17eb081361785a7b2fc1fbca749b66a503e3966c01d37a39303ec src/media_agent/platforms/douyin/check_login.py
60
+ b4f3f9b2026bba81e30330c5d6a91e823ec4d37dc8af233bc67324e0f74d74ce src/media_agent/platforms/douyin/collect_industry_taxonomy.py
61
+ 75173f6ee53f64ae15a1f40ff283209bf5a8470935b0eb35b8a9ca50f2db4bde src/media_agent/platforms/douyin/collect_video_rankings.py
62
62
  a0ec4757b9c95099527b1300b5b3d26d477263b34f53d6d32af002b0879eab36 src/media_agent/platforms/douyin/douyin_full_login.py
63
- 0afe2f18db2b7a31ea91161a055a07d91a74561f61f600e4785b3baa13316acd src/media_agent/platforms/douyin/douyin_hotspot_v2.py
64
- 1e0d9edacbb09c103b350d9d6227868787f0ea7fdade30f5dc301b0ba8424e84 src/media_agent/platforms/douyin/douyin_publish.py
65
- ddb90725b49a4b60dc1fb95e31e1b02835320a3081431bd5d113954acdfe1ac7 src/media_agent/platforms/douyin/enterprise_login.py
66
- cd5e317d37ac3764a170b0706bbdeea21fc008e5e802a706023288c0f0567534 src/media_agent/platforms/douyin/export_short_video.py
67
- 497a8521227d20d8fc26177345c5205a44b7f53a13ccb2ec88f3249903ddb5c4 src/media_agent/platforms/douyin/login_controller.py
63
+ ee8f1e6b98b99dd168f17e20d78cfccc7e102ca3a4948b8d035dbac9eab31f5f src/media_agent/platforms/douyin/douyin_hotspot_v2.py
64
+ 9e296eba6ac3dbe91ec57f10ac16a36c12fd17200389624e52671a2ac847c5be src/media_agent/platforms/douyin/douyin_publish.py
65
+ 4e8feaaa4f5117c255d99af480a740684e8d23e4bf76062db928ca1b14b62e34 src/media_agent/platforms/douyin/enterprise_login.py
66
+ fded1bf93d9f8296add3237e792074896f4f362a08d2d3d215c9194d71b1ecc2 src/media_agent/platforms/douyin/export_short_video.py
67
+ 0f55205a794773997c0b7657e1ab12a3d97e3967460500a239b64e94926df5d6 src/media_agent/platforms/douyin/login_controller.py
68
68
  61f1a546118e982a26235dcda31a4414838f2c3c0b777254b2509a364e5a5ced src/media_agent/platforms/douyin/validate_industry_taxonomy.py
69
69
  2086fe809679e589ee377a8aeff42b153a83beaff4ff84b911f4a4c999d3d91f src/media_agent/platforms/douyin/validate_rankings.py
70
70
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/platforms/toutiao/__init__.py
71
71
  a5db04d0ab4a22e04ce09b96dcba5f98bcccbd4a83400426b9b9f81df47a2fcc src/media_agent/platforms/toutiao/toutiao_check_login.py
72
- 8b8d831ede6731b1ec930c6073705c57e2f0039be37ec658b660bcda5c84c649 src/media_agent/platforms/toutiao/toutiao_login_controller.py
72
+ 627a55ac589465f331b53feb342874b65008d9d1071c6f70803cada0f6b4124a src/media_agent/platforms/toutiao/toutiao_login_controller.py
73
73
  346b0ed29c9def46945a3650e82c5a71f33c21947823912c981c483a4cd9406d src/media_agent/platforms/toutiao/toutiao_login_evidence.py
74
74
  22c4599c5a91bba2a5c828aabc2d358908d1992b19f7377b672cfbb4f4cecf7f src/media_agent/platforms/toutiao/toutiao_login_ipc.py
75
75
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/platforms/xiaohongshu/__init__.py
76
- f03b1b3c2439cb638cdb7c6a338c8496c2690dd15198c0c9126b29074f21a48e src/media_agent/platforms/xiaohongshu/xiaohongshu_check_login.py
77
- dedad1bdc99a55698afd1e7822becddf0cd54c0d3ed47e28725a0c10e4929584 src/media_agent/platforms/xiaohongshu/xiaohongshu_login_controller.py
76
+ 9eb7101f6aa8ed3b9faafcd5e4a038e6bae407c2e60ba8427c45ccfee2ae5caf src/media_agent/platforms/xiaohongshu/xiaohongshu_check_login.py
77
+ 37ca676d0d081c87d5a5680c1d09939ca69a14a42348f7bde573c2f16a4b3900 src/media_agent/platforms/xiaohongshu/xiaohongshu_login_controller.py
78
78
  6cec01b64f18c1786fe056d62972cfcda8f5e265b6505b5d248474838981aeb7 src/media_agent/platforms/xiaohongshu/xiaohongshu_login_evidence.py
79
79
  0a97a6c5db896a6272bd392d92b3853e9fe0968c689c4aa8cd2d7065044a5777 src/media_agent/platforms/xiaohongshu/xiaohongshu_login_ipc.py
80
- 55883e3891eb83f22021d2b86f69524e05e2972a16c2e7c8464dd4f142f06983 src/media_agent/platforms/xiaohongshu/xiaohongshu_publish.py
80
+ 2adb9fe6f68a9dc38c99aed504eb709ad71aef7093433a03594658fcbdcf0e72 src/media_agent/platforms/xiaohongshu/xiaohongshu_publish.py
81
81
  04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1 src/media_agent/runtime/__init__.py
82
- d9593fdfe4a03b5a9f1e863a2fa3e4ea0751d8ee9ba565a1fc5dd106951e1014 src/media_agent/runtime/account_manager.py
82
+ feb4cd0c47843a2a71a621071c4e21c8459be8fead88a32e900aeb33400413ef src/media_agent/runtime/account_manager.py
83
+ 8f045a85fc513dacba921356608f5d8084a59c278a2175711bc418ed7fce4c16 src/media_agent/runtime/arguments.py
83
84
  48eb9fd61a6a9f9695d6f4a4eab776ee90641bd3ae57b3a5242d4e2e58986e67 src/media_agent/runtime/browser.py
85
+ 22004a8cef13a5f38a2e8ad705a1a7296ab854e1aa5dce0ca49149d8b5b2157d src/media_agent/runtime/diagnostics.py
86
+ 593fe385a82ebda28069b2409e98c01d23b7efcd1f0b7aac002c169d37adbacf src/media_agent/runtime/locking.py
84
87
  e9981bf51a388022a82bfe9c5670188c89315e6597788245be74b4eb3559a467 src/media_agent/runtime/paths.py
88
+ f27849115624cd8e18f58eadce357f86345f822c91d92e040097230edd56037e src/media_agent/runtime/publish_control.py
85
89
  c337b61e5a047df1dc9a0080c9ad5b0ffed7c9e82bc382896c6b887a73b25f8a src/media_agent/script_map.json
86
90
  a53630d6d172e6ce701e3709cbb54012c447c72f5f372b45931e5e94baf1f243 src/node/config.mjs
87
91
  7cef52f29728dba2b8a863cb496a8f95a047f8330ed30fd8e1a91de1f2f78a22 src/node/integrity.mjs
88
- e2a7f88e2deb75221131a452211e0d5709dba33f5fc9e0e151b809c5fbcc0392 src/node/skills.mjs
92
+ 09f19f27ea4228dd1bd005d0b3c41a37d3470b7d2cde354b539eaca5b2feff63 src/node/skills.mjs
89
93
  d0cbccf5f5c349eec03bc9410210d7b9895c4fe251679034f9d109cbda0d9624 tools/archive_releases.py
90
- 0e3670b8f22c49eed3b87e7e61a4924edcc832c7ab01c54fd9e67a3767bcca01 tools/artifacts.py
94
+ 4f186184f889d56b76e532219cbcb5173fbd6f766aaf36aa3551954326014f03 tools/artifacts.py
91
95
  dbd124c7498f961e854e935d7950aba59a01de58304146669f548b7c083e5e0a tools/build_release.py
92
96
  f670d0559a2dcbfebb9baf41b8c211ebdacc6fd2320424374c0ca90571e005df tools/check_catalog.py
93
- a9ee1ce29581090ed81a7a3c9ca39f8c6f66dd3bd4fdaac3f1e7baa3243a9af2 tools/install_runtime.py
97
+ 49417268bb04989e1b5d1824bd7d3d65425792c5c475738cceb4001cfe3c15d6 tools/install_runtime.py
94
98
  1f8d3da3ea5c934a00ebe76597b275e1533cebcdf15dacd1c74f7d82c1324a58 tools/run_tests.py
@@ -26,7 +26,7 @@ function main() {
26
26
  for (let i=0;i<args.length;i++) if(args[i]==='--home') {home=expand(value(args,i)); args.splice(i,2); i--;}
27
27
  const [cmd,...rest]=args;
28
28
  if (!cmd || ['help','--help','-h'].includes(cmd)) {
29
- console.log(`media-agent ${pkg.version}\n\nUsage:\n media-agent skills list\n media-agent skills install --target DIR [--skill NAME ...] [--dry-run]\n media-agent setup [--home DIR] [--python PATH] [--dry-run] [--no-deps]\n media-agent doctor [--home DIR]\n media-agent config export|import DIR [--dry-run] [--home DIR]\n media-agent commands\n media-agent <command> [arguments] [--home DIR]\n\nSkill installation and configuration commands need only Node.js. Runtime: Python >=3.9, visible browser.\nBusiness commands: media-agent commands`); return 0;
29
+ console.log(`media-agent ${pkg.version}\n\nUsage:\n media-agent skills list\n media-agent skills install --target DIR [--skill NAME ...] [--dry-run]\n media-agent setup [--home DIR] [--python PATH] [--dry-run] [--no-deps]\n media-agent doctor [--home DIR]\n media-agent config export|import DIR [--dry-run] [--home DIR]\n media-agent capabilities list --json\n media-agent config validate --json\n media-agent tasks list|show [TASK_ID] [--profile-id ID] --json\n media-agent upgrade --check --json\n media-agent init ID --platform NAME --label LABEL --login METHOD [--capability NAME]\n media-agent commands\n media-agent <command> [arguments] [--home DIR]\n\nSkill installation and configuration commands need only Node.js. Runtime: Python >=3.9, visible browser.\nBusiness commands: media-agent commands`); return 0;
30
30
  }
31
31
  if(cmd==='--version') {console.log(pkg.version); return 0;}
32
32
  if(cmd==='skills') {
@@ -47,7 +47,12 @@ function main() {
47
47
  else migrateSkills(catalog,target,dry);
48
48
  return 0;
49
49
  }
50
- if(cmd==='config') {
50
+ if(cmd==='capabilities') {
51
+ if(rest[0]!=='list' || rest.slice(1).some(x=>x!=='--json')) throw new Error('Usage: capabilities list [--json]');
52
+ const catalog=JSON.parse(fs.readFileSync(path.join(root,'resources/capabilities.json'),'utf8'));
53
+ console.log(JSON.stringify({skills:catalog.skills,commands:catalog.commands},null,2)); return 0;
54
+ }
55
+ if(cmd==='config' && rest[0]!=='validate') {
51
56
  transferConfig(home,rest); return 0;
52
57
  }
53
58
  if(cmd==='run-script' || cmd==='run') throw new Error('Unsupported public command; use media-agent commands');
@@ -70,18 +75,25 @@ function main() {
70
75
  const active=path.join(home,'.app/current');
71
76
  let activeVersion=null;
72
77
  try { activeVersion=JSON.parse(fs.readFileSync(path.join(active,'package.json'),'utf8')).version; } catch {}
73
- const ready=Boolean(report.supported && Object.values(report.dependencies||{}).every(Boolean) && activeVersion===pkg.version && fs.existsSync(path.join(active,'src/media_agent/cli.py')));
74
- console.log(JSON.stringify({version:pkg.version,active_version:activeVersion,active_code:active,runtime_home:home,python,python_status:report,ready},null,2));
78
+ let integrity={verified:false,error:null};
79
+ try { verifyIntegrity(root); if(fs.existsSync(active)) {verifyIntegrity(active); integrity.verified=fs.existsSync(path.join(active,'manifest.json'));} }
80
+ catch(error) {integrity.error=error.message;}
81
+ const checks=spawnSync(python,['-c',`import json; from media_agent.runtime.diagnostics import upgrade_report,validate_config; from media_agent.runtime.paths import runtime_home; print(json.dumps({'upgrade':upgrade_report(runtime_home()),'configuration':validate_config(runtime_home())}))`],{encoding:'utf8',env});
82
+ let runtimeChecks;
83
+ try { runtimeChecks=JSON.parse(checks.stdout); } catch {runtimeChecks={error:checks.error?.message || checks.stderr || 'Runtime diagnostics unavailable'};}
84
+ const ready=Boolean(report.supported && Object.values(report.dependencies||{}).every(Boolean) && activeVersion===pkg.version && fs.existsSync(path.join(active,'src/media_agent/cli.py')) && !integrity.error && !runtimeChecks.error && runtimeChecks.configuration.valid);
85
+ console.log(JSON.stringify({version:pkg.version,active_version:activeVersion,active_code:active,runtime_home:home,python,python_status:report,integrity,checks:runtimeChecks,ready},null,2));
75
86
  return ready?0:1;
76
87
  }
77
88
  const active=path.join(home,'.app/current');
78
89
  const activeExists=fs.existsSync(active);
79
- if(!activeExists && fs.existsSync(path.join(home,'.app')) && fs.readdirSync(path.join(home,'.app')).includes('current'))
90
+ const candidateDiagnostic=['tasks','upgrade','config'].includes(cmd);
91
+ if(!candidateDiagnostic && !activeExists && fs.existsSync(path.join(home,'.app')) && fs.readdirSync(path.join(home,'.app')).includes('current'))
80
92
  throw new Error('Activated runtime is missing; run media-agent setup');
81
- if(activeExists) {
93
+ if(activeExists && !candidateDiagnostic) {
82
94
  if(!fs.existsSync(path.join(active,'src/media_agent/cli.py'))) throw new Error('Activated runtime is incomplete; run media-agent setup');
83
95
  env.PYTHONPATH=path.join(fs.realpathSync(active),'src')+(process.env.PYTHONPATH?path.delimiter+process.env.PYTHONPATH:'');
84
- } else if(pkg.mediaAgentArtifact && cmd!=='commands') {
96
+ } else if(pkg.mediaAgentArtifact && !['commands','tasks','upgrade','config'].includes(cmd)) {
85
97
  throw new Error('Runtime is not installed; run media-agent setup first');
86
98
  }
87
99
  return run(python,['-m','media_agent.cli',...(cmd==='commands'?['--help']:args)],env);
@@ -1,13 +1,13 @@
1
1
  # Media Agent 能力矩阵与部署状态
2
2
 
3
3
  > 更新日期:2026-09-23(Asia/Shanghai)
4
- > 当前源码:`1.1.0`,15 个 Skill;npm 包名为 `@iducky/media-agent`,亦可从源码构建安装;包的发布不等于已部署到用户真实运行环境。安装方式见[安装指南](installation.md)。
4
+ > 当前源码:`1.1.1`,15 个 Skill;npm 包名为 `@iducky/media-agent`,亦可从源码构建安装;包的发布不等于已部署到用户真实运行环境。安装方式见[安装指南](installation.md)。
5
5
  >
6
6
  > 历史 v1.0.1–v1.0.10 制品已迁入 [GitHub Releases](https://github.com/myducky/MediaAgentCapabilities/releases),源码仓库仅保留 `docs/releases/index.json`。v1.0.10 包内仍为 14 个 Skill,不改写历史资产。
7
7
  >
8
8
  > 部署口径:将选定社交媒体 Skills 安装到业务 Agent 的实际技能目录;Hermes 可使用独立的 `social-media` 业务 Profile。每个真实平台账号仍使用独立社交账号浏览器 Profile,两层 Profile 不应混淆。
9
9
 
10
- 当前安装与构建测试共 13 个文件、106 个检查/用例通过,不能据此宣称平台流程已在线验收。下表的历史实测记录与当前离线检查分别注明。
10
+ 当前测试包含安装构建契约及运行时安全行为回归,具体数量以 `npm test` 输出为准,不能据此宣称平台流程已在线验收。下表的历史实测记录与当前离线检查分别注明。
11
11
 
12
12
  ## 能力覆盖
13
13
 
@@ -101,3 +101,7 @@ v1.0.10 历史包中的该 SKILL.md 新增 CLI 命令小节,SHA-256 更新为
101
101
  6. 确认已有账号配置、Profile 和 `browser_data` 未被覆盖。安装本身不要求打开或关闭用户现有浏览器;不能把全机进程/lock 数必须为 0 当作部署条件。
102
102
  7. 按具体 Skill,在不与活动会话冲突的条件下进行必要的只读登录和业务验收;需实际发布时取得该作品的明确授权。图文仍在真实验收后才能从 `ADAPTED_UNVERIFIED` 升级状态。
103
103
  8. 记录目标版本、数据根、安装 Skill 名单、依赖诊断结果和在线验收范围;`doctor.ready` 不等于已登录或发布验证通过。
104
+
105
+ ## 1.1.1 运行时安全修订
106
+
107
+ 发布确认绑定账号、任务与素材,要求对应准备进程仍存活;未确定结果禁止直接重试。锁由当前进程和任务共同拥有,存活进程的锁不会因时间长而被接管。新增只读能力、配置、任务及升级检查。旧热点、榜单、行业分类及导出 CLI 的实际执行返回 IMPLEMENTATION_REQUIRED,直到能够验证全部输入参数;Skill 路径及原在线验收边界保持不变。
@@ -1,9 +1,9 @@
1
1
  # 安装、升级与回滚
2
2
 
3
- 当前源码版本为 1.1.0。npm 包名为 `@iducky/media-agent`。安装指定版本:
3
+ 当前源码版本为 1.1.1。npm 包名为 `@iducky/media-agent`。安装指定版本:
4
4
 
5
5
  ```bash
6
- npm install -g @iducky/media-agent@1.1.0
6
+ npm install -g @iducky/media-agent@1.1.1
7
7
  ```
8
8
 
9
9
  也可按以下步骤从源码构建并安装。npm 安装只安装命令与配套源码;仍需显式执行 `skills install` 和 `setup`。
@@ -15,8 +15,8 @@ npm install -g @iducky/media-agent@1.1.0
15
15
  ```bash
16
16
  python3 tools/build_release.py --output dist
17
17
  cd dist
18
- shasum -a 256 -c iducky-media-agent-1.1.0.tgz.sha256
19
- npm install -g ./iducky-media-agent-1.1.0.tgz
18
+ shasum -a 256 -c iducky-media-agent-1.1.1.tgz.sha256
19
+ npm install -g ./iducky-media-agent-1.1.1.tgz
20
20
  ```
21
21
 
22
22
  npm 安装不会自动创建 Python 环境、下载浏览器或启动浏览器,也不会自动选择 Agent 的 Skill 目录。包内携带对应版本源码与 Skill,不依赖上一个发布包。
@@ -79,12 +79,18 @@ media-agent config import /absolute/config-backup --home /absolute/new-runtime
79
79
 
80
80
  ## 可选离线包
81
81
 
82
- 完整离线包仅是构建产物,位于 `dist/media-agent-capabilities-v1.1.0.tar.gz`,不提交到源码仓库。离线包包含代码、Skill、非敏感模板、使用文档与校验清单,不包含 Python 解释器、依赖 wheel 或浏览器二进制;完全断网环境需提前准备这些依赖。
82
+ 完整离线包仅是构建产物,位于 `dist/media-agent-capabilities-v1.1.1.tar.gz`,不提交到源码仓库。离线包包含代码、Skill、非敏感模板、使用文档与校验清单,不包含 Python 解释器、依赖 wheel 或浏览器二进制;完全断网环境需提前准备这些依赖。
83
83
 
84
84
  先验证外部 `.sha256`,再解压并执行 `node bin/media-agent.mjs setup`;Skill 安装使用同一入口的 `skills install`。包内 manifest 会检查缺失、篡改、额外文件和符号链接,并在安装或依赖下载前拒绝不完整制品。校验哈希用于验证完整性,不能替代可信下载来源。
85
85
 
86
86
  ## 升级与回滚
87
87
 
88
+ 1.1.1 起先执行 `media-agent upgrade --check --json --home <原运行目录>`。
89
+ 该命令只读检查活动 Profile 锁、浏览器进程、发布账本及旧入口;退出码 6
90
+ 表示需要先处理阻塞。它是状态快照,不会暂停 Hermes,也不等于无停机升级。
91
+ 先停止受影响 Agent 接收新任务,等待原任务收尾,再执行 setup。
92
+ setup 在修改依赖或切换代码前重复检查;不删除活动锁,也不自动解决未知发布结果。
93
+
88
94
  1. 安装新版 npm 包,然后运行 `setup`;已有账号配置、Profile、任务记录不覆盖。
89
95
  2. 按需运行 `skills install`,审阅备份与定制合并。
90
96
  3. 运行 `doctor`、CLI 离线检查,再进行所需在线验收。
@@ -100,4 +106,34 @@ media-agent config import /absolute/config-backup --home /absolute/new-runtime
100
106
 
101
107
  先安装新版 npm 包并执行 `setup`,再更新对应 Agent 的 Skill。检查自定义 Skill、定时任务和外部脚本中的旧路径,统一改用 `media-agent`。安装器会提示已有旧入口但不会删除它们,以免破坏尚未迁移的调用方;确认全部迁移并结束旧任务后再清理运行目录内的旧程序。不要删除 Profile、登录态或业务记录。
102
108
 
103
- 本次源码验证使用隔离临时目录,未更新本机既有 Hermes Skill 或真实账号环境;不把本地构建通过写成已部署。
109
+ 离线测试使用隔离临时目录。当前版本另已完成本机 Hermes xx 实例的安全升级与重载,账号配置、浏览器 Profile 和原始发布账本保持不变;这不代表其他安装环境已升级,也不代表平台发布已在线验收。
110
+
111
+ ## 诊断与任务查询
112
+
113
+ ```bash
114
+ media-agent capabilities list --json
115
+ media-agent config validate --json
116
+ media-agent tasks list --profile-id <账号> --json
117
+ media-agent tasks show <task_id> --profile-id <账号> --json
118
+ media-agent upgrade --check --json
119
+ media-agent init <账号> --platform douyin --label <备注> --login phone_qr \
120
+ --account-type personal --capability creator_publish
121
+ ```
122
+
123
+ 发布确认必须使用 prepare 返回的 task_id:
124
+ `media-agent publish-confirm <账号> --task-id <task_id>`;小红书对应
125
+ `media-agent xhs-publish-confirm <账号> --task-id <task_id>`。信号发送成功只表示
126
+ 确认已排队,不表示平台发布成功。没有匹配的存活准备进程时拒绝确认;不再
127
+ 启动新浏览器猜测发布目标。indeterminate 素材不能直接再次准备发布。
128
+
129
+ 热点、榜单、行业分类及短视频导出的旧浏览器脚本尚不能验证全部输入条件,
130
+ 1.1.1 会在实际执行前返回 IMPLEMENTATION_REQUIRED(退出码 6),不再
131
+ 使用固定测试账号或静默忽略日期。仅 dry-run/帮助输出不代表采集可执行;
132
+ 可继续按对应 Skill 的可见浏览器工作流操作,业务验收状态保持不变。
133
+
134
+ ### 历史任务封存
135
+
136
+ 只有用户明确确认某历史任务不再继续、且运行时没有活动锁或浏览器时,才执行
137
+ `media-agent tasks retire <task_id> --profile-id <账号> --reason <确认依据>`。
138
+ 原始账本及 state 不变,封存单绑定最新记录的 SHA-256;后续有新记录会自动使旧封存失效。
139
+ 封存只解除升级等待,不代表作品成功或失败,也不会解除 indeterminate 素材的去重保护。
package/manifest.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "schema": 1,
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "files": {
5
5
  "README.md": {
6
6
  "size": 6354,
7
- "sha256": "f9e5f92209a3a5b0fd65e17322bf6d363c9335b993125be66e959fc24803632d"
7
+ "sha256": "c46e4b57a261ee0be74a5907fdc29928709c809a57eb1b217c8fd92470f467a1"
8
8
  },
9
9
  "bin/media-agent.mjs": {
10
- "size": 5817,
11
- "sha256": "4ff69bc7c27219ea2760afe95ae58379721d8637d564fb6efbb550e1a687ddfa"
10
+ "size": 7489,
11
+ "sha256": "cea5aed016608b747cb432b826786ea154151c9c43f97c008796f9556735ba1b"
12
12
  },
13
13
  "docs/guides/capabilities.md": {
14
- "size": 11775,
15
- "sha256": "d58f69e08ac99fbf4651a343bf768071d2c0e0aaf966e7bc9f3d056cc71379d6"
14
+ "size": 12294,
15
+ "sha256": "9d0b46bbf9c019b8a3f46a68413c6d24ea4b8e58b8d28f999fa80ea2a32f6d5a"
16
16
  },
17
17
  "docs/guides/image-text-publishing.md": {
18
18
  "size": 6490,
19
19
  "sha256": "b50e649c04ef4a22f4988604b6f5cef091c0671aaa183e52e782e955e323222b"
20
20
  },
21
21
  "docs/guides/installation.md": {
22
- "size": 6857,
23
- "sha256": "0929fcc2eddb0fc0e2d21291b564e3fab239a36895fe702b7e4ff4ddb771332b"
22
+ "size": 9130,
23
+ "sha256": "22c812426012066ed344fb25cab34dd54396faf71910936d4a3104e2255c4879"
24
24
  },
25
25
  "docs/guides/runtime.md": {
26
26
  "size": 1657,
@@ -28,15 +28,15 @@
28
28
  },
29
29
  "package.json": {
30
30
  "size": 857,
31
- "sha256": "4a2489155e77bb1d5227259c2707678f6541a6fa7aa861884d38ef0faa7a5b4e"
31
+ "sha256": "a92d2a1931a45826fbfc38357d38ea0c416c5ab426f80d39beeb044c33fd438c"
32
32
  },
33
33
  "pyproject.toml": {
34
34
  "size": 565,
35
- "sha256": "70de33ef9e8436793e7f17df42a48ac5920ed015a76ab9ba21ff43484953b617"
35
+ "sha256": "1cdcb09fbf5d3893bfc69b5573e148f023c22a3c21adbb093dbd86e0b77dd673"
36
36
  },
37
37
  "resources/capabilities.json": {
38
- "size": 1005,
39
- "sha256": "7a44ed8bdc9b0dc3e1b2b4951eae4f2c2e48a6c6de3c38d614ba874c4cbb98ea"
38
+ "size": 2272,
39
+ "sha256": "dca57a44d96c1cc72ca7bf43672f708a8f7c2990298399736c58c8e8fce3f30b"
40
40
  },
41
41
  "resources/configs/accounts.yaml": {
42
42
  "size": 631,
@@ -95,8 +95,8 @@
95
95
  "sha256": "050128427ee874f5b4fede8e048cc2bd737e97f4983eda1a8481bf9c6a7eb04b"
96
96
  },
97
97
  "skills/douyin-creator-index/SKILL.md": {
98
- "size": 2392,
99
- "sha256": "396d4426a1e91582636b56b82ef1731e44020e6d5d65cf205c352025bd410c5a"
98
+ "size": 2723,
99
+ "sha256": "73b93e9c8701321077b3679ce7b3e9f5fbba5db3248faea2e63d839c3ebab1e6"
100
100
  },
101
101
  "skills/douyin-creator-index/agents/openai.yaml": {
102
102
  "size": 271,
@@ -111,8 +111,8 @@
111
111
  "sha256": "a4454ea33c2717c75240c6761dbdf563782a456dca4da9419d00c5e8f041160a"
112
112
  },
113
113
  "skills/douyin-creator-publish/SKILL.md": {
114
- "size": 3158,
115
- "sha256": "9405109644e4b1171706844f22ef2142c9ff888e13b423d38f3175558d72e790"
114
+ "size": 3425,
115
+ "sha256": "58bb629902d94bc03aa6fcac61d02f6a8446f65b65d57c2359b5d1f32d91a949"
116
116
  },
117
117
  "skills/douyin-creator-publish/agents/openai.yaml": {
118
118
  "size": 267,
@@ -135,16 +135,16 @@
135
135
  "sha256": "76a7a8a2537b01b28bd131ecef7c878457678247a76e508475e234198b391bdd"
136
136
  },
137
137
  "skills/douyin-enterprise-short-video-export/SKILL.md": {
138
- "size": 1679,
139
- "sha256": "e12142fdb89381e1cd10adebe4023c9a890ea8ffca3b1502b8048fc2a605f6a5"
138
+ "size": 2010,
139
+ "sha256": "df7e3b34eca684334547cbd2b0cc844c51fab41c7dd49956a67b34c2357a3e95"
140
140
  },
141
141
  "skills/douyin-enterprise-short-video-export/agents/openai.yaml": {
142
142
  "size": 274,
143
143
  "sha256": "bad374a6c819bf02c0d60d6cd42670384dd9bc5acce25930d4c5d3238001f4d3"
144
144
  },
145
145
  "skills/douyin-enterprise-video-rankings/SKILL.md": {
146
- "size": 4390,
147
- "sha256": "ae64dff3805efba2697483511d8cd81c4c8f52e3b48e7483fcaaff8535952414"
146
+ "size": 4721,
147
+ "sha256": "81cd57bb3ce0f136d03ba4a97377fdcd55697d4f294b294511194a28f473e8a7"
148
148
  },
149
149
  "skills/douyin-enterprise-video-rankings/agents/openai.yaml": {
150
150
  "size": 335,
@@ -207,8 +207,8 @@
207
207
  "sha256": "ef3c4c9cba3b079f26a0a676b55b195ff39a114f66757f992986f08aba2a841f"
208
208
  },
209
209
  "skills/xiaohongshu-creator-publish/SKILL.md": {
210
- "size": 11564,
211
- "sha256": "9a738ef1cd78204b518e57eff377e163fb4acd058e24f446e5f4d136860acdff"
210
+ "size": 11831,
211
+ "sha256": "17a8a40293c0cdd045db82aba4848ae0488f2bc20e1884ecb0975c9ad2970f30"
212
212
  },
213
213
  "skills/xiaohongshu-creator-publish/agents/openai.yaml": {
214
214
  "size": 284,
@@ -219,12 +219,12 @@
219
219
  "sha256": "04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1"
220
220
  },
221
221
  "src/media_agent/cli.py": {
222
- "size": 1016,
223
- "sha256": "5d8cdfae8a77d37cde70737f4b8ac8ad850330cf75512184cfcafc7dab9f2346"
222
+ "size": 1285,
223
+ "sha256": "1439ad26629c6f81fcd59034930a4e136c084a54accb82cd60489735079c3d39"
224
224
  },
225
225
  "src/media_agent/commands.sh": {
226
- "size": 17905,
227
- "sha256": "b0a8cbd3ad0ba993984bac0d6e9314ad92429be6e9edc5133321c6584c52a3e0"
226
+ "size": 18171,
227
+ "sha256": "9a0ef70ee4719dd13dd5a6d76be240571744456c5d5c3aa13f0b82611c90cf6a"
228
228
  },
229
229
  "src/media_agent/platforms/__init__.py": {
230
230
  "size": 32,
@@ -235,40 +235,40 @@
235
235
  "sha256": "04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1"
236
236
  },
237
237
  "src/media_agent/platforms/douyin/check_login.py": {
238
- "size": 9376,
239
- "sha256": "b73756a197b70c81aa1a62c88c138318e5504c783e0e4bcfa5de7ac33536392c"
238
+ "size": 9056,
239
+ "sha256": "d43b2e7a49b17eb081361785a7b2fc1fbca749b66a503e3966c01d37a39303ec"
240
240
  },
241
241
  "src/media_agent/platforms/douyin/collect_industry_taxonomy.py": {
242
- "size": 8377,
243
- "sha256": "9d91d831760579f5e0cf2f6b413fdd917f14f46081aff4fb221f681bf281c704"
242
+ "size": 8727,
243
+ "sha256": "b4f3f9b2026bba81e30330c5d6a91e823ec4d37dc8af233bc67324e0f74d74ce"
244
244
  },
245
245
  "src/media_agent/platforms/douyin/collect_video_rankings.py": {
246
- "size": 15857,
247
- "sha256": "d117921fd6a4c313ce359f40a13bcf719f0379fc7bf20eea7d8095bf5de4280a"
246
+ "size": 16244,
247
+ "sha256": "75173f6ee53f64ae15a1f40ff283209bf5a8470935b0eb35b8a9ca50f2db4bde"
248
248
  },
249
249
  "src/media_agent/platforms/douyin/douyin_full_login.py": {
250
250
  "size": 18475,
251
251
  "sha256": "a0ec4757b9c95099527b1300b5b3d26d477263b34f53d6d32af002b0879eab36"
252
252
  },
253
253
  "src/media_agent/platforms/douyin/douyin_hotspot_v2.py": {
254
- "size": 20733,
255
- "sha256": "0afe2f18db2b7a31ea91161a055a07d91a74561f61f600e4785b3baa13316acd"
254
+ "size": 21095,
255
+ "sha256": "ee8f1e6b98b99dd168f17e20d78cfccc7e102ca3a4948b8d035dbac9eab31f5f"
256
256
  },
257
257
  "src/media_agent/platforms/douyin/douyin_publish.py": {
258
- "size": 46567,
259
- "sha256": "1e0d9edacbb09c103b350d9d6227868787f0ea7fdade30f5dc301b0ba8424e84"
258
+ "size": 40893,
259
+ "sha256": "9e296eba6ac3dbe91ec57f10ac16a36c12fd17200389624e52671a2ac847c5be"
260
260
  },
261
261
  "src/media_agent/platforms/douyin/enterprise_login.py": {
262
- "size": 5138,
263
- "sha256": "ddb90725b49a4b60dc1fb95e31e1b02835320a3081431bd5d113954acdfe1ac7"
262
+ "size": 4760,
263
+ "sha256": "4e8feaaa4f5117c255d99af480a740684e8d23e4bf76062db928ca1b14b62e34"
264
264
  },
265
265
  "src/media_agent/platforms/douyin/export_short_video.py": {
266
- "size": 2753,
267
- "sha256": "cd5e317d37ac3764a170b0706bbdeea21fc008e5e802a706023288c0f0567534"
266
+ "size": 3096,
267
+ "sha256": "fded1bf93d9f8296add3237e792074896f4f362a08d2d3d215c9194d71b1ecc2"
268
268
  },
269
269
  "src/media_agent/platforms/douyin/login_controller.py": {
270
- "size": 21378,
271
- "sha256": "497a8521227d20d8fc26177345c5205a44b7f53a13ccb2ec88f3249903ddb5c4"
270
+ "size": 20974,
271
+ "sha256": "0f55205a794773997c0b7657e1ab12a3d97e3967460500a239b64e94926df5d6"
272
272
  },
273
273
  "src/media_agent/platforms/douyin/validate_industry_taxonomy.py": {
274
274
  "size": 5869,
@@ -287,8 +287,8 @@
287
287
  "sha256": "a5db04d0ab4a22e04ce09b96dcba5f98bcccbd4a83400426b9b9f81df47a2fcc"
288
288
  },
289
289
  "src/media_agent/platforms/toutiao/toutiao_login_controller.py": {
290
- "size": 12043,
291
- "sha256": "8b8d831ede6731b1ec930c6073705c57e2f0039be37ec658b660bcda5c84c649"
290
+ "size": 11318,
291
+ "sha256": "627a55ac589465f331b53feb342874b65008d9d1071c6f70803cada0f6b4124a"
292
292
  },
293
293
  "src/media_agent/platforms/toutiao/toutiao_login_evidence.py": {
294
294
  "size": 1691,
@@ -303,12 +303,12 @@
303
303
  "sha256": "04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1"
304
304
  },
305
305
  "src/media_agent/platforms/xiaohongshu/xiaohongshu_check_login.py": {
306
- "size": 8395,
307
- "sha256": "f03b1b3c2439cb638cdb7c6a338c8496c2690dd15198c0c9126b29074f21a48e"
306
+ "size": 8089,
307
+ "sha256": "9eb7101f6aa8ed3b9faafcd5e4a038e6bae407c2e60ba8427c45ccfee2ae5caf"
308
308
  },
309
309
  "src/media_agent/platforms/xiaohongshu/xiaohongshu_login_controller.py": {
310
- "size": 15706,
311
- "sha256": "dedad1bdc99a55698afd1e7822becddf0cd54c0d3ed47e28725a0c10e4929584"
310
+ "size": 15391,
311
+ "sha256": "37ca676d0d081c87d5a5680c1d09939ca69a14a42348f7bde573c2f16a4b3900"
312
312
  },
313
313
  "src/media_agent/platforms/xiaohongshu/xiaohongshu_login_evidence.py": {
314
314
  "size": 1706,
@@ -319,25 +319,41 @@
319
319
  "sha256": "0a97a6c5db896a6272bd392d92b3853e9fe0968c689c4aa8cd2d7065044a5777"
320
320
  },
321
321
  "src/media_agent/platforms/xiaohongshu/xiaohongshu_publish.py": {
322
- "size": 37692,
323
- "sha256": "55883e3891eb83f22021d2b86f69524e05e2972a16c2e7c8464dd4f142f06983"
322
+ "size": 33882,
323
+ "sha256": "2adb9fe6f68a9dc38c99aed504eb709ad71aef7093433a03594658fcbdcf0e72"
324
324
  },
325
325
  "src/media_agent/runtime/__init__.py": {
326
326
  "size": 32,
327
327
  "sha256": "04811b13579095b984b1456bdc429b6b687aca691d478cc596a611391f0ec1a1"
328
328
  },
329
329
  "src/media_agent/runtime/account_manager.py": {
330
- "size": 25222,
331
- "sha256": "d9593fdfe4a03b5a9f1e863a2fa3e4ea0751d8ee9ba565a1fc5dd106951e1014"
330
+ "size": 22928,
331
+ "sha256": "feb4cd0c47843a2a71a621071c4e21c8459be8fead88a32e900aeb33400413ef"
332
+ },
333
+ "src/media_agent/runtime/arguments.py": {
334
+ "size": 3359,
335
+ "sha256": "8f045a85fc513dacba921356608f5d8084a59c278a2175711bc418ed7fce4c16"
332
336
  },
333
337
  "src/media_agent/runtime/browser.py": {
334
338
  "size": 228,
335
339
  "sha256": "48eb9fd61a6a9f9695d6f4a4eab776ee90641bd3ae57b3a5242d4e2e58986e67"
336
340
  },
341
+ "src/media_agent/runtime/diagnostics.py": {
342
+ "size": 9267,
343
+ "sha256": "22004a8cef13a5f38a2e8ad705a1a7296ab854e1aa5dce0ca49149d8b5b2157d"
344
+ },
345
+ "src/media_agent/runtime/locking.py": {
346
+ "size": 2184,
347
+ "sha256": "593fe385a82ebda28069b2409e98c01d23b7efcd1f0b7aac002c169d37adbacf"
348
+ },
337
349
  "src/media_agent/runtime/paths.py": {
338
350
  "size": 263,
339
351
  "sha256": "e9981bf51a388022a82bfe9c5670188c89315e6597788245be74b4eb3559a467"
340
352
  },
353
+ "src/media_agent/runtime/publish_control.py": {
354
+ "size": 4257,
355
+ "sha256": "f27849115624cd8e18f58eadce357f86345f822c91d92e040097230edd56037e"
356
+ },
341
357
  "src/media_agent/script_map.json": {
342
358
  "size": 1668,
343
359
  "sha256": "c337b61e5a047df1dc9a0080c9ad5b0ffed7c9e82bc382896c6b887a73b25f8a"
@@ -351,16 +367,16 @@
351
367
  "sha256": "7cef52f29728dba2b8a863cb496a8f95a047f8330ed30fd8e1a91de1f2f78a22"
352
368
  },
353
369
  "src/node/skills.mjs": {
354
- "size": 4719,
355
- "sha256": "e2a7f88e2deb75221131a452211e0d5709dba33f5fc9e0e151b809c5fbcc0392"
370
+ "size": 4814,
371
+ "sha256": "09f19f27ea4228dd1bd005d0b3c41a37d3470b7d2cde354b539eaca5b2feff63"
356
372
  },
357
373
  "tools/archive_releases.py": {
358
374
  "size": 4703,
359
375
  "sha256": "d0cbccf5f5c349eec03bc9410210d7b9895c4fe251679034f9d109cbda0d9624"
360
376
  },
361
377
  "tools/artifacts.py": {
362
- "size": 2812,
363
- "sha256": "0e3670b8f22c49eed3b87e7e61a4924edcc832c7ab01c54fd9e67a3767bcca01"
378
+ "size": 2859,
379
+ "sha256": "4f186184f889d56b76e532219cbcb5173fbd6f766aaf36aa3551954326014f03"
364
380
  },
365
381
  "tools/build_release.py": {
366
382
  "size": 4188,
@@ -371,8 +387,8 @@
371
387
  "sha256": "f670d0559a2dcbfebb9baf41b8c211ebdacc6fd2320424374c0ca90571e005df"
372
388
  },
373
389
  "tools/install_runtime.py": {
374
- "size": 6207,
375
- "sha256": "a9ee1ce29581090ed81a7a3c9ca39f8c6f66dd3bd4fdaac3f1e7baa3243a9af2"
390
+ "size": 6572,
391
+ "sha256": "49417268bb04989e1b5d1824bd7d3d65425792c5c475738cceb4001cfe3c15d6"
376
392
  },
377
393
  "tools/run_tests.py": {
378
394
  "size": 798,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iducky/media-agent",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Agent Skills and visible-browser Python runtime for social media",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "media-agent-capabilities"
7
- version = "1.1.0"
7
+ version = "1.1.1"
8
8
  description = "Visible-browser execution runtime for Media Agent Skills"
9
9
  requires-python = ">=3.9"
10
10
  dependencies = []