@shadowob/cloud 1.1.6 → 1.1.8

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 (198) hide show
  1. package/README.md +159 -11
  2. package/dist/{agent-browser-CERTMCDL.js → agent-browser-EI7FIK3X.js} +3 -3
  3. package/dist/{agent-browser-CIRZRIY4.js → agent-browser-YXE4ES6Q.js} +3 -3
  4. package/dist/{agent-pack-LF3O5TR4.js → agent-pack-35TFCZKP.js} +1 -1
  5. package/dist/{agent-pack-RQT27V7R.js → agent-pack-UOG6ZAUL.js} +1 -1
  6. package/dist/agentmemory-KP5O7GHB.js +101 -0
  7. package/dist/agentmemory-UV74POU5.js +100 -0
  8. package/dist/{airtable-BG2Q75G2.js → airtable-CXXS3YUN.js} +3 -3
  9. package/dist/{airtable-JCQXFM5D.js → airtable-YZ5JR5JC.js} +3 -3
  10. package/dist/{alipay-TZQI34RB.js → alipay-WED5P3XC.js} +3 -3
  11. package/dist/{alipay-MZX2XCDB.js → alipay-WJTVREMG.js} +3 -3
  12. package/dist/{amap-KPCLZYYL.js → amap-AIN23TQ7.js} +3 -3
  13. package/dist/{amap-5RQB3VGC.js → amap-F6GF7QKB.js} +3 -3
  14. package/dist/{atlassian-LGOEWYC7.js → atlassian-G6PM6UVM.js} +3 -3
  15. package/dist/{atlassian-TVS2A4IU.js → atlassian-IDR2NPJC.js} +3 -3
  16. package/dist/{baidu-appbuilder-QRRL3ETM.js → baidu-appbuilder-JKQIA5TG.js} +3 -3
  17. package/dist/{baidu-appbuilder-6UMESXHW.js → baidu-appbuilder-KVMCIFYH.js} +3 -3
  18. package/dist/{baidu-maps-HEPMVP5D.js → baidu-maps-GWMXV6YT.js} +3 -3
  19. package/dist/{baidu-maps-HXC4FBVP.js → baidu-maps-ZXGT6QZM.js} +3 -3
  20. package/dist/{baidu-netdisk-G5Q6B5NH.js → baidu-netdisk-J5SLQVWW.js} +3 -3
  21. package/dist/{baidu-netdisk-RS2K5W2M.js → baidu-netdisk-PONM3DY6.js} +3 -3
  22. package/dist/{baidu-smartprogram-JHD3XWF6.js → baidu-smartprogram-WJ5JMO6V.js} +3 -3
  23. package/dist/{baidu-smartprogram-EWTK5WKK.js → baidu-smartprogram-Y5WBR7RX.js} +3 -3
  24. package/dist/{browserbase-IUIYVYI7.js → browserbase-CGVQHRC4.js} +3 -3
  25. package/dist/{browserbase-JFO2PCIA.js → browserbase-PVWYTEZC.js} +3 -3
  26. package/dist/{canva-3YOFL7JS.js → canva-COCBQAT2.js} +3 -3
  27. package/dist/{canva-FMYN65SM.js → canva-RSTJSEX5.js} +3 -3
  28. package/dist/{chunk-ULOJLXQV.js → chunk-3CT6RQNM.js} +766 -482
  29. package/dist/{chunk-SIDBK5SZ.js → chunk-4YO3NA26.js} +1 -1
  30. package/dist/{chunk-RECNVWMT.js → chunk-6V7MW4HU.js} +17 -3
  31. package/dist/{chunk-2FWJSE6Z.js → chunk-EVV774KS.js} +1 -1
  32. package/dist/{chunk-SVMXSIMG.js → chunk-F6CQ6GAG.js} +2 -1
  33. package/dist/{chunk-JUPAE5IA.js → chunk-OL5VH6RN.js} +72 -69
  34. package/dist/{chunk-POSVEKIY.js → chunk-OYY64ZSX.js} +17 -3
  35. package/dist/{chunk-FSW4TNHN.js → chunk-P5Y6F2NH.js} +766 -482
  36. package/dist/{chunk-EEFMJYKB.js → chunk-PSK2SYZ3.js} +2 -1
  37. package/dist/{chunk-HRTBOZ7O.js → chunk-PYJRFKPN.js} +1 -1
  38. package/dist/{chunk-JY2HTT7Q.js → chunk-RMDY3W4V.js} +6 -0
  39. package/dist/{chunk-I3NRNCDR.js → chunk-X2SREECR.js} +6 -6
  40. package/dist/{chunk-XFJX4NWN.js → chunk-X5VOIA72.js} +6 -6
  41. package/dist/{chunk-CTNUKOQE.js → chunk-Y5BJ3EW2.js} +6 -0
  42. package/dist/{chunk-IXN3FU5J.js → chunk-Y6BKVDG7.js} +1 -1
  43. package/dist/{chunk-6P2K6QZR.js → chunk-ZGMWSSCC.js} +72 -69
  44. package/dist/{claude-plugin-577TAQVS.js → claude-plugin-FPN32WMT.js} +1 -1
  45. package/dist/{claude-plugin-L3MXJJ6J.js → claude-plugin-IYHOVTVL.js} +1 -1
  46. package/dist/cli.js +930 -149
  47. package/dist/{cloudflare-RDFPKMM5.js → cloudflare-U3RHJJKK.js} +3 -3
  48. package/dist/{cloudflare-HBBABPK6.js → cloudflare-ZHN7UGPX.js} +3 -3
  49. package/dist/{cnb-FLP3QX46.js → cnb-AMXC5I7D.js} +3 -3
  50. package/dist/{cnb-YAVVEYFB.js → cnb-P3IZ4JTD.js} +3 -3
  51. package/dist/console/index.html +1 -1
  52. package/dist/console/static/css/index.f4563d95.css +1 -0
  53. package/dist/console/static/js/index.020abc71.js +1 -0
  54. package/dist/{coze-E6VGRNLV.js → coze-66RYMKVB.js} +3 -3
  55. package/dist/{coze-C6PMDPBI.js → coze-YE3BINXP.js} +3 -3
  56. package/dist/{dashboard.command-SCAAQ23X.js → dashboard.command-BRPZCZER.js} +1 -1
  57. package/dist/{dashboard.command-H5DIGLUR.js → dashboard.command-GUHSJ2CN.js} +1 -1
  58. package/dist/{dingtalk-JNRNRN7E.js → dingtalk-4RFQG7N2.js} +3 -3
  59. package/dist/{dingtalk-WZGGIAHJ.js → dingtalk-VNFKXD2P.js} +3 -3
  60. package/dist/{douyin-miniprogram-AIJPPIZH.js → douyin-miniprogram-UEALAGOS.js} +3 -3
  61. package/dist/{douyin-miniprogram-HCYZ5NBW.js → douyin-miniprogram-UNB6UO2I.js} +3 -3
  62. package/dist/{figma-2YYNSCDX.js → figma-A264OWU5.js} +3 -3
  63. package/dist/{figma-RYOBMENP.js → figma-Y4TGSDZP.js} +3 -3
  64. package/dist/{firebase-OYSY6HPT.js → firebase-AI3MAGYG.js} +3 -3
  65. package/dist/{firebase-2IJDDBXX.js → firebase-ZGQARUIH.js} +3 -3
  66. package/dist/{firecrawl-2T3SBUW7.js → firecrawl-2JW7DMTH.js} +3 -3
  67. package/dist/{firecrawl-IYYXLAZM.js → firecrawl-UURQ5P5N.js} +3 -3
  68. package/dist/{flyai-QS5Q6FJR.js → flyai-EJGDMYFA.js} +3 -3
  69. package/dist/{flyai-7FJ4TRAG.js → flyai-ZFMZBBHJ.js} +3 -3
  70. package/dist/{gitagent-MWI75OIX.js → gitagent-5SDBYFNA.js} +1 -1
  71. package/dist/{gitagent-YBMWY7NZ.js → gitagent-ODXPCR4X.js} +1 -1
  72. package/dist/{gitee-3N7OFOM7.js → gitee-5UMJ4BC7.js} +3 -3
  73. package/dist/{gitee-KVNK6KLZ.js → gitee-D6NAZTCO.js} +3 -3
  74. package/dist/{github-LUEC2LID.js → github-JBLDKIA3.js} +3 -3
  75. package/dist/{github-XRO5Z3GC.js → github-PZQAVEZP.js} +3 -3
  76. package/dist/{google-ads-VPKWTX67.js → google-ads-BIFQOJ5M.js} +3 -3
  77. package/dist/{google-ads-A3QAJI4D.js → google-ads-QU3LJE4O.js} +3 -3
  78. package/dist/{google-analytics-C4UR5ZR2.js → google-analytics-7VZ6YZVA.js} +3 -3
  79. package/dist/{google-analytics-XDYZA2B7.js → google-analytics-HXMPCL5V.js} +3 -3
  80. package/dist/{google-workspace-YX35SHHX.js → google-workspace-6SEBJ4VA.js} +2 -2
  81. package/dist/{google-workspace-LL3EWVHH.js → google-workspace-L3AMJLCF.js} +2 -2
  82. package/dist/{huawei-xiaoyi-KPWLTSHB.js → huawei-xiaoyi-C6QIJMPM.js} +3 -3
  83. package/dist/{huawei-xiaoyi-6BSMGJHR.js → huawei-xiaoyi-JGLXWU5P.js} +3 -3
  84. package/dist/{hubspot-FTIEMNZO.js → hubspot-LACJGE6D.js} +3 -3
  85. package/dist/{hubspot-DIUHGEDI.js → hubspot-XWPRO4KZ.js} +3 -3
  86. package/dist/{huggingface-UUXK2RHK.js → huggingface-26QQZK4C.js} +3 -3
  87. package/dist/{huggingface-MJCOXA7E.js → huggingface-CQICNA2R.js} +3 -3
  88. package/dist/index.d.ts +1338 -1
  89. package/dist/index.js +1364 -226
  90. package/dist/{inference-ai-image-generation-PXV6IG4U.js → inference-ai-image-generation-5KYIUWT6.js} +3 -3
  91. package/dist/{inference-ai-image-generation-CMI6R5T3.js → inference-ai-image-generation-J2NYDCLZ.js} +3 -3
  92. package/dist/{inference-sh-7AZOLEFI.js → inference-sh-5SWQTK73.js} +3 -3
  93. package/dist/{inference-sh-ABQOD3YF.js → inference-sh-PTQF6T3R.js} +3 -3
  94. package/dist/{init.command-WGKN3GC6.js → init.command-C7UKPK2Y.js} +3 -3
  95. package/dist/{init.command-775GLXTC.js → init.command-UNL66BMR.js} +3 -3
  96. package/dist/{klaviyo-LDPBWBSS.js → klaviyo-4UNPMBFT.js} +3 -3
  97. package/dist/{klaviyo-6K5YEFNH.js → klaviyo-SLYNEULT.js} +3 -3
  98. package/dist/{kuaidi100-HGFM5VK2.js → kuaidi100-HZKV5AIS.js} +3 -3
  99. package/dist/{kuaidi100-UHPFCVXP.js → kuaidi100-ZQUW7GHH.js} +3 -3
  100. package/dist/lark-HQUZNHDI.js +382 -0
  101. package/dist/lark-PAV7XWJS.js +381 -0
  102. package/dist/{linear-T4ORUP7N.js → linear-PYGQ5SLK.js} +3 -3
  103. package/dist/{linear-7QFSFPOD.js → linear-VJLYNTUF.js} +3 -3
  104. package/dist/{lovart-PDUXRUHJ.js → lovart-KC6SVNAJ.js} +3 -3
  105. package/dist/{lovart-QO3SK55T.js → lovart-WVKY4RR4.js} +3 -3
  106. package/dist/{meta-ads-SCNFI45S.js → meta-ads-E6XT33GI.js} +3 -3
  107. package/dist/{meta-ads-V6XPZWX3.js → meta-ads-RJ6DWRYN.js} +3 -3
  108. package/dist/{miclaw-TPPPS2WN.js → miclaw-4BA3A2YN.js} +3 -3
  109. package/dist/{miclaw-5CNTW7VV.js → miclaw-LUV6DCHX.js} +3 -3
  110. package/dist/{model-provider-KFB76XV5.js → model-provider-SYXJZ3JD.js} +1 -1
  111. package/dist/{model-provider-AVSFJSZP.js → model-provider-U7NEYA3Y.js} +1 -1
  112. package/dist/nature-skills-G76ABIWZ.js +143 -0
  113. package/dist/nature-skills-SQHMFXKT.js +142 -0
  114. package/dist/{notion-WFA7KGZZ.js → notion-2JZAKOFP.js} +1 -1
  115. package/dist/{notion-FZK76MN2.js → notion-O3NO5TJH.js} +1 -1
  116. package/dist/{oceanengine-3JZUS3PP.js → oceanengine-D23UZGVB.js} +3 -3
  117. package/dist/{oceanengine-5BRIJVJE.js → oceanengine-WDK2OXX5.js} +3 -3
  118. package/dist/{opencli-PFXHGCS2.js → opencli-36P63YNU.js} +3 -3
  119. package/dist/{opencli-VIGRJTGH.js → opencli-SUHDFR33.js} +3 -3
  120. package/dist/{paypal-Z5JYHIWD.js → paypal-K27SUW3B.js} +3 -3
  121. package/dist/{paypal-33UADIPR.js → paypal-OPZ3KOV5.js} +3 -3
  122. package/dist/{playwright-SQAQ3DZG.js → playwright-2ULT3NIC.js} +3 -3
  123. package/dist/{playwright-MG5WHK47.js → playwright-3Q7LBILG.js} +3 -3
  124. package/dist/{plugins-HZBWK3WQ.js → plugins-2MITZ4ZD.js} +2 -2
  125. package/dist/{plugins-I4GD5SZX.js → plugins-UK2QWD6G.js} +2 -2
  126. package/dist/{posthog-MU5MAJOQ.js → posthog-E3EHXLAN.js} +3 -3
  127. package/dist/{posthog-RJRRKDWB.js → posthog-KPJVLGX6.js} +3 -3
  128. package/dist/{salesforce-34FVIJTG.js → salesforce-FGPNG7FB.js} +3 -3
  129. package/dist/{salesforce-3QZ6OFVO.js → salesforce-TVHISKBC.js} +3 -3
  130. package/dist/{sentry-PIWW46VA.js → sentry-BZ3J3MZM.js} +3 -3
  131. package/dist/{sentry-MCIRMACU.js → sentry-XC57YRAJ.js} +3 -3
  132. package/dist/{seo-suite-WJXMA3S4.js → seo-suite-2MDEDLAB.js} +3 -3
  133. package/dist/{seo-suite-4SQ3I67Q.js → seo-suite-U75O3QP6.js} +3 -3
  134. package/dist/{serve.command-2AHJI665.js → serve.command-G5RVQFUD.js} +3 -3
  135. package/dist/{serve.command-Q46LHQG6.js → serve.command-PYGDG7K3.js} +3 -3
  136. package/dist/{shadowob-PRSMI5MW.js → shadowob-3QZ7DLDW.js} +158 -31
  137. package/dist/{shadowob-JELOWHWX.js → shadowob-CJLOEKFP.js} +158 -31
  138. package/dist/{sherlock-2PKY2E2Y.js → sherlock-CQFUHKDH.js} +3 -3
  139. package/dist/{sherlock-C5ZWPPVT.js → sherlock-DONK2I6E.js} +3 -3
  140. package/dist/{shopify-GL3NFVGE.js → shopify-NO5GI3WD.js} +3 -3
  141. package/dist/{shopify-R4G3UXM6.js → shopify-VW2KLKH5.js} +3 -3
  142. package/dist/{skill-discovery-YPXXV622.js → skill-discovery-6JEPPKKM.js} +3 -3
  143. package/dist/{skill-discovery-7INAUP4D.js → skill-discovery-PWRAVGIS.js} +3 -3
  144. package/dist/skills/shadowob-cli/SKILL.md +33 -22
  145. package/dist/{stripe-LJNPQ3CQ.js → stripe-HCNCKG4C.js} +1 -1
  146. package/dist/{stripe-C22RR4ZS.js → stripe-IU3KTJ4H.js} +1 -1
  147. package/dist/{supabase-IRNQ54FJ.js → supabase-KRL7JW2D.js} +3 -3
  148. package/dist/{supabase-N4ONFJNQ.js → supabase-TYEBTZNO.js} +3 -3
  149. package/dist/{taobao-aipaas-LRR4GMO3.js → taobao-aipaas-PEUIDOYP.js} +3 -3
  150. package/dist/{taobao-aipaas-RVKORSF4.js → taobao-aipaas-SA5E4MZA.js} +3 -3
  151. package/dist/{tapd-TMQRSMFG.js → tapd-6DDIUPVQ.js} +3 -3
  152. package/dist/{tapd-3JPVJ7XH.js → tapd-OTYLSZGY.js} +3 -3
  153. package/dist/{tencent-ads-UHC6OPBV.js → tencent-ads-OW2TAMH5.js} +3 -3
  154. package/dist/{tencent-ads-IGD33LO7.js → tencent-ads-XTQZ27YT.js} +3 -3
  155. package/dist/{tencent-docs-C3A4J3CJ.js → tencent-docs-6D6A2VCO.js} +3 -3
  156. package/dist/{tencent-docs-O2SC4FHL.js → tencent-docs-K3TMUIWD.js} +3 -3
  157. package/dist/{tencent-maps-OQOKHVW2.js → tencent-maps-IZYWITJZ.js} +3 -3
  158. package/dist/{tencent-maps-HMMWMNF4.js → tencent-maps-SWI7CLQY.js} +3 -3
  159. package/dist/text-to-cad-B2UP6PKA.js +192 -0
  160. package/dist/text-to-cad-I4B6VBFV.js +193 -0
  161. package/dist/{vercel-KOXDDTHX.js → vercel-CCKRC76D.js} +3 -3
  162. package/dist/{vercel-OLNVDWMG.js → vercel-SBGEMIJJ.js} +3 -3
  163. package/dist/{webflow-OMJKZM54.js → webflow-C3EHNNSN.js} +3 -3
  164. package/dist/{webflow-FULU5Q2I.js → webflow-ZFBJH4CR.js} +3 -3
  165. package/dist/{wechat-miniprogram-skyline-KYCDMQNW.js → wechat-miniprogram-skyline-VNCRERHX.js} +3 -3
  166. package/dist/{wechat-miniprogram-skyline-VR4FVIQL.js → wechat-miniprogram-skyline-Z5JQUV5Q.js} +3 -3
  167. package/dist/{wechat-pay-BCMAJ6UW.js → wechat-pay-RPDKPUEB.js} +3 -3
  168. package/dist/{wechat-pay-YQQKXVUI.js → wechat-pay-XVDGJRF2.js} +3 -3
  169. package/dist/{wonda-NGWIORYN.js → wonda-EL2P44S7.js} +3 -3
  170. package/dist/{wonda-RBABXFNM.js → wonda-XK5JK4X3.js} +3 -3
  171. package/dist/{wordpress-woocommerce-RNA5HB3N.js → wordpress-woocommerce-4MEE5A2M.js} +3 -3
  172. package/dist/{wordpress-woocommerce-RDIUTHYT.js → wordpress-woocommerce-6ECNM2QU.js} +3 -3
  173. package/dist/{wps-LUWHMZQQ.js → wps-E4OZEMOF.js} +3 -3
  174. package/dist/{wps-DAEFQHDE.js → wps-JNQUC4JS.js} +3 -3
  175. package/dist/{yuque-HCHTJWNI.js → yuque-GLAAOS7X.js} +3 -3
  176. package/dist/{yuque-KRH5O74J.js → yuque-MEF6VFLJ.js} +3 -3
  177. package/images/RUNNERS.md +15 -0
  178. package/images/cc-connect-runner/entrypoint.mjs +228 -0
  179. package/images/claude-runner/RUNNER.md +5 -3
  180. package/images/codex-runner/RUNNER.md +5 -3
  181. package/images/gemini-runner/RUNNER.md +5 -2
  182. package/images/hermes-runner/RUNNER.md +4 -2
  183. package/images/hermes-runner/entrypoint.mjs +269 -1
  184. package/images/openclaw-runner/Dockerfile +1 -0
  185. package/images/openclaw-runner/RUNNER.md +3 -0
  186. package/images/openclaw-runner/entrypoint.mjs +249 -1
  187. package/images/openclaw-runner/warm-runtime-deps.mjs +1 -3
  188. package/images/opencode-runner/RUNNER.md +5 -3
  189. package/package.json +3 -3
  190. package/templates/agent-marketplace-buddy.template.json +4 -1
  191. package/templates/bmad-method-buddy.template.json +4 -1
  192. package/templates/code-trainer.template.json +331 -0
  193. package/templates/gstack-buddy.template.json +4 -1
  194. package/templates/little-match-girl.template.json +10 -3
  195. package/dist/console/static/css/index.7f91f806.css +0 -1
  196. package/dist/console/static/js/index.4487e1ff.js +0 -1
  197. package/dist/lark-6LNA3LUQ.js +0 -103
  198. package/dist/lark-URVBZNS4.js +0 -102
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ attachConnectorRuntimeAssets,
4
+ connectorManifest,
5
+ installedCheck
6
+ } from "./chunk-F6CQ6GAG.js";
7
+ import "./chunk-6V7MW4HU.js";
8
+ import {
9
+ defineConnectorPlugin
10
+ } from "./chunk-Y5BJ3EW2.js";
11
+ import "./chunk-AD3JTIU3.js";
12
+
13
+ // src/plugins/text-to-cad/index.ts
14
+ var PLUGIN_ID = "text-to-cad";
15
+ var SKILLS_MOUNT = `/workspace/.agents/plugin-skills/${PLUGIN_ID}`;
16
+ var RUNTIME_MOUNT = `/opt/shadow-plugin-deps/${PLUGIN_ID}`;
17
+ var PYTHON_DEPS_PATH = `${RUNTIME_MOUNT}/python`;
18
+ var manifest = connectorManifest({
19
+ id: "text-to-cad",
20
+ name: "CAD Skills",
21
+ description: "CAD Skills mounts text-to-cad workflows for STEP-first CAD generation, inspection, rendering, robot descriptions, standard parts, and fabrication preflight.",
22
+ category: "automation",
23
+ icon: "boxes",
24
+ website: "https://www.cadskills.xyz",
25
+ docs: "https://github.com/earthtojake/text-to-cad",
26
+ fields: [],
27
+ authType: "none",
28
+ capabilities: ["tool", "data-source", "action", "cli"],
29
+ tags: ["cad", "step", "stl", "dxf", "robotics", "urdf", "sdf", "srdf", "hardware"],
30
+ popularity: 88
31
+ });
32
+ var runtimeDependencies = [
33
+ {
34
+ id: "text-to-cad-python-prereqs",
35
+ kind: "system-package",
36
+ packages: ["python3", "py3-pip", "libgl1", "libglib2.0-0", "libxrender1", "libxext6", "libsm6"],
37
+ description: "Python, pip, and shared libraries for CAD skill helper scripts"
38
+ },
39
+ {
40
+ id: "text-to-cad-python-packages",
41
+ kind: "shell",
42
+ command: [
43
+ "python3 -m pip install --no-cache-dir --target /runtime-deps/python 'build123d' 'ezdxf' 'numpy' 'trimesh' 'vtk' 'py-lib3mf'"
44
+ ],
45
+ description: "Python CAD dependencies used by text-to-cad scripts"
46
+ },
47
+ {
48
+ id: "text-to-cad-python-compat",
49
+ kind: "shell",
50
+ command: [
51
+ [
52
+ "printf 'from lib3mf import Lib3MF\\n' > /runtime-deps/python/py_lib3mf.py",
53
+ "cat > /runtime-deps/python/sitecustomize.py <<'SHADOW_TEXT_TO_CAD_SITE_CUSTOMIZE'",
54
+ "try:",
55
+ " import build123d.exporters3d as _build123d_exporters3d",
56
+ " from OCP.APIHeaderSection import APIHeaderSection_MakeHeader",
57
+ " from OCP.TCollection import TCollection_HAsciiString",
58
+ " _build123d_exporters3d.APIHeaderSection_MakeHeader = APIHeaderSection_MakeHeader",
59
+ " _build123d_exporters3d.TCollection_HAsciiString = TCollection_HAsciiString",
60
+ "except Exception:",
61
+ " pass",
62
+ "SHADOW_TEXT_TO_CAD_SITE_CUSTOMIZE"
63
+ ].join("\n")
64
+ ],
65
+ description: "Compatibility shims for build123d 3MF and STEP exporter imports"
66
+ },
67
+ {
68
+ id: "text-to-cad-viewer-deps",
69
+ kind: "shell",
70
+ phase: "post-source",
71
+ command: [
72
+ "if [ -f /plugin-skills/render/scripts/viewer/package-lock.json ]; then npm --prefix /plugin-skills/render/scripts/viewer ci; fi"
73
+ ],
74
+ description: "Node dependencies for the CAD Explorer viewer bundled with the render skill"
75
+ },
76
+ {
77
+ id: "text-to-cad-skill-compat",
78
+ kind: "shell",
79
+ phase: "post-source",
80
+ command: [
81
+ [
82
+ "python3 - <<'SHADOW_TEXT_TO_CAD_PATCH_SKILLS'",
83
+ "from pathlib import Path",
84
+ "path = Path('/plugin-skills/step-parts/scripts/download_step_part.py')",
85
+ "if path.exists():",
86
+ " text = path.read_text(encoding='utf-8')",
87
+ ` text = text.replace('DEFAULT_ORIGIN = "https://api.step.parts"', 'DEFAULT_ORIGIN = "https://www.step.parts"')`,
88
+ " path.write_text(text, encoding='utf-8')",
89
+ "SHADOW_TEXT_TO_CAD_PATCH_SKILLS"
90
+ ].join("\n")
91
+ ],
92
+ description: "Compatibility patch for the live step.parts API origin"
93
+ },
94
+ {
95
+ id: "text-to-cad-cli-shims",
96
+ kind: "shell",
97
+ phase: "post-source",
98
+ command: [
99
+ [
100
+ "mkdir -p /runtime-deps/bin",
101
+ "cat > /runtime-deps/bin/cad-step <<'SHADOW_CAD_STEP'",
102
+ "#!/bin/sh",
103
+ `export PYTHONPATH="${PYTHON_DEPS_PATH}\${PYTHONPATH:+:\${PYTHONPATH}}"`,
104
+ `exec python3 ${SKILLS_MOUNT}/cad/scripts/step "$@"`,
105
+ "SHADOW_CAD_STEP",
106
+ "cat > /runtime-deps/bin/cad-inspect <<'SHADOW_CAD_INSPECT'",
107
+ "#!/bin/sh",
108
+ `export PYTHONPATH="${PYTHON_DEPS_PATH}\${PYTHONPATH:+:\${PYTHONPATH}}"`,
109
+ `exec python3 ${SKILLS_MOUNT}/cad/scripts/inspect "$@"`,
110
+ "SHADOW_CAD_INSPECT",
111
+ "cat > /runtime-deps/bin/cad-dxf <<'SHADOW_CAD_DXF'",
112
+ "#!/bin/sh",
113
+ `export PYTHONPATH="${PYTHON_DEPS_PATH}\${PYTHONPATH:+:\${PYTHONPATH}}"`,
114
+ `exec python3 ${SKILLS_MOUNT}/cad/scripts/dxf "$@"`,
115
+ "SHADOW_CAD_DXF",
116
+ "chmod +x /runtime-deps/bin/cad-step /runtime-deps/bin/cad-inspect /runtime-deps/bin/cad-dxf"
117
+ ].join("\n")
118
+ ],
119
+ description: "Convenience wrappers for core CAD command-line helpers"
120
+ }
121
+ ];
122
+ var skillSources = [
123
+ {
124
+ id: "text-to-cad-skills",
125
+ kind: "git",
126
+ url: "https://github.com/earthtojake/text-to-cad.git",
127
+ ref: "main",
128
+ from: "skills",
129
+ targetPath: SKILLS_MOUNT,
130
+ description: "CAD, render, robot-description, step.parts, and fabrication agent skills"
131
+ }
132
+ ];
133
+ var plugin = defineConnectorPlugin(manifest, {
134
+ cli: [
135
+ {
136
+ name: "cad-step",
137
+ command: "cad-step",
138
+ description: "Generate STEP/STP artifacts and CAD sidecars from build123d Python sources"
139
+ },
140
+ {
141
+ name: "cad-inspect",
142
+ command: "cad-inspect",
143
+ description: "Inspect STEP/STP geometry, measurements, references, and topology facts"
144
+ },
145
+ {
146
+ name: "cad-dxf",
147
+ command: "cad-dxf",
148
+ description: "Create and validate secondary DXF fabrication exports"
149
+ }
150
+ ],
151
+ runtimeDependencies,
152
+ skillSources,
153
+ verificationChecks: [
154
+ installedCheck("cad-step-cli-installed", "CAD step helper installed", ["cad-step", "--help"]),
155
+ {
156
+ id: "text-to-cad-skills-mounted",
157
+ label: "text-to-cad skills mounted",
158
+ kind: "command",
159
+ command: ["test", "-f", `${SKILLS_MOUNT}/cad/SKILL.md`],
160
+ timeoutMs: 5e3,
161
+ risk: "safe"
162
+ },
163
+ {
164
+ id: "cad-python-deps-importable",
165
+ label: "CAD Python dependencies importable",
166
+ kind: "command",
167
+ command: ["python3", "-c", "import build123d, ezdxf, numpy, trimesh"],
168
+ timeoutMs: 2e4,
169
+ risk: "safe"
170
+ },
171
+ {
172
+ id: "cad-viewer-deps-installed",
173
+ label: "CAD Explorer viewer dependencies installed",
174
+ kind: "command",
175
+ command: ["test", "-d", `${SKILLS_MOUNT}/render/scripts/viewer/node_modules`],
176
+ timeoutMs: 5e3,
177
+ risk: "safe"
178
+ }
179
+ ],
180
+ env: () => ({
181
+ PYTHONPATH: PYTHON_DEPS_PATH
182
+ }),
183
+ prompt: "Use CAD Skills for STEP-first CAD generation, build123d source edits, geometry inspection, robot descriptions, CAD Explorer rendering, standard STEP parts, and fabrication preflight. Treat generated CAD exports as derived artifacts and validate geometry before returning results."
184
+ });
185
+ var text_to_cad_default = attachConnectorRuntimeAssets(plugin, {
186
+ runtimeDependencies,
187
+ skillSources,
188
+ runtimeImage: "node:22-bookworm-slim",
189
+ skillsMountPath: SKILLS_MOUNT
190
+ });
191
+ export {
192
+ text_to_cad_default as default
193
+ };
@@ -4,11 +4,11 @@ import {
4
4
  connectorManifest,
5
5
  installedCheck,
6
6
  npmGlobalDependency
7
- } from "./chunk-EEFMJYKB.js";
8
- import "./chunk-POSVEKIY.js";
7
+ } from "./chunk-PSK2SYZ3.js";
8
+ import "./chunk-OYY64ZSX.js";
9
9
  import {
10
10
  defineConnectorPlugin
11
- } from "./chunk-JY2HTT7Q.js";
11
+ } from "./chunk-RMDY3W4V.js";
12
12
  import "./chunk-R5U7XKVJ.js";
