@romanilyin/canonicalpath 2026.5.18-2

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 (109) hide show
  1. package/LICENSE.md +331 -0
  2. package/LICENSE.ru.md +331 -0
  3. package/NOTICE.md +45 -0
  4. package/README.md +10 -0
  5. package/dist/canonicalfs/errors.d.ts +8 -0
  6. package/dist/canonicalfs/errors.d.ts.map +1 -0
  7. package/dist/canonicalfs/errors.js +19 -0
  8. package/dist/canonicalfs/errors.js.map +1 -0
  9. package/dist/canonicalfs/http.d.ts +29 -0
  10. package/dist/canonicalfs/http.d.ts.map +1 -0
  11. package/dist/canonicalfs/http.js +107 -0
  12. package/dist/canonicalfs/http.js.map +1 -0
  13. package/dist/canonicalfs/index.d.ts +8 -0
  14. package/dist/canonicalfs/index.d.ts.map +1 -0
  15. package/dist/canonicalfs/index.js +8 -0
  16. package/dist/canonicalfs/index.js.map +1 -0
  17. package/dist/canonicalfs/limitations.d.ts +2 -0
  18. package/dist/canonicalfs/limitations.d.ts.map +1 -0
  19. package/dist/canonicalfs/limitations.js +2 -0
  20. package/dist/canonicalfs/limitations.js.map +1 -0
  21. package/dist/canonicalfs/root.d.ts +17 -0
  22. package/dist/canonicalfs/root.d.ts.map +1 -0
  23. package/dist/canonicalfs/root.js +51 -0
  24. package/dist/canonicalfs/root.js.map +1 -0
  25. package/dist/canonicalfs/rpc.d.ts +15 -0
  26. package/dist/canonicalfs/rpc.d.ts.map +1 -0
  27. package/dist/canonicalfs/rpc.js +31 -0
  28. package/dist/canonicalfs/rpc.js.map +1 -0
  29. package/dist/canonicalfs/types.d.ts +25 -0
  30. package/dist/canonicalfs/types.d.ts.map +1 -0
  31. package/dist/canonicalfs/types.js +2 -0
  32. package/dist/canonicalfs/types.js.map +1 -0
  33. package/dist/canonicalfs/validate.d.ts +3 -0
  34. package/dist/canonicalfs/validate.d.ts.map +1 -0
  35. package/dist/canonicalfs/validate.js +36 -0
  36. package/dist/canonicalfs/validate.js.map +1 -0
  37. package/dist/canonicalpath/equal.d.ts +3 -0
  38. package/dist/canonicalpath/equal.d.ts.map +1 -0
  39. package/dist/canonicalpath/equal.js +5 -0
  40. package/dist/canonicalpath/equal.js.map +1 -0
  41. package/dist/canonicalpath/errors.d.ts +8 -0
  42. package/dist/canonicalpath/errors.d.ts.map +1 -0
  43. package/dist/canonicalpath/errors.js +19 -0
  44. package/dist/canonicalpath/errors.js.map +1 -0
  45. package/dist/canonicalpath/index.d.ts +11 -0
  46. package/dist/canonicalpath/index.d.ts.map +1 -0
  47. package/dist/canonicalpath/index.js +11 -0
  48. package/dist/canonicalpath/index.js.map +1 -0
  49. package/dist/canonicalpath/internal.d.ts +22 -0
  50. package/dist/canonicalpath/internal.d.ts.map +1 -0
  51. package/dist/canonicalpath/internal.js +135 -0
  52. package/dist/canonicalpath/internal.js.map +1 -0
  53. package/dist/canonicalpath/normalize.d.ts +3 -0
  54. package/dist/canonicalpath/normalize.d.ts.map +1 -0
  55. package/dist/canonicalpath/normalize.js +56 -0
  56. package/dist/canonicalpath/normalize.js.map +1 -0
  57. package/dist/canonicalpath/posix.d.ts +3 -0
  58. package/dist/canonicalpath/posix.d.ts.map +1 -0
  59. package/dist/canonicalpath/posix.js +13 -0
  60. package/dist/canonicalpath/posix.js.map +1 -0
  61. package/dist/canonicalpath/relative.d.ts +5 -0
  62. package/dist/canonicalpath/relative.d.ts.map +1 -0
  63. package/dist/canonicalpath/relative.js +57 -0
  64. package/dist/canonicalpath/relative.js.map +1 -0
  65. package/dist/canonicalpath/sanitize.d.ts +4 -0
  66. package/dist/canonicalpath/sanitize.d.ts.map +1 -0
  67. package/dist/canonicalpath/sanitize.js +36 -0
  68. package/dist/canonicalpath/sanitize.js.map +1 -0
  69. package/dist/canonicalpath/types.d.ts +28 -0
  70. package/dist/canonicalpath/types.d.ts.map +1 -0
  71. package/dist/canonicalpath/types.js +2 -0
  72. package/dist/canonicalpath/types.js.map +1 -0
  73. package/dist/canonicalpath/uri.d.ts +3 -0
  74. package/dist/canonicalpath/uri.d.ts.map +1 -0
  75. package/dist/canonicalpath/uri.js +49 -0
  76. package/dist/canonicalpath/uri.js.map +1 -0
  77. package/dist/canonicalpath/windows.d.ts +3 -0
  78. package/dist/canonicalpath/windows.d.ts.map +1 -0
  79. package/dist/canonicalpath/windows.js +12 -0
  80. package/dist/canonicalpath/windows.js.map +1 -0
  81. package/dist/canonicalpath/wsl.d.ts +5 -0
  82. package/dist/canonicalpath/wsl.d.ts.map +1 -0
  83. package/dist/canonicalpath/wsl.js +15 -0
  84. package/dist/canonicalpath/wsl.js.map +1 -0
  85. package/dist/unity-gateway/broker.d.ts +21 -0
  86. package/dist/unity-gateway/broker.d.ts.map +1 -0
  87. package/dist/unity-gateway/broker.js +140 -0
  88. package/dist/unity-gateway/broker.js.map +1 -0
  89. package/dist/unity-gateway/fake-bridge.d.ts +33 -0
  90. package/dist/unity-gateway/fake-bridge.d.ts.map +1 -0
  91. package/dist/unity-gateway/fake-bridge.js +214 -0
  92. package/dist/unity-gateway/fake-bridge.js.map +1 -0
  93. package/dist/unity-gateway/index.d.ts +6 -0
  94. package/dist/unity-gateway/index.d.ts.map +1 -0
  95. package/dist/unity-gateway/index.js +6 -0
  96. package/dist/unity-gateway/index.js.map +1 -0
  97. package/dist/unity-gateway/mcp-tools.d.ts +12 -0
  98. package/dist/unity-gateway/mcp-tools.d.ts.map +1 -0
  99. package/dist/unity-gateway/mcp-tools.js +265 -0
  100. package/dist/unity-gateway/mcp-tools.js.map +1 -0
  101. package/dist/unity-gateway/path-service.d.ts +25 -0
  102. package/dist/unity-gateway/path-service.d.ts.map +1 -0
  103. package/dist/unity-gateway/path-service.js +233 -0
  104. package/dist/unity-gateway/path-service.js.map +1 -0
  105. package/dist/unity-gateway/types.d.ts +168 -0
  106. package/dist/unity-gateway/types.d.ts.map +1 -0
  107. package/dist/unity-gateway/types.js +2 -0
  108. package/dist/unity-gateway/types.js.map +1 -0
  109. package/package.json +57 -0
