@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.
- package/NOTICE.md +17 -0
- package/README.md +146 -2
- package/assets/coreutils.wasm +0 -0
- package/assets/find.wasm +0 -0
- package/assets/guanbi.wasm +4 -0
- package/assets/guancli.wasm +0 -0
- package/assets/guanhelm.wasm +0 -0
- package/assets/jq.wasm +0 -0
- package/assets/openskills.wasm +0 -0
- package/assets/rg.wasm +0 -0
- package/assets/sed.wasm +0 -0
- package/bin/guancopilot +0 -0
- package/bin/guanvm +0 -0
- package/bin/platforms.cjs +6 -0
- package/bin/run.cjs +39 -0
- package/bin/runtime.cjs +44 -0
- package/licenses/Go-LICENSE +27 -0
- package/licenses/browser-_speed-highlight_core-LICENSE +121 -0
- package/licenses/browser-_speed-highlight_core-package.json +14 -0
- package/licenses/browser-dompurify-LICENSE +202 -0
- package/licenses/browser-dompurify-LICENSE-MPL +373 -0
- package/licenses/browser-dompurify-package.json +10 -0
- package/licenses/browser-marked-LICENSE +44 -0
- package/licenses/browser-marked-package.json +10 -0
- package/licenses/coreutils-LICENSE +18 -0
- package/licenses/findutils-LICENSE +18 -0
- package/licenses/github.com_BurntSushi_toml_v1.6.0-COPYING +21 -0
- package/licenses/github.com_dustin_go-humanize_v1.0.1-LICENSE +21 -0
- package/licenses/github.com_google_jsonschema-go_v0.4.3-LICENSE +21 -0
- package/licenses/github.com_google_uuid_v1.6.0-LICENSE +27 -0
- package/licenses/github.com_jackc_pgpassfile_v1.0.0-LICENSE +22 -0
- package/licenses/github.com_jackc_pgservicefile_v0.0.0-20240606120523-5a60cdf6a761-LICENSE +22 -0
- package/licenses/github.com_jackc_pgx_v5_v5.11.0-LICENSE +22 -0
- package/licenses/github.com_jackc_puddle_v2_v2.2.2-LICENSE +22 -0
- package/licenses/github.com_mattn_go-isatty_v0.0.20-LICENSE +9 -0
- package/licenses/github.com_modelcontextprotocol_go-sdk_v1.8.0-LICENSE +216 -0
- package/licenses/github.com_ncruces_go-strftime_v1.0.0-LICENSE +21 -0
- package/licenses/github.com_remyoudompheng_bigfft_v0.0.0-20230129092748-24d4a6f8daec-LICENSE +27 -0
- package/licenses/github.com_santhosh-tekuri_jsonschema_v6_v6.0.3-LICENSE +175 -0
- package/licenses/github.com_segmentio_asm_v1.1.3-LICENSE +21 -0
- package/licenses/github.com_segmentio_encoding_v0.5.4-LICENSE +21 -0
- package/licenses/github.com_tetratelabs_wazero_v1.12.0-LICENSE +201 -0
- package/licenses/github.com_tetratelabs_wazero_v1.12.0-NOTICE +2 -0
- package/licenses/github.com_yosida95_uritemplate_v3_v3.0.2-LICENSE +25 -0
- package/licenses/golang.org_x_image_v0.44.0-LICENSE +27 -0
- package/licenses/golang.org_x_net_v0.58.0-LICENSE +27 -0
- package/licenses/golang.org_x_oauth2_v0.36.0-LICENSE +27 -0
- package/licenses/golang.org_x_sync_v0.22.0-LICENSE +27 -0
- package/licenses/golang.org_x_sys_v0.47.0-LICENSE +27 -0
- package/licenses/golang.org_x_text_v0.41.0-LICENSE +27 -0
- package/licenses/golang.org_x_time_v0.15.0-LICENSE +27 -0
- package/licenses/guanbi-skills-LICENSE +133 -0
- package/licenses/guanbi-skills-LICENSE.README.md +28 -0
- package/licenses/guanbi-skills-LICENSE.zh-CN +82 -0
- package/licenses/jq-COPYING +176 -0
- package/licenses/modernc.org_libc_v1.73.4-LICENSE +27 -0
- package/licenses/modernc.org_libc_v1.73.4-LICENSE-3RD-PARTY.md +305 -0
- package/licenses/modernc.org_mathutil_v1.7.1-LICENSE +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-GO +27 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-LOGO +1 -0
- package/licenses/modernc.org_memory_v1.11.0-LICENSE-MMAP-GO +25 -0
- package/licenses/modernc.org_sqlite_v1.53.0-LICENSE +26 -0
- package/licenses/mvdan.cc_sh_v3_v3.13.1-LICENSE +27 -0
- package/licenses/ripgrep-COPYING +3 -0
- package/licenses/ripgrep-LICENSE-MIT +21 -0
- package/licenses/sed-LICENSE +21 -0
- package/manifest.json +972 -0
- package/package.json +30 -4
- package/plugin/guancopilot.js +193 -0
- package/skills-bundle/.guanvm-skills-bundle +0 -0
- package/skills-bundle/_recipes/dashboard/gates/page_check.js +16 -0
- package/skills-bundle/_recipes/dashboard/gates/report_check.js +4 -0
- package/skills-bundle/_recipes/dashboard/knowledge/01.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/02.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/03.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/04.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/05.md +1 -0
- package/skills-bundle/_recipes/dashboard/knowledge/06.md +1 -0
- package/skills-bundle/_recipes/dashboard/template.json +41 -0
- package/skills-bundle/_recipes/etl/gates/etl_live_check.js +10 -0
- package/skills-bundle/_recipes/etl/gates/etl_report_check.js +3 -0
- package/skills-bundle/_recipes/etl/knowledge/01.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/02.md +9 -0
- package/skills-bundle/_recipes/etl/knowledge/03.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/04.md +1 -0
- package/skills-bundle/_recipes/etl/knowledge/05.md +1 -0
- package/skills-bundle/_recipes/etl/template.json +39 -0
- package/skills-bundle/_recipes/hints.json +46 -0
- package/skills-bundle/guancli/.commandface.json +155 -0
- package/skills-bundle/guancli/SKILL.md +342 -0
- package/skills-bundle/guancli/evals/evals.json +156 -0
- package/skills-bundle/guancli/evals/fixtures/metric-candidate-empty-search.json +13 -0
- package/skills-bundle/guancli/evals/fixtures/metric-candidate-prior-request.json +13 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-columns.json +46 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-metadata.json +36 -0
- package/skills-bundle/guancli/evals/fixtures/metric-consumption-query.json +18 -0
- package/skills-bundle/guancli/references/analysis-primitives.md +95 -0
- package/skills-bundle/guancli/references/auth-and-config.md +131 -0
- package/skills-bundle/guancli/references/examples/metric-date-in.json +7 -0
- package/skills-bundle/guancli/references/examples/metric-query-rows.py +83 -0
- package/skills-bundle/guancli/references/examples/metric-query.sh +6 -0
- package/skills-bundle/guancli/references/form-chatbi.md +199 -0
- package/skills-bundle/guancli/references/gateway.md +148 -0
- package/skills-bundle/guancli/references/metric-batch-query.md +82 -0
- package/skills-bundle/guancli/references/metric-commands.md +562 -0
- package/skills-bundle/guancli/references/metric-generic-query.md +215 -0
- package/skills-bundle/guancli/references/metric-json-migration.md +18 -0
- package/skills-bundle/guancli/references/metric-query-recipes.md +358 -0
- package/skills-bundle/guancli/references/preview-and-output.md +192 -0
- package/skills-bundle/guancli/references/resource-query.md +101 -0
- package/skills-bundle/guands/SKILL.md +281 -0
- package/skills-bundle/guands/references/calc-fields-boundaries-and-pitfalls.md +160 -0
- package/skills-bundle/guands/references/command-reference.md +267 -0
- package/skills-bundle/guands/references/incremental-and-schedule.md +157 -0
- package/skills-bundle/guands/references/workflows.md +256 -0
- package/skills-bundle/guanetl/SKILL.md +391 -0
- package/skills-bundle/guanetl/evals/evals.json +41 -0
- package/skills-bundle/guanetl/references/ETL_AI_DEVELOP.md +456 -0
- package/skills-bundle/guanmetric/SKILL.md +144 -0
- package/skills-bundle/guanmetric/evals/evals.json +117 -0
- package/skills-bundle/guanmetric/evals/fixtures/atomic-detail-read-model.json +18 -0
- package/skills-bundle/guanmetric/evals/fixtures/confirmed-template-summary.json +12 -0
- package/skills-bundle/guanmetric/evals/fixtures/create-result-unknown-state.json +13 -0
- package/skills-bundle/guanmetric/evals/forward-eval-2026-09-21.json +62 -0
- package/skills-bundle/guanmetric/references/metric-api-contract-examples.json +690 -0
- package/skills-bundle/guanmetric/references/metric-api-contract.schema.json +349 -0
- package/skills-bundle/guanmetric/references/metric-api-contracts.md +436 -0
- package/skills-bundle/guanmetric/references/metric-atomic-mutation.md +238 -0
- package/skills-bundle/guanmetric/references/metric-batch-status.md +71 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract-examples.json +53 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract.schema.json +26 -0
- package/skills-bundle/guanmetric/references/metric-business-dictionary.md +76 -0
- package/skills-bundle/guanmetric/references/metric-common-fields.md +246 -0
- package/skills-bundle/guanmetric/references/metric-composite-mutation.md +165 -0
- package/skills-bundle/guanmetric/references/metric-delete-mutation.md +70 -0
- package/skills-bundle/guanmetric/references/metric-derived-mutation.md +453 -0
- package/skills-bundle/guanmetric/references/metric-excel-template.md +365 -0
- package/skills-bundle/guanmetric/references/metric-expression-rules.md +146 -0
- package/skills-bundle/guanmetric/references/metric-flow-generate-example.json +79 -0
- package/skills-bundle/guanmetric/references/metric-flow-generate.schema.json +93 -0
- package/skills-bundle/guanmetric/references/metric-flow.md +218 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract-examples.json +171 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract.schema.json +167 -0
- package/skills-bundle/guanmetric/references/metric-hierarchy-api-contracts.md +193 -0
- package/skills-bundle/guanmetric/references/metric-mutation.md +155 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract-examples.json +62 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract.schema.json +47 -0
- package/skills-bundle/guanmetric/references/metric-public-dimension.md +155 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contract-examples.json +277 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contract.schema.json +263 -0
- package/skills-bundle/guanmetric/references/metric-tree-api-contracts.md +53 -0
- package/skills-bundle/guanmetric/references/metric-tree-mutation.md +500 -0
- package/skills-bundle/guanmetric/references/metric-validation-ownership.md +74 -0
- package/skills-bundle/guanvis/SKILL.md +333 -0
- package/skills-bundle/guanvis/evals/china_map/card_01_basic_map.js +13 -0
- package/skills-bundle/guanvis/evals/china_map/card_02_world_map.js +10 -0
- package/skills-bundle/guanvis/evals/china_map/card_03_point_map.js +12 -0
- package/skills-bundle/guanvis/evals/china_map/page.js +10 -0
- package/skills-bundle/guanvis/evals/china_map/schema.js +10 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/README.md +30 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/card_01_comparative_mvp.js +72 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/verify_default_roundtrip.sh +92 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/card_01_monthly.js +63 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/page.js +6 -0
- package/skills-bundle/guanvis/evals/complex_report_pro/schema.js +6 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/card_01_bar.js +13 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/card_02_pie.js +13 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/bar.js +11 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/pie.js +15 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/page.js +5 -0
- package/skills-bundle/guanvis/evals/custom_chart_echarts/schema.js +9 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/card_01_level_nodes.js +19 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.css +51 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.html +1 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.js +28 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/page.js +5 -0
- package/skills-bundle/guanvis/evals/custom_chart_sdk/schema.js +7 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/card_01_dynamic_dataset.js +20 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/card_02_dynamic_metric_chart.js +16 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/metrics.js +19 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/page.js +9 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/schema.js +7 -0
- package/skills-bundle/guanvis/evals/dynamic_fields/verify_default_roundtrip.sh +137 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/README.md +26 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_01_percentage_advcalc.js +44 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_02_scroll_percentage.js +12 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/README.md +28 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/card_01_rank_advcalc.js +59 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/verify_default_roundtrip.sh +135 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/README.md +15 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/card_01_running_total_advcalc.js +74 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/page.js +6 -0
- package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/schema.js +22 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_01_revenue_column.js +10 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_02_trend_line.js +9 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_03_kpi.js +6 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_04_pie.js +9 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/card_05_calc_field_test.js +12 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/page.js +11 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/schema.js +14 -0
- package/skills-bundle/guanvis/evals/sales_dashboard/selector_01_region.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_01_column_split.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_02_line_split.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/card_03_combo_split.js +11 -0
- package/skills-bundle/guanvis/evals/split_charts/page.js +10 -0
- package/skills-bundle/guanvis/evals/split_charts/schema.js +14 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_00_total_revenue.js +6 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_01_revenue.js +10 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_02_trend.js +9 -0
- package/skills-bundle/guanvis/evals/tab_layout/card_03_story.js +11 -0
- package/skills-bundle/guanvis/evals/tab_layout/page.js +23 -0
- package/skills-bundle/guanvis/evals/tab_layout/schema.js +11 -0
- package/skills-bundle/guanvis/evals/tab_layout/selector_01_region.js +8 -0
- package/skills-bundle/guanvis/references/api-reference.md +476 -0
- package/skills-bundle/guanvis/references/builder-reference.md +1676 -0
- package/skills-bundle/guanvis/references/chart-properties.md +2101 -0
- package/skills-bundle/guanvis/references/checkout-editing.md +53 -0
- package/skills-bundle/guanvis/references/complex-report-pro-patterns.md +398 -0
- package/skills-bundle/guanvis/references/dir-and-page-management.md +48 -0
- package/skills-bundle/guanvis/references/metric-chart-reference.md +258 -0
- package/skills-bundle/guanvis/references/publish-and-constraints.md +60 -0
- package/skills-bundle/guanvis/references/selector-reference.md +431 -0
- package/skills-bundle/guanvis/references/tableau-migration.md +73 -0
- package/skills-bundle/guanvis/references/theme.md +123 -0
- package/skills-bundle/guanvis/references/troubleshooting.md +25 -0
- package/skills-bundle/guanvis/references/validation-and-chart-patterns.md +205 -0
- package/skills-bundle/guanwf/SKILL.md +543 -0
- package/skills-bundle/guanwf/references/ETL_AI_DEVELOP.md +456 -0
- package/skills-bundle/guanwf/references/TASK_NODE_CONTRACTS.md +64 -0
- package/skills-bundle/guanwf/references/WORKFLOW_DSL.md +536 -0
- package/skills-bundle/guanwf/references/WORKFLOW_NODES.md +166 -0
- 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
|
-
#
|
|
1
|
+
# @wubaoqi/guancopilot
|
|
2
2
|
|
|
3
|
-
|
|
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
|
package/assets/find.wasm
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/assets/jq.wasm
ADDED
|
Binary file
|
|
Binary file
|
package/assets/rg.wasm
ADDED
|
Binary file
|
package/assets/sed.wasm
ADDED
|
Binary file
|
package/bin/guancopilot
ADDED
|
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};
|
package/bin/runtime.cjs
ADDED
|
@@ -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
|
+
}
|