13
13
 
14
14
  // src/plugins/vercel/index.ts
@@ -5,11 +5,11 @@ import {
5
5
  connectorManifest,
6
6
  installedCheck,
7
7
  npmGlobalDependency
8
- } from "./chunk-SVMXSIMG.js";
9
- import "./chunk-RECNVWMT.js";
8
+ } from "./chunk-F6CQ6GAG.js";
9
+ import "./chunk-6V7MW4HU.js";
10
10
  import {
11
11
  defineConnectorPlugin
12
- } from "./chunk-CTNUKOQE.js";
12
+ } from "./chunk-Y5BJ3EW2.js";
13
13
  import "./chunk-AD3JTIU3.js";
14
14
 
15
15
  // src/plugins/vercel/index.ts
@@ -5,11 +5,11 @@ import {
5
5
  connectorManifest,
6
6
  installedCheck,
7
7
  npmGlobalDependency
8
- } from "./chunk-SVMXSIMG.js";
9
- import "./chunk-RECNVWMT.js";
8
+ } from "./chunk-F6CQ6GAG.js";
9
+ import "./chunk-6V7MW4HU.js";
10
10
  import {
11
11
  defineConnectorPlugin
12
- } from "./chunk-CTNUKOQE.js";
12
+ } from "./chunk-Y5BJ3EW2.js";
13
13
  import "./chunk-AD3JTIU3.js";