package/LICENSE.ru.md ADDED
@@ -0,0 +1,331 @@
1
+ # Stinger Royalty-Free EULA 1.0
2
+
3
+ **SPDX-License-Identifier:** `LicenseRef-Stinger-Royalty-Free-EULA-1.0`
4
+ **Версия лицензии:** 1.0
5
+ **Дата вступления в силу:** 2026-05-14
6
+ **Лицензиар:** ROMAN ILYIN
7
+ **Каноническое пространство репозиториев Лицензиара:** `https://github.com/romanilyin/*`
8
+ **Copyright:** Copyright © 2026 ROMAN ILYIN. Все права защищены, кроме прав, прямо предоставленных настоящим EULA.
9
+
10
+ **Основная языковая версия:** русская версия настоящего EULA является основной, обязательной и имеющей приоритет. Английский перевод предоставляется только для удобства. При любых расхождениях, неоднозначностях или противоречиях между версиями применяется русская версия.
11
+
12
+ ## Краткое резюме без юридической силы
13
+
14
+ Это резюме приведено только для удобства. Оно не заменяет полный текст условий ниже.
15
+
16
+ Вы можете использовать, копировать, изменять и включать Актив в личные, внутренние, открытые или коммерческие Конечные продукты без роялти. Вы можете продавать, лицензировать, публиковать, распространять, предоставлять доступ к Конечным продуктам, использующим Актив, и иным образом монетизировать такие Конечные продукты. Вы можете создавать и распространять MCP-расширения и Наборы MCP-команд для своих собственных ассетов, инструментов, игр, приложений, сервисов, рабочих процессов, asset-пакетов, клиентских поставок и внутренних пайплайнов, включая коммерческие Конечные продукты, если это не является отдельной перепродажей, отдельной коммерциализацией или конкурирующей перепаковкой Актива. Вы обязаны сохранять атрибуцию и уведомление о Каноническом репозитории. Вы не можете продавать, перепродавать, сублицензировать, сдавать в аренду, предоставлять в лизинг, монетизировать или иным образом коммерчески использовать Актив или любой Производный актив как отдельный ассет, пакет, плагин, библиотеку, SDK, шаблон, инструмент, модуль, gateway, MCP gateway, MCP-модуль, набор команд, фреймворк расширений, пакет исходного кода, бинарный пакет или существенно похожий продукт. Актив предоставляется “как есть”, без гарантий, обязанности поддержки, обязанности возмещения убытков или ответственности в максимальной степени, разрешённой законом.
17
+
18
+ Настоящий EULA предназначен для модели source-available и royalty-free для Конечных продуктов. Он не предназначен быть open source лицензией, одобренной OSI, поскольку ограничивает отдельную перепродажу и отдельную коммерциализацию Актива и Производных активов.
19
+
20
+ ## 1. Соглашение и принятие условий
21
+
22
+ 1.1. Настоящий Stinger Royalty-Free EULA 1.0 (“EULA”) является юридическим соглашением между ROMAN ILYIN (“Лицензиар”) и любым физическим или юридическим лицом, которое скачивает, устанавливает, копирует, получает доступ, изменяет, распространяет, интегрирует, встраивает, публикует, продаёт, предоставляет доступ к Активу или иным образом использует Актив (“вы” или “Лицензиат”).
23
+
24
+ 1.2. Скачивая, устанавливая, копируя, получая доступ, изменяя, распространяя, интегрируя, встраивая, публикуя, продавая, предоставляя доступ к Активу или иным образом используя Актив, вы принимаете настоящий EULA. Если вы не принимаете настоящий EULA, вы не должны использовать Актив.
25
+
26
+ 1.3. Актив лицензируется, а не продаётся. Лицензиар сохраняет все права, правовой титул и интересы в отношении Актива, за исключением прав, прямо предоставленных настоящим EULA.
27
+
28
+ 1.4. Все права, которые прямо не предоставлены настоящим EULA, сохраняются за Лицензиаром.
29
+
30
+ 1.5. Настоящий EULA применяется к Активу, который указан как лицензируемый по настоящему EULA в соответствующем Уведомлении проекта, метаданных репозитория, метаданных пакета, README, файле NOTICE, файле LICENSE или ином сопроводительном уведомлении.
31
+
32
+ ## 2. Определения
33
+
34
+ 2.1. “Актив” или “Лицензионные материалы” означает программное обеспечение, исходный код, объектный код, бинарные файлы, скрипты, пакеты, Unity-пакеты, editor tools, runtime tools, библиотеки, модули, компоненты MCP gateway, MCP-модули, определения MCP-команд, MCP-ресурсы, MCP-prompts, схемы, адаптеры, манифесты, конфигурационные файлы, документацию, samples, примеры, шаблоны, медиа и иные материалы, распространяемые Лицензиаром по настоящему EULA и указанные в соответствующем Уведомлении проекта.
35
+
36
+ 2.2. “Уведомление проекта” означает файл NOTICE, README, метаданные пакета, метаданные репозитория, заголовок исходного файла или иное сопроводительное уведомление, которое указывает название Проекта, Канонический репозиторий, текст атрибуции и уведомление об авторских правах для конкретного Актива.
37
+
38
+ 2.3. “Проект” означает Актив, указанный в соответствующем Уведомлении проекта.
39
+
40
+ 2.4. “Канонический репозиторий” означает оригинальный репозиторий или каноническое место нахождения исходных материалов, указанное Лицензиаром в соответствующем Уведомлении проекта. Если более конкретный Канонический репозиторий не указан, Каноническим репозиторием считается официальный репозиторий под контролем Лицензиара, из которого Актив был распространён в пространстве `https://github.com/romanilyin/*`.
41
+
42
+ 2.5. “Конечный продукт” означает игру, приложение, цифровое медиа-произведение, программный продукт, asset-пакет, content-пакет, инструмент, сервис, workflow, клиентскую поставку, внутренний toolchain, build pipeline или иной продукт, который:
43
+
44
+ (a) содержит существенный оригинальный контент, код, функциональность, workflow, творческое выражение или коммерческую ценность сверх Актива;
45
+
46
+ (b) использует Актив только как интегрированный, встроенный, включённый в комплект, упомянутый или вспомогательный компонент;
47
+
48
+ (c) имеет основную цель, функцию и ценность, которые не состоят в отдельном использовании, демонстрации, распространении, перепродаже, замене или коммерциализации Актива или Производного актива; и
49
+
50
+ (d) не предоставляет получателям Актив или Производный актив как отдельно используемый самостоятельный ассет, пакет, плагин, библиотеку, SDK, шаблон, инструмент, модуль, gateway, MCP gateway, MCP-модуль, набор команд, фреймворк расширений, пакет исходного кода, бинарный пакет или существенно похожий продукт, кроме случаев, прямо разрешённых настоящим EULA.
51
+
52
+ 2.6. Программная библиотека, SDK, плагин, Unity-пакет, MCP-расширение, developer tool, editor tool, asset-пакет или content-пакет может быть Конечным продуктом только если он предоставляет существенную оригинальную функциональность или контент, а Актив не является основным источником его ценности.
53
+
54
+ 2.7. Сторонний asset-пакет может быть Конечным продуктом, когда он состоит преимущественно из вашего собственного оригинального ассета, контента, кода, инструмента, workflow или функциональности, а Актив или MCP-расширение включены только для поддержки, автоматизации, интеграции, документирования, управления, конфигурирования или улучшения такого стороннего asset-пакета.
55
+
56
+ 2.8. “Производный актив” означает любую модификацию, адаптацию, перевод, порт, форк, wrapper, перепаковку, переименованную версию, переформатированную версию, конвертированную версию, расширенную версию, скомпилированную версию, source-available версию, бинарную версию или иную производную работу на основе Актива, за исключением Конечного продукта, который соответствует Разделу 2.5.
57
+
58
+ 2.9. “Отдельное распространение Актива” означает распространение, публикацию, загрузку на площадку, продажу, лицензирование, сублицензирование, сдачу в аренду, предоставление в лизинг, предоставление во временное пользование, предоставление доступа или иное предоставление Актива или Производного актива отдельно от Конечного продукта либо в форме, где Актив или Производный актив является основным предметом получения.
59
+
60
+ 2.10. “Отдельная коммерциализация” означает любую продажу, перепродажу, платное лицензирование, сублицензирование, платное скачивание, платный доступ, платную подписку, размещение на маркетплейсе за плату, коммерческий хостинг, платный план поддержки, платный сервис, распространение за счёт рекламы, включение в коммерческий bundle или иную монетизацию, где основная коммерческая ценность состоит в доступе к Активу или Производному активу как таковому, использовании, поддержке или распространении такого Актива или Производного актива.
61
+
62
+ 2.11. “Маркетплейс” означает любой marketplace, магазин, реестр пакетов, marketplace исходного кода, asset marketplace, plugin marketplace, template marketplace, SDK marketplace, extension marketplace, реестр моделей/инструментов, индекс пакетов или похожий сервис, включая, но не ограничиваясь Unity Asset Store, Unreal Marketplace/Fab, OpenUPM, npm, NuGet, PyPI, GitHub Releases, GitHub Marketplace, Gumroad, itch.io или похожими платформами.
63
+
64
+ 2.12. “MCP” означает Model Context Protocol или любой совместимый протокол, runtime, gateway, командный интерфейс или интерфейс автоматизации, используемый для предоставления tools, команд, prompts, ресурсов, схем, адаптеров или workflows AI-ассистенту, developer tool, редактору, игровому движку или системе автоматизации.
65
+
66
+ 2.13. “MCP-расширение” означает расширение, модуль, адаптер, интеграцию, набор команд, манифест, пакет схем, пакет prompts, handler, bridge, определение tool, определение ресурса, конфигурацию или похожий компонент, который взаимодействует с MCP либо с MCP gateway, MCP-модулями, MCP API или точками расширения Актива.
67
+
68
+ 2.14. “Набор MCP-команд” означает набор MCP-команд, prompts, ресурсов, схем, метаданных, handlers, mappings или конфигурации, предназначенный для работы с MCP, MCP-расширением, Активом или Stinger MCP Gateway.
69
+
70
+ 2.15. “Встроенный” означает включённый в Конечный продукт, поставляемый вместе с ним, упомянутый им, требуемый им, интегрированный в него или иным образом используемый как часть Конечного продукта способом, соответствующим назначению Конечного продукта. Встроенное использование может включать исходный код, скрипты, package manifests, определения команд, схемы, конфигурационные файлы или бинарные файлы, когда это разумно необходимо для сборки, запуска, взаимодействия, сопровождения или распространения Конечного продукта. Встроенное использование не разрешает Отдельное распространение Актива или Отдельную коммерциализацию.
71
+
72
+ 2.16. “Уведомление об атрибуции” означает уведомление, требуемое Разделом 8 и указанное в соответствующем Уведомлении проекта.
73
+
74
+ ## 3. Предоставление лицензии
75
+
76
+ 3.1. При условии соблюдения вами настоящего EULA Лицензиар предоставляет вам всемирную, неисключительную, безроялти, отзываемую только при нарушении лицензию в рамках авторских прав на то, чтобы:
77
+
78
+ (a) скачивать, устанавливать, получать доступ и использовать Актив;
79
+
80
+ (b) копировать Актив для целей разработки, оценки, резервного копирования, архивирования, тестирования, сборки, continuous integration, deployment и внутренних операционных целей;
81
+
82
+ (c) изменять, адаптировать, переводить, портировать, расширять и создавать Производные активы;
83
+
84
+ (d) интегрировать и Встраивать Актив или Производные активы в Конечные продукты;
85
+
86
+ (e) распространять Актив или Производные активы только как Встроенные компоненты Конечных продуктов при соблюдении настоящего EULA;
87
+
88
+ (f) продавать, лицензировать, публиковать, распространять, предоставлять доступ и иным образом монетизировать Конечные продукты, которые используют Актив или Производные активы, без выплаты роялти Лицензиару;
89
+
90
+ (g) разрешать вашим сотрудникам, подрядчикам, консультантам, агентам, аффилированным лицам, build systems и service providers использовать Актив исключительно от вашего имени и исключительно для действий, разрешённых настоящим EULA; и
91
+
92
+ (h) разрешать конечным пользователям вашего Конечного продукта использовать Встроенный Актив исключительно как часть Конечного продукта, а не отдельно.
93
+
94
+ 3.2. Лицензия, предоставленная в Разделе 3.1, не предоставляет каких-либо прав собственности на Актив. Вы владеете своим оригинальным кодом, контентом, ассетами, логикой команд, файлами проекта, продуктами, output-материалами и модификациями с учётом сохраняемых прав Лицензиара на Актив и любые скопированные или производные части Актива.
95
+
96
+ 3.3. Вы можете лицензировать свой Конечный продукт на собственных условиях, включая коммерческие или проприетарные условия, при условии, что ваши условия не предоставляют получателям каких-либо прав на Актив или Производный актив сверх прав, предоставленных настоящим EULA.
97
+
98
+ 3.4. Вы можете предоставлять платные профессиональные услуги, consulting, интеграцию, кастомизацию, обучение или поддержку для Конечных продуктов, использующих Актив, при условии, что вы не используете такие услуги для Отдельной коммерциализации Актива или Производного актива.
99
+
100
+ ## 4. Коммерческие Конечные продукты
101
+
102
+ 4.1. Вы можете использовать Актив в коммерческих Конечных продуктах без выплаты роялти, доли выручки, подписочных платежей, seat fees, usage fees или иной компенсации Лицензиару.
103
+
104
+ 4.2. Коммерческие Конечные продукты могут включать игры, приложения, Unity-проекты, Unity asset packages, developer tools, editor tools, внутренние пайплайны, build systems, клиентские поставки, SaaS-продукты, сервисы, SDK, плагины, content packages и MCP-enabled workflows, при условии, что они соответствуют определению Конечного продукта в Разделе 2.5.
105
+
106
+ 4.3. Сам факт того, что Конечный продукт продаётся, лицензируется, монетизируется, используется в коммерческой деятельности, используется внутри компании, передаётся клиенту или распространяется через Маркетплейс, сам по себе не нарушает настоящий EULA.
107
+
108
+ 4.4. Ограничение не направлено против коммерческого использования. Ограничение направлено против Отдельного распространения Актива и Отдельной коммерциализации Актива или Производного актива.
109
+
110
+ ## 5. Разрешение для MCP-расширений и Наборов MCP-команд
111
+
112
+ 5.1. При условии соблюдения вами настоящего EULA вы можете создавать, использовать, копировать, изменять, распространять, продавать, лицензировать, публиковать и монетизировать MCP-расширения и Наборы MCP-команд как часть Конечных продуктов, включая коммерческие Конечные продукты.
113
+
114
+ 5.2. Вы можете создавать MCP-расширения и Наборы MCP-команд для своих собственных ассетов, игр, приложений, инструментов, сервисов, workflows, asset-пакетов, content-пакетов, клиентских поставок и внутренних пайплайнов, и вы можете использовать их с Активом, со Stinger MCP Gateway или с совместимым MCP gateway.
115
+
116
+ 5.3. Вы можете включать MCP-расширение или Набор MCP-команд в сторонний asset-пакет или иной Конечный продукт, когда такое расширение или набор команд преимущественно поддерживает, автоматизирует, управляет, конфигурирует, документирует, интегрирует, валидирует, тестирует или улучшает ваш собственный оригинальный ассет, инструмент, workflow, сервис или продукт.
117
+
118
+ 5.4. Примеры разрешённого MCP-связанного использования включают:
119
+
120
+ (a) создание кастомного Набора MCP-команд для вашего собственного Unity-ассета и включение его в этот asset package, чтобы пользователи могли управлять вашим ассетом через Stinger MCP Gateway;
121
+
122
+ (b) продажу Unity asset package, который содержит ваш собственный существенный оригинальный ассет и включает Stinger-compatible MCP-расширение только для автоматизации, конфигурирования, тестирования, валидации или управления этим ассетом;
123
+
124
+ (c) включение MCP-команд в коммерческий workflow разработки игр, build pipeline, editor tool, внутренний toolchain или клиентскую поставку;
125
+
126
+ (d) написание собственного MCP-адаптера, который взаимодействует с Активом, при условии, что адаптер не является замаскированной перепаковкой, заменой, форком или отдельной коммерциализацией Актива; и
127
+
128
+ (e) распространение Конечного продукта, который включает определения команд, схемы, handlers или конфигурационные файлы, разумно необходимые для работы Конечного продукта через MCP.
129
+
130
+ 5.5. Одна лишь совместимость с MCP не превращает ваше собственное оригинальное MCP-расширение, Набор MCP-команд, ассет, инструмент, сервис или продукт в Производный актив. Части, которые копируют, включают, адаптируют Актив или являются производными от Актива, остаются под действием настоящего EULA.
131
+
132
+ 5.6. Вы не можете продавать, перепродавать, лицензировать, сублицензировать, сдавать в аренду, предоставлять в лизинг, публиковать, распространять за коммерческое вознаграждение, предоставлять платный доступ, монетизировать или иным образом коммерчески использовать изменённый Stinger MCP Gateway, Stinger MCP module, инфраструктуру Stinger MCP command-pack или Производный актив как отдельный платный пакет, отдельный платный набор команд, отдельный платный MCP gateway, отдельный платный MCP-модуль, отдельный платный фреймворк расширений или конкурирующий продукт.
133
+
134
+ 5.7. Вы не можете использовать MCP-расширение, Набор MCP-команд или compatibility layer для обхода ограничений настоящего EULA. Изменение названий команд, схем, манифестов, UI labels, namespaces, структуры пакета или добавление тонких wrappers или незначительных функций не превращает Производный актив в Конечный продукт.
135
+
136
+ ## 6. Бесплатные standalone-форки и некоммерческое распространение
137
+
138
+ 6.1. Вы можете распространять Актив или Производный актив как отдельный публичный или приватный форк только если выполнены все следующие условия:
139
+
140
+ (a) распространение является бесплатным;
141
+
142
+ (b) распространение не используется для Отдельной коммерциализации;
143
+
144
+ (c) распространение не требует оплаты, подписки, платного аккаунта, платного членства, платного плана поддержки, платного доступа, взаимодействия с рекламой, покупки коммерческого bundle или иного коммерческого вознаграждения для доступа, скачивания, использования, изменения или дальнейшего распространения;
145
+
146
+ (d) все уведомления об авторских правах, лицензии, атрибуции, товарных знаках, правах собственности, disclaimers и Каноническом репозитории сохранены;
147
+
148
+ (e) Уведомление об атрибуции и Канонический репозиторий включены в разумно заметное место, такое как README, LICENSE, NOTICE, package metadata, документация или эквивалентное место;
149
+
150
+ (f) изменённые версии ясно помечены как изменённые, неофициальные, не одобренные, не спонсируемые, не утверждённые, не сертифицированные, не сопровождаемые и не поддерживаемые Лицензиаром;
151
+
152
+ (g) распространение не использует имена, логотипы, названия проектов, товарные знаки, знаки обслуживания или branding Лицензиара, кроме как для атрибуции и правдивых заявлений о совместимости; и
153
+
154
+ (h) распространение не нарушает какие-либо иные ограничения настоящего EULA.
155
+
156
+ 6.2. Добровольные пожертвования разрешены только если они не требуются для доступа, лицензирования, функций, скачивания, доступа к исходному коду, доступа к бинарным файлам, поддержки, обновлений или распространения Актива или Производного актива, и только если они не подразумевают одобрение Лицензиара.
157
+
158
+ 6.3. Вы можете поддерживать приватные внутренние форки, приватные mirrors и приватные модификации для собственной разработки, CI, резервного копирования, архивирования, безопасности или операционных целей, включая использование внутри вашей организации или подрядчиками, работающими от вашего имени, при условии, что все пользователи остаются связанными настоящим EULA.
159
+
160
+ ## 7. Ограничения
161
+
162
+ 7.1. Вы не можете продавать, перепродавать, лицензировать, сублицензировать, сдавать в аренду, предоставлять в лизинг, предоставлять во временное пользование, публиковать, распространять за коммерческое вознаграждение, предоставлять платный доступ, монетизировать или иным образом коммерчески использовать Актив или любой Производный актив как отдельный ассет, пакет, плагин, библиотеку, SDK, шаблон, инструмент, модуль, gateway, MCP gateway, MCP-модуль, набор команд, фреймворк расширений, пакет исходного кода, бинарный пакет или существенно похожий продукт.
163
+
164
+ 7.2. Вы не можете загружать, размещать в листинге, публиковать или распространять Актив или любой Производный актив на Маркетплейсе как платный продукт, платный пакет, платное расширение, платный ассет, платный шаблон, платный SDK, платный инструмент, платный модуль, платный набор команд, платный gateway или платный пакет исходного/бинарного кода.
165
+
166
+ 7.3. Вы не можете создавать или распространять продукт, основная цель или ценность которого состоит в предоставлении существенно той же функциональности, файлов, команд, API, структуры модулей, структуры пакета, исходного кода, бинарных файлов, пользовательского интерфейса, документации, примеров или developer-facing ценности, что и у Актива, если только такой продукт не распространяется бесплатно при соблюдении Раздела 6.
167
+
168
+ 7.4. Вы не можете использовать незначительные изменения для обхода настоящего EULA. Изменение названий, namespaces, имён пакетов, структуры файлов, package metadata, формата сборки, UI styling, комментариев, документации, labels команд, command schemas, manifests или добавление тонких wrappers либо незначительных функций не превращает Производный актив в Конечный продукт.
169
+
170
+ 7.5. Вы не можете удалять, скрывать или изменять какие-либо уведомления об авторских правах, лицензии, Уведомление об атрибуции, уведомление о Каноническом репозитории, уведомление о товарном знаке, proprietary notice или disclaimer, включённые в Актив.
171
+
172
+ 7.6. Вы не можете заявлять или подразумевать, что Лицензиар одобряет, спонсирует, утверждает, сертифицирует, сопровождает, поддерживает или связан с вашим продуктом, форком, MCP-расширением, Набором MCP-команд, сервисом, marketplace listing, компанией, репозиторием или проектом, если Лицензиар прямо не разрешил это в письменной форме.
173
+
174
+ 7.7. Вы не можете использовать имена, логотипы, названия проектов, названия репозиториев, товарные знаки, знаки обслуживания или branding Лицензиара, кроме случаев, когда это требуется для атрибуции или разумно необходимо для правдивых заявлений о совместимости.
175
+
176
+ 7.8. Вы не можете применять к Активу или любому Производному активу другую лицензию, которая разрешает Отдельную коммерциализацию или удаляет положения настоящего EULA об атрибуции, уведомлениях, гарантиях, ответственности, поддержке, прекращении действия, спорах или сохранённых правах.
177
+
178
+ 7.9. Вы не можете описывать Актив или любой Производный актив как лицензированный по MIT, Apache, находящийся в public domain, являющийся open source, одобренным OSI, или иным образом лицензированный на условиях, разрешающих Отдельную коммерциализацию, если Лицензиар отдельно не выпустил конкретный материал на таких условиях.
179
+
180
+ 7.10. Вы не можете использовать Актив с нарушением применимого закона, нормативного акта, правил экспортного контроля, санкционных правил, судебного приказа, прав третьих лиц или правил платформы.
181
+
182
+ 7.11. Вы не можете использовать Актив в life-critical, safety-critical, medical, aviation, nuclear, emergency-response, weapons-control, autonomous-vehicle-control или иных high-risk systems, где отказ Актива может разумно привести к смерти, травме, серьёзному имущественному ущербу или серьёзному экологическому ущербу, если только вы независимо не валидировали Актив для такого использования и не приняли на себя весь соответствующий риск и ответственность.
183
+
184
+ ## 8. Требования к атрибуции и уведомлениям
185
+
186
+ 8.1. Любое распространение Актива, Производного актива или Конечного продукта, содержащего Актив, должно сохранять применимые уведомления об авторских правах, лицензии, disclaimers, уведомление о Каноническом репозитории и Уведомление об атрибуции.
187
+
188
+ 8.2. Для developer-facing распространений, включая распространение исходного кода, репозитории, пакеты, Unity packages, UPM packages, MCP-расширения, Наборы MCP-команд, SDK, инструменты, шаблоны, asset packages, content packages и plugin packages, Уведомление об атрибуции должно быть включено в разумно заметное место, такое как README, LICENSE, NOTICE, THIRD_PARTY_NOTICES, package metadata, документация или эквивалентное место.
189
+
190
+ 8.3. Для скомпилированных, встроенных, runtime-only или end-user-facing Конечных продуктов Уведомление об атрибуции может быть включено в документацию, credits, acknowledgements, about screen, license screen, third-party notices, package metadata или иное место, где обычно размещаются уведомления третьих лиц. Настоящий EULA не требует splash screen, упоминания в главном меню, рекламного размещения или заметного UI-уведомления, если в вашем Конечном продукте уже нет обычного места для уведомлений третьих лиц.
191
+
192
+ 8.4. Обязательным Уведомлением об атрибуции является уведомление, указанное в соответствующем Уведомлении проекта. Если Уведомление проекта отсутствует или неполно, Актив не должен распространяться в developer-facing форме до добавления Уведомления проекта, которое указывает название Проекта, Канонический репозиторий, уведомление об авторских правах и требуемый текст атрибуции.
193
+
194
+ 8.5. Изменённые standalone-форки, бесплатные форки и Производные активы также должны включать:
195
+
196
+ ```text
197
+ Это неофициальная изменённая версия. Она не одобрена, не спонсируется,
198
+ не утверждена, не сертифицирована, не сопровождается и не поддерживается ROMAN ILYIN.
199
+ ```
200
+
201
+ 8.6. Если Актив включает файл NOTICE, вы обязаны сохранить его. Вы можете добавить собственные уведомления для своей оригинальной работы, но не можете удалять или скрывать уведомления Лицензиара.
202
+
203
+ 8.7. Если это практически применимо, package metadata и заголовки исходных файлов должны указывать настоящий EULA с использованием:
204
+
205
+ ```text
206
+ LicenseRef-Stinger-Royalty-Free-EULA-1.0
207
+ ```
208
+
209
+ ## 9. Права конечных пользователей в Конечных продуктах
210
+
211
+ 9.1. Вы можете распространять Конечные продукты на основании собственной end-user license, terms of service, коммерческого соглашения или условий маркетплейса.
212
+
213
+ 9.2. Ваши конечные пользователи могут использовать Встроенный Актив только как часть Конечного продукта. Они не получают от вас права извлекать, копировать, изменять, публиковать, продавать, перепродавать, перераспространять, сублицензировать, сдавать в аренду, предоставлять в лизинг, предоставлять во временное пользование, монетизировать или иным образом использовать Актив или Производный актив отдельно от Конечного продукта.
214
+
215
+ 9.3. Вы не должны предоставлять своим конечным пользователям права на Актив, превышающие права, предоставленные настоящим EULA.
216
+
217
+ 9.4. Вы единолично отвечаете за свой Конечный продукт, своё распространение, своих клиентов, свои обещания поддержки, свои гарантии, свои compliance-обязательства, свои практики работы с данными, свои обязательства перед маркетплейсами и свою коммерческую деятельность.
218
+
219
+ ## 10. Output-материалы и сгенерированные материалы
220
+
221
+ 10.1. С учётом настоящего EULA Лицензиар не заявляет права собственности на ваши Конечные продукты, ваши оригинальные ассеты, ваш оригинальный код, вашу оригинальную логику команд, ваши оригинальные Наборы MCP-команд, ваши оригинальные MCP-расширения, ваш контент, ваши файлы проектов, ваши сервисы, ваши workflows, ваши output-материалы или ваши клиентские поставки только потому, что они были созданы с использованием Актива, интегрированы с ним или работали через него.
222
+
223
+ 10.2. Логи, отчёты, метрики, сгенерированные файлы, command outputs, build outputs, configuration outputs, analysis outputs и иные output-материалы, сгенерированные при использовании Актива, принадлежат вам, за исключением тех случаев и только в той степени, в которой они содержат скопированные части Актива или материалы третьих лиц.
224
+
225
+ 10.3. Части MCP-расширений, Наборов MCP-команд, сгенерированных файлов, шаблонов или output-материалов, которые копируют, включают, адаптируют Актив или являются производными от него, остаются под действием настоящего EULA.
226
+
227
+ ## 11. Материалы третьих лиц и другие лицензии
228
+
229
+ 11.1. Некоторые файлы, зависимости, примеры, библиотеки, пакеты, инструменты или компоненты, включённые в Актив или используемые Активом, могут регулироваться отдельными лицензиями третьих лиц.
230
+
231
+ 11.2. Настоящий EULA не отменяет условия лицензий третьих лиц. Если возникает конфликт между настоящим EULA и лицензией третьего лица, лицензия третьего лица имеет преимущество только в отношении того материала третьего лица, к которому она применяется.
232
+
233
+ 11.3. Материал, который Лицензиар прямо выпустил под другой лицензией, регулируется этой другой лицензией только в отношении такого материала. Настоящий EULA не отзывает права, уже предоставленные отдельной лицензией для отдельного материала или более ранних версий.
234
+
235
+ 11.4. Вы отвечаете за соблюдение всех применимых лицензий третьих лиц, условий платформ, условий маркетплейсов и лицензий зависимостей в ваших Конечных продуктах и распространениях.
236
+
237
+ ## 12. Патенты
238
+
239
+ 12.1. При условии соблюдения вами настоящего EULA Лицензиар предоставляет вам неисключительную, всемирную, безроялти патентную лицензию по патентным требованиям, принадлежащим Лицензиару или контролируемым им, которые неизбежно нарушались бы использованием Актива в том виде, в котором он предоставлен Лицензиаром, исключительно в объёме, необходимом для осуществления прав, предоставленных настоящим EULA.
240
+
241
+ 12.2. Если вы инициируете патентную претензию, утверждая, что Актив или использование Актива, разрешённое настоящим EULA, нарушает патент, то любая патентная лицензия, предоставленная вам по настоящему EULA, прекращается с даты подачи такой претензии.
242
+
243
+ 12.3. Патентная лицензия не предоставляется в отношении ваших модификаций, комбинаций, Конечных продуктов, материалов третьих лиц или вариантов использования за пределами настоящего EULA.
244
+
245
+ ## 13. Отсутствие обязанности поддержки, сопровождения, обновлений или доступности
246
+
247
+ 13.1. Лицензиар не обязан предоставлять поддержку, сопровождение, обновления, upgrades, bug fixes, security fixes, compatibility fixes, документацию, обучение, hosting, распространение или дальнейшую доступность Актива.
248
+
249
+ 13.2. Любая поддержка, сопровождение, обновление или иной сервис, предоставленные Лицензиаром, предоставляются исключительно по усмотрению Лицензиара и не создают какой-либо продолжающейся обязанности, если иное не указано в отдельном письменном соглашении, подписанном Лицензиаром.
250
+
251
+ 13.3. Лицензиар может в любое время изменить, приостановить, удалить, архивировать, сделать приватным, прекратить или остановить распространение любого репозитория, релиза, бинарного файла, пакета, ветки, тега, документации, канала поддержки или сервиса.
252
+
253
+ ## 14. Отказ от гарантий
254
+
255
+ 14.1. В максимальной степени, разрешённой применимым правом, Актив предоставляется “как есть”, “как доступен” и “со всеми недостатками”, без гарантий, заявлений, assurances или условий любого рода, явных, подразумеваемых, предусмотренных законом или иных.
256
+
257
+ 14.2. Лицензиар прямо отказывается от всех гарантий, заявлений, assurances и условий, включая, но не ограничиваясь товарной пригодностью, пригодностью для конкретной цели, правовым титулом, ненарушением прав, точностью, полнотой, доступностью, совместимостью, производительностью, безопасностью, работой без ошибок, бесперебойной работой, отсутствием вредоносных компонентов и пригодностью для production, коммерческого, регулируемого, safety-critical или high-risk использования.
258
+
259
+ 14.3. Вы единолично отвечаете за оценку, тестирование, валидацию, защиту, конфигурирование, интеграцию, deployment, сопровождение и использование Актива и любого Конечного продукта.
260
+
261
+ ## 15. Ограничение ответственности
262
+
263
+ 15.1. В максимальной степени, разрешённой применимым правом, Лицензиар не несёт ответственности перед вами или любым третьим лицом за любые прямые, косвенные, incidental, special, consequential, exemplary, punitive, enhanced, reliance, cover, lost-profit, lost-revenue, lost-savings, lost-data, lost-goodwill, business-interruption, procurement-of-substitute-goods-or-services, security, privacy, compliance, regulatory, reputational или иные убытки, потери, расходы, затраты, штрафы, претензии или liabilities, возникающие из Актива, настоящего EULA, любого Конечного продукта, любого использования или невозможности использования Актива либо связанные с ними, даже если Лицензиар был уведомлён о возможности таких убытков, и даже если какое-либо средство правовой защиты не достигает своей основной цели.
264
+
265
+ 15.2. В максимальной степени, разрешённой применимым правом, Лицензиар не несёт ответственности по любым требованиям, возникающим из ваших модификаций, интеграций, распространений, коммерческой деятельности, отношений с клиентами, гарантий, заявлений, обещаний поддержки, marketplace listings, профессиональных услуг, практик безопасности, практик работы с данными или Конечных продуктов либо связанным с ними.
266
+
267
+ 15.3. Если ответственность не может быть полностью исключена, совокупная ответственность Лицензиара ограничивается минимальной суммой, разрешённой применимым правом.
268
+
269
+ ## 16. Лицензиар не предоставляет возмещение; ответственность Лицензиата
270
+
271
+ 16.1. Лицензиар не предоставляет indemnity, обязанности защиты от претензий, обязанности hold-harmless, обязанности возмещения расходов или страхового покрытия в отношении Актива, настоящего EULA, вашего использования Актива или вашего Конечного продукта.
272
+
273
+ 16.2. Вы единолично отвечаете за любые претензии, убытки, потери, liabilities, затраты, расходы, settlements, штрафы, споры с клиентами, споры с платформами, споры с маркетплейсами и юридические обязанности, возникающие из вашего Конечного продукта, вашего распространения, вашей коммерческой деятельности, ваших модификаций, вашего неправомерного использования Актива или вашего нарушения настоящего EULA либо связанные с ними.
274
+
275
+ 16.3. В максимальной степени, разрешённой применимым правом, вы соглашаетесь защищать Лицензиара, освобождать его от ответственности и возмещать ему ущерб в связи с претензиями третьих лиц, возникающими из вашего Конечного продукта, вашего распространения, вашей коммерческой деятельности, ваших модификаций, вашего неправомерного использования Актива или вашего нарушения настоящего EULA.
276
+
277
+ ## 17. Прекращение действия
278
+
279
+ 17.1. Права, предоставленные настоящим EULA, прекращаются автоматически, если вы нарушаете настоящий EULA.
280
+
281
+ 17.2. После прекращения действия вы обязаны прекратить использовать, копировать, изменять, распространять, публиковать, продавать, лицензировать, предоставлять доступ и иным образом эксплуатировать Актив и любой Производный актив, за исключением случаев, когда Лицензиар прямо разрешил иное в письменной форме.
282
+
283
+ 17.3. Прекращение действия не требует предварительного уведомления, но Лицензиар может направить уведомление по собственному усмотрению.
284
+
285
+ 17.4. Лицензиар может восстановить ваши права, если вы устраните нарушение и Лицензиар прямо согласится на восстановление в письменной форме.
286
+
287
+ 17.5. Разделы, которые по своей природе должны сохранять действие после прекращения, сохраняют действие, включая положения о праве собственности, ограничениях, атрибуции, материалах третьих лиц, отказе от гарантий, ограничении ответственности, отсутствии indemnity со стороны Лицензиара, ответственности Лицензиата, положениях о спорах и прочих положениях.
288
+
289
+ 17.6. Прекращение ваших прав не прекращает автоматически права, надлежащим образом предоставленные конечным пользователям соответствующих требованиям Конечных продуктов, распространённых до прекращения, при условии, что такие конечные пользователи продолжают использовать Встроенный Актив только как часть таких соответствующих требованиям Конечных продуктов, а не отдельно.
290
+
291
+ ## 18. Споры и выбранный Лицензиаром форум
292
+
293
+ 18.1. В максимальной степени, разрешённой применимым правом, любой спор, претензия, иск, производство, действие по защите прав или разногласие, возникающие из настоящего EULA, Актива, Производного актива, Конечного продукта, любого использования или распространения Актива либо связанные с ними, регулируются правом, юрисдикцией, местом рассмотрения, форумом и процедурным способом, выбранными Лицензиаром по его единоличному усмотрению на момент возникновения или подачи такого спора, претензии, иска, производства, действия по защите прав или разногласия.
294
+
295
+ 18.2. В максимальной степени, разрешённой применимым правом, вы соглашаетесь с выбранными Лицензиаром правом, юрисдикцией, местом рассмотрения, форумом и процедурным способом и отказываетесь от возражений, основанных на неудобстве, отсутствии связи, конфликте законов или похожих основаниях.
296
+
297
+ 18.3. Ничто в настоящем Разделе не ограничивает право Лицензиара обращаться за injunctive, equitable, interim, emergency или protective relief в любой доступный форум для предотвращения или прекращения неразрешённого использования, Отдельной коммерциализации, нарушения прав, нарушения настоящего EULA, удаления атрибуции, неправомерного использования branding или иного нарушения настоящего EULA.
298
+
299
+ 18.4. Если какая-либо часть настоящего Раздела будет признана неисполнимой, недействительной или ограниченной обязательной нормой права, остальные части настоящего EULA сохраняют силу в максимальной степени, разрешённой применимым правом.
300
+
301
+ ## 19. Версии лицензии и отдельные разрешения
302
+
303
+ 19.1. Лицензиар может публиковать обновлённые версии настоящего EULA. Уведомление проекта может указывать версию настоящего EULA, применимую к конкретному Активу.
304
+
305
+ 19.2. Если в Уведомлении проекта прямо не указано “or later”, ваши права регулируются конкретной версией настоящего EULA, указанной для Актива.
306
+
307
+ 19.3. Лицензиар может предоставлять отдельные письменные разрешения, waivers, коммерческие лицензии, разрешения для маркетплейсов, соглашения поддержки, dual licenses или exceptions. Любое такое разрешение применяется только к физическому или юридическому лицу, Активу, версии, объёму и периоду, прямо указанным Лицензиаром в письменной форме.
308
+
309
+ 19.4. Настоящий EULA не отзывает права, надлежащим образом предоставленные для более ранних версий Актива по другой лицензии. Более ранние версии остаются регулируемыми условиями лицензии, применявшимися к таким более ранним версиям.
310
+
311
+ ## 20. Прочие положения
312
+
313
+ 20.1. Если какое-либо положение настоящего EULA признаётся недействительным, незаконным или неисполнимым, остальные положения сохраняют полную силу в максимальной степени, разрешённой применимым правом.
314
+
315
+ 20.2. Неприменение Лицензиаром какого-либо положения настоящего EULA не является отказом от права применять это положение или любое другое положение в дальнейшем.
316
+
317
+ 20.3. Вы не можете уступать или передавать настоящий EULA или ваши права по нему, кроме как в составе передачи соответствующего требованиям Конечного продукта и только в той степени, в которой получатель передачи соглашается соблюдать настоящий EULA.
318
+
319
+ 20.4. Настоящий EULA не создаёт партнёрство, joint venture, agency, трудовые отношения, франшизу или фидуциарные отношения между вами и Лицензиаром.
320
+
321
+ 20.5. Заголовки приведены только для удобства и не влияют на толкование.
322
+
323
+ 20.6. В случае конфликта между настоящим EULA и Уведомлением проекта Уведомление проекта имеет преимущество только в отношении project-specific идентификационных данных, таких как название Проекта, Канонический репозиторий, уведомление об авторских правах, текст атрибуции и дополнительные project-specific уведомления. Настоящий EULA имеет преимущество в отношении всех условий лицензии, если Лицензиар прямо не указал иное в письменной форме.
324
+
325
+ 20.7. Настоящий EULA является полным соглашением между вами и Лицензиаром в отношении Актива, за исключением отдельных письменных соглашений, подписанных Лицензиаром, или иных лицензионных условий, прямо применённых Лицензиаром к конкретному материалу.
326
+
327
+ ## 21. Разрешение на копирование текста лицензии
328
+
329
+ 21.1. Разрешается копировать и перераспространять точные, неизменённые копии текста настоящего EULA исключительно для целей идентификации, сохранения, ссылки на условия лицензии или соблюдения условий лицензии для материалов, распространяемых ROMAN ILYIN по настоящему EULA.
330
+
331
+ 21.2. Вы не можете публиковать изменённый текст лицензии под названием “Stinger Royalty-Free EULA”, “Stinger Royalty-Free EULA 1.0” или под сходным до степени смешения названием без прямого письменного разрешения Лицензиара.
package/NOTICE.md ADDED
@@ -0,0 +1,45 @@
1
+ # NOTICE
2
+
3
+ This repository is licensed under **Stinger Royalty-Free EULA 1.0**.
4
+
5
+ **SPDX-License-Identifier:** `LicenseRef-Stinger-Royalty-Free-EULA-1.0`
6
+ **Authoritative license version:** Russian text in `LICENSE.ru.md`
7
+ **English convenience text:** `LICENSE.md`, provided for readability
8
+ **Licensor:** ROMAN ILYIN
9
+ **Project / Asset name:** CanonicalPath
10
+ **Canonical repository:** https://github.com/romanilyin/canonicalpath
11
+ **Copyright:** Copyright © 2026 ROMAN ILYIN. All rights reserved except as expressly granted by the EULA.
12
+
13
+ The Russian EULA is the primary and controlling version. If the Russian and English versions conflict, differ, or are interpreted differently, the Russian version controls.
14
+
15
+ ## Licensed materials
16
+
17
+ The licensed Asset includes CanonicalPath source code, lexical canonical path components, filesystem-facing components, documentation, samples, tests, configuration files, and related materials.
18
+
19
+ This EULA applies to all files in this repository unless a file, folder, dependency, package, or third-party notice states otherwise.
20
+
21
+ ## Required attribution notice
22
+
23
+ Any distribution of this Asset, a Derivative Asset, or an End Product containing this Asset must preserve the applicable notices required by the EULA. Use the following attribution notice where third-party notices are customarily placed:
24
+
25
+ ```text
26
+ This product includes or is based on CanonicalPath.
27
+ Original repository: https://github.com/romanilyin/canonicalpath
28
+ Copyright © 2026 ROMAN ILYIN.
29
+ Licensed under Stinger Royalty-Free EULA 1.0.
30
+ ```
31
+
32
+ ## Modified versions
33
+
34
+ Modified standalone forks, free forks, and Derivative Assets must also include:
35
+
36
+ ```text
37
+ This is an unofficial modified version. It is not endorsed, sponsored,
38
+ approved, certified, maintained, or supported by ROMAN ILYIN.
39
+ ```
40
+
41
+ ## Summary
42
+
43
+ Free for personal, internal, open, and commercial End Products. Royalty-free. Attribution and the Canonical Repository notice must be preserved. Standalone sale, resale, paid redistribution, or standalone commercialization of this Asset or Derivative Assets is prohibited.
44
+
45
+ This summary is provided for convenience only. The English convenience license text is in `LICENSE.md`; the authoritative Russian license text is in `LICENSE.ru.md`.
package/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # @romanilyin/canonicalpath
2
+
3
+ Public TypeScript package for deterministic lexical CanonicalPath operations, best-effort CanonicalFS helpers, and Unity MCP path adapter utilities.
4
+
5
+ - Root export: `@romanilyin/canonicalpath` for lexical CanonicalPath.
6
+ - Subpath exports: `@romanilyin/canonicalpath/canonicalpath`, `@romanilyin/canonicalpath/canonicalfs`, and `@romanilyin/canonicalpath/unity-gateway`.
7
+ - License: `LicenseRef-Stinger-Royalty-Free-EULA-1.0`.
8
+ - Canonical repository: `https://github.com/romanilyin/canonicalpath`.
9
+
10
+ `CanonicalPath` is lexical-only. Use the Go `canonicalfs` daemon for security-sensitive filesystem I/O.
@@ -0,0 +1,8 @@
1
+ export type CanonicalFSErrorCode = "ERR_ABSOLUTE_PATH" | "ERR_ARCHIVE_TRAVERSAL" | "ERR_DAEMON" | "ERR_DRIVE_RELATIVE_PATH" | "ERR_NUL_BYTE" | "ERR_OUTSIDE_ROOT" | "ERR_RACE_DETECTED" | "ERR_READ_LIMIT_EXCEEDED" | "ERR_REQUEST_TOO_LARGE" | "ERR_RESPONSE_TOO_LARGE" | "ERR_ROOT_NOT_ALLOWED" | "ERR_UNAUTHORIZED" | "ERR_UNSUPPORTED_OPERATION" | "ERR_SYMLINK_ESCAPE";
2
+ export declare class CanonicalFSError extends Error {
3
+ readonly code: CanonicalFSErrorCode;
4
+ constructor(code: CanonicalFSErrorCode, message: string);
5
+ }
6
+ export declare function fsError(code: CanonicalFSErrorCode, message: string): CanonicalFSError;
7
+ export declare function fsErrorCode(error: unknown): string;
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/canonicalfs/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,uBAAuB,GACvB,YAAY,GACZ,yBAAyB,GACzB,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,uBAAuB,GACvB,wBAAwB,GACxB,sBAAsB,GACtB,kBAAkB,GAClB,2BAA2B,GAC3B,oBAAoB,CAAC;AAEzB,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAExB,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAKxD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAErF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIlD"}
@@ -0,0 +1,19 @@
1
+ export class CanonicalFSError extends Error {
2
+ code;
3
+ constructor(code, message) {
4
+ super(`${code}: ${message}`);
5
+ this.name = "CanonicalFSError";
6
+ this.code = code;
7
+ }
8
+ }
9
+ export function fsError(code, message) {
10
+ return new CanonicalFSError(code, message);
11
+ }
12
+ export function fsErrorCode(error) {
13
+ if (error instanceof CanonicalFSError)
14
+ return error.code;
15
+ if (error instanceof Error)
16
+ return error.message;
17
+ return String(error);
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/canonicalfs/errors.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAuB;IAEpC,YAAY,IAA0B,EAAE,OAAe;QACrD,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,OAAO,CAAC,IAA0B,EAAE,OAAe;IACjE,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,gBAAgB;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACzD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { CanonicalRelativePath } from "../canonicalpath/types.js";
2
+ import type { CanonicalFSDaemonCapabilities, CanonicalFSClient, FileStat } from "./types.js";
3
+ export type CanonicalFSFetch = (input: string, init: {
4
+ method: "GET" | "POST";
5
+ headers: Record<string, string>;
6
+ body?: string;
7
+ }) => Promise<Response>;
8
+ export interface CanonicalFSHTTPClientOptions {
9
+ capabilityToken: string;
10
+ fetch?: CanonicalFSFetch;
11
+ }
12
+ export declare class CanonicalFSHTTPClient implements CanonicalFSClient {
13
+ private readonly endpoint;
14
+ private readonly capabilityToken;
15
+ private readonly fetchImpl;
16
+ constructor(endpoint: string, options: CanonicalFSHTTPClientOptions);
17
+ openProject(projectId: string, hostRoot: string): Promise<void>;
18
+ capabilities(): Promise<CanonicalFSDaemonCapabilities>;
19
+ closeProject(projectId: string): Promise<void>;
20
+ readFile(projectId: string, rel: CanonicalRelativePath): Promise<Uint8Array>;
21
+ writeFile(projectId: string, rel: CanonicalRelativePath, data: Uint8Array): Promise<void>;
22
+ stat(projectId: string, rel: CanonicalRelativePath): Promise<FileStat>;
23
+ mkdirAll(projectId: string, rel: CanonicalRelativePath): Promise<void>;
24
+ remove(projectId: string, rel: CanonicalRelativePath): Promise<void>;
25
+ rename(projectId: string, oldRel: CanonicalRelativePath, newRel: CanonicalRelativePath): Promise<void>;
26
+ private call;
27
+ private request;
28
+ }
29
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/canonicalfs/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6B7F,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtJ,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B;IAQ7D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,YAAY,IAAI,OAAO,CAAC,6BAA6B,CAAC;IActD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAK5E,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMtE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YAI9F,IAAI;YAIJ,OAAO;CAiBtB"}