@wubaoqi/guancopilot 0.0.0-stage → 0.2.0

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 (239) hide show
  1. package/NOTICE.md +17 -0
  2. package/README.md +146 -2
  3. package/assets/coreutils.wasm +0 -0
  4. package/assets/find.wasm +0 -0
  5. package/assets/guanbi.wasm +4 -0
  6. package/assets/guancli.wasm +0 -0
  7. package/assets/guanhelm.wasm +0 -0
  8. package/assets/jq.wasm +0 -0
  9. package/assets/openskills.wasm +0 -0
  10. package/assets/rg.wasm +0 -0
  11. package/assets/sed.wasm +0 -0
  12. package/bin/guancopilot +0 -0
  13. package/bin/guanvm +0 -0
  14. package/bin/platforms.cjs +6 -0
  15. package/bin/run.cjs +39 -0
  16. package/bin/runtime.cjs +44 -0
  17. package/licenses/Go-LICENSE +27 -0
  18. package/licenses/browser-_speed-highlight_core-LICENSE +121 -0
  19. package/licenses/browser-_speed-highlight_core-package.json +14 -0
  20. package/licenses/browser-dompurify-LICENSE +202 -0
  21. package/licenses/browser-dompurify-LICENSE-MPL +373 -0
  22. package/licenses/browser-dompurify-package.json +10 -0
  23. package/licenses/browser-marked-LICENSE +44 -0
  24. package/licenses/browser-marked-package.json +10 -0
  25. package/licenses/coreutils-LICENSE +18 -0
  26. package/licenses/findutils-LICENSE +18 -0
  27. package/licenses/github.com_BurntSushi_toml_v1.6.0-COPYING +21 -0
  28. package/licenses/github.com_dustin_go-humanize_v1.0.1-LICENSE +21 -0
  29. package/licenses/github.com_google_jsonschema-go_v0.4.3-LICENSE +21 -0
  30. package/licenses/github.com_google_uuid_v1.6.0-LICENSE +27 -0
  31. package/licenses/github.com_jackc_pgpassfile_v1.0.0-LICENSE +22 -0
  32. package/licenses/github.com_jackc_pgservicefile_v0.0.0-20240606120523-5a60cdf6a761-LICENSE +22 -0
  33. package/licenses/github.com_jackc_pgx_v5_v5.11.0-LICENSE +22 -0
  34. package/licenses/github.com_jackc_puddle_v2_v2.2.2-LICENSE +22 -0
  35. package/licenses/github.com_mattn_go-isatty_v0.0.20-LICENSE +9 -0
  36. package/licenses/github.com_modelcontextprotocol_go-sdk_v1.8.0-LICENSE +216 -0
  37. package/licenses/github.com_ncruces_go-strftime_v1.0.0-LICENSE +21 -0
  38. package/licenses/github.com_remyoudompheng_bigfft_v0.0.0-20230129092748-24d4a6f8daec-LICENSE +27 -0
  39. package/licenses/github.com_santhosh-tekuri_jsonschema_v6_v6.0.3-LICENSE +175 -0
  40. package/licenses/github.com_segmentio_asm_v1.1.3-LICENSE +21 -0
  41. package/licenses/github.com_segmentio_encoding_v0.5.4-LICENSE +21 -0
  42. package/licenses/github.com_tetratelabs_wazero_v1.12.0-LICENSE +201 -0
  43. package/licenses/github.com_tetratelabs_wazero_v1.12.0-NOTICE +2 -0
  44. package/licenses/github.com_yosida95_uritemplate_v3_v3.0.2-LICENSE +25 -0
  45. package/licenses/golang.org_x_image_v0.44.0-LICENSE +27 -0
  46. package/licenses/golang.org_x_net_v0.58.0-LICENSE +27 -0
  47. package/licenses/golang.org_x_oauth2_v0.36.0-LICENSE +27 -0
  48. package/licenses/golang.org_x_sync_v0.22.0-LICENSE +27 -0
  49. package/licenses/golang.org_x_sys_v0.47.0-LICENSE +27 -0
  50. package/licenses/golang.org_x_text_v0.41.0-LICENSE +27 -0
  51. package/licenses/golang.org_x_time_v0.15.0-LICENSE +27 -0
  52. package/licenses/guanbi-skills-LICENSE +133 -0
  53. package/licenses/guanbi-skills-LICENSE.README.md +28 -0
  54. package/licenses/guanbi-skills-LICENSE.zh-CN +82 -0
  55. package/licenses/jq-COPYING +176 -0
  56. package/licenses/modernc.org_libc_v1.73.4-LICENSE +27 -0
  57. package/licenses/modernc.org_libc_v1.73.4-LICENSE-3RD-PARTY.md +305 -0
  58. package/licenses/modernc.org_mathutil_v1.7.1-LICENSE +27 -0
  59. package/licenses/modernc.org_memory_v1.11.0-LICENSE +27 -0
  60. package/licenses/modernc.org_memory_v1.11.0-LICENSE-GO +27 -0
  61. package/licenses/modernc.org_memory_v1.11.0-LICENSE-LOGO +1 -0
  62. package/licenses/modernc.org_memory_v1.11.0-LICENSE-MMAP-GO +25 -0
  63. package/licenses/modernc.org_sqlite_v1.53.0-LICENSE +26 -0
  64. package/licenses/mvdan.cc_sh_v3_v3.13.1-LICENSE +27 -0
  65. package/licenses/ripgrep-COPYING +3 -0
  66. package/licenses/ripgrep-LICENSE-MIT +21 -0
  67. package/licenses/sed-LICENSE +21 -0
  68. package/manifest.json +972 -0
  69. package/package.json +30 -4
  70. package/plugin/guancopilot.js +193 -0
  71. package/skills-bundle/.guanvm-skills-bundle +0 -0
  72. package/skills-bundle/_recipes/dashboard/gates/page_check.js +16 -0
  73. package/skills-bundle/_recipes/dashboard/gates/report_check.js +4 -0
  74. package/skills-bundle/_recipes/dashboard/knowledge/01.md +1 -0
  75. package/skills-bundle/_recipes/dashboard/knowledge/02.md +1 -0
  76. package/skills-bundle/_recipes/dashboard/knowledge/03.md +1 -0
  77. package/skills-bundle/_recipes/dashboard/knowledge/04.md +1 -0
  78. package/skills-bundle/_recipes/dashboard/knowledge/05.md +1 -0
  79. package/skills-bundle/_recipes/dashboard/knowledge/06.md +1 -0
  80. package/skills-bundle/_recipes/dashboard/template.json +41 -0
  81. package/skills-bundle/_recipes/etl/gates/etl_live_check.js +10 -0
  82. package/skills-bundle/_recipes/etl/gates/etl_report_check.js +3 -0
  83. package/skills-bundle/_recipes/etl/knowledge/01.md +1 -0
  84. package/skills-bundle/_recipes/etl/knowledge/02.md +9 -0
  85. package/skills-bundle/_recipes/etl/knowledge/03.md +1 -0
  86. package/skills-bundle/_recipes/etl/knowledge/04.md +1 -0
  87. package/skills-bundle/_recipes/etl/knowledge/05.md +1 -0
  88. package/skills-bundle/_recipes/etl/template.json +39 -0
  89. package/skills-bundle/_recipes/hints.json +46 -0
  90. package/skills-bundle/guancli/.commandface.json +155 -0
  91. package/skills-bundle/guancli/SKILL.md +342 -0
  92. package/skills-bundle/guancli/evals/evals.json +156 -0
  93. package/skills-bundle/guancli/evals/fixtures/metric-candidate-empty-search.json +13 -0
  94. package/skills-bundle/guancli/evals/fixtures/metric-candidate-prior-request.json +13 -0
  95. package/skills-bundle/guancli/evals/fixtures/metric-consumption-columns.json +46 -0
  96. package/skills-bundle/guancli/evals/fixtures/metric-consumption-metadata.json +36 -0
  97. package/skills-bundle/guancli/evals/fixtures/metric-consumption-query.json +18 -0
  98. package/skills-bundle/guancli/references/analysis-primitives.md +95 -0
  99. package/skills-bundle/guancli/references/auth-and-config.md +131 -0
  100. package/skills-bundle/guancli/references/examples/metric-date-in.json +7 -0
  101. package/skills-bundle/guancli/references/examples/metric-query-rows.py +83 -0
  102. package/skills-bundle/guancli/references/examples/metric-query.sh +6 -0
  103. package/skills-bundle/guancli/references/form-chatbi.md +199 -0
  104. package/skills-bundle/guancli/references/gateway.md +148 -0
  105. package/skills-bundle/guancli/references/metric-batch-query.md +82 -0
  106. package/skills-bundle/guancli/references/metric-commands.md +562 -0
  107. package/skills-bundle/guancli/references/metric-generic-query.md +215 -0
  108. package/skills-bundle/guancli/references/metric-json-migration.md +18 -0
  109. package/skills-bundle/guancli/references/metric-query-recipes.md +358 -0
  110. package/skills-bundle/guancli/references/preview-and-output.md +192 -0
  111. package/skills-bundle/guancli/references/resource-query.md +101 -0
  112. package/skills-bundle/guands/SKILL.md +281 -0
  113. package/skills-bundle/guands/references/calc-fields-boundaries-and-pitfalls.md +160 -0
  114. package/skills-bundle/guands/references/command-reference.md +267 -0
  115. package/skills-bundle/guands/references/incremental-and-schedule.md +157 -0
  116. package/skills-bundle/guands/references/workflows.md +256 -0
  117. package/skills-bundle/guanetl/SKILL.md +391 -0
  118. package/skills-bundle/guanetl/evals/evals.json +41 -0
  119. package/skills-bundle/guanetl/references/ETL_AI_DEVELOP.md +456 -0
  120. package/skills-bundle/guanmetric/SKILL.md +144 -0
  121. package/skills-bundle/guanmetric/evals/evals.json +117 -0
  122. package/skills-bundle/guanmetric/evals/fixtures/atomic-detail-read-model.json +18 -0
  123. package/skills-bundle/guanmetric/evals/fixtures/confirmed-template-summary.json +12 -0
  124. package/skills-bundle/guanmetric/evals/fixtures/create-result-unknown-state.json +13 -0
  125. package/skills-bundle/guanmetric/evals/forward-eval-2026-09-21.json +62 -0
  126. package/skills-bundle/guanmetric/references/metric-api-contract-examples.json +690 -0
  127. package/skills-bundle/guanmetric/references/metric-api-contract.schema.json +349 -0
  128. package/skills-bundle/guanmetric/references/metric-api-contracts.md +436 -0
  129. package/skills-bundle/guanmetric/references/metric-atomic-mutation.md +238 -0
  130. package/skills-bundle/guanmetric/references/metric-batch-status.md +71 -0
  131. package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract-examples.json +53 -0
  132. package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract.schema.json +26 -0
  133. package/skills-bundle/guanmetric/references/metric-business-dictionary.md +76 -0
  134. package/skills-bundle/guanmetric/references/metric-common-fields.md +246 -0
  135. package/skills-bundle/guanmetric/references/metric-composite-mutation.md +165 -0
  136. package/skills-bundle/guanmetric/references/metric-delete-mutation.md +70 -0
  137. package/skills-bundle/guanmetric/references/metric-derived-mutation.md +453 -0
  138. package/skills-bundle/guanmetric/references/metric-excel-template.md +365 -0
  139. package/skills-bundle/guanmetric/references/metric-expression-rules.md +146 -0
  140. package/skills-bundle/guanmetric/references/metric-flow-generate-example.json +79 -0
  141. package/skills-bundle/guanmetric/references/metric-flow-generate.schema.json +93 -0
  142. package/skills-bundle/guanmetric/references/metric-flow.md +218 -0
  143. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract-examples.json +171 -0
  144. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract.schema.json +167 -0
  145. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contracts.md +193 -0
  146. package/skills-bundle/guanmetric/references/metric-mutation.md +155 -0
  147. package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract-examples.json +62 -0
  148. package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract.schema.json +47 -0
  149. package/skills-bundle/guanmetric/references/metric-public-dimension.md +155 -0
  150. package/skills-bundle/guanmetric/references/metric-tree-api-contract-examples.json +277 -0
  151. package/skills-bundle/guanmetric/references/metric-tree-api-contract.schema.json +263 -0
  152. package/skills-bundle/guanmetric/references/metric-tree-api-contracts.md +53 -0
  153. package/skills-bundle/guanmetric/references/metric-tree-mutation.md +500 -0
  154. package/skills-bundle/guanmetric/references/metric-validation-ownership.md +74 -0
  155. package/skills-bundle/guanvis/SKILL.md +333 -0
  156. package/skills-bundle/guanvis/evals/china_map/card_01_basic_map.js +13 -0
  157. package/skills-bundle/guanvis/evals/china_map/card_02_world_map.js +10 -0
  158. package/skills-bundle/guanvis/evals/china_map/card_03_point_map.js +12 -0
  159. package/skills-bundle/guanvis/evals/china_map/page.js +10 -0
  160. package/skills-bundle/guanvis/evals/china_map/schema.js +10 -0
  161. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/README.md +30 -0
  162. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/card_01_comparative_mvp.js +72 -0
  163. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/page.js +6 -0
  164. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/schema.js +22 -0
  165. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/verify_default_roundtrip.sh +92 -0
  166. package/skills-bundle/guanvis/evals/complex_report_pro/card_01_monthly.js +63 -0
  167. package/skills-bundle/guanvis/evals/complex_report_pro/page.js +6 -0
  168. package/skills-bundle/guanvis/evals/complex_report_pro/schema.js +6 -0
  169. package/skills-bundle/guanvis/evals/custom_chart_echarts/card_01_bar.js +13 -0
  170. package/skills-bundle/guanvis/evals/custom_chart_echarts/card_02_pie.js +13 -0
  171. package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/bar.js +11 -0
  172. package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/pie.js +15 -0
  173. package/skills-bundle/guanvis/evals/custom_chart_echarts/page.js +5 -0
  174. package/skills-bundle/guanvis/evals/custom_chart_echarts/schema.js +9 -0
  175. package/skills-bundle/guanvis/evals/custom_chart_sdk/card_01_level_nodes.js +19 -0
  176. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.css +51 -0
  177. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.html +1 -0
  178. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.js +28 -0
  179. package/skills-bundle/guanvis/evals/custom_chart_sdk/page.js +5 -0
  180. package/skills-bundle/guanvis/evals/custom_chart_sdk/schema.js +7 -0
  181. package/skills-bundle/guanvis/evals/dynamic_fields/card_01_dynamic_dataset.js +20 -0
  182. package/skills-bundle/guanvis/evals/dynamic_fields/card_02_dynamic_metric_chart.js +16 -0
  183. package/skills-bundle/guanvis/evals/dynamic_fields/metrics.js +19 -0
  184. package/skills-bundle/guanvis/evals/dynamic_fields/page.js +9 -0
  185. package/skills-bundle/guanvis/evals/dynamic_fields/schema.js +7 -0
  186. package/skills-bundle/guanvis/evals/dynamic_fields/verify_default_roundtrip.sh +137 -0
  187. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/README.md +26 -0
  188. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_01_percentage_advcalc.js +44 -0
  189. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_02_scroll_percentage.js +12 -0
  190. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/page.js +6 -0
  191. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/schema.js +22 -0
  192. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/README.md +28 -0
  193. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/card_01_rank_advcalc.js +59 -0
  194. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/page.js +6 -0
  195. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/schema.js +22 -0
  196. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/verify_default_roundtrip.sh +135 -0
  197. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/README.md +15 -0
  198. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/card_01_running_total_advcalc.js +74 -0
  199. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/page.js +6 -0
  200. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/schema.js +22 -0
  201. package/skills-bundle/guanvis/evals/sales_dashboard/card_01_revenue_column.js +10 -0
  202. package/skills-bundle/guanvis/evals/sales_dashboard/card_02_trend_line.js +9 -0
  203. package/skills-bundle/guanvis/evals/sales_dashboard/card_03_kpi.js +6 -0
  204. package/skills-bundle/guanvis/evals/sales_dashboard/card_04_pie.js +9 -0
  205. package/skills-bundle/guanvis/evals/sales_dashboard/card_05_calc_field_test.js +12 -0
  206. package/skills-bundle/guanvis/evals/sales_dashboard/page.js +11 -0
  207. package/skills-bundle/guanvis/evals/sales_dashboard/schema.js +14 -0
  208. package/skills-bundle/guanvis/evals/sales_dashboard/selector_01_region.js +10 -0
  209. package/skills-bundle/guanvis/evals/split_charts/card_01_column_split.js +10 -0
  210. package/skills-bundle/guanvis/evals/split_charts/card_02_line_split.js +10 -0
  211. package/skills-bundle/guanvis/evals/split_charts/card_03_combo_split.js +11 -0
  212. package/skills-bundle/guanvis/evals/split_charts/page.js +10 -0
  213. package/skills-bundle/guanvis/evals/split_charts/schema.js +14 -0
  214. package/skills-bundle/guanvis/evals/tab_layout/card_00_total_revenue.js +6 -0
  215. package/skills-bundle/guanvis/evals/tab_layout/card_01_revenue.js +10 -0
  216. package/skills-bundle/guanvis/evals/tab_layout/card_02_trend.js +9 -0
  217. package/skills-bundle/guanvis/evals/tab_layout/card_03_story.js +11 -0
  218. package/skills-bundle/guanvis/evals/tab_layout/page.js +23 -0
  219. package/skills-bundle/guanvis/evals/tab_layout/schema.js +11 -0
  220. package/skills-bundle/guanvis/evals/tab_layout/selector_01_region.js +8 -0
  221. package/skills-bundle/guanvis/references/api-reference.md +476 -0
  222. package/skills-bundle/guanvis/references/builder-reference.md +1676 -0
  223. package/skills-bundle/guanvis/references/chart-properties.md +2101 -0
  224. package/skills-bundle/guanvis/references/checkout-editing.md +53 -0
  225. package/skills-bundle/guanvis/references/complex-report-pro-patterns.md +398 -0
  226. package/skills-bundle/guanvis/references/dir-and-page-management.md +48 -0
  227. package/skills-bundle/guanvis/references/metric-chart-reference.md +258 -0
  228. package/skills-bundle/guanvis/references/publish-and-constraints.md +60 -0
  229. package/skills-bundle/guanvis/references/selector-reference.md +431 -0
  230. package/skills-bundle/guanvis/references/tableau-migration.md +73 -0
  231. package/skills-bundle/guanvis/references/theme.md +123 -0
  232. package/skills-bundle/guanvis/references/troubleshooting.md +25 -0
  233. package/skills-bundle/guanvis/references/validation-and-chart-patterns.md +205 -0
  234. package/skills-bundle/guanwf/SKILL.md +543 -0
  235. package/skills-bundle/guanwf/references/ETL_AI_DEVELOP.md +456 -0
  236. package/skills-bundle/guanwf/references/TASK_NODE_CONTRACTS.md +64 -0
  237. package/skills-bundle/guanwf/references/WORKFLOW_DSL.md +536 -0
  238. package/skills-bundle/guanwf/references/WORKFLOW_NODES.md +166 -0
  239. package/skills-bundle/js/SKILL.md +145 -0