14
14
 
15
15
  // src/plugins/webflow/index.ts
@@ -4,11 +4,11 @@ import {
4
4
  connectorManifest,
5
5
  installedCheck,
6
6
  npmGlobalDependency
7
- } from "./chunk-EEFMJYKB.js";
8
- import "./chunk-POSVEKIY.js";
7
+ } from "./chunk-PSK2SYZ3.js";
8
+ import "./chunk-OYY64ZSX.js";
9
9
  import {
10
10
  defineConnectorPlugin
11
- } from "./chunk-JY2HTT7Q.js";
11
+ } from "./chunk-RMDY3W4V.js";
12
12
  import "./chunk-R5U7XKVJ.js";
13
13
 
14
14
  // src/plugins/webflow/index.ts
@@ -2,11 +2,11 @@ import {
2
2
  attachConnectorRuntimeAssets,
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-EEFMJYKB.js";
6
- import "./chunk-POSVEKIY.js";
5
+ } from "./chunk-PSK2SYZ3.js";
6
+ import "./chunk-OYY64ZSX.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-JY2HTT7Q.js";
9
+ } from "./chunk-RMDY3W4V.js";
10
10
  import "./chunk-R5U7XKVJ.js";
11
11
 
12
12
  // src/plugins/wechat-miniprogram-skyline/index.ts
@@ -3,11 +3,11 @@ import {
3
3
  attachConnectorRuntimeAssets,
4
4
  connectorField,
5
5
  connectorManifest
6
- } from "./chunk-SVMXSIMG.js";
7
- import "./chunk-RECNVWMT.js";
6
+ } from "./chunk-F6CQ6GAG.js";
7
+ import "./chunk-6V7MW4HU.js";
8
8
  import {
9
9
  defineConnectorPlugin
10
- } from "./chunk-CTNUKOQE.js";
10
+ } from "./chunk-Y5BJ3EW2.js";
11
11
  import "./chunk-AD3JTIU3.js";
12
12
 
13
13
  // src/plugins/wechat-miniprogram-skyline/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/wechat-pay/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/wechat-pay/index.ts
@@ -4,11 +4,11 @@ import {
4
4
  connectorManifest,
5
5
  installedCheck,
6
6
  npmGlobalDependency
7
- } from "./chunk-EEFMJYKB.js";
8
- import "./chunk-POSVEKIY.js";
7
+ } from "./chunk-PSK2SYZ3.js";
8
+ import "./chunk-OYY64ZSX.js";
9
9
  import {
10
10
  defineConnectorPlugin
11
- } from "./chunk-JY2HTT7Q.js";
11
+ } from "./chunk-RMDY3W4V.js";
12
12
  import "./chunk-R5U7XKVJ.js";