package/NOTICE.md ADDED
@@ -0,0 +1,17 @@
1
+ # Distribution notice
2
+
3
+ First-party GuanCopilot/GuanVM code is distributed without a public license grant
4
+ (UNLICENSED). Public availability of this package does not grant an open-source
5
+ license to first-party code. Third-party components retain their respective
6
+ licenses, with collected license texts in licenses/.
7
+
8
+ The BI bundle includes marked (MIT), DOMPurify (Apache-2.0 OR MPL-2.0), and
9
+ speed-highlight/core (CC0-1.0).
10
+ License texts, package attribution, and notices for actual bundled transitive
11
+ dependencies are collected during packaging.
12
+
13
+ The self-contained package includes source provenance and per-file SHA-256 hashes.
14
+ WASM files are a prebuilt snapshot, not a claim of a fresh reproducible WASI build.
15
+ Codex itself is not bundled: an installed ChatGPT app or compatible Codex CLI is required.
16
+
17
+ The distribution uses the fixed guandata build profile and bundles the manual BI plugin.
package/README.md CHANGED
@@ -1,3 +1,147 @@
1
- # Temporary Holding Version
1
+ # @wubaoqi/guancopilot
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ 本地 GuanData BI Copilot。安装包自带 guancopilot、GuanVM、9 个 WASM 工具、
4
+ 7 个技能定义及可手工安装的 BI 前端插件。用户不需要 Go,也不需要准备 GuanVM。
5
+
6
+ 本包版本为 **0.2.0**,仅有 `@wubaoqi/guancopilot` 一个自包含包;发布状态以官方 npm registry 为准。
7
+
8
+ 本包仅提供观远 BI;应用范围在编译和打包时固定为 `guandata`。Chrome 扩展不包含在 npm 包中。普通 HTTP BI 页面使用本机连接窗口,使用期间请保持窗口打开。
9
+
10
+
11
+ ## 0.2.0 更新
12
+
13
+ - 观远专用构建固定应用范围,包内只保留观远应用及所需运行资源。
14
+ - 普通 HTTP BI 页面通过用户点击打开的本机窗口连接,兼容 HTTP 环境的请求标识生成。
15
+ - 本机窗口支持后台重启后的恢复,未知请求结果不会自动重放。
16
+ - 共享工作区继续保留历史、文件、终端及已验证账号和域隔离。
17
+
18
+ 升级前请停止后台并备份完整 `~/.guancopilot`。本版本会升级本地连接元数据;降级到旧版需要恢复升级前备份,不能直接让旧版写入迁移后的数据库。更新后台后,也请重新导出并人工替换 BI 注册插件的完整 JS。
19
+
20
+ ## 用户启动流程
21
+
22
+ 需要 Node.js >=20,以及已安装并登录的 ChatGPT.app 或兼容的 Codex CLI(>=0.162.1,
23
+ 需文件 auth.json)。macOS 优先使用 ChatGPT.app 自带 Codex,再回退 PATH 中的 CLI;
24
+ 本包不下载 Codex、不改桌面配置、不安装全局 Codex skills/MCP。
25
+
26
+ 用户安装和启动流程:
27
+
28
+ ```bash
29
+ npm install -g @wubaoqi/guancopilot
30
+ guancopilot doctor
31
+ guancopilot
32
+ ```
33
+
34
+ 直接 `guancopilot` 或 `guancopilot start` 默认运行 serve,仅监听 127.0.0.1:19090。
35
+ 默认 CORS 为 `*`,浏览器免配对,无需填写 --origins;仍可用 --origins 限制精确 Origin。任意工作目录均可启动,
36
+ 后台和资源路径按安装包位置定位;--guanvm/--assets/--skills 可用于开发时显式覆盖。
37
+ `guancopilot --version`、`--help` 不需要启动 Codex。
38
+
39
+ ```bash
40
+ guancopilot plugin-path
41
+ guancopilot plugin --out ./guancopilot-plugin.js
42
+ ```
43
+
44
+ 把导出的 JS 整体粘贴到已登录 BI 的 Console 进行联调,或由管理员人工安装。
45
+ 只在 `/data-dev/offline-dev/` 下显示;没有自动修改、安装或发布 BI 插件的步骤。
46
+ 界面可选择模型及该模型支持的 Low/Medium/High 等常规思考强度,排除 xhigh/max/ultra。
47
+ 观远历史、文件和终端按 BI URL + 服务端验证的 domID + 账号隔离,同一身份的新对话复用固定工作区。
48
+ 文件浏览提供搜索、排序、分栏/列表/专注预览,以及文件和空目录的确认后永久删除;没有回收站。
49
+ 同一后台默认可同时服务多个 BI 环境。需要限制来源时,可显式指定各自 Origin:
50
+
51
+ ```bash
52
+ guancopilot start --origins https://demo.guandata.com,https://app.guandata.com
53
+ ```
54
+
55
+ 不同身份的凭证、历史和文件工作区隔离;同一身份的多个页面复用文件工作区。
56
+ 聊天及状态默认在当前用户 home 的 `.guancopilot`,不会写入 npm 安装目录;支持 --state。
57
+
58
+ ```bash
59
+ guancopilot start --expose --origins https://your-bi.example.com
60
+ ```
61
+
62
+ 外网模式默认监听 0.0.0.0:19090,并每次启动生成、打印配对码,保存到状态目录
63
+ pairing-token(0600)。前端设置中填写后台地址和配对码;HTTPS BI 访问远端需要 HTTPS
64
+ 入口,本包不配置 TLS 或代理。配对码授权个人实例,不是多租户账号隔离系统。
65
+
66
+ ## 维护者本地构建和打包
67
+
68
+ 构建机需要 Go 1.26.5、Node 开发依赖,以及旁边 GuanVM 仓库已准备的 assets/ 与
69
+ skills-bundle/。这些是维护者的构建输入,最终用户无需它们;WASM 原始编译继续使用
70
+ GuanVM 自己的 prepare/build 脚本。本流程将现有 WASM 快照按 SHA-256 固定,不宣称
71
+ 它们刚从 native 源码提交重建。记录源码 commit、dirty 状态、Go 版本和逐文件摘要。
72
+
73
+ 在 guancopilot 根目录:
74
+
75
+ 前端源码位于 `frontend/`,打包脚本自动生成 `dist/bi/guancopilot.js` 并复制为包内
76
+ `plugin/guancopilot.js`;不依赖 Git 中的预编译 JS。Chrome 扩展产物位于 `dist/chrome-extension/`,不打入 npm 包。
77
+
78
+ ```bash
79
+ npm ci --ignore-scripts
80
+ cd npm
81
+ npm run build # 当前平台;生成完整单包暂存目录
82
+ npm run pack # 只写本地 .tgz
83
+ npm test
84
+ npm run test:install # 本机只读 registry fixture 安装验收,不发布
85
+ ```
86
+
87
+ 当前唯一目标 macOS Apple Silicon(darwin-arm64)的完整构建与打包:
88
+
89
+ ```bash
90
+ npm run build:all
91
+ npm run pack:all
92
+ ```
93
+
94
+ 仅支持 darwin-arm64,CGO_ENABLED=0。npm 的 os/cpu 和平台选择器都会拒绝其他系统与架构;其他平台的 Codex 定位、目录和认证逻辑后续按需验收后添加。
95
+
96
+ 定制源码/资产来源:`node scripts/build.mjs --target darwin-arm64 --guanvm-source /path/to/guanvm
97
+ --assets /path/to/assets --skills /path/to/skills-bundle`。构建不改变来源目录,包内软链接
98
+ 被复制为实际文件;拒绝指向技能包之外的软链接。分发包不依赖源码中的链接。
99
+
100
+ 产物只有 `npm/dist/0.1.0/wubaoqi-guancopilot-0.1.0.tgz` 一个包,名称为
101
+ `@wubaoqi/guancopilot`。JS 启动器、两个 macOS ARM64 程序、WASM、skills、插件、
102
+ 许可证和 manifest 全部内置;没有 dependencies 或 optionalDependencies,也没有资源包/
103
+ 平台包的额外安装步骤。后续有其他平台需求时再拆包。
104
+
105
+ 安装无需 lifecycle scripts,不会编译或从 GitHub 下载运行时;缺失文件、平台不匹配或
106
+ 文件摘要错误会明确拒绝启动。维护者的构建暂存目录为 `npm/build/package/`;
107
+ `npm run pack` 从该完整目录打包,避免将源码目录误当作完整分发包。
108
+
109
+ 当前 macOS ARM64 可以直接使用单一本地 tarball 安装(在 npm 目录下):
110
+
111
+ ```bash
112
+ npm install -g --offline ./dist/0.1.0/wubaoqi-guancopilot-0.1.0.tgz
113
+ ```
114
+
115
+ 也可运行 `npm run test:install -- --tarballs` 自动在临时 prefix 验证离线 tarball 安装。
116
+ 测试将 PATH 限定为无 Go、无独立 GuanVM,使用带空格的安装路径及无关工作目录,验证
117
+ 全局命令、doctor、启动、自动浏览器会话、内置 GuanVM 身份验证、凭证更新及优雅退出。
118
+ registry fixture 只接受 GET/HEAD,所有包来自本地 tgz;不连接公共 registry、不发布。
119
+ 使用 `--keep` 保留安装 prefix,供进一步运行 `guancopilot smoke` 检查真实 Codex 链路。
120
+
121
+ 构建、打包和安装测试不会自动发布。维护者只发布已经安装验证的 tarball;浏览器登录、dry-run、发布及发布后验证流程见源码仓库 `AGENTS.md`。
122
+
123
+ 双站点并行验收:安装测试加 `--keep` 后,在仓库根运行
124
+ `node npm/scripts/multisite-smoke.mjs`,使用本地模拟 BI 验证隔离、凭证轮换、停止和直接删除。
125
+
126
+ ## 浏览器提示 loopback address space 权限错误
127
+
128
+ 默认 CORS * 及兼容 PNA 的 Access-Control-Allow-Private-Network 头,不能代替浏览器的
129
+ 本地网络访问权限。若看到 `Permission was denied ... loopback address space`,在当前
130
+ BI 站点的浏览器站点设置中允许“本地网络访问/本机访问”,刷新页面;不是在 127.0.0.1
131
+ 页面设置。不同浏览器版本的名称可能不同。后端不能通过响应头授予该权限。
132
+ 参见 [Chrome 官方说明](https://developer.chrome.com/blog/local-network-access)。
133
+
134
+ 首次打开 Copilot 会从用户点击中发起本机连接,触发浏览器授权弹窗;选择“允许”即可。
135
+ 授权前暂停后台探活。权限查询优先 loopback-network,旧版兼容 local-network-access;
136
+ 已允许时自动连接,已拒绝时显示恢复指引,网页无法强制覆盖拒绝决定。
137
+
138
+ ## Safari 和代码配色
139
+
140
+ macOS Safari 打开 HTTPS BI 时,插件使用独立的本机连接窗口:启动更新后的 guancopilot,
141
+ 点击 Copilot,再保持自动打开的“guanloop 本机连接”窗口开启,返回 BI 使用。若关闭该窗口,
142
+ 面板会显示断线,点击连接可重新打开。弹窗被浏览器阻止时,面板会提示允许当前站点的弹窗。
143
+ Chrome 继续使用直接连接和原有本地网络授权流程。无需安装证书或修改安全设置。
144
+ 后台和导出的单文件插件需一起更新;本次已在 macOS Safari 27.0 完成真实 BI 只读验证。
145
+
146
+ Markdown 代码块、文件预览和终端使用 Solarized Light。SQL、Bash、JavaScript、JSON、
147
+ Python 语法高亮随单文件插件内置,不需要 CDN;复制代码仍为原始文本。
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: package/assets/guanbi.wasm
3
+ size: 66169856 bytes
4
+ sha256: 39f865fab8f7381b7a703f8ad3a237485eeb15453fcc7330a23b0726dfcb53c0
Binary file
Binary file
package/assets/jq.wasm ADDED
Binary file
Binary file
package/assets/rg.wasm ADDED
Binary file
Binary file
Binary file
package/bin/guanvm ADDED
Binary file
@@ -0,0 +1,6 @@
1
+ const targets = [
2
+ ['darwin','arm64'],
3
+ ].map(([platform,arch]) => ({platform,arch,key:`${platform}-${arch}`,goos:platform==='win32'?'windows':platform,goarch:arch==='x64'?'amd64':arch,ext:platform==='win32'?'.exe':''}));
4
+ const wasmNames=['coreutils','find','guanbi','guancli','guanhelm','jq','openskills','rg','sed'];
5
+ const skillNames=['guancli','guands','guanetl','guanmetric','guanvis','guanwf','js'];
6
+ module.exports={targets,wasmNames,skillNames,targetFor:(platform,arch)=>targets.find(t=>t.platform===platform&&t.arch===arch)};
package/bin/run.cjs ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ const fs=require('node:fs');
4
+ const path=require('node:path');
5
+ const os=require('node:os');
6
+ const {spawn}=require('node:child_process');
7
+ const {resolveRuntime}=require('./runtime.cjs');
8
+ const pkg=require('../package.json');
9
+ function launch(argv=process.argv.slice(2)) {
10
+ if(['--version','-v','version'].includes(argv[0])) {console.log(pkg.version);return;}
11
+ if(['--help','-h','help'].includes(argv[0])) {
12
+ console.log(`guancopilot ${pkg.version}\n\nUsage:\n guancopilot [serve|start] [--origins https://your-bi.example.com]\n guancopilot doctor\n guancopilot plugin-path\n guancopilot plugin [--out FILE]\n\nDefault: 127.0.0.1:19090, CORS *, automatic browser session, no pairing code.\n--expose enables external listening and generates a pairing code.\nUse guancopilot serve --help for all server flags.\nGuanVM, WASM tools and skills are bundled; no Go installation required.\nAn authenticated ChatGPT app or compatible Codex CLI is required.`);return;
13
+ }
14
+ const runtime=resolveRuntime();
15
+ if(argv[0]==='plugin-path') {if(argv.length!==1)throw new Error('Usage: guancopilot plugin-path');console.log(runtime.plugin);return;}
16
+ if(argv[0]==='plugin') {
17
+ if(argv.length===1)process.stdout.write(fs.readFileSync(runtime.plugin));
18
+ else if(argv.length===3&&argv[1]==='--out') {fs.copyFileSync(runtime.plugin,path.resolve(argv[2]));console.log(path.resolve(argv[2]));}
19
+ else throw new Error('Usage: guancopilot plugin [--out FILE]');
20
+ return;
21
+ }
22
+ argv=[...argv];
23
+ if(argv[0]==='start')argv[0]='serve';
24
+ if(!argv.length||argv[0].startsWith('-'))argv.unshift('serve');
25
+ for(const [flag,value]of [['--guanvm',runtime.guanvm],['--assets',runtime.assets],['--skills',runtime.skills]]) {
26
+ if(!argv.some(arg=>arg===flag||arg.startsWith(flag+'=')))argv.push(flag,value);
27
+ }
28
+ if(argv[0]==='serve')console.error(`Bundled BI plugin: ${runtime.plugin}`);
29
+ const child=spawn(runtime.copilot,argv,{stdio:'inherit',shell:false,env:process.env});
30
+ const signals=['SIGINT','SIGTERM'];
31
+ const forward=signal=>{if(!child.killed)child.kill(signal);};
32
+ const handlers=signals.map(signal=>{const handler=()=>forward(signal);process.on(signal,handler);return [signal,handler];});
33
+ const cleanup=()=>{for(const [signal,handler]of handlers)process.removeListener(signal,handler);};
34
+ child.on('error',error=>{cleanup();console.error(`Cannot start guancopilot: ${error.message}`);process.exitCode=1;});
35
+ child.on('exit',(code,signal)=>{cleanup();process.exitCode=code??(128+(os.constants.signals[signal]||1));});
36
+ return child;
37
+ }
38
+ if(require.main===module)try{launch();}catch(error){console.error(error.message);process.exitCode=1;}
39
+ module.exports={launch};
@@ -0,0 +1,44 @@
1
+ const fs=require('node:fs');
2
+ const path=require('node:path');
3
+ const crypto=require('node:crypto');
4
+ const {targetFor,wasmNames,skillNames}=require('./platforms.cjs');
5
+ const main=require('../package.json');
6
+ function hashFile(file) {
7
+ const hash=crypto.createHash('sha256'),fd=fs.openSync(file,'r'),buffer=Buffer.allocUnsafe(1024*1024);
8
+ try {let n;while((n=fs.readSync(fd,buffer,0,buffer.length,null))>0)hash.update(buffer.subarray(0,n));} finally {fs.closeSync(fd);}
9
+ return hash.digest('hex');
10
+ }
11
+ function checkedFile(root,relative) {
12
+ if(typeof relative!=='string'||!relative||relative.includes('\\')||path.posix.isAbsolute(relative)||relative.split('/').some(p=>!p||p==='.'||p==='..'))throw new Error('Invalid bundled file path');
13
+ const file=path.join(root,...relative.split('/'));
14
+ // Build materializes bundle-local links; verify every component again in installed packages.
15
+ let current=root;
16
+ for(const part of relative.split('/')) {current=path.join(current,part);if(fs.lstatSync(current).isSymbolicLink())throw new Error('Unexpected symlink in bundled runtime');}
17
+ if(!fs.statSync(file).isFile())throw new Error(`Bundled file missing: ${relative}`);
18
+ return file;
19
+ }
20
+ function verifyPackage(root, required, targetKey) {
21
+ const pkg=JSON.parse(fs.readFileSync(path.join(root,'package.json'),'utf8'));
22
+ if(pkg.name!==main.name)throw new Error(`Unexpected runtime package: ${pkg.name}`);
23
+ if(pkg.version!==main.version)throw new Error(`Runtime version mismatch: ${pkg.name} ${pkg.version}; expected ${main.version}`);
24
+ const manifest=JSON.parse(fs.readFileSync(path.join(root,'manifest.json'),'utf8'));
25
+ if(manifest.version!==main.version||!manifest.files||typeof manifest.files!=='object')throw new Error('Invalid runtime manifest');
26
+ if(manifest.buildProfile!=='guandata'||JSON.stringify(manifest.applications)!=='["guandata"]')throw new Error('Unexpected application release profile; reinstall '+main.name);
27
+ if(targetKey&&manifest.platform!==targetKey)throw new Error(`Bundled platform mismatch: ${manifest.platform}; expected ${targetKey}`);
28
+ for(const relative of required)if(!Object.hasOwn(manifest.files,relative))throw new Error(`Runtime manifest is missing ${relative}`);
29
+ for(const [relative,expected]of Object.entries(manifest.files)) {
30
+ const file=checkedFile(root,relative);
31
+ if(fs.statSync(file).size!==expected.size||hashFile(file)!==expected.sha256)throw new Error(`Bundled file integrity check failed: ${relative}; reinstall ${main.name}`);
32
+ }
33
+ return manifest;
34
+ }
35
+ function resolveRuntime({platform=process.platform,arch=process.arch,root=path.resolve(__dirname,'..')}={}) {
36
+ const target=targetFor(platform,arch);
37
+ if(!target)throw new Error(`Unsupported platform: ${platform}-${arch}`);
38
+ const copilot=`bin/guancopilot${target.ext}`,vm=`bin/guanvm${target.ext}`;
39
+ verifyPackage(root,[copilot,vm,'bin/run.cjs','bin/runtime.cjs','bin/platforms.cjs',...wasmNames.map(n=>`assets/${n}.wasm`),...skillNames.map(n=>`skills-bundle/${n}/SKILL.md`),'plugin/guancopilot.js'],target.key);
40
+ const runtime={copilot:path.join(root,copilot),guanvm:path.join(root,vm),assets:path.join(root,'assets'),skills:path.join(root,'skills-bundle'),plugin:path.join(root,'plugin/guancopilot.js')};
41
+ for(const file of [runtime.copilot,runtime.guanvm])fs.accessSync(file,fs.constants.X_OK);
42
+ return runtime;
43
+ }
44
+ module.exports={hashFile,checkedFile,verifyPackage,resolveRuntime};
@@ -0,0 +1,27 @@
1
+ Copyright 2009 The Go Authors.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are
5
+ met:
6
+
7
+ * Redistributions of source code must retain the above copyright
8
+ notice, this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above
10
+ copyright notice, this list of conditions and the following disclaimer
11
+ in the documentation and/or other materials provided with the
12
+ distribution.
13
+ * Neither the name of Google LLC nor the names of its
14
+ contributors may be used to endorse or promote products derived from
15
+ this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,121 @@
1
+ Creative Commons Legal Code
2
+
3
+ CC0 1.0 Universal
4
+
5
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6
+ LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9
+ REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10
+ PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11
+ THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12
+ HEREUNDER.
13
+
14
+ Statement of Purpose
15
+
16
+ The laws of most jurisdictions throughout the world automatically confer
17
+ exclusive Copyright and Related Rights (defined below) upon the creator
18
+ and subsequent owner(s) (each and all, an "owner") of an original work of
19
+ authorship and/or a database (each, a "Work").
20
+
21
+ Certain owners wish to permanently relinquish those rights to a Work for
22
+ the purpose of contributing to a commons of creative, cultural and
23
+ scientific works ("Commons") that the public can reliably and without fear
24
+ of later claims of infringement build upon, modify, incorporate in other
25
+ works, reuse and redistribute as freely as possible in any form whatsoever
26
+ and for any purposes, including without limitation commercial purposes.
27
+ These owners may contribute to the Commons to promote the ideal of a free
28
+ culture and the further production of creative, cultural and scientific
29
+ works, or to gain reputation or greater distribution for their Work in
30
+ part through the use and efforts of others.
31
+
32
+ For these and/or other purposes and motivations, and without any
33
+ expectation of additional consideration or compensation, the person
34
+ associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35
+ is an owner of Copyright and Related Rights in the Work, voluntarily
36
+ elects to apply CC0 to the Work and publicly distribute the Work under its
37
+ terms, with knowledge of his or her Copyright and Related Rights in the
38
+ Work and the meaning and intended legal effect of CC0 on those rights.
39
+
40
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
41
+ protected by copyright and related or neighboring rights ("Copyright and
42
+ Related Rights"). Copyright and Related Rights include, but are not
43
+ limited to, the following:
44
+
45
+ i. the right to reproduce, adapt, distribute, perform, display,
46
+ communicate, and translate a Work;
47
+ ii. moral rights retained by the original author(s) and/or performer(s);
48
+ iii. publicity and privacy rights pertaining to a person's image or
49
+ likeness depicted in a Work;
50
+ iv. rights protecting against unfair competition in regards to a Work,
51
+ subject to the limitations in paragraph 4(a), below;
52
+ v. rights protecting the extraction, dissemination, use and reuse of data
53
+ in a Work;
54
+ vi. database rights (such as those arising under Directive 96/9/EC of the
55
+ European Parliament and of the Council of 11 March 1996 on the legal
56
+ protection of databases, and under any national implementation
57
+ thereof, including any amended or successor version of such
58
+ directive); and
59
+ vii. other similar, equivalent or corresponding rights throughout the
60
+ world based on applicable law or treaty, and any national
61
+ implementations thereof.
62
+
63
+ 2. Waiver. To the greatest extent permitted by, but not in contravention
64
+ of, applicable law, Affirmer hereby overtly, fully, permanently,
65
+ irrevocably and unconditionally waives, abandons, and surrenders all of
66
+ Affirmer's Copyright and Related Rights and associated claims and causes
67
+ of action, whether now known or unknown (including existing as well as
68
+ future claims and causes of action), in the Work (i) in all territories
69
+ worldwide, (ii) for the maximum duration provided by applicable law or
70
+ treaty (including future time extensions), (iii) in any current or future
71
+ medium and for any number of copies, and (iv) for any purpose whatsoever,
72
+ including without limitation commercial, advertising or promotional
73
+ purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74
+ member of the public at large and to the detriment of Affirmer's heirs and
75
+ successors, fully intending that such Waiver shall not be subject to
76
+ revocation, rescission, cancellation, termination, or any other legal or
77
+ equitable action to disrupt the quiet enjoyment of the Work by the public
78
+ as contemplated by Affirmer's express Statement of Purpose.
79
+
80
+ 3. Public License Fallback. Should any part of the Waiver for any reason
81
+ be judged legally invalid or ineffective under applicable law, then the
82
+ Waiver shall be preserved to the maximum extent permitted taking into
83
+ account Affirmer's express Statement of Purpose. In addition, to the
84
+ extent the Waiver is so judged Affirmer hereby grants to each affected
85
+ person a royalty-free, non transferable, non sublicensable, non exclusive,
86
+ irrevocable and unconditional license to exercise Affirmer's Copyright and
87
+ Related Rights in the Work (i) in all territories worldwide, (ii) for the
88
+ maximum duration provided by applicable law or treaty (including future
89
+ time extensions), (iii) in any current or future medium and for any number
90
+ of copies, and (iv) for any purpose whatsoever, including without
91
+ limitation commercial, advertising or promotional purposes (the
92
+ "License"). The License shall be deemed effective as of the date CC0 was
93
+ applied by Affirmer to the Work. Should any part of the License for any
94
+ reason be judged legally invalid or ineffective under applicable law, such
95
+ partial invalidity or ineffectiveness shall not invalidate the remainder
96
+ of the License, and in such case Affirmer hereby affirms that he or she
97
+ will not (i) exercise any of his or her remaining Copyright and Related
98
+ Rights in the Work or (ii) assert any associated claims and causes of
99
+ action with respect to the Work, in either case contrary to Affirmer's
100
+ express Statement of Purpose.
101
+
102
+ 4. Limitations and Disclaimers.
103
+
104
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
105
+ surrendered, licensed or otherwise affected by this document.
106
+ b. Affirmer offers the Work as-is and makes no representations or
107
+ warranties of any kind concerning the Work, express, implied,
108
+ statutory or otherwise, including without limitation warranties of
109
+ title, merchantability, fitness for a particular purpose, non
110
+ infringement, or the absence of latent or other defects, accuracy, or
111
+ the present or absence of errors, whether or not discoverable, all to
112
+ the greatest extent permissible under applicable law.
113
+ c. Affirmer disclaims responsibility for clearing rights of other persons
114
+ that may apply to the Work or any use thereof, including without
115
+ limitation any person's Copyright and Related Rights in the Work.
116
+ Further, Affirmer disclaims responsibility for obtaining any necessary
117
+ consents, permissions or other rights required for any use of the
118
+ Work.
119
+ d. Affirmer understands and acknowledges that Creative Commons is not a
120
+ party to this document and has no duty or obligation with respect to
121
+ this CC0 or use of the Work.
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@speed-highlight/core",
3
+ "version": "2.1.0",
4
+ "license": "CC0-1.0",
5
+ "author": {
6
+ "name": "matubu",
7
+ "email": "hi@mathias.ninja",
8
+ "url": "https://mathias.ninja"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/speed-highlight/core.git"
13
+ }
14
+ }