13
13
 
14
14
  // src/plugins/wonda/index.ts
@@ -5,11 +5,11 @@ import {
5
5
  connectorManifest,
6
6
  installedCheck,
7
7
  npmGlobalDependency
8
- } from "./chunk-SVMXSIMG.js";
9
- import "./chunk-RECNVWMT.js";
8
+ } from "./chunk-F6CQ6GAG.js";
9
+ import "./chunk-6V7MW4HU.js";
10
10
  import {
11
11
  defineConnectorPlugin
12
- } from "./chunk-CTNUKOQE.js";
12
+ } from "./chunk-Y5BJ3EW2.js";
13
13
  import "./chunk-AD3JTIU3.js";
14
14
 
15
15
  // src/plugins/wonda/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/wordpress-woocommerce/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/wordpress-woocommerce/index.ts
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-SVMXSIMG.js";
6
- import "./chunk-RECNVWMT.js";
5
+ } from "./chunk-F6CQ6GAG.js";
6
+ import "./chunk-6V7MW4HU.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-CTNUKOQE.js";
9
+ } from "./chunk-Y5BJ3EW2.js";
10
10
  import "./chunk-AD3JTIU3.js";
11
11
 
12
12
  // src/plugins/wps/index.ts
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  connectorField,
3
3
  connectorManifest
4
- } from "./chunk-EEFMJYKB.js";
5
- import "./chunk-POSVEKIY.js";
4
+ } from "./chunk-PSK2SYZ3.js";
5
+ import "./chunk-OYY64ZSX.js";
6
6
  import {
7
7
  defineConnectorPlugin
8
- } from "./chunk-JY2HTT7Q.js";
8
+ } from "./chunk-RMDY3W4V.js";
9
9
  import "./chunk-R5U7XKVJ.js";
10
10
 
11
11
  // src/plugins/wps/index.ts
@@ -3,11 +3,11 @@ import {
3
3
  attachConnectorRuntimeAssets,
4
4
  connectorField,
5
5
  connectorManifest
6
- } from "./chunk-SVMXSIMG.js";
7
- import "./chunk-RECNVWMT.js";
6
+ } from "./chunk-F6CQ6GAG.js";
7
+ import "./chunk-6V7MW4HU.js";
8
8
  import {
9
9
  defineConnectorPlugin
10
- } from "./chunk-CTNUKOQE.js";
10
+ } from "./chunk-Y5BJ3EW2.js";
11
11
  import "./chunk-AD3JTIU3.js";
12
12
 
13
13
  // src/plugins/yuque/index.ts
@@ -2,11 +2,11 @@ import {
2
2
  attachConnectorRuntimeAssets,
3
3
  connectorField,
4
4
  connectorManifest
5
- } from "./chunk-EEFMJYKB.js";
6
- import "./chunk-POSVEKIY.js";
5
+ } from "./chunk-PSK2SYZ3.js";
6
+ import "./chunk-OYY64ZSX.js";
7
7
  import {
8
8
  defineConnectorPlugin
9
- } from "./chunk-JY2HTT7Q.js";
9
+ } from "./chunk-RMDY3W4V.js";
10
10
  import "./chunk-R5U7XKVJ.js";
11
11
 
12
12
  // src/plugins/yuque/index.ts
package/images/RUNNERS.md CHANGED
@@ -68,6 +68,21 @@ ShadowOB assets are installed in two explicit places:
68
68
  loaded afterward in runtime-extension order, and duplicate command names use
69
69
  first-wins semantics rather than overwriting an earlier command.
70
70
 
71
+ Cloud template routines are installed as runner-neutral seed data at
72
+ `/etc/shadowob/template-routines.json`. Each runner imports that seed into its
73
+ native schedule store at container startup:
74
+
75
+ | Runtime family | Native routine store | ShadowOB delivery target |
76
+ | --- | --- | --- |
77
+ | OpenClaw | `/home/shadow/.openclaw/cron/jobs.json` | `shadowob:channel:<channel_id>` |
78
+ | cc-connect based | `/home/shadow/.cc-connect/crons/jobs.json` | `session_key = "shadowob:channel:<channel_id>"` |
79
+ | Hermes | `/home/shadow/.hermes/cron/jobs.json` | `deliver = "shadowob:<channel_id>"` or native `origin` |
80
+
81
+ Routine import uses deterministic managed job ids and a spec hash. If a user
82
+ edits a managed routine in the runtime store after deployment, the next
83
+ container start preserves the runtime edit instead of overwriting it from the
84
+ template seed.
85
+
71
86
  ## Slash command catalogs
72
87
 
73
88
  Slash commands are runner-specific. Do not put runtime command lists in shared