Compare commits

...

294 Commits

Author SHA1 Message Date
dependabot[bot]
bfe6f8aa0c
chore(deps): bump plugins/opik-openclaw from f898726 to 0f62b10 (#43)
Some checks failed
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Check / Container static checks (push) Has been cancelled
Check / Resolve changed fixture matrix (push) Has been cancelled
Check / Isolated changed fixture ${{ matrix.id }} (push) Has been cancelled
Check / dashboard (push) Has been cancelled
* chore(deps): bump plugins/opik-openclaw from `f898726` to `0f62b10`

Bumps [plugins/opik-openclaw](https://github.com/comet-ml/opik-openclaw) from `f898726` to `0f62b10`.
- [Release notes](https://github.com/comet-ml/opik-openclaw/releases)
- [Commits](f8987269d3...0f62b10688)

---
updated-dependencies:
- dependency-name: plugins/opik-openclaw
  dependency-version: 0f62b10688428f288eaff9b99e0ee7a9334137e7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-07 09:36:13 +00:00
dependabot[bot]
7746354b22
chore(deps): bump plugins/nemoclaw from 2d6dd4d to 3351fbd (#42)
* chore(deps): bump plugins/nemoclaw from `2d6dd4d` to `3351fbd`

Bumps [plugins/nemoclaw](https://github.com/NVIDIA/NemoClaw) from `2d6dd4d` to `3351fbd`.
- [Commits](2d6dd4dbd8...3351fbdd4e)

---
updated-dependencies:
- dependency-name: plugins/nemoclaw
  dependency-version: 3351fbdd4eb7d9b80ec471545083956327da2b10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-07 09:30:56 +00:00
github-actions[bot]
85f562d5e3 chore(readme): update crabpot dashboard [skip ci] 2026-05-06 09:59:12 +00:00
Vincent Koc
98c24dbb02
fix(reports): accept packaged runtime entrypoints 2026-05-06 02:48:20 -07:00
dependabot[bot]
d4ad88dc5a
chore(deps): bump plugins/nemoclaw from 0f13026 to 2d6dd4d (#41)
* chore(deps): bump plugins/nemoclaw from `0f13026` to `2d6dd4d`

Bumps [plugins/nemoclaw](https://github.com/NVIDIA/NemoClaw) from `0f13026` to `2d6dd4d`.
- [Commits](0f13026c89...2d6dd4dbd8)

---
updated-dependencies:
- dependency-name: plugins/nemoclaw
  dependency-version: 2d6dd4dbd80edad6b552c4c891b033784470bddb
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 09:33:28 +00:00
dependabot[bot]
cad03ae202
chore(deps): bump plugins/memos-cloud from 03fcc33 to e931499 (#39)
* chore(deps): bump plugins/memos-cloud from `03fcc33` to `e931499`

Bumps [plugins/memos-cloud](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin) from `03fcc33` to `e931499`.
- [Release notes](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/releases)
- [Commits](03fcc33c5f...e931499a25)

---
updated-dependencies:
- dependency-name: plugins/memos-cloud
  dependency-version: e931499a2589af06ee543ce07df2bdda29ac8085
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 09:29:46 +00:00
dependabot[bot]
b9d60777cf
chore(deps): bump plugins/clawrouter from 44bc6be to bb72bdd (#23)
* chore(deps): bump plugins/clawrouter from `44bc6be` to `bb72bdd`

Bumps [plugins/clawrouter](https://github.com/BlockRunAI/ClawRouter) from `44bc6be` to `bb72bdd`.
- [Release notes](https://github.com/BlockRunAI/ClawRouter/releases)
- [Commits](44bc6beced...bb72bddae4)

---
updated-dependencies:
- dependency-name: plugins/clawrouter
  dependency-version: d8eacc744a5e441e76931d7ec52594cd6b51f27e
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 08:33:46 +00:00
dependabot[bot]
a7fb812de3
chore(deps): bump plugins/lossless-claw from 4724d3f to 4fc60c9 (#28)
* chore(deps): bump plugins/lossless-claw from `4724d3f` to `4fc60c9`

Bumps [plugins/lossless-claw](https://github.com/Martian-Engineering/lossless-claw) from `4724d3f` to `4fc60c9`.
- [Release notes](https://github.com/Martian-Engineering/lossless-claw/releases)
- [Commits](4724d3fe6c...4fc60c925c)

---
updated-dependencies:
- dependency-name: plugins/lossless-claw
  dependency-version: 46d1b0316245e7c3b6f940ca3eb124539ba2180c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 08:30:02 +00:00
Vincent Koc
9d8c0f473d
fix(ci): require green checks before dependabot merge 2026-05-06 01:24:45 -07:00
dependabot[bot]
f6d13d63ed
chore(deps): bump plugins/honcho from 9580d37 to e9f0145 (#25)
* chore(deps): bump plugins/honcho from `9580d37` to `e9f0145`

Bumps [plugins/honcho](https://github.com/plastic-labs/openclaw-honcho) from `9580d37` to `e9f0145`.
- [Commits](9580d37d95...e9f01452b7)

---
updated-dependencies:
- dependency-name: plugins/honcho
  dependency-version: e9f01452b781d24b38336ef0738f2c97353c541e
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 08:20:05 +00:00
dependabot[bot]
c7cebf32cb
chore(deps): bump plugins/nemoclaw from 32d3ab3 to 0f13026 (#36)
* chore(deps): bump plugins/nemoclaw from `32d3ab3` to `0f13026`

Bumps [plugins/nemoclaw](https://github.com/NVIDIA/NemoClaw) from `32d3ab3` to `0f13026`.
- [Commits](32d3ab3e85...0f13026c89)

---
updated-dependencies:
- dependency-name: plugins/nemoclaw
  dependency-version: 0f13026c895ce56f667022b372b1cc967d118765
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 07:40:30 +00:00
Vincent Koc
8f99590e5e
fix(ci): allow dependabot generated reports 2026-05-06 00:36:24 -07:00
Vincent Koc
8611b53dfa
fix(ci): wait for dependabot mergeability 2026-05-06 00:33:42 -07:00
Vincent Koc
066e916c05
fix(ci): skip stale dependabot merge after report push 2026-05-06 00:31:46 -07:00
dependabot[bot]
964df22b64
chore(deps): bump plugins/connectclaw from 6cd5166 to 7a4e264 (#37)
* chore(deps): bump plugins/connectclaw from `6cd5166` to `7a4e264`

Bumps [plugins/connectclaw](https://github.com/osipov-anton/connectclaw) from `6cd5166` to `7a4e264`.
- [Commits](6cd5166501...7a4e2646e9)

---
updated-dependencies:
- dependency-name: plugins/connectclaw
  dependency-version: 7a4e2646e914de075435b3837123cc03c3edae36
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 07:22:51 +00:00
Vincent Koc
1235161e0f
fix(ci): let dependabot auto-merge settle 2026-05-06 00:18:58 -07:00
github-actions[bot]
ef0d662915 chore(readme): update crabpot dashboard [skip ci] 2026-05-06 07:10:21 +00:00
Vincent Koc
e566d83b1e
fix(ci): pass OpenClaw checkout to fixture sync 2026-05-05 23:59:22 -07:00
George Zhang
1b06b1208b
Merge pull request #38 from openclaw/add-weixin-catalog-discovery
test: track Weixin catalog discovery fixture
2026-05-05 16:06:08 -07:00
George Zhang
5b04665a44
test: track Weixin catalog discovery fixture 2026-05-05 15:44:56 -07:00
Vincent Koc
7d8d2c1e88
chore(reports): refresh plugin-inspector P0 classification
Some checks failed
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Check / Container static checks (push) Has been cancelled
Check / Resolve changed fixture matrix (push) Has been cancelled
Check / Isolated changed fixture ${{ matrix.id }} (push) Has been cancelled
Check / dashboard (push) Has been cancelled
Refresh Crabpot reports after plugin-inspector stopped reporting resolved package entrypoints as live P0s.
2026-05-05 01:05:30 -07:00
github-actions[bot]
ba681dbd5b chore(readme): refresh latest dashboard [skip ci] 2026-05-05 03:27:46 +00:00
Vincent Koc
d68c82e8d7
fix(reports): flag missing externalized OpenClaw npm artifacts
Handle missing npm artifacts as P0s for externalized OpenClaw fixtures while source-packing bundled Matrix/Mattermost from the resolved OpenClaw checkout.
2026-05-04 20:21:43 -07:00
github-actions[bot]
92ff0d2fc6 chore(readme): refresh latest dashboard [skip ci] 2026-05-05 02:46:19 +00:00
dependabot[bot]
176dedc832
chore(deps): bump openclaw-plugin-yuanbao from 2.12.0 to 3.0.1 in /plugins/yuanbao (#32)
Some checks are pending
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Waiting to run
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Waiting to run
Check / Container static checks (push) Waiting to run
Check / Resolve changed fixture matrix (push) Waiting to run
Check / Isolated changed fixture ${{ matrix.id }} (push) Blocked by required conditions
Check / dashboard (push) Blocked by required conditions
* chore(deps): bump openclaw-plugin-yuanbao in /plugins/yuanbao

Bumps openclaw-plugin-yuanbao from 2.12.0 to 3.0.1.

---
updated-dependencies:
- dependency-name: openclaw-plugin-yuanbao
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-04 11:36:46 +00:00
dependabot[bot]
b211955d63
chore(deps): bump plugins/clawmetry from d747787 to 7b03924 (#30)
* chore(deps): bump plugins/clawmetry from `d747787` to `7b03924`

Bumps [plugins/clawmetry](https://github.com/vivekchand/clawmetry) from `d747787` to `7b03924`.
- [Release notes](https://github.com/vivekchand/clawmetry/releases)
- [Commits](d747787e33...7b03924c02)

---
updated-dependencies:
- dependency-name: plugins/clawmetry
  dependency-version: 7b03924c02a50ddb096407e823e48a6d369247a7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-04 11:27:39 +00:00
dependabot[bot]
8d541192c0
chore(deps): bump plugins/nemoclaw from f9d21af to 32d3ab3 (#29)
* chore(deps): bump plugins/nemoclaw from `f9d21af` to `32d3ab3`

Bumps [plugins/nemoclaw](https://github.com/NVIDIA/NemoClaw) from `f9d21af` to `32d3ab3`.
- [Commits](f9d21afa19...32d3ab3e85)

---
updated-dependencies:
- dependency-name: plugins/nemoclaw
  dependency-version: 32d3ab3e85ba5648daf8a31c41af293f8d6214ca
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-04 11:23:38 +00:00
dependabot[bot]
ce1eeec7bc
chore(deps): bump plugins/web-search-plus from 6e4c765 to dd3cab6 (#31)
* chore(deps): bump plugins/web-search-plus from `6e4c765` to `dd3cab6`

Bumps [plugins/web-search-plus](https://github.com/robbyczgw-cla/web-search-plus-plugin) from `6e4c765` to `dd3cab6`.
- [Release notes](https://github.com/robbyczgw-cla/web-search-plus-plugin/releases)
- [Commits](6e4c765cd0...dd3cab6e11)

---
updated-dependencies:
- dependency-name: plugins/web-search-plus
  dependency-version: dd3cab6e11f16eaa3fcee0ce67d3a809b155341a
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-04 11:18:54 +00:00
github-actions[bot]
2763e7e5ac chore(readme): update crabpot dashboard [skip ci] 2026-05-03 08:28:29 +00:00
Vincent Koc
b1729769ea
fix(dashboard): execute beta fixture set 2026-05-03 01:18:02 -07:00
github-actions[bot]
3024edb959 chore(readme): update crabpot dashboard [skip ci] 2026-05-03 07:27:45 +00:00
Vincent Koc
bae69dcaf9
fix(dashboard): runtime-cover memory lancedb dev gap 2026-05-03 00:16:36 -07:00
github-actions[bot]
c54bcc89d2 chore(readme): update crabpot dashboard [skip ci] 2026-05-03 06:00:51 +00:00
Vincent Koc
83033f6608
fix(report): soften registration capture gaps 2026-05-02 22:50:02 -07:00
github-actions[bot]
c59a52aa76 chore(readme): refresh latest dashboard [skip ci] 2026-05-03 05:25:32 +00:00
Vincent Koc
cd140f89e3
fix(tracks): force official plugin dist-tags 2026-05-02 22:20:24 -07:00
github-actions[bot]
7dca9228df chore(readme): update crabpot dashboard [skip ci] 2026-05-03 02:46:42 +00:00
Vincent Koc
08b5cf96b7
fix(readme): update generated track frame 2026-05-02 19:35:45 -07:00
Vincent Koc
621c66e787
docs(readme): clarify crabpot tracks 2026-05-02 19:29:36 -07:00
github-actions[bot]
deee92ae5c chore(readme): update crabpot dashboard [skip ci] 2026-05-03 02:26:39 +00:00
Vincent Koc
f28b483488
feat(tracks): source-pack development plugins 2026-05-02 19:16:09 -07:00
github-actions[bot]
d62d1da317 chore(readme): update crabpot dashboard [skip ci] 2026-05-03 01:43:03 +00:00
Vincent Koc
2e8fac3fc7
chore(fixtures): refresh kitchen sink metadata reports (#27)
* chore(fixtures): refresh kitchen sink metadata reports

* fix(ci): harden kitchen sink surface checks

* fix(ci): classify kitchen sink isolated probes

* fix(ci): pin merged plugin inspector source
2026-05-02 18:32:03 -07:00
Vincent Koc
7644287646
fix(report): ignore retired bundle metadata false positives
Some checks failed
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Check / Container static checks (push) Has been cancelled
Check / Resolve changed fixture matrix (push) Has been cancelled
Check / Isolated changed fixture ${{ matrix.id }} (push) Has been cancelled
Check / dashboard (push) Has been cancelled
2026-05-02 11:51:39 -07:00
Vincent Koc
877c217437
chore(report): pin plugin-inspector bundle metadata check 2026-05-02 11:32:10 -07:00
Vincent Koc
743e2d686e
feat(report): reconcile runtime evidence 2026-05-02 11:24:07 -07:00
Vincent Koc
f5f922b502
fix(runtime): honor mock SDK capture 2026-05-02 10:53:02 -07:00
Vincent Koc
6eebf29555
feat(reports): add OpenClaw beta plugin lane 2026-05-02 10:23:20 -07:00
github-actions[bot]
06e8215f62 chore(readme): update crabpot dashboard [skip ci] 2026-05-02 17:07:18 +00:00
Vincent Koc
614b3209ea
feat(fixtures): add OpenClaw npm plugin packages 2026-05-02 09:54:56 -07:00
github-actions[bot]
39e9f1565d chore(readme): update crabpot dashboard [skip ci] 2026-05-02 16:19:06 +00:00
Vincent Koc
dae2654661
fix(reports): pin npm pack readiness checks 2026-05-02 09:14:29 -07:00
Vincent Koc
c00b25a7eb
fix(fixtures): refresh kitchen sink package metadata 2026-05-02 08:56:44 -07:00
dependabot[bot]
84c3fb61a9
chore(deps): bump plugins/telnyx-sms from 66dba9e to dee5677 (#26)
Some checks are pending
Check / Container static checks (push) Waiting to run
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Waiting to run
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Waiting to run
Check / Resolve changed fixture matrix (push) Waiting to run
Check / Isolated changed fixture ${{ matrix.id }} (push) Blocked by required conditions
Check / dashboard (push) Blocked by required conditions
* chore(deps): bump plugins/telnyx-sms from `66dba9e` to `dee5677`

Bumps [plugins/telnyx-sms](https://github.com/team-telnyx/telnyx-openclaw-sms-channel) from `66dba9e` to `dee5677`.
- [Commits](66dba9edf2...dee567716c)

---
updated-dependencies:
- dependency-name: plugins/telnyx-sms
  dependency-version: dee567716ca56d49464bf6354393f3656d92a2b3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-01 10:39:02 +00:00
dependabot[bot]
36b6f982c1
chore(deps): bump plugins/clawmetry from d6b8c92 to d747787 (#21)
* chore(deps): bump plugins/clawmetry from `d6b8c92` to `d747787`

Bumps [plugins/clawmetry](https://github.com/vivekchand/clawmetry) from `d6b8c92` to `d747787`.
- [Release notes](https://github.com/vivekchand/clawmetry/releases)
- [Commits](d6b8c926d0...d747787e33)

---
updated-dependencies:
- dependency-name: plugins/clawmetry
  dependency-version: d747787e334cc39dd1192e4af03be8adf8260361
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-01 09:00:23 +00:00
Vincent Koc
aa19cc68f0
feat(fixtures): add NemoClaw
Add NVIDIA/NemoClaw as a first-class Crabpot fixture and refresh the generated fixture reports.
2026-05-01 01:57:20 -07:00
github-actions[bot]
19cc3355dc chore(readme): update crabpot dashboard [skip ci] 2026-04-30 09:53:35 +00:00
Vincent Koc
6a07de21c8
fix(security): escape generated code literals 2026-04-30 02:49:14 -07:00
Vincent Koc
aad4b80897
fix(security): validate generated surface names 2026-04-30 02:45:20 -07:00
dependabot[bot]
fd975183ea
chore(deps): bump plugins/kitchen-sink from dcfec9e to f24c6ae (#20)
* chore(deps): bump plugins/kitchen-sink from `dcfec9e` to `f24c6ae`

Bumps [plugins/kitchen-sink](https://github.com/openclaw/kitchen-sink) from `dcfec9e` to `f24c6ae`.
- [Release notes](https://github.com/openclaw/kitchen-sink/releases)
- [Commits](dcfec9ecef...f24c6aea64)

---
updated-dependencies:
- dependency-name: plugins/kitchen-sink
  dependency-version: f24c6aea640e6a141543af308dd4a20f929c6d9e
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-30 09:23:38 +00:00
Vincent Koc
40eddcda1f
fix(deps): harden yuanbao fixture lock 2026-04-30 02:22:17 -07:00
Vincent Koc
fd9e456239
fix(deps): refresh lightclawbot fixture lock 2026-04-30 02:22:11 -07:00
github-actions[bot]
5983713a34 chore(readme): update crabpot dashboard [skip ci] 2026-04-30 06:02:01 +00:00
Vincent Koc
634bdb1492
fix(ci): require lifecycle dashboard profiles (#19) 2026-04-29 22:57:26 -07:00
github-actions[bot]
24370b0e49 chore(readme): update crabpot dashboard [skip ci] 2026-04-30 05:28:13 +00:00
Vincent Koc
7673e48b22
chore(fixtures): add community plugin projects (#18)
* chore(fixtures): add community plugin projects

* fix(ci): sandbox isolated fixture probes

* fix(ci): profile import loop against openclaw

* fix(ci): keep import profile matrix cheap
2026-04-29 22:24:16 -07:00
github-actions[bot]
b25f8cf560 chore(readme): update crabpot dashboard [skip ci] 2026-04-30 04:52:11 +00:00
Vincent Koc
603039f34e
chore(readme): show dashboard deltas for profile rows 2026-04-29 21:48:26 -07:00
github-actions[bot]
dfeb674dcb chore(readme): update crabpot dashboard [skip ci] 2026-04-30 03:57:16 +00:00
Vincent Koc
a02928bc44
chore(readme): show openclaw lifecycle profile 2026-04-29 20:53:40 -07:00
github-actions[bot]
b293a5a773 chore(readme): update crabpot dashboard [skip ci] 2026-04-30 02:45:26 +00:00
Vincent Koc
b1e3a61dc0
feat: profile openclaw plugin lifecycle 2026-04-29 19:41:11 -07:00
Vincent Koc
27bf452906
chore: show import-loop plugin deltas 2026-04-29 19:26:46 -07:00
Vincent Koc
9834e2bdcf
test: cover security manifest findings 2026-04-29 19:18:16 -07:00
github-actions[bot]
ca97245e90 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 21:08:15 +00:00
Vincent Koc
830ab612ad
chore(release): v0.1.4 2026-04-29 14:04:26 -07:00
github-actions[bot]
441958657e chore(readme): update crabpot dashboard [skip ci] 2026-04-29 21:00:09 +00:00
Vincent Koc
7b1f8a9979
chore(inspector): pin v0.3.5 package 2026-04-29 13:56:06 -07:00
Vincent Koc
692cd40bca
chore(inspector): pin v0.3.5 source ref 2026-04-29 13:51:57 -07:00
github-actions[bot]
10a7a80d9c chore(readme): refresh latest dashboard [skip ci] 2026-04-29 20:33:27 +00:00
github-actions[bot]
9e17bc0d08 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 20:29:22 +00:00
Vincent Koc
da5a84e9a4
fix(profile): clarify dashboard sampling 2026-04-29 13:24:40 -07:00
github-actions[bot]
2f7a12f56f chore(readme): update crabpot dashboard [skip ci] 2026-04-29 17:15:56 +00:00
Vincent Koc
58264d3e35
fix(fixtures): align yuanbao channel expectation 2026-04-29 10:12:43 -07:00
Vincent Koc
564761a30e
fix(inspector): pin advertised source ref 2026-04-29 10:04:36 -07:00
Vincent Koc
5f64b98182
chore(inspector): refresh source ref 2026-04-29 06:34:08 -07:00
dependabot[bot]
062d5494d6
chore(deps): bump openclaw-plugin-yuanbao to 2.12.0 (#16)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-29 06:29:46 -07:00
Vincent Koc
b05316d156
fix(test): keep runtime profile fixture sampled 2026-04-29 06:27:32 -07:00
Vincent Koc
0389929569
fix(ci): tolerate stale dashboard pushes 2026-04-29 06:24:38 -07:00
dependabot[bot]
02f8976e6c
chore(deps): bump plugins/honcho from f1ac095 to 9580d37 (#14)
* chore(deps): bump plugins/honcho from `f1ac095` to `9580d37`

Bumps [plugins/honcho](https://github.com/plastic-labs/openclaw-honcho) from `f1ac095` to `9580d37`.
- [Commits](f1ac095b5d...9580d37d95)

---
updated-dependencies:
- dependency-name: plugins/honcho
  dependency-version: 9580d37d95ef63b0e8b64578fbfc8abfcfc745e4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 13:20:16 +00:00
Vincent Koc
dda88a9de0
fix(ci): serialize dependabot automerge 2026-04-29 06:18:36 -07:00
dependabot[bot]
87c9568e4f
chore(deps): bump plugins/lossless-claw from f2574ed to 4724d3f (#15)
* chore(deps): bump plugins/lossless-claw from `f2574ed` to `4724d3f`

Bumps [plugins/lossless-claw](https://github.com/Martian-Engineering/lossless-claw) from `f2574ed` to `4724d3f`.
- [Release notes](https://github.com/Martian-Engineering/lossless-claw/releases)
- [Commits](f2574ed958...4724d3fe6c)

---
updated-dependencies:
- dependency-name: plugins/lossless-claw
  dependency-version: 4724d3fe6ccfd85f275aad732f3b01551d909e5a
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 13:13:31 +00:00
github-actions[bot]
f0c7f8d996 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 13:09:10 +00:00
Vincent Koc
3f15ddba42
fix(ci): force-with-lease track dashboard branches 2026-04-29 06:05:16 -07:00
Vincent Koc
f301dc8290
fix(ci): refresh track branches from main 2026-04-29 06:02:27 -07:00
github-actions[bot]
4f32d40eba chore(readme): update crabpot dashboard [skip ci] 2026-04-29 12:57:52 +00:00
Vincent Koc
8ce5ef46f7
fix(ci): keep isolated fixture runs advisory 2026-04-29 05:54:09 -07:00
Vincent Koc
eed94ee91c
fix(ci): configure dependabot merge author 2026-04-29 05:51:57 -07:00
dependabot[bot]
66a4cb550b
chore(deps): bump plugins/kitchen-sink from 6dc166f to dcfec9e (#13)
* chore(deps): bump plugins/kitchen-sink from `6dc166f` to `dcfec9e`

Bumps [plugins/kitchen-sink](https://github.com/openclaw/kitchen-sink) from `6dc166f` to `dcfec9e`.
- [Release notes](https://github.com/openclaw/kitchen-sink/releases)
- [Commits](6dc166f898...dcfec9ecef)

---
updated-dependencies:
- dependency-name: plugins/kitchen-sink
  dependency-version: dcfec9ecef20b2c6335b97b2366e58eb072e3ec0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh kitchen-sink dashboard

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-29 05:48:36 -07:00
dependabot[bot]
440e4d27bc
chore(deps): bump @tencent-weixin/openclaw-weixin from 2.1.10 to 2.3.1 in /plugins/openclaw-weixin (#17)
Some checks failed
Check / Static checks (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
Check / Static checks (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Check / Container static checks (push) Has been cancelled
Check / Resolve changed fixture matrix (push) Has been cancelled
Check / Isolated changed fixture ${{ matrix.id }} (push) Has been cancelled
Check / dashboard (push) Has been cancelled
* chore(deps): bump @tencent-weixin/openclaw-weixin

Bumps @tencent-weixin/openclaw-weixin from 2.1.10 to 2.3.1.

---
updated-dependencies:
- dependency-name: "@tencent-weixin/openclaw-weixin"
  dependency-version: 2.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(reports): refresh dependabot compatibility reports

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 09:43:23 +00:00
github-actions[bot]
dca0f80bc2 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 07:07:59 +00:00
Vincent Koc
1c4d027af3
fix(ci): keep dashboard caches node24-clean 2026-04-29 00:04:21 -07:00
github-actions[bot]
bcb42ec7b7 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 07:01:44 +00:00
Vincent Koc
eb73e9cc1f
feat(dashboard): compare track metrics to main 2026-04-28 23:58:14 -07:00
github-actions[bot]
f1858da20e chore(readme): update crabpot dashboard [skip ci] 2026-04-29 05:49:02 +00:00
Vincent Koc
c69ff730d1
fix(release): avoid npm shims in static runner 2026-04-28 22:46:05 -07:00
Vincent Koc
8a2544eedd
test(release): keep compat expectations target-stable 2026-04-28 22:40:39 -07:00
Vincent Koc
6b8bf190c2
fix(release): keep crabpot findings advisory 2026-04-28 22:29:09 -07:00
Vincent Koc
2c8d05a324
chore(plugin-inspector): pin package 0.3.4 2026-04-28 22:08:31 -07:00
Vincent Koc
7e33faf6e9
chore(plugin-inspector): pin 0.3.4 release prep 2026-04-28 22:01:25 -07:00
Vincent Koc
178775d4b9
chore(validation): track plugin-inspector source head 2026-04-28 21:57:06 -07:00
Vincent Koc
d7927fd40d
fix(validation): use pinned inspector source in static suite 2026-04-28 21:51:02 -07:00
github-actions[bot]
58c7deb8de chore(readme): update crabpot dashboard [skip ci] 2026-04-29 04:41:43 +00:00
Vincent Koc
aeef23a788
chore(plugin-inspector): refresh host-linked dependency reports 2026-04-28 21:38:41 -07:00
github-actions[bot]
8acd4b2faf chore(readme): update crabpot dashboard [skip ci] 2026-04-29 04:20:03 +00:00
Vincent Koc
655636fca5
chore(plugin-inspector): update probe compat reports 2026-04-28 21:16:34 -07:00
github-actions[bot]
4d5a402f0e chore(readme): update crabpot dashboard [skip ci] 2026-04-29 01:40:18 +00:00
Vincent Koc
7e3abf2ea7
chore(plugin-inspector): update source ref 2026-04-28 18:35:37 -07:00
github-actions[bot]
4b55c25dd6 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 01:33:14 +00:00
Vincent Koc
02db0f6954
fix(readme): preserve compact dashboard spacing 2026-04-28 18:29:44 -07:00
Vincent Koc
8c53490583
fix(readme): keep crabpot track dashboard compact 2026-04-28 18:27:11 -07:00
github-actions[bot]
56f92bd6a3 chore(readme): update crabpot dashboard [skip ci] 2026-04-29 01:21:49 +00:00
Vincent Koc
312eb9933f
Update README.md 2026-04-28 18:18:21 -07:00
github-actions[bot]
e67afe28d6 chore(readme): refresh latest dashboard [skip ci] 2026-04-29 00:29:21 +00:00
github-actions[bot]
2ef004e30d chore(readme): update crabpot dashboard [skip ci] 2026-04-29 00:25:42 +00:00
Vincent Koc
06055e7e71
fix(ci): resolve OpenClaw tracks from registry 2026-04-28 17:21:50 -07:00
Vincent Koc
47998a041c
fix(ci): resolve npm command on windows 2026-04-28 17:17:30 -07:00
Vincent Koc
49189c184c
fix(ci): setup node before resolving crabpot tracks 2026-04-28 17:12:43 -07:00
Vincent Koc
9ea9404d5d
fix(ci): gate scheduled crabpot track refresh 2026-04-28 17:09:18 -07:00
Vincent Koc
0305d0704b
feat(ci): add crabpot OpenClaw track dashboards 2026-04-28 17:07:01 -07:00
github-actions[bot]
43e1bafa94 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 23:36:58 +00:00
Vincent Koc
3b5131e345
chore(fixtures): refresh kitchen sink surface 2026-04-28 16:33:26 -07:00
github-actions[bot]
38d17951db chore(readme): update crabpot dashboard [skip ci] 2026-04-28 22:24:51 +00:00
Patrick Erichsen
5856c21c3b
test: add generated OpenClaw surface check
Adds a generated fixture that exercises the OpenClaw plugin API surface through plugin-inspector, wires it into default and manual compatibility workflows, and fixes the generated check to honor platform-specific CLI shell invocation.
2026-04-28 15:21:42 -07:00
github-actions[bot]
6c8d1153c6 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 22:14:09 +00:00
Vincent Koc
6ee0f2ab05
fix(ci): update dependabot branches before merge 2026-04-28 15:10:24 -07:00
dependabot[bot]
d68749c073
chore(deps): bump plugins/clawmetry to d6b8c92
Bump plugins/clawmetry to d6b8c926d0aadcf4f428843f3757ce0fb0825143.
2026-04-28 15:08:24 -07:00
dependabot[bot]
8a751054d3
chore(deps): bump plugins/lossless-claw to f2574ed
Bump plugins/lossless-claw to f2574ed9585ebba46b3574d9d2541444766cab19.
2026-04-28 15:07:36 -07:00
dependabot[bot]
1678f39f2f
chore(deps): bump plugins/wecom to 503a1d5
Bump plugins/wecom to 503a1d5403bc3a57763b9ef17c60a9d5e31b53d9.
2026-04-28 15:06:38 -07:00
github-actions[bot]
b6fd069593 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 20:45:55 +00:00
Vincent Koc
36f31fe624
fix(ci): classify kitchen-sink probe blockers 2026-04-28 13:41:50 -07:00
Vincent Koc
12462e49b5
chore(fixtures): add kitchen-sink 2026-04-28 13:34:00 -07:00
github-actions[bot]
072f911599 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 09:32:41 +00:00
Vincent Koc
8b1ff6f63b
chore(deps): bump plugin-inspector to 0.3.2 2026-04-28 02:29:29 -07:00
github-actions[bot]
fec78d6592 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 05:35:48 +00:00
Vincent Koc
1f5457ebde
chore: update plugin inspector source ref 2026-04-27 22:32:08 -07:00
github-actions[bot]
664fd6d677 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 05:19:53 +00:00
Vincent Koc
76617763f8
chore: update plugin inspector package pin 2026-04-27 22:16:16 -07:00
Vincent Koc
3ef5df8f3f
chore: update plugin inspector source ref 2026-04-27 22:13:32 -07:00
github-actions[bot]
0db0d4356b chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:55:36 +00:00
Vincent Koc
a0fec9b35d
chore: update plugin inspector source ref 2026-04-27 21:52:14 -07:00
github-actions[bot]
6086500a5c chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:50:59 +00:00
Vincent Koc
f71bc9bb9f
chore: correct plugin inspector source ref 2026-04-27 21:47:55 -07:00
Vincent Koc
86ea4d6e7e
chore: update plugin inspector source ref 2026-04-27 21:46:46 -07:00
github-actions[bot]
fa65a864ed chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:40:17 +00:00
Vincent Koc
b99dd367f3
chore: update plugin inspector source ref 2026-04-27 21:35:55 -07:00
github-actions[bot]
cd8395dfad chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:35:03 +00:00
Vincent Koc
9e7edebb8d
chore: update plugin inspector source ref 2026-04-27 21:31:58 -07:00
Vincent Koc
f14c1657d6
chore: update plugin inspector source ref 2026-04-27 21:29:18 -07:00
github-actions[bot]
7b5c7c836f chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:27:46 +00:00
Vincent Koc
c918fd2632
chore: update plugin inspector source ref 2026-04-27 21:23:57 -07:00
github-actions[bot]
858aeec95e chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:15:43 +00:00
Vincent Koc
80d0b8cc21
chore: update plugin inspector source ref 2026-04-27 21:12:35 -07:00
github-actions[bot]
e95aa3dce0 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:08:34 +00:00
Vincent Koc
b8d22ff1d6
refactor: use plugin inspector synthetic api 2026-04-27 21:05:20 -07:00
github-actions[bot]
70d853c9ab chore(readme): update crabpot dashboard [skip ci] 2026-04-28 04:01:38 +00:00
Vincent Koc
3062a15cee
refactor: use plugin inspector runtime api 2026-04-27 20:58:25 -07:00
github-actions[bot]
4800ab68e0 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 03:54:09 +00:00
Vincent Koc
b995e57c62
refactor: use plugin inspector ci api 2026-04-27 20:50:36 -07:00
github-actions[bot]
658fc66984 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 03:46:57 +00:00
Vincent Koc
2299f61724
refactor: use plugin inspector contract api 2026-04-27 20:44:16 -07:00
github-actions[bot]
a25408e154 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 03:40:06 +00:00
Vincent Koc
8138ff870d
refactor: use plugin inspector report api 2026-04-27 20:36:57 -07:00
github-actions[bot]
31f7cf4790 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 00:35:33 +00:00
Vincent Koc
42b174382d
refactor: use plugin inspector workspace api 2026-04-27 17:32:42 -07:00
github-actions[bot]
cdc8b69fb6 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 00:29:40 +00:00
Vincent Koc
d0b60e55f9
refactor: use plugin inspector cold import api 2026-04-27 17:26:30 -07:00
github-actions[bot]
a5598d5d96 chore(readme): update crabpot dashboard [skip ci] 2026-04-28 00:15:40 +00:00
Vincent Koc
9e522e0ade
refactor: use plugin inspector public inspection api 2026-04-27 17:12:33 -07:00
github-actions[bot]
0cd5477338 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 23:28:05 +00:00
Vincent Koc
c2b9212aa4
chore: update plugin inspector package pin 2026-04-27 16:24:38 -07:00
github-actions[bot]
a2b311f020 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:49:11 +00:00
Vincent Koc
8125e08680
chore: update plugin inspector source ref 2026-04-27 15:46:04 -07:00
github-actions[bot]
07fb7856ea chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:36:34 +00:00
Vincent Koc
5549905713
chore: update plugin inspector source ref 2026-04-27 15:33:41 -07:00
github-actions[bot]
92ee26df37 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:31:39 +00:00
Vincent Koc
1a72e4ffe5
chore: update plugin inspector source ref 2026-04-27 15:28:32 -07:00
github-actions[bot]
c0c44d1c74 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:21:56 +00:00
Vincent Koc
3c73cff5d0
chore: update plugin inspector source ref 2026-04-27 15:19:03 -07:00
github-actions[bot]
8833296f49 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:13:39 +00:00
Vincent Koc
b97e3d6a2e
chore: update plugin inspector source ref 2026-04-27 15:10:03 -07:00
github-actions[bot]
454cce7ad7 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 22:08:03 +00:00
Vincent Koc
c5cb815352
chore: update plugin inspector source ref 2026-04-27 15:04:58 -07:00
github-actions[bot]
a8dee50391 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:58:49 +00:00
Vincent Koc
1912fb84aa
chore: update plugin inspector source ref 2026-04-27 14:55:35 -07:00
github-actions[bot]
c74efdae69 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:53:37 +00:00
Vincent Koc
603e092b76
chore: update plugin inspector source ref 2026-04-27 14:50:07 -07:00
github-actions[bot]
96897954f9 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:43:36 +00:00
Vincent Koc
34a3d3c520
chore: update plugin inspector source ref 2026-04-27 14:39:56 -07:00
github-actions[bot]
3a37d5b082 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:31:19 +00:00
Vincent Koc
4a23e49f99
chore: update plugin inspector source ref 2026-04-27 14:28:21 -07:00
github-actions[bot]
c0dafda3a8 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:17:24 +00:00
Vincent Koc
b382c6a0af
refactor: use plugin inspector synthetic plan API 2026-04-27 14:14:28 -07:00
github-actions[bot]
b921cd3086 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 21:03:30 +00:00
Vincent Koc
0bd1064a56
chore: update plugin inspector source ref 2026-04-27 13:59:06 -07:00
github-actions[bot]
367e894ec4 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 20:46:42 +00:00
Vincent Koc
bf92a7db22
refactor: use plugin inspector fixture report API 2026-04-27 13:42:29 -07:00
github-actions[bot]
3dbb86aeb9 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 20:02:22 +00:00
Vincent Koc
1745535708
chore: update plugin inspector source ref 2026-04-27 12:59:15 -07:00
github-actions[bot]
6c45a5fd82 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 19:53:50 +00:00
Vincent Koc
c05ca9c20a
chore: update plugin inspector source ref 2026-04-27 12:50:33 -07:00
github-actions[bot]
9b4b527c34 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 19:31:30 +00:00
Vincent Koc
44db8af401
chore: use plugin inspector 0.2.0 2026-04-27 12:28:19 -07:00
github-actions[bot]
21571313cf chore(readme): update crabpot dashboard [skip ci] 2026-04-27 19:17:34 +00:00
Vincent Koc
b9dfa3d2a2
chore: update plugin inspector source ref 2026-04-27 12:13:55 -07:00
github-actions[bot]
aac58d8358 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 19:05:10 +00:00
Vincent Koc
0365e66bb4
chore: update plugin inspector source ref 2026-04-27 12:02:11 -07:00
github-actions[bot]
332f7bc3df chore(readme): update crabpot dashboard [skip ci] 2026-04-27 18:34:20 +00:00
Vincent Koc
58b780eef6
chore: update plugin inspector source ref 2026-04-27 11:25:19 -07:00
github-actions[bot]
ac784ab84e chore(readme): update crabpot dashboard [skip ci] 2026-04-27 18:07:20 +00:00
Vincent Koc
3d316c0b3e
fix(ci): narrow fixture matrix for submodule additions 2026-04-27 11:03:49 -07:00
Vincent Koc
e5b69278d9
chore: refresh crabpot reports for dingtalk connector 2026-04-27 10:56:25 -07:00
Vincent Koc
ba1806258e
feat: add dingtalk connector fixture 2026-04-27 10:56:24 -07:00
github-actions[bot]
c1afaeff91 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 17:50:06 +00:00
Vincent Koc
b83e3b071d
chore: bump published plugin inspector smoke package 2026-04-27 10:46:53 -07:00
github-actions[bot]
7523705162 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 11:20:59 +00:00
Vincent Koc
3d3db8870c
chore: smoke published plugin inspector package
Use the published @openclaw/plugin-inspector package for the default crabpot smoke path, while keeping source and binary overrides for local development.
2026-04-27 04:17:56 -07:00
github-actions[bot]
8232bb9479 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 10:52:14 +00:00
Vincent Koc
f1e8bf8f6e
test: prune plugin inspector implementation checks
Removes crabpot tests that duplicated plugin-inspector parser, validation, capture API, and synthetic-probe unit coverage while keeping fixture/report orchestration and opt-in guard coverage.
2026-04-27 03:48:34 -07:00
github-actions[bot]
46ada25ebc chore(readme): update crabpot dashboard [skip ci] 2026-04-27 10:38:11 +00:00
Vincent Koc
ac20c8a679
chore: delegate compatibility reports to plugin inspector
Bumps crabpot to the merged plugin-inspector DX commit, loads the advanced inspector surface, delegates fixture/report assembly to plugin-inspector, and removes inspector-owned capture API assertions from crabpot tests.
2026-04-27 03:34:58 -07:00
github-actions[bot]
fbd2e4ecdd chore(readme): update crabpot dashboard [skip ci] 2026-04-27 08:12:17 +00:00
Vincent Koc
a0f54ea55b
chore: pin runtime capture inspector 2026-04-27 01:09:17 -07:00
github-actions[bot]
c9ad4ecbe9 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:58:27 +00:00
Vincent Koc
d3f35a7f89
chore: pin plugin inspector examples 2026-04-27 00:55:32 -07:00
github-actions[bot]
46438cf4e1 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:54:39 +00:00
Vincent Koc
a2371b7c21
chore: bump plugin inspector ref 2026-04-27 00:51:08 -07:00
github-actions[bot]
716f9d3389 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:46:21 +00:00
Vincent Koc
3accbc0e1f
refactor: delegate report assembly 2026-04-27 00:43:01 -07:00
github-actions[bot]
395f63a41e chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:20:29 +00:00
Vincent Koc
2439e1ef83
refactor: delegate fixture classification 2026-04-27 00:17:12 -07:00
github-actions[bot]
f96681756d chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:15:57 +00:00
Vincent Koc
e1b82ebc76
refactor: delegate target coverage checks 2026-04-27 00:12:52 -07:00
github-actions[bot]
d39422cbf7 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:11:23 +00:00
Vincent Koc
5ec1e3d8ee
refactor: delegate package contract checks 2026-04-27 00:08:33 -07:00
github-actions[bot]
6304f38dc5 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:07:11 +00:00
Vincent Koc
786f5ce1bf
refactor: delegate fixture summaries to plugin inspector 2026-04-27 00:04:16 -07:00
github-actions[bot]
06df5163da chore(readme): update crabpot dashboard [skip ci] 2026-04-27 07:02:05 +00:00
Vincent Koc
f55d1cd8b7
refactor: delegate report rendering to plugin inspector 2026-04-26 23:58:43 -07:00
github-actions[bot]
d9a0cf2222 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 06:25:10 +00:00
Vincent Koc
1a2be0a526
chore: bump plugin inspector pin 2026-04-26 23:21:19 -07:00
github-actions[bot]
f617060140 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 06:08:29 +00:00
Vincent Koc
7226fd6a29
chore: pin plugin inspector ref 2026-04-26 23:04:56 -07:00
github-actions[bot]
9c33b583eb chore(readme): update crabpot dashboard [skip ci] 2026-04-27 05:21:09 +00:00
Vincent Koc
549976d241
feat: delegate CI policy to plugin inspector 2026-04-26 22:18:21 -07:00
github-actions[bot]
637141985d chore(readme): update crabpot dashboard [skip ci] 2026-04-27 05:13:45 +00:00
Vincent Koc
d5cac1a4f0
feat: delegate ref diffs to plugin inspector 2026-04-26 22:09:56 -07:00
Vincent Koc
b0abd22135
feat: delegate runtime profiling to plugin inspector 2026-04-26 21:55:00 -07:00
github-actions[bot]
78d318c3bc chore(readme): update crabpot dashboard [skip ci] 2026-04-27 04:47:47 +00:00
Vincent Koc
dccca0fc5c
feat: delegate contract coverage to plugin inspector 2026-04-26 21:44:19 -07:00
github-actions[bot]
6240c54945 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 04:39:31 +00:00
Vincent Koc
f18ec7fea1
feat: delegate profile diffs to plugin inspector 2026-04-26 21:36:43 -07:00
github-actions[bot]
ddea95409f chore(readme): update crabpot dashboard [skip ci] 2026-04-27 04:34:07 +00:00
Vincent Koc
33210de854
feat: delegate import loop profiling to plugin inspector 2026-04-26 21:31:37 -07:00
github-actions[bot]
2994eb59a7 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 04:27:45 +00:00
Vincent Koc
cc43269c5d
feat: delegate execution results to plugin inspector 2026-04-26 21:23:57 -07:00
github-actions[bot]
40e68ae949 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 04:14:23 +00:00
Vincent Koc
f9361cdecc
fix: pin normalized workspace path handling 2026-04-26 21:11:23 -07:00
Vincent Koc
b61de3983e
fix: pin plugin inspector workspace lockfile detection 2026-04-26 21:05:22 -07:00
Vincent Koc
2d5c185714
feat: delegate OpenClaw target parsing to plugin inspector 2026-04-26 21:00:13 -07:00
Vincent Koc
0ab4d63c34
feat: delegate workspace plan to plugin inspector 2026-04-26 20:54:52 -07:00
github-actions[bot]
c4c837be8d chore(readme): update crabpot dashboard [skip ci] 2026-04-27 03:45:31 +00:00
Vincent Koc
aa8981f863
feat: delegate platform probes to plugin inspector 2026-04-26 20:42:48 -07:00
github-actions[bot]
3f7da22fca chore(readme): update crabpot dashboard [skip ci] 2026-04-27 03:37:14 +00:00
Vincent Koc
83a8d4c820
feat: delegate cold import readiness to plugin inspector 2026-04-26 20:34:20 -07:00
github-actions[bot]
03acb87387 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 03:27:18 +00:00
Vincent Koc
081de3335d
feat: delegate capture shim to plugin inspector 2026-04-26 20:24:29 -07:00
Vincent Koc
dd2c200707
feat: delegate contract capture to plugin inspector 2026-04-26 20:22:36 -07:00
github-actions[bot]
7488184f10 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 02:32:11 +00:00
Vincent Koc
d45606990b
feat: delegate cold import capture to plugin inspector 2026-04-26 19:29:13 -07:00
github-actions[bot]
29cfd075b0 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 02:29:00 +00:00
Vincent Koc
a513b0da53
feat: delegate synthetic probes to plugin inspector 2026-04-26 19:25:35 -07:00
github-actions[bot]
2cfa80f9c3 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 02:20:04 +00:00
Vincent Koc
4a17b11737
feat: delegate report artifacts to plugin inspector 2026-04-26 19:16:54 -07:00
github-actions[bot]
ee8ca38162 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 02:10:45 +00:00
Vincent Koc
979ea35fe6
feat: delegate contract probes to plugin inspector 2026-04-26 19:07:14 -07:00
github-actions[bot]
d14bee2609 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 01:58:23 +00:00
Vincent Koc
31cd715fcb
feat: delegate issue classification to plugin inspector 2026-04-26 18:55:30 -07:00
github-actions[bot]
74bee5b814 chore(readme): update crabpot dashboard [skip ci] 2026-04-27 01:48:13 +00:00
Vincent Koc
2be4c2da59
feat: delegate ci summary to plugin inspector 2026-04-26 18:45:23 -07:00
github-actions[bot]
baf7625965 chore(readme): update crabpot dashboard [skip ci] 2026-04-26 23:56:47 +00:00
Vincent Koc
582e0663ac
feat: delegate fixture inspection to plugin inspector
Delegate crabpot fixture static inspection to the pinned plugin-inspector package boundary and share the same resolver with the package smoke wrapper.
2026-04-26 16:54:04 -07:00
github-actions[bot]
010f80a02d chore(readme): update crabpot dashboard [skip ci] 2026-04-26 23:34:33 +00:00
Vincent Koc
f8a035d677
feat: add plugin inspector smoke (#3)
Landed smoke wiring for the external plugin-inspector package boundary.\n\nChecks: GitHub Check workflow green across ubuntu, macOS, Windows, and container lanes.
2026-04-26 16:32:08 -07:00
171 changed files with 132708 additions and 19039 deletions

264
.github/dependabot.yml vendored
View File

@ -55,3 +55,267 @@ updates:
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/bluebubbles"
schedule:
interval: "cron"
cronjob: "01 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/diagnostics-otel"
schedule:
interval: "cron"
cronjob: "02 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/discord"
schedule:
interval: "cron"
cronjob: "03 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/lobster"
schedule:
interval: "cron"
cronjob: "04 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/matrix"
schedule:
interval: "cron"
cronjob: "05 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/msteams"
schedule:
interval: "cron"
cronjob: "06 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/nextcloud-talk"
schedule:
interval: "cron"
cronjob: "07 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/nostr"
schedule:
interval: "cron"
cronjob: "08 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/voice-call"
schedule:
interval: "cron"
cronjob: "09 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/zalo"
schedule:
interval: "cron"
cronjob: "10 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/zalouser"
schedule:
interval: "cron"
cronjob: "11 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/feishu"
schedule:
interval: "cron"
cronjob: "12 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/tlon"
schedule:
interval: "cron"
cronjob: "13 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/twitch"
schedule:
interval: "cron"
cronjob: "14 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/mattermost"
schedule:
interval: "cron"
cronjob: "15 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/synology-chat"
schedule:
interval: "cron"
cronjob: "16 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/brave-plugin"
schedule:
interval: "cron"
cronjob: "17 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/codex"
schedule:
interval: "cron"
cronjob: "18 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/diagnostics-prometheus"
schedule:
interval: "cron"
cronjob: "19 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/google-meet"
schedule:
interval: "cron"
cronjob: "20 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/diffs"
schedule:
interval: "cron"
cronjob: "21 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/memory-lancedb"
schedule:
interval: "cron"
cronjob: "22 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/openclaw-qqbot"
schedule:
interval: "cron"
cronjob: "23 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/plugins/whatsapp"
schedule:
interval: "cron"
cronjob: "24 9,21 * * *"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore"
include: "scope"

View File

@ -5,7 +5,7 @@ on:
# plugins/** must retest on Dependabot PRs and again after merge to main.
pull_request:
push:
branches: [main]
branches: [main, crab-beta, crab-development]
workflow_dispatch:
permissions:
@ -23,30 +23,35 @@ jobs:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
path: openclaw
- uses: actions/setup-node@v6
with:
node-version: 22
- run: node scripts/sync-fixtures.mjs --materialize
- run: npm test
- run: node scripts/sync-fixtures.mjs --check
- run: node scripts/run-contract-smoke.mjs --strict --openclaw ./openclaw
- run: node scripts/inspect-fixtures.mjs --check
- run: node scripts/generate-report.mjs --check --openclaw ./openclaw
- run: node scripts/capture-contracts.mjs --check --openclaw ./openclaw
- run: node scripts/synthetic-probes.mjs --check --openclaw ./openclaw
- run: node scripts/cold-import-readiness.mjs --check --openclaw ./openclaw
- run: node scripts/workspace-plan.mjs --check --openclaw ./openclaw
- run: node scripts/platform-probes.mjs --check --openclaw ./openclaw
- run: node scripts/import-loop-profile.mjs --check
- run: node scripts/profile-contract-runtime.mjs --check --openclaw ./openclaw
- run: node scripts/check-contract-coverage.mjs --openclaw ./openclaw
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --github-output
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- shell: bash
run: |
plugin_track="${{ steps.openclaw-track.outputs.track }}"
extra_args=(--openclaw-track "${{ steps.openclaw-track.outputs.track }}" --plugin-track "${plugin_track}")
if [ "${{ steps.openclaw-track.outputs.track }}" = "development" ]; then
extra_args=(--openclaw-track "${{ steps.openclaw-track.outputs.track }}" --fixture-set openclaw-beta --plugin-track source-pack)
fi
node scripts/run-static-suite.mjs --openclaw ./openclaw --policy dashboard --profile-runs 3 --plugin-inspector-smoke "${extra_args[@]}"
- name: Write CI summary artifacts
if: always()
continue-on-error: true
env:
CRABPOT_FIXTURE_SET: ${{ steps.openclaw-track.outputs.track == 'development' && 'openclaw-beta' || '' }}
CRABPOT_OPENCLAW_TRACK: ${{ steps.openclaw-track.outputs.track }}
CRABPOT_PLUGIN_TRACK: ${{ steps.openclaw-track.outputs.track == 'development' && 'source-pack' || steps.openclaw-track.outputs.track }}
run: |
node scripts/generate-report.mjs --openclaw ./openclaw
node scripts/capture-contracts.mjs --openclaw ./openclaw
@ -54,11 +59,12 @@ jobs:
node scripts/cold-import-readiness.mjs --openclaw ./openclaw
node scripts/workspace-plan.mjs --openclaw ./openclaw
node scripts/platform-probes.mjs --openclaw ./openclaw
node scripts/check-generated-surface-fixture.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs 3
node scripts/compare-runtime-profile.mjs
node scripts/check-ci-policy.mjs
node scripts/write-ci-summary.mjs --mode check --openclaw-label openclaw/openclaw@main --github-step-summary
node scripts/write-ci-summary.mjs --mode check --openclaw-label "${{ steps.openclaw-track.outputs.label }}" --github-step-summary
- name: Upload CI reports
if: always()
uses: actions/upload-artifact@v7
@ -76,21 +82,23 @@ jobs:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --github-output
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- run: node --version
- run: node scripts/sync-fixtures.mjs --materialize
- run: npm test
- run: node scripts/sync-fixtures.mjs --check
- run: node scripts/inspect-fixtures.mjs --check
- run: node scripts/generate-report.mjs --check --openclaw ./openclaw
- run: node scripts/cold-import-readiness.mjs --check --openclaw ./openclaw
- run: node scripts/workspace-plan.mjs --check --openclaw ./openclaw
- run: node scripts/platform-probes.mjs --check --openclaw ./openclaw
- run: node scripts/import-loop-profile.mjs --check
- run: node scripts/profile-contract-runtime.mjs --check --openclaw ./openclaw
- shell: bash
run: |
plugin_track="${{ steps.openclaw-track.outputs.track }}"
extra_args=(--openclaw-track "${{ steps.openclaw-track.outputs.track }}" --plugin-track "${plugin_track}")
if [ "${{ steps.openclaw-track.outputs.track }}" = "development" ]; then
extra_args=(--openclaw-track "${{ steps.openclaw-track.outputs.track }}" --fixture-set openclaw-beta --plugin-track source-pack)
fi
node scripts/run-static-suite.mjs --openclaw ./openclaw --policy dashboard --profile-runs 3 --plugin-inspector-smoke "${extra_args[@]}"
changed-fixture-plan:
name: Resolve changed fixture matrix
@ -105,13 +113,20 @@ jobs:
with:
fetch-depth: 1
submodules: recursive
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
path: openclaw
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --github-output
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- name: Resolve diff refs
id: refs
shell: bash
@ -155,13 +170,20 @@ jobs:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
path: openclaw
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --github-output
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- name: Validate workspace plan
run: node scripts/workspace-plan.mjs --check --openclaw ./openclaw
- name: Execute fixture lane
@ -174,6 +196,10 @@ jobs:
if: always()
continue-on-error: true
run: npm run execution:report
- name: Reconcile compatibility report with runtime evidence
if: always()
continue-on-error: true
run: node scripts/generate-report.mjs --openclaw ./openclaw --execution-results reports/crabpot-execution-results.json --fixture-set "${{ matrix.id }}"
- name: Run execution policy
id: policy
if: always()
@ -182,7 +208,7 @@ jobs:
- name: Write isolated summary
if: always()
continue-on-error: true
run: node scripts/write-ci-summary.mjs --mode changed-isolated --openclaw-label openclaw/openclaw@main --github-step-summary
run: node scripts/write-ci-summary.mjs --mode changed-isolated --openclaw-label "${{ steps.openclaw-track.outputs.label }}" --github-step-summary
- name: Upload isolated execution artifacts
if: always()
uses: actions/upload-artifact@v7
@ -190,12 +216,14 @@ jobs:
name: crabpot-changed-isolated-${{ matrix.id }}
path: |
.crabpot/results/
reports/crabpot-report.*
reports/crabpot-issues.*
reports/crabpot-execution-results.*
reports/crabpot-ci-policy.*
reports/crabpot-ci-summary.*
if-no-files-found: warn
- name: Fail if isolated execution failed
if: ${{ steps.execute.outcome == 'failure' || steps.policy.outcome == 'failure' }}
- name: Fail if isolated policy failed
if: ${{ steps.policy.outcome == 'failure' }}
run: exit 1
dashboard:
@ -208,16 +236,39 @@ jobs:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
path: openclaw
- uses: actions/setup-node@v6
with:
node-version: 22
- run: node scripts/sync-fixtures.mjs --materialize
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --github-output
- uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- run: node scripts/sync-fixtures.mjs --materialize --openclaw ./openclaw
env:
CRABPOT_FIXTURE_SET: ${{ steps.openclaw-track.outputs.track == 'development' && 'openclaw-beta' || '' }}
CRABPOT_PLUGIN_TRACK: ${{ steps.openclaw-track.outputs.track == 'development' && 'source-pack' || steps.openclaw-track.outputs.track }}
- name: Install OpenClaw lifecycle dependencies
run: |
corepack enable
pnpm --dir openclaw install --frozen-lockfile --ignore-scripts
- name: Fetch main dashboard baseline
if: ${{ steps.openclaw-track.outputs.track != 'latest' }}
run: |
mkdir -p .crabpot/baseline
git fetch --no-tags --depth=1 origin main
git show origin/main:reports/crabpot-dashboard-data.json > .crabpot/baseline/main-dashboard-data.json || true
- name: Write README dashboard
env:
CRABPOT_FIXTURE_SET: ${{ steps.openclaw-track.outputs.track == 'development' && 'openclaw-beta' || '' }}
CRABPOT_OPENCLAW_TRACK: ${{ steps.openclaw-track.outputs.track }}
CRABPOT_PLUGIN_TRACK: ${{ steps.openclaw-track.outputs.track == 'development' && 'source-pack' || steps.openclaw-track.outputs.track }}
CRABPOT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
export CRABPOT_SUMMARY_GENERATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
@ -227,16 +278,21 @@ jobs:
node scripts/cold-import-readiness.mjs --openclaw ./openclaw
node scripts/workspace-plan.mjs --openclaw ./openclaw
node scripts/platform-probes.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs --openclaw ./openclaw --runs 3
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs 3
node scripts/compare-runtime-profile.mjs
node scripts/check-ci-policy.mjs
node scripts/write-ci-summary.mjs --mode check --openclaw-label openclaw/openclaw@main
node scripts/update-readme-summary.mjs
if ! git diff --quiet README.md; then
node scripts/write-ci-summary.mjs --mode check --openclaw-label "${{ steps.openclaw-track.outputs.label }}"
node scripts/update-track-metadata.mjs
baseline_arg=""
if [ -f .crabpot/baseline/main-dashboard-data.json ]; then
baseline_arg="--baseline-data .crabpot/baseline/main-dashboard-data.json"
fi
node scripts/update-readme-summary.mjs ${baseline_arg}
git add README.md reports/
if ! git diff --cached --quiet; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add README.md
git commit -m "chore(readme): update crabpot dashboard [skip ci]"
git push
git push || echo "::notice::Skipped stale dashboard push because ${GITHUB_REF_NAME} moved; a newer check run will refresh it."
fi

View File

@ -10,6 +10,10 @@ permissions:
contents: write
pull-requests: write
concurrency:
group: crabpot-dependabot-automerge-${{ github.event.pull_request.base.ref }}
cancel-in-progress: false
jobs:
refresh-and-automerge:
name: Refresh reports and enable auto-merge
@ -25,17 +29,44 @@ jobs:
submodules: recursive
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Configure git author
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Resolve OpenClaw track
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --branch "${{ github.event.pull_request.base.ref }}" --github-output
- name: Checkout OpenClaw
uses: actions/checkout@v6
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- uses: actions/setup-node@v6
with:
node-version: 22
- name: Update Dependabot branch with base
shell: bash
run: |
set -euo pipefail
git fetch origin "${{ github.event.pull_request.base.ref }}"
git merge --no-edit "origin/${{ github.event.pull_request.base.ref }}"
- name: Verify Dependabot changed only fixture pins
- name: Fetch main dashboard baseline
if: ${{ github.event.pull_request.base.ref != 'main' }}
run: |
mkdir -p .crabpot/baseline
git fetch --no-tags --depth=1 origin main
git show origin/main:reports/crabpot-dashboard-data.json > .crabpot/baseline/main-dashboard-data.json || true
- name: Verify Dependabot changed only fixture pins and generated reports
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
@ -48,19 +79,25 @@ jobs:
exit 1
fi
while IFS= read -r file; do
if [[ "$file" == ".gitmodules" || "$file" =~ ^plugins/[^/]+$ || "$file" =~ ^plugins/[^/]+/package(-lock)?\.json$ ]]; then
if [[ "$file" == ".gitmodules" || "$file" == "README.md" || "$file" =~ ^reports/ || "$file" =~ ^plugins/[^/]+$ || "$file" =~ ^plugins/[^/]+/package(-lock)?\.json$ ]]; then
continue
fi
echo "::error file=${file}::Dependabot auto-merge only accepts fixture pin changes"
echo "::error file=${file}::Dependabot auto-merge only accepts fixture pin changes and generated report updates"
exit 1
done < /tmp/crabpot-dependabot-files.txt
- name: Install OpenClaw lifecycle dependencies
run: |
corepack enable
pnpm --dir openclaw install --frozen-lockfile --ignore-scripts
- name: Refresh compatibility reports
env:
CRABPOT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
export CRABPOT_SUMMARY_GENERATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
node scripts/sync-fixtures.mjs --materialize
CRABPOT_SUMMARY_GENERATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
export CRABPOT_SUMMARY_GENERATED_AT
node scripts/sync-fixtures.mjs --materialize --openclaw ./openclaw
npm test
node scripts/sync-fixtures.mjs --check
node scripts/run-contract-smoke.mjs --strict --openclaw ./openclaw
@ -71,25 +108,60 @@ jobs:
node scripts/cold-import-readiness.mjs --openclaw ./openclaw
node scripts/workspace-plan.mjs --openclaw ./openclaw
node scripts/platform-probes.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs --openclaw ./openclaw --runs 3
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs 3
node scripts/compare-runtime-profile.mjs
node scripts/check-ci-policy.mjs
node scripts/write-ci-summary.mjs --mode dependabot --openclaw-label openclaw/openclaw@main
node scripts/update-readme-summary.mjs
node scripts/write-ci-summary.mjs --mode dependabot --openclaw-label "${{ steps.openclaw-track.outputs.label }}"
node scripts/update-track-metadata.mjs
baseline_args=()
if [ -f .crabpot/baseline/main-dashboard-data.json ]; then
baseline_args=(--baseline-data .crabpot/baseline/main-dashboard-data.json)
fi
node scripts/update-readme-summary.mjs "${baseline_args[@]}"
- name: Commit refreshed reports
run: |
if ! git diff --quiet README.md reports/; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add README.md reports/
git commit -m "chore(reports): refresh dependabot compatibility reports"
git push
fi
- name: Enable Dependabot auto-merge
- name: Merge Dependabot PR
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: gh pr merge "${PR_NUMBER}" --auto --squash --delete-branch
shell: bash
run: |
set -euo pipefail
for attempt in {1..18}; do
state="$(gh pr view "${PR_NUMBER}" --json mergeable,mergeStateStatus,statusCheckRollup --jq '
[
.mergeable,
.mergeStateStatus,
([.statusCheckRollup[]?
| select((.workflowName // "") != "Dependabot Auto Merge")
| select((.status // .state // "") == "IN_PROGRESS" or (.status // .state // "") == "QUEUED" or (.status // .state // "") == "PENDING" or (.status // .state // "") == "EXPECTED")
] | length),
([.statusCheckRollup[]?
| select((.workflowName // "") != "Dependabot Auto Merge")
| select((.conclusion // .state // "") == "FAILURE" or (.conclusion // .state // "") == "ERROR" or (.conclusion // .state // "") == "TIMED_OUT" or (.conclusion // .state // "") == "ACTION_REQUIRED" or (.conclusion // .state // "") == "CANCELLED")
] | length)
] | @tsv
')"
read -r mergeable merge_state pending_checks failed_checks <<< "${state}"
if [ "${failed_checks}" != "0" ]; then
echo "::error::PR ${PR_NUMBER} has ${failed_checks} failed status check(s); refusing auto-merge"
gh pr view "${PR_NUMBER}" --json url,mergeable,mergeStateStatus,statusCheckRollup
exit 1
fi
if [ "${mergeable}" = "MERGEABLE" ] && [ "${pending_checks}" = "0" ]; then
gh pr merge "${PR_NUMBER}" --squash --delete-branch
exit 0
fi
echo "PR ${PR_NUMBER} mergeable=${mergeable} mergeStateStatus=${merge_state} pendingChecks=${pending_checks}; waiting for mergeability and green checks (${attempt}/18)"
sleep 10
done
gh pr view "${PR_NUMBER}" --json url,mergeable,mergeStateStatus,statusCheckRollup
exit 1

View File

@ -58,7 +58,7 @@ on:
description: "Fail on warning-level contract policy findings"
type: boolean
required: true
default: false
default: true
strict_perf:
description: "Fail on runtime profile threshold regressions when enough samples exist"
type: boolean
@ -77,6 +77,7 @@ jobs:
PROFILE_RUNS: ${{ inputs.profile_runs }}
STRICT_CONTRACT: ${{ inputs.strict_contract }}
STRICT_PERF: ${{ inputs.strict_perf }}
SUITE_POLICY: ${{ inputs.strict_contract && 'release' || 'dashboard' }}
steps:
- name: Checkout Crabpot
uses: actions/checkout@v6
@ -100,22 +101,14 @@ jobs:
with:
node-version: 22
- run: node scripts/sync-fixtures.mjs --materialize
- run: npm test
- run: node scripts/sync-fixtures.mjs --check
- run: node scripts/run-contract-smoke.mjs --strict --openclaw ./openclaw
- run: node scripts/inspect-fixtures.mjs --check
- run: node scripts/generate-report.mjs --check --openclaw ./openclaw
- run: node scripts/capture-contracts.mjs --check --openclaw ./openclaw
- run: node scripts/synthetic-probes.mjs --check --openclaw ./openclaw
- run: node scripts/cold-import-readiness.mjs --check --openclaw ./openclaw
- run: node scripts/workspace-plan.mjs --check --openclaw ./openclaw
- run: node scripts/platform-probes.mjs --check --openclaw ./openclaw
- run: node scripts/import-loop-profile.mjs --check
- run: node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs "${PROFILE_RUNS}"
- run: node scripts/run-static-suite.mjs --openclaw ./openclaw --policy "${SUITE_POLICY}" --profile-runs "${PROFILE_RUNS}" --plugin-inspector-smoke
- name: Run runtime profile policy
run: node scripts/compare-runtime-profile.mjs ${{ inputs.strict_perf && '--strict' || '' }}
- run: node scripts/check-contract-coverage.mjs --openclaw ./openclaw
- name: Install OpenClaw lifecycle dependencies
run: |
corepack enable
pnpm --dir openclaw install --frozen-lockfile --ignore-scripts
- name: Write report artifacts
if: always()
@ -127,7 +120,8 @@ jobs:
node scripts/cold-import-readiness.mjs --openclaw ./openclaw
node scripts/workspace-plan.mjs --openclaw ./openclaw
node scripts/platform-probes.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs
node scripts/check-generated-surface-fixture.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs --openclaw ./openclaw --runs "${PROFILE_RUNS}"
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs "${PROFILE_RUNS}"
node scripts/compare-runtime-profile.mjs ${{ inputs.strict_perf && '--strict' || '' }}
node scripts/check-ci-policy.mjs ${{ inputs.strict_contract && '--strict' || '' }}
@ -181,7 +175,7 @@ jobs:
with:
node-version: 22
- run: node scripts/sync-fixtures.mjs --materialize
- run: node scripts/sync-fixtures.mjs --materialize --openclaw ./openclaw
- run: npm test
- name: Compare OpenClaw refs
run: |
@ -311,6 +305,11 @@ jobs:
continue-on-error: true
run: npm run execution:report
- name: Reconcile compatibility report with runtime evidence
if: always()
continue-on-error: true
run: node scripts/generate-report.mjs --openclaw ./openclaw --execution-results reports/crabpot-execution-results.json --fixture-set "${{ matrix.id }}"
- name: Run execution policy
id: policy
if: always()
@ -329,6 +328,8 @@ jobs:
name: crabpot-openclaw-ref-isolated-${{ matrix.id }}
path: |
.crabpot/results/
reports/crabpot-report.*
reports/crabpot-issues.*
reports/crabpot-execution-results.*
reports/crabpot-ci-policy.*
reports/crabpot-ci-summary.*

165
.github/workflows/track-dashboard.yml vendored Normal file
View File

@ -0,0 +1,165 @@
name: Track Dashboard
on:
schedule:
# Development follows OpenClaw main, so refresh it often enough to catch
# contract drift. The job usually finishes in a few minutes; concurrency
# below keeps slower runs from stacking up.
- cron: "7,22,37,52 * * * *"
workflow_dispatch:
inputs:
track:
description: "Crabpot track to refresh"
required: true
default: development
type: choice
options:
- development
- beta
- latest
- all
permissions:
contents: write
jobs:
dashboard:
name: Refresh ${{ matrix.track }} dashboard
runs-on: ubuntu-latest
concurrency:
group: crabpot-track-dashboard-${{ matrix.track }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- track: latest
branch: main
fixture_set: ""
plugin_track: latest
- track: beta
branch: crab-beta
fixture_set: ""
plugin_track: beta
- track: development
branch: crab-development
fixture_set: openclaw-beta
plugin_track: source-pack
steps:
- name: Select requested track
id: select
shell: bash
run: |
run=false
if [ "${{ github.event_name }}" = "schedule" ] && [ "${{ matrix.track }}" = "development" ]; then
run=true
fi
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && { [ "${{ inputs.track }}" = "all" ] || [ "${{ inputs.track }}" = "${{ matrix.track }}" ]; }; then
run=true
fi
echo "run=${run}" >> "$GITHUB_OUTPUT"
- uses: actions/checkout@v6
if: ${{ steps.select.outputs.run == 'true' }}
with:
ref: main
submodules: recursive
- uses: actions/setup-node@v6
if: ${{ steps.select.outputs.run == 'true' }}
with:
node-version: 22
cache: npm
cache-dependency-path: |
plugins/**/package-lock.json
- name: Resolve OpenClaw track
if: ${{ steps.select.outputs.run == 'true' }}
id: openclaw-track
run: node scripts/resolve-openclaw-track.mjs --track "${{ matrix.track }}" --github-output
- uses: actions/checkout@v6
if: ${{ steps.select.outputs.run == 'true' }}
with:
repository: openclaw/openclaw
ref: ${{ steps.openclaw-track.outputs.ref }}
path: openclaw
- if: ${{ steps.select.outputs.run == 'true' }}
run: |
node scripts/run-static-suite.mjs \
--openclaw ./openclaw \
--policy dashboard \
--profile-runs 3 \
--plugin-inspector-smoke \
--openclaw-track "${{ matrix.track }}" \
--fixture-set "${{ matrix.fixture_set }}" \
--plugin-track "${{ matrix.plugin_track }}"
- name: Install OpenClaw lifecycle dependencies
if: ${{ steps.select.outputs.run == 'true' }}
run: |
corepack enable
pnpm --dir openclaw install --frozen-lockfile --ignore-scripts
- name: Fetch main dashboard baseline
if: ${{ steps.select.outputs.run == 'true' && matrix.track != 'latest' }}
run: |
mkdir -p .crabpot/baseline
git fetch --no-tags --depth=1 origin main
git show origin/main:reports/crabpot-dashboard-data.json > .crabpot/baseline/main-dashboard-data.json || true
- name: Write branch dashboard
if: ${{ steps.select.outputs.run == 'true' }}
env:
CRABPOT_FIXTURE_SET: ${{ matrix.fixture_set }}
CRABPOT_OPENCLAW_TRACK: ${{ matrix.track }}
CRABPOT_PLUGIN_TRACK: ${{ matrix.plugin_track }}
CRABPOT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
export CRABPOT_SUMMARY_GENERATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
execution_results_arg=""
if [ "${{ matrix.track }}" = "development" ]; then
CRABPOT_EXECUTE_ISOLATED=1 node scripts/execute-workspace-plan.mjs --fixture-set openclaw-beta --openclaw ./openclaw --continue-on-error
node scripts/summarize-execution-results.mjs --write
execution_results_arg="--execution-results reports/crabpot-execution-results.json"
fi
node scripts/generate-report.mjs --openclaw ./openclaw ${execution_results_arg}
node scripts/capture-contracts.mjs --openclaw ./openclaw
node scripts/synthetic-probes.mjs --openclaw ./openclaw
node scripts/cold-import-readiness.mjs --openclaw ./openclaw
node scripts/workspace-plan.mjs --openclaw ./openclaw
node scripts/platform-probes.mjs --openclaw ./openclaw
node scripts/check-generated-surface-fixture.mjs --openclaw ./openclaw
node scripts/import-loop-profile.mjs --openclaw ./openclaw --runs 3
node scripts/profile-contract-runtime.mjs --openclaw ./openclaw --runs 3
node scripts/compare-runtime-profile.mjs
node scripts/check-ci-policy.mjs
node scripts/write-ci-summary.mjs --mode "track:${{ matrix.track }}" --openclaw-label "${{ steps.openclaw-track.outputs.label }}"
node scripts/update-track-metadata.mjs --track "${{ matrix.track }}"
baseline_arg=""
if [ -f .crabpot/baseline/main-dashboard-data.json ]; then
baseline_arg="--baseline-data .crabpot/baseline/main-dashboard-data.json"
fi
node scripts/update-readme-summary.mjs ${baseline_arg}
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add README.md reports/
if ! git diff --cached --quiet; then
git commit -m "chore(readme): refresh ${{ matrix.track }} dashboard [skip ci]"
if [ "${{ matrix.branch }}" = "main" ]; then
git push origin HEAD:${{ matrix.branch }}
else
git fetch --no-tags --depth=1 origin "${{ matrix.branch }}"
git push --force-with-lease="refs/heads/${{ matrix.branch }}" origin HEAD:${{ matrix.branch }}
fi
fi
- name: Upload track reports
if: ${{ always() && steps.select.outputs.run == 'true' }}
uses: actions/upload-artifact@v7
with:
name: crabpot-track-${{ matrix.track }}-reports
path: reports/
if-no-files-found: warn

24
.gitmodules vendored
View File

@ -90,3 +90,27 @@
path = plugins/mocrane-wecom
url = https://github.com/TencentCloud-Lighthouse/openclaw-wecom.git
shallow = true
[submodule "plugins/dingtalk-connector"]
path = plugins/dingtalk-connector
url = https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
shallow = true
[submodule "plugins/kitchen-sink"]
path = plugins/kitchen-sink
url = https://github.com/openclaw/kitchen-sink.git
shallow = true
[submodule "plugins/openclaw-telemetry"]
path = plugins/openclaw-telemetry
url = https://github.com/knostic/openclaw-telemetry.git
shallow = true
[submodule "plugins/telnyx-sms"]
path = plugins/telnyx-sms
url = https://github.com/team-telnyx/telnyx-openclaw-sms-channel.git
shallow = true
[submodule "plugins/clawrouter"]
path = plugins/clawrouter
url = https://github.com/BlockRunAI/ClawRouter.git
shallow = true
[submodule "plugins/nemoclaw"]
path = plugins/nemoclaw
url = https://github.com/NVIDIA/NemoClaw.git
shallow = true

4
.rgignore Normal file
View File

@ -0,0 +1,4 @@
# External plugin submodule history/comments that mention retired OpenClaw
# metadata. Crabpot-owned files are checked by npm run check:contracts.
plugins/agentchat/integrations/openclaw-channel/CHANGELOG.md
plugins/nemoclaw/scripts/generate-openclaw-config.py

View File

@ -8,5 +8,9 @@
opt-in and secrets.
- Prefer seam labels over product categories: `dynamic-tool`, `llm-observer`,
`gateway-service`, `provider-capability`, and similar.
- Treat `openclaw` package dependencies as host-linked inputs owned by the
inspector/workspace plan, not as upstream plugin install findings.
- When plugin-inspector behavior or package versions change, update both the
source ref and generated report/test expectations. After npm publish, update
the package pin and run both source-mode and package-mode smoke checks.
- When adding a fixture, explain the unique seam it covers in `why`.

122
README.md
View File

@ -1,69 +1,77 @@
# crabpot
# 🦀 crabpot
Compatibility trap for OpenClaw plugin contracts.
<img width="1376" height="768" alt="crabpot" src="https://github.com/user-attachments/assets/79eb0be1-0736-4a78-a62d-cb66ab080c60" />
<p></p>
`crabpot` keeps a curated set of real community plugins pinned under `plugins/`
and runs seam-focused compatibility checks against OpenClaw plugin APIs. The goal
is to catch contract drift before external plugin authors do.
**Goto: [Latest Published](https://github.com/openclaw/crabpot/tree/main) | [Latest Beta](https://github.com/openclaw/crabpot/tree/crab-beta) | [Main Development](https://github.com/openclaw/crabpot/tree/crab-development)**
**Compatibility trap for OpenClaw plugin contracts.** `crabpot` keeps a curated set of real community plugins pinned under `plugins/` and runs seam-focused compatibility checks against OpenClaw plugin APIs. The goal is to catch contract drift before external plugin authors do. Built on top of `plugin-inspector`, the testing harness for OpenClaw.
## Reporting Data
`main` follows the latest published npm package and npm `latest` plugin artifacts, with bundled OpenClaw fixtures source-packed from the matching checkout. `crab-beta` follows beta npm dist-tags for externalized packages and source-packs bundled fixtures. `crab-development` checks `openclaw/openclaw` main against source-packed official plugin artifacts from that same OpenClaw checkout.
- **Last dashboard update:** May 07, 2026, 09:32 UTC
<!-- crabpot-tracks:start -->
- **Source:** `npm-latest`
- **OpenClaw version:** `2026.5.6`
- **OpenClaw SHA:** `c97b9f79ec43`
- **Dashboard target:** `openclaw@latest + @openclaw/*@latest + bundled source fixtures`
- **Plugin artifacts:** `npm latest fixture set plus bundled source-packed fixtures`
- **GitHub report run:** [25487512981](https://github.com/openclaw/crabpot/actions/runs/25487512981)
<!-- crabpot-tracks:end -->
<!-- crabpot-summary:start -->
## Dashboard
Last dashboard update: Apr 26, 2026, 08:52 UTC
| Metric | Result |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Fixtures | 57 |
| Hard breakages | 0 |
| Warnings | 126 |
| Suggestions | 155 |
| Issues | 281 |
| P0 issues | [🔴 P0 0](reports/crabpot-issues.md#p0-live-issues) |
| P1 issues | [🟠 P1 15](reports/crabpot-issues.md#triage-summary) |
| Live issues | 0 total / 0 P0 |
| Compat gaps | 2 |
| Deprecation warnings | 42 |
| Inspector gaps | 163 |
| Upstream metadata | 74 |
| Contract probes | 277 |
| Policy failures | 0 |
| Policy warnings | 19 |
| Ref diff failures | 0 |
| Profile failures | 0 |
| Execution probes | 12 pass / 0 fail / 18 blocked |
| Synthetic probes | 434 ready / 0 blocked / 434 total |
| Cold import | 6 ready / 97 blocked / 103 entrypoints |
| Workspace plan | 103 entrypoints / 43 installs / 11 builds |
| Platform risks | 14 Windows / 14 container |
| Jiti loader candidates | 25 |
| Import loop | p50 2421ms / p95 2471ms / plugin delta RSS 13.3MB / plugin delta CPU 35ms / OpenClaw import 84ms / activate 0.3ms |
| Runtime profile | p50 2337ms / command p95 2391ms / max RSS 455.4MB / 3 samples/command |
State: PASS
### OpenClaw Lifecycle Probe
Mode: check
OpenClaw: openclaw/openclaw@main
Run: https://github.com/openclaw/crabpot/actions/runs/24952631216
### Result Grid
| Metric | Result |
| ---------------------- | ---------------------------------------------------- |
| Fixtures | 27 |
| Hard breakages | 0 |
| Warnings | 51 |
| Suggestions | 92 |
| Issues | 143 |
| P0 issues | [🔴 P0 2](reports/crabpot-issues.md#p0-live-issues) |
| P1 issues | [🟠 P1 26](reports/crabpot-issues.md#triage-summary) |
| Live issues | 2 total / 2 P0 |
| Compat gaps | 1 |
| Deprecation warnings | 21 |
| Inspector gaps | 97 |
| Upstream metadata | 22 |
| Contract probes | 141 |
| Policy failures | 0 |
| Policy warnings | 3 |
| Ref diff failures | 0 |
| Profile failures | 0 |
| Execution probes | 6 pass / 0 fail / 2 blocked |
| Synthetic probes | 141 ready / 0 blocked / 141 total |
| Cold import | 0 ready / 30 blocked / 30 entrypoints |
| Workspace plan | 30 entrypoints / 20 installs / 7 builds |
| Platform risks | 153 Windows / 47 container |
| Jiti loader candidates | 18 |
| Import loop | p50 153ms / p95 165ms / max RSS 46.3MB / CPU 27ms |
| Runtime profile | p50 649ms / p95 1329ms / max RSS 68.7MB |
| Phase | p50 | p95 |
| -------------------------- | ----- | ------ |
| Import (`full`) | 84ms | 88.6ms |
| Activate (`full:register`) | 0.3ms | 1.2ms |
### Top Discovered Issues
| Severity | Class | Fixture | Code | Decision | Title |
| -------- | ------------- | ---------------- | ------------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| 🔴 P0 | live-issue | codex-app-server | sdk-export-missing | core-compat-adapter | [codex-app-server: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#p0-live-issues) |
| 🔴 P0 | live-issue | hyperspell | unknown-hook-name | core-compat-adapter | [hyperspell: fixture uses a hook missing from target OpenClaw](reports/crabpot-issues.md#p0-live-issues) |
| 🟠 P1 | inspector-gap | a2a-gateway | registration-capture-gap | inspector-follow-up | [a2a-gateway: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | clawmetry | registration-capture-gap | inspector-follow-up | [clawmetry: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | compat-gap | codex-app-server | missing-compat-record | core-compat-adapter | [codex-app-server: compat-dependent behavior lacks registry coverage](reports/crabpot-issues.md#compat-gaps) |
| 🟠 P1 | inspector-gap | codex-app-server | registration-capture-gap | inspector-follow-up | [codex-app-server: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | connectclaw | registration-capture-gap | inspector-follow-up | [connectclaw: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | honcho | conversation-access-hook | inspector-follow-up | [honcho: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | honcho | registration-capture-gap | inspector-follow-up | [honcho: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | hyperspell | conversation-access-hook | inspector-follow-up | [hyperspell: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| Severity | Class | Fixture | Code | Decision | Title |
| -------- | ------------- | ----------------- | ------------------------ | ------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| 🟠 P1 | compat-gap | clawmetry | sdk-export-missing | core-compat-adapter | [clawmetry: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#compat-gaps) |
| 🟠 P1 | inspector-gap | honcho | conversation-access-hook | inspector-follow-up | [honcho: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | compat-gap | honcho | sdk-export-missing | core-compat-adapter | [honcho: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#compat-gaps) |
| 🟠 P1 | inspector-gap | kitchen-sink | before-tool-call-probe | inspector-follow-up | [kitchen-sink: before_tool_call needs terminal/block/approval probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | kitchen-sink | conversation-access-hook | inspector-follow-up | [kitchen-sink: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | llm-trace-phoenix | conversation-access-hook | inspector-follow-up | [llm-trace-phoenix: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | memory-lancedb | conversation-access-hook | inspector-follow-up | [memory-lancedb: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | memory-tencentdb | conversation-access-hook | inspector-follow-up | [memory-tencentdb: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | memos-cloud | conversation-access-hook | inspector-follow-up | [memos-cloud: conversation-access hooks need privacy-boundary probes](reports/crabpot-issues.md#inspector-proof-gaps) |
| 🟠 P1 | inspector-gap | nemoclaw | before-tool-call-probe | inspector-follow-up | [nemoclaw: before_tool_call needs terminal/block/approval probes](reports/crabpot-issues.md#inspector-proof-gaps) |
<!-- crabpot-summary:end -->
## What this tests
@ -135,11 +143,13 @@ For deeper review, open the reports in this order:
| Isolated install/build/capture commands Crabpot would run | `npm run workspace:plan` | `reports/crabpot-workspace-plan.md` |
| Results from opt-in isolated fixture execution | `npm run execution:report` | `reports/crabpot-execution-results.md` |
| Boot time and RSS against the target OpenClaw registry surface | `npm run profile` | `reports/crabpot-runtime-profile.md` |
| README dashboard refresh from all generated JSON reports | `npm run readme:summary` | `README.md` |
| README dashboard refresh from all generated JSON reports | `npm run readme:summary` | `README.md`, `reports/crabpot-dashboard-data.json` |
Each Markdown report has a matching JSON file beside it for CI, dashboards, and
future inspector tooling. The JSON is the contract; the Markdown is the review
surface.
surface. `reports/crabpot-dashboard-data.json` is the compact machine-readable
dashboard card used to compare `crab-beta` and `crab-development` against
`main`.
Use the main compatibility report like this:

View File

@ -12,9 +12,37 @@
{
"id": "service-lifecycle-harness",
"seam": "registerService",
"reasonIncludes": "lifecycle",
"reasonIncludes": "includeLifecycle=true",
"decision": "allowed-blocked",
"until": "service lifecycle harness lands"
},
{
"id": "provider-capability-harness",
"seam": "registerSpeechProvider",
"reasonIncludes": "includeProviderCapabilities=true",
"decision": "allowed-blocked",
"until": "provider capability harness lands"
},
{
"id": "live-network-tool-probes",
"seam": "registerTool",
"reasonIncludes": "live network access",
"decision": "allowed-blocked",
"until": "network-capability harness lands"
},
{
"id": "generated-surface-hook-stubs",
"seam": "*",
"reasonIncludes": "captured hook has no callable handler",
"decision": "allowed-blocked",
"until": "generated surface runtime harness lands"
},
{
"id": "generated-surface-registration-stubs",
"seam": "*",
"reasonIncludes": "captured registration has no supported callable probe",
"decision": "allowed-blocked",
"until": "generated surface runtime harness lands"
}
],
"expectedWarnings": [
@ -34,6 +62,16 @@
},
"fixtureSets": {
"smoke": ["wecom", "llm-trace-phoenix", "codex-app-server", "opik-openclaw"],
"openclaw-beta": [
"brave-plugin",
"codex",
"diagnostics-prometheus",
"google-meet",
"diffs",
"memory-lancedb",
"openclaw-qqbot",
"whatsapp"
],
"sdk-alias": ["codex-app-server"],
"side-effect-review": ["hasdata", "llm-trace-phoenix", "web-search-plus"],
"build": ["agentchat", "clawmetry", "opik-openclaw"]

View File

@ -124,6 +124,26 @@
},
"why": "Opik trace exporter covering LLM spans, tool spans, subagent spans, stale trace cleanup, CLI setup, and persisted tool-result sanitization."
},
{
"id": "openclaw-telemetry",
"name": "OpenClaw Telemetry",
"repo": "https://github.com/knostic/openclaw-telemetry.git",
"path": "plugins/openclaw-telemetry",
"priority": "high",
"seams": ["diagnostics", "llm-observer", "tool-runtime", "message-lifecycle", "gateway-service"],
"expect": {
"hooks": [
"before_tool_call",
"after_tool_call",
"message_received",
"message_sent",
"before_agent_start",
"agent_end"
],
"registrations": ["registerService"]
},
"why": "Telemetry fixture covering high-volume lifecycle hooks, tool-call capture, message events, JSONL/syslog sinks, redaction, rate limiting, and integrity hash chains."
},
{
"id": "lossless-claw",
"name": "Lossless Claw (LCM)",
@ -157,12 +177,11 @@
"repo": "https://github.com/hyperspell/hyperspell-openclaw.git",
"path": "plugins/hyperspell",
"priority": "high",
"seams": ["memory-runtime", "prompt-mutation", "session-lifecycle", "file-watch", "cli"],
"seams": ["dynamic-tool", "external-memory", "cli"],
"expect": {
"hooks": ["before_agent_start", "after_compaction", "session_end", "agent_end", "file_changed"],
"registrations": ["registerCli", "registerCommand", "registerService", "registerTool"]
"registrations": ["registerCli", "registerCommand", "registerTool"]
},
"why": "Memory and context fixture covering legacy startup hooks, compaction/session hooks, file-change sync, CLI setup, command handlers, and tool-backed external memory search/write."
"why": "Memory and context fixture covering CLI setup, command handlers, and tool-backed external memory search/write."
},
{
"id": "honcho",
@ -204,6 +223,855 @@
},
"why": "NPM-installed dynamic tool fixture for Composio/MCP integration, prompt context injection, CLI setup, external API auth, and large remote tool catalogs."
},
{
"id": "kitchen-sink",
"name": "OpenClaw Kitchen Sink",
"repo": "https://github.com/openclaw/kitchen-sink.git",
"path": "plugins/kitchen-sink",
"priority": "high",
"seams": [
"plugin-api-surface",
"hook",
"registration-surface",
"manifest-contracts",
"provider-capability",
"credential-free"
],
"expect": {
"hooks": [
"after_compaction",
"after_tool_call",
"agent_end",
"before_agent_finalize",
"before_agent_reply",
"before_agent_start",
"before_compaction",
"before_dispatch",
"before_install",
"before_message_write",
"before_model_resolve",
"before_prompt_build",
"before_reset",
"before_tool_call",
"gateway_start",
"gateway_stop",
"inbound_claim",
"llm_input",
"llm_output",
"message_received",
"message_sending",
"message_sent",
"model_call_ended",
"model_call_started",
"reply_dispatch",
"session_end",
"session_start",
"subagent_delivery_target",
"subagent_ended",
"subagent_spawned",
"subagent_spawning",
"tool_result_persist"
],
"registrations": [
"registerAgentHarness",
"registerAgentToolResultMiddleware",
"registerAutoEnableProbe",
"registerChannel",
"registerCli",
"registerCliBackend",
"registerCodexAppServerExtensionFactory",
"registerCommand",
"registerCompactionProvider",
"registerConfigMigration",
"registerContextEngine",
"registerDetachedTaskRuntime",
"registerGatewayDiscoveryService",
"registerGatewayMethod",
"registerHook",
"registerHttpRoute",
"registerImageGenerationProvider",
"registerInteractiveHandler",
"registerMediaUnderstandingProvider",
"registerMemoryCapability",
"registerMemoryCorpusSupplement",
"registerMemoryEmbeddingProvider",
"registerMemoryFlushPlan",
"registerMemoryPromptSection",
"registerMemoryPromptSupplement",
"registerMemoryRuntime",
"registerMigrationProvider",
"registerMusicGenerationProvider",
"registerNodeHostCommand",
"registerProvider",
"registerRealtimeTranscriptionProvider",
"registerRealtimeVoiceProvider",
"registerReload",
"registerSecurityAuditCollector",
"registerService",
"registerSpeechProvider",
"registerTextTransforms",
"registerTool",
"registerVideoGenerationProvider",
"registerWebFetchProvider",
"registerWebSearchProvider"
],
"manifestContracts": [
"agentToolResultMiddleware",
"documentExtractors",
"embeddedExtensionFactories",
"externalAuthProviders",
"imageGenerationProviders",
"mediaUnderstandingProviders",
"memoryEmbeddingProviders",
"migrationProviders",
"musicGenerationProviders",
"realtimeTranscriptionProviders",
"realtimeVoiceProviders",
"speechProviders",
"tools",
"videoGenerationProviders",
"webContentExtractors",
"webFetchProviders",
"webSearchProviders"
]
},
"why": "Credential-free generated fixture covering the public OpenClaw plugin API surface across hooks, registrars, provider capabilities, setup metadata, manifest contracts, and SDK import compatibility."
},
{
"id": "bluebubbles",
"name": "OpenClaw BlueBubbles channel plugin",
"package": {
"name": "@openclaw/bluebubbles",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/bluebubbles",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/bluebubbles",
"priority": "medium",
"seams": [
"channel",
"account-auth",
"media",
"macos-bridge",
"npm-artifact"
],
"why": "Official OpenClaw BlueBubbles channel package covering macOS/iMessage bridge assumptions, account auth, media-capable channel metadata, and npm artifact packaging from the monorepo.",
"expect": {
"registrations": [
"registerChannel"
]
}
},
{
"id": "diagnostics-otel",
"name": "OpenClaw diagnostics OpenTelemetry exporter",
"package": {
"name": "@openclaw/diagnostics-otel",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/diagnostics-otel",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/diagnostics-otel",
"priority": "medium",
"seams": [
"diagnostics",
"telemetry",
"otel-export",
"service",
"npm-artifact"
],
"expect": {
"registrations": [
"registerService"
]
},
"why": "Official OpenClaw OpenTelemetry diagnostics package covering service registration, telemetry exporter setup, and npm package metadata mapped back to the monorepo source."
},
{
"id": "discord",
"name": "OpenClaw Discord channel plugin",
"package": {
"name": "@openclaw/discord",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/discord",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/discord",
"priority": "medium",
"seams": [
"channel",
"subagent-routing",
"message-policy",
"account-auth",
"npm-artifact"
],
"expect": {
"hooks": [
"subagent_delivery_target",
"subagent_ended",
"subagent_spawning"
],
"registrations": [
"registerChannel"
]
},
"why": "Official OpenClaw Discord channel package covering subagent routing hooks, message policy, account auth, and npm artifact packaging from the monorepo."
},
{
"id": "lobster",
"name": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
"package": {
"name": "@openclaw/lobster",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/lobster",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/lobster",
"priority": "medium",
"seams": [
"tool",
"workflow",
"approval",
"async-job",
"npm-artifact"
],
"expect": {
"registrations": [
"registerTool"
]
},
"why": "Official Lobster workflow package covering typed pipeline tools, resumable approval semantics, manifest tool contracts, and npm artifact packaging."
},
{
"id": "matrix",
"name": "OpenClaw Matrix channel plugin",
"package": {
"name": "@openclaw/matrix",
"tag": "latest",
"artifactSource": "source-pack"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/matrix",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/matrix",
"priority": "medium",
"seams": [
"channel",
"gateway-method",
"subagent-routing",
"cli"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official bundled OpenClaw Matrix channel package covering CLI setup, gateway methods, and subagent routing hooks; Crabpot source-packs it from the OpenClaw monorepo instead of requiring a separate npm dist-tag."
},
{
"id": "msteams",
"name": "OpenClaw Microsoft Teams channel plugin",
"package": {
"name": "@openclaw/msteams",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/msteams",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/msteams",
"priority": "medium",
"seams": [
"channel",
"account-auth",
"enterprise-chat",
"message-policy",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official Microsoft Teams channel package covering enterprise chat auth, channel factory metadata, message policy, and npm artifact packaging."
},
{
"id": "nextcloud-talk",
"name": "OpenClaw Nextcloud Talk channel plugin",
"package": {
"name": "@openclaw/nextcloud-talk",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/nextcloud-talk",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/nextcloud-talk",
"priority": "medium",
"seams": [
"channel",
"account-auth",
"self-hosted-chat",
"message-policy",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official Nextcloud Talk channel package covering self-hosted chat setup, account auth, channel factory metadata, and npm artifact packaging."
},
{
"id": "nostr",
"name": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
"package": {
"name": "@openclaw/nostr",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/nostr",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/nostr",
"priority": "medium",
"seams": [
"channel",
"encrypted-dm",
"http-routes",
"account-auth",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel",
"registerHttpRoute"
]
},
"why": "Official Nostr channel package covering encrypted DM channel behavior, HTTP route registration, account auth, and npm artifact packaging."
},
{
"id": "voice-call",
"name": "OpenClaw voice-call plugin",
"package": {
"name": "@openclaw/voice-call",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/voice-call",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/voice-call",
"priority": "medium",
"seams": [
"tool",
"gateway-method",
"service",
"config-migration",
"cli"
],
"expect": {
"registrations": [
"registerCli",
"registerGatewayMethod",
"registerService",
"registerTool"
]
},
"why": "Official voice-call package covering gateway methods, service lifecycle, tool registration, config migration, CLI setup, and npm artifact packaging."
},
{
"id": "zalo",
"name": "OpenClaw Zalo channel plugin",
"package": {
"name": "@openclaw/zalo",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/zalo",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/zalo",
"priority": "medium",
"seams": [
"channel",
"account-auth",
"media",
"message-policy",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official Zalo channel package covering account auth, media-capable channel metadata, channel factory registration, and npm artifact packaging."
},
{
"id": "zalouser",
"name": "OpenClaw Zalo Personal Account plugin via native zca-js integration",
"package": {
"name": "@openclaw/zalouser",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/zalouser",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/zalouser",
"priority": "medium",
"seams": [
"channel",
"native-integration",
"account-auth",
"tool",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel",
"registerTool"
]
},
"why": "Official Zalo personal account package covering native zca-js integration, channel factory registration, tool contracts, and npm artifact packaging."
},
{
"id": "feishu",
"name": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
"package": {
"name": "@openclaw/feishu",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/feishu",
"ref": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
},
"path": "plugins/feishu",
"priority": "medium",
"seams": [
"channel",
"subagent-routing",
"tool",
"account-auth",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel",
"registerTool"
]
},
"why": "Official Feishu/Lark channel package covering subagent routing hooks, account auth, tool contracts, and npm artifact packaging."
},
{
"id": "tlon",
"name": "OpenClaw Tlon/Urbit channel plugin",
"package": {
"name": "@openclaw/tlon",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/tlon",
"ref": "35a57bc940833a6c1f594b2308e349e5ee0148db"
},
"path": "plugins/tlon",
"priority": "medium",
"seams": [
"channel",
"federated-network",
"account-auth",
"tool",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official Tlon/Urbit channel package covering federated-network account setup, channel factory registration, tool contracts, and npm artifact packaging."
},
{
"id": "twitch",
"name": "OpenClaw Twitch channel plugin",
"package": {
"name": "@openclaw/twitch",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/twitch",
"ref": "35a57bc940833a6c1f594b2308e349e5ee0148db"
},
"path": "plugins/twitch",
"priority": "medium",
"seams": [
"channel",
"streaming-chat",
"account-auth",
"message-policy",
"npm-artifact"
],
"why": "Official Twitch channel package covering streaming-chat channel metadata, account auth, message policy, and npm artifact packaging.",
"expect": {
"registrations": [
"registerChannel"
]
}
},
{
"id": "mattermost",
"name": "OpenClaw Mattermost channel plugin",
"package": {
"name": "@openclaw/mattermost",
"tag": "latest",
"artifactSource": "source-pack"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/mattermost",
"ref": "35a57bc940833a6c1f594b2308e349e5ee0148db"
},
"path": "plugins/mattermost",
"priority": "medium",
"seams": [
"channel",
"http-routes",
"self-hosted-chat",
"account-auth"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official bundled Mattermost channel package covering self-hosted chat auth, HTTP route registration, and channel factory metadata; Crabpot source-packs it from the OpenClaw monorepo instead of requiring a separate npm dist-tag."
},
{
"id": "synology-chat",
"name": "Synology Chat channel plugin for OpenClaw",
"package": {
"name": "@openclaw/synology-chat",
"tag": "latest"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/synology-chat",
"ref": "b19a6ee62db342d400a233903adcaf17f67246c5"
},
"path": "plugins/synology-chat",
"priority": "medium",
"seams": [
"channel",
"self-hosted-chat",
"account-auth",
"message-policy",
"npm-artifact"
],
"expect": {
"registrations": [
"registerChannel"
]
},
"why": "Official Synology Chat channel package covering self-hosted chat setup, channel factory registration, account auth, and npm artifact packaging."
},
{
"id": "brave-plugin",
"name": "OpenClaw Brave plugin",
"package": {
"name": "@openclaw/brave-plugin",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/brave",
"ref": "a22f06504376e7203a2bec8fde094b7cdcb06c02"
},
"path": "plugins/brave-plugin",
"priority": "medium",
"seams": [
"provider-capability",
"web-search-provider",
"external-api",
"env-auth",
"npm-artifact"
],
"expect": {
"registrations": [
"definePluginEntry",
"registerWebSearchProvider"
],
"manifestContracts": [
"webSearchProviders"
]
},
"why": "Official Brave search package covering web search provider registration, external API/env auth metadata, manifest provider contracts, and npm artifact packaging."
},
{
"id": "codex",
"name": "OpenClaw Codex harness and model provider plugin",
"package": {
"name": "@openclaw/codex",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/codex",
"ref": "a22f06504376e7203a2bec8fde094b7cdcb06c02"
},
"path": "plugins/codex",
"priority": "medium",
"seams": [
"agent-harness",
"provider-capability",
"media-understanding",
"migration-provider",
"channel-bridge"
],
"expect": {
"hooks": [
"inbound_claim"
],
"registrations": [
"definePluginEntry",
"registerAgentHarness",
"registerCommand",
"registerMediaUnderstandingProvider",
"registerMigrationProvider",
"registerProvider"
],
"manifestContracts": [
"mediaUnderstandingProviders",
"migrationProviders"
]
},
"why": "Official Codex package covering agent harness registration, model provider wiring, media understanding, migrations, inbound claims, and npm artifact packaging."
},
{
"id": "diagnostics-prometheus",
"name": "OpenClaw diagnostics Prometheus exporter",
"package": {
"name": "@openclaw/diagnostics-prometheus",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/diagnostics-prometheus",
"ref": "f4ef1bf04e9637958418428db0ff9e75e6698159"
},
"path": "plugins/diagnostics-prometheus",
"priority": "medium",
"seams": [
"diagnostics",
"telemetry",
"prometheus-export",
"http-routes",
"service"
],
"expect": {
"registrations": [
"definePluginEntry",
"registerHttpRoute",
"registerService"
]
},
"why": "Official Prometheus diagnostics package covering service lifecycle, metrics HTTP routes, telemetry export, and monorepo-backed npm packaging."
},
{
"id": "google-meet",
"name": "OpenClaw Google Meet participant plugin",
"package": {
"name": "@openclaw/google-meet",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/google-meet",
"ref": "f4ef1bf04e9637958418428db0ff9e75e6698159"
},
"path": "plugins/google-meet",
"priority": "medium",
"seams": [
"tool",
"gateway-method",
"node-host-command",
"meeting",
"cli"
],
"expect": {
"registrations": [
"definePluginEntry",
"registerCli",
"registerGatewayMethod",
"registerNodeHostCommand",
"registerTool"
]
},
"why": "Official Google Meet package covering meeting tools, gateway methods, node host commands, CLI setup, and npm artifact packaging."
},
{
"id": "diffs",
"name": "OpenClaw diff viewer plugin",
"package": {
"name": "@openclaw/diffs",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/diffs",
"ref": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
},
"path": "plugins/diffs",
"priority": "medium",
"seams": [
"tool",
"http-routes",
"prompt-mutation",
"diff-viewer",
"npm-artifact"
],
"expect": {
"hooks": [
"before_prompt_build"
],
"registrations": [
"definePluginEntry",
"registerHttpRoute",
"registerTool"
]
},
"why": "Official diff viewer package covering prompt mutation, HTTP route UI surface, tool registration, manifest tool contracts, and npm artifact packaging."
},
{
"id": "memory-lancedb",
"name": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
"package": {
"name": "@openclaw/memory-lancedb",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/memory-lancedb",
"ref": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
},
"path": "plugins/memory-lancedb",
"priority": "medium",
"seams": [
"memory-runtime",
"prompt-mutation",
"session-lifecycle",
"vector-store",
"cli"
],
"expect": {
"hooks": [
"agent_end",
"before_prompt_build",
"session_end"
],
"registrations": [
"definePluginEntry",
"registerCli",
"registerService",
"registerTool"
]
},
"why": "Official LanceDB memory package covering automatic recall/capture hooks, vector-store lifecycle, service/CLI setup, tool contracts, and npm artifact packaging."
},
{
"id": "openclaw-qqbot",
"name": "OpenClaw QQ Bot channel plugin",
"package": {
"name": "@openclaw/qqbot",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/qqbot",
"ref": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
},
"path": "plugins/openclaw-qqbot",
"priority": "medium",
"seams": [
"channel",
"command",
"tool",
"media",
"npm-artifact"
],
"expect": {
"registrations": [
"registerCommand",
"registerTool"
]
},
"why": "Official OpenClaw QQ Bot npm package covering command/tool registration, channel manifest metadata, media-capable messaging, and monorepo source mapping without replacing the external QQBot fixture."
},
{
"id": "whatsapp",
"name": "OpenClaw WhatsApp channel plugin",
"package": {
"name": "@openclaw/whatsapp",
"tag": "beta"
},
"source": {
"repo": "https://github.com/openclaw/openclaw.git",
"path": "extensions/whatsapp",
"ref": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
},
"path": "plugins/whatsapp",
"priority": "medium",
"seams": [
"channel",
"account-auth",
"media",
"message-policy",
"npm-artifact"
],
"why": "Official WhatsApp channel package covering account auth, media-capable channel metadata, message policy, and npm artifact packaging from the monorepo."
},
{
"id": "nemoclaw",
"name": "NemoClaw",
"repo": "https://github.com/NVIDIA/NemoClaw.git",
"path": "plugins/nemoclaw",
"subdir": "nemoclaw",
"priority": "high",
"seams": [
"provider-capability",
"prompt-mutation",
"security-audit",
"process-spawn",
"command",
"config-schema"
],
"expect": {
"hooks": ["before_agent_start", "before_tool_call"],
"registrations": ["registerCommand", "registerProvider"]
},
"why": "NVIDIA OpenShell fixture covering sandbox-aware runtime context injection, managed inference provider registration, slash-command migration/status flows, OpenShell CLI probing, and secret-blocking tool-call policy."
},
{
"id": "memory-tencentdb",
"name": "TencentDB Agent Memory",
@ -232,6 +1100,18 @@
},
"why": "DingTalk channel fixture from the latest npm-backed repo, covering enterprise IM auth, channel setup, media handling, and webhook-style message ingress."
},
{
"id": "dingtalk-connector",
"name": "DingTalk Connector",
"repo": "https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git",
"path": "plugins/dingtalk-connector",
"priority": "high",
"seams": ["channel", "streaming", "account-auth", "interactive-card", "gateway-method"],
"expect": {
"registrations": ["registerChannel", "registerGatewayMethod"]
},
"why": "Official DingTalk connector fixture covering Stream-mode channel ingress, AI Card replies, multi-account access policy, gateway RPC methods, and packaged channel skills."
},
{
"id": "mocrane-wecom",
"name": "Mocrane WeCom",
@ -256,7 +1136,7 @@
"priority": "high",
"seams": ["channel", "media", "command", "account-auth", "sdk-compat"],
"expect": {
"registrations": ["registerChannel", "registerTool", "registerCommand"]
"registrations": ["createChatChannelPlugin", "registerTool", "registerCommand"]
},
"why": "NPM-pinned Yuanbao channel fixture covering bot auth, media messaging, built-in commands, command queue state compatibility, and root SDK imports."
},
@ -269,11 +1149,11 @@
},
"path": "plugins/openclaw-weixin",
"priority": "high",
"seams": ["channel", "media", "account-auth", "pairing", "sdk-subpaths"],
"seams": ["channel", "media", "account-auth", "pairing", "sdk-subpaths", "catalog-discovery"],
"expect": {
"registrations": ["registerChannel"]
},
"why": "NPM-pinned Weixin channel fixture covering scan-login pairing, account isolation, media upload/download, and narrow SDK subpath usage."
"why": "NPM-pinned Weixin channel fixture covering scan-login pairing, account isolation, media upload/download, narrow SDK subpath usage, and npm-installed channel catalog discovery."
},
{
"id": "lightclawbot",
@ -290,6 +1170,49 @@
},
"why": "NPM-pinned channel fixture covering cron/proactive messaging metadata, file upload tooling, bundled Socket.IO dependencies, and built JavaScript-only plugin packages."
},
{
"id": "telnyx-sms",
"name": "Telnyx SMS",
"repo": "https://github.com/team-telnyx/telnyx-openclaw-sms-channel.git",
"path": "plugins/telnyx-sms",
"priority": "medium",
"seams": ["channel", "media", "account-auth", "http-routes", "cli"],
"expect": {
"registrations": ["defineChannelPluginEntry", "registerCli", "registerHttpRoute"]
},
"why": "Telnyx-owned SMS/MMS channel fixture covering channel setup entries, multi-account phone-number auth, inbound webhook verification, HTTP route registration, MMS handling, and auto-exposure flows."
},
{
"id": "clawrouter",
"name": "ClawRouter",
"repo": "https://github.com/BlockRunAI/ClawRouter.git",
"path": "plugins/clawrouter",
"priority": "medium",
"seams": ["provider-capability", "gateway-service", "process-spawn", "command", "dynamic-tool"],
"expect": {
"registrations": [
"registerProvider",
"registerImageGenerationProvider",
"registerMusicGenerationProvider",
"registerVideoGenerationProvider",
"registerWebSearchProvider",
"registerTool",
"registerCommand",
"registerService"
]
},
"execution": {
"blockedFailures": [
{
"id": "clawrouter-live-network-tools",
"seam": "registerTool",
"errorIncludes": "fetch failed",
"reason": "captured tool requires live network access"
}
]
},
"why": "Model-router fixture covering provider registration, generation/search provider capabilities, proxy sidecar lifecycle, x402 wallet/auth setup, command registration, partner tool surfacing, and config mutation edge cases."
},
{
"id": "memu-engine",
"name": "MemU Engine",

View File

@ -34,7 +34,18 @@
"properties": {
"name": { "type": "string", "minLength": 1 },
"version": { "type": "string", "minLength": 1 },
"tag": { "type": "string", "minLength": 1 }
"tag": { "type": "string", "minLength": 1 },
"artifactSource": { "enum": ["npm", "source-pack"] }
}
},
"source": {
"type": "object",
"required": ["repo", "path", "ref"],
"additionalProperties": false,
"properties": {
"repo": { "type": "string", "pattern": "^https://github.com/.+\\.git$" },
"path": { "type": "string", "pattern": "^[^/].*" },
"ref": { "type": "string", "minLength": 1 }
}
},
"path": { "type": "string", "pattern": "^plugins/[a-z0-9][a-z0-9-]*$" },

View File

@ -1,7 +1,8 @@
# Inspector Plan
Crabpot is the fixture base. The reusable inspector should become a separate
package later.
Crabpot is the fixture base. The reusable inspector now lives in the separate
`openclaw/plugin-inspector` repo and will replace the local prototype scripts in
phases.
## Layers
@ -85,8 +86,24 @@ Generated reports live in `reports/`:
- `crabpot-workspace-plan.md`
- `crabpot-workspace-plan.json`
Later, replace the static scanner with the packaged inspector while keeping
`crabpot.config.json` as the fixture manifest.
The first packaged-inspector smoke runs through:
```bash
npm run plugin-inspector:smoke
```
The smoke writes ignored artifacts under `.crabpot/plugin-inspector-smoke/`.
By default the smoke runs the published `@openclaw/plugin-inspector@0.1.3`
package through `npm exec`. For local plugin-inspector development, set
`CRABPOT_PLUGIN_INSPECTOR_CLI=source` to run the sibling or pinned source
checkout instead. Set `CRABPOT_PLUGIN_INSPECTOR_BIN=/path/to/plugin-inspector`
to test an arbitrary CLI binary.
Current migration state: `scripts/inspect-fixtures.mjs` delegates static source,
manifest, and package inspection to `plugin-inspector` while preserving
crabpot's existing command output and exported helper names. Crabpot keeps its
orchestration, report paths, fixture policy, and opt-in execution guards; the
reusable compatibility logic now lives in the published inspector package.
## Compatibility issue workflow

View File

@ -108,6 +108,7 @@ records, and manifest fields.
Run the quality gate directly when changing classifiers:
```bash
npm run plugin-inspector:smoke
npm run contract:coverage
npm run contract:capture -- --check
npm run contract:synthetic -- --check
@ -118,6 +119,11 @@ npm run profile -- --check
node scripts/check-contract-coverage.mjs --openclaw ../openclaw
```
`npm run plugin-inspector:smoke` uses the published
`@openclaw/plugin-inspector@0.1.3` package by default. Use
`CRABPOT_PLUGIN_INSPECTOR_CLI=source npm run plugin-inspector:smoke` only when
validating local inspector source changes.
Issue severity means:
- `P0`: current hard breakage.

View File

@ -1,6 +1,6 @@
{
"name": "crabpot",
"version": "0.1.0",
"version": "0.1.4",
"private": true,
"description": "Compatibility testbed for OpenClaw community plugins and plugin seams.",
"type": "module",
@ -8,7 +8,9 @@
"node": ">=22"
},
"scripts": {
"check": "node scripts/sync-fixtures.mjs --materialize && npm test && node scripts/sync-fixtures.mjs --check && node scripts/run-contract-smoke.mjs && node scripts/inspect-fixtures.mjs --check && node scripts/generate-report.mjs --check && node scripts/capture-contracts.mjs --check && node scripts/synthetic-probes.mjs --check && node scripts/cold-import-readiness.mjs --check && node scripts/workspace-plan.mjs --check && node scripts/platform-probes.mjs --check && node scripts/import-loop-profile.mjs --check && node scripts/profile-contract-runtime.mjs --check && node scripts/check-contract-coverage.mjs",
"check": "node scripts/run-static-suite.mjs --policy dashboard",
"check:contracts": "node scripts/check-openclaw-plugin-contracts.mjs",
"check:release": "node scripts/run-static-suite.mjs --policy release",
"ci:policy": "node scripts/check-ci-policy.mjs",
"ci:summary": "node scripts/write-ci-summary.mjs",
"contract:capture": "node scripts/capture-contracts.mjs",
@ -23,8 +25,12 @@
"fixtures:inspect": "node scripts/inspect-fixtures.mjs",
"fixtures:sync": "node scripts/sync-fixtures.mjs --materialize",
"import:profile": "node scripts/import-loop-profile.mjs",
"import:profile:openclaw": "node scripts/import-loop-profile.mjs --openclaw ../openclaw",
"plugin-inspector:smoke": "node scripts/run-plugin-inspector-smoke.mjs --check",
"profile": "node scripts/profile-contract-runtime.mjs",
"profile:compare": "node scripts/compare-runtime-profile.mjs",
"track:metadata": "node scripts/update-track-metadata.mjs",
"track:metadata:check": "node scripts/update-track-metadata.mjs --check",
"platform:probes": "node scripts/platform-probes.mjs",
"readme:summary": "node scripts/update-readme-summary.mjs",
"ref:diff": "node scripts/compare-openclaw-refs.mjs",

View File

@ -4,7 +4,9 @@ Crabpot keeps external plugins under `plugins/`. Most fixtures are git
submodules. Npm-only fixtures use committed `plugins/<id>/package.json` shim
packages with one exact dependency pin; `node scripts/sync-fixtures.mjs --materialize`
unpacks the package payload into ignored `plugins/<id>/.crabpot-package/`
directories for static inspection. The parent repo owns only pins, fixture
directories for static inspection. OpenClaw monorepo npm fixtures also declare
`source.repo`, `source.path`, and `source.ref` so report evidence links point at
the owning `openclaw/openclaw` source tree. The parent repo owns only pins, fixture
metadata, generated reports, and tests. Plugin source stays upstream-owned.
Dependabot watches `.gitmodules` with the `gitsubmodule` ecosystem and the npm
@ -32,6 +34,8 @@ directory: "/plugins/<id>"
- Npm fixtures use `crabpot.config.json` for package identity and
`plugins/<id>/package.json` for the exact dependency pin; materialization
unpacks the package into ignored `plugins/<id>/.crabpot-package/`.
- Monorepo npm fixtures add `source.repo`, `source.path`, and `source.ref`;
generated report links map packed payload paths back to the owning source path.
- `scripts/inspect-fixtures.mjs` reads source statically and checks expected
hooks, registrations, manifests, packages, and SDK imports.
- `scripts/generate-report.mjs` compares observed plugin seams with the target
@ -52,17 +56,47 @@ directory: "/plugins/<id>"
| `mcp-adapter` | `plugins/mcp-adapter` | git | high | dynamic tool, MCP transport, schema passthrough | Dynamic tool discovery from MCP servers with stdio/http transports and schema passthrough. |
| `llm-trace-phoenix` | `plugins/llm-trace-phoenix` | git | high | LLM observer, telemetry | Small sharp fixture for `llm_input`/`llm_output` access and raw prompt/output privacy boundaries. |
| `opik-openclaw` | `plugins/opik-openclaw` | git | high | LLM observer, tools, subagents | Trace exporter covering LLM spans, tool spans, subagent spans, cleanup, CLI setup, and persisted tool-result sanitization. |
| `openclaw-telemetry` | `plugins/openclaw-telemetry` | git | high | diagnostics, lifecycle hooks, telemetry | Telemetry fixture covering lifecycle hooks, tool-call capture, message events, JSONL/syslog sinks, redaction, rate limiting, and integrity hashes. |
| `lossless-claw` | `plugins/lossless-claw` | git | high | context engine, prompt mutation, lifecycle | Lossless context-management fixture covering context engine registration, DAG compaction tools, prompt assembly hooks, session cleanup, and gateway lifecycle. |
| `connectclaw` | `plugins/connectclaw` | git | high | dynamic tool, gateway service, Hono relay | Contacts/messaging plugin with dynamic tool factories, commands, polling service wakeups, and a Hono relay package. |
| `hyperspell` | `plugins/hyperspell` | git | high | memory runtime, prompt mutation, file watch | Memory/context fixture covering startup, compaction/session hooks, file-change sync, CLI, commands, and memory tools. |
| `honcho` | `plugins/honcho` | git | high | memory runtime, gateway lifecycle, subagents | Memory-runtime fixture covering plugin-entry aliases, memory runtime/prompt sections, gateway lifecycle, subagent capture, and external memory tools. |
| `composio` | `plugins/composio` | git | high | dynamic tool, MCP, external API | NPM-installed dynamic tool fixture for Composio/MCP, prompt context injection, CLI setup, external API auth, and remote tool catalogs. |
| `kitchen-sink` | `plugins/kitchen-sink` | git | high | plugin API surface, hooks, manifest contracts | Credential-free generated fixture covering hooks, registrars, provider capabilities, setup metadata, manifest contracts, and SDK import compatibility. |
| `bluebubbles` | `plugins/bluebubbles` | npm + source | medium | channel, account auth, media | Official OpenClaw BlueBubbles channel package covering macOS/iMessage bridge assumptions, account auth, media-capable channel metadata, and npm artifact packaging from the monorepo. |
| `diagnostics-otel` | `plugins/diagnostics-otel` | npm + source | medium | diagnostics, telemetry, otel export | Official OpenClaw OpenTelemetry diagnostics package covering service registration, telemetry exporter setup, and npm package metadata mapped back to the monorepo source. |
| `discord` | `plugins/discord` | npm + source | medium | channel, subagent routing, message policy | Official OpenClaw Discord channel package covering subagent routing hooks, message policy, account auth, and npm artifact packaging from the monorepo. |
| `lobster` | `plugins/lobster` | npm + source | medium | tool, workflow, approval | Official Lobster workflow package covering typed pipeline tools, resumable approval semantics, manifest tool contracts, and npm artifact packaging. |
| `matrix` | `plugins/matrix` | npm + source | medium | channel, gateway method, subagent routing | Official OpenClaw Matrix channel package covering CLI setup, gateway methods, subagent routing hooks, and monorepo-backed npm packaging. |
| `msteams` | `plugins/msteams` | npm + source | medium | channel, account auth, enterprise chat | Official Microsoft Teams channel package covering enterprise chat auth, channel factory metadata, message policy, and npm artifact packaging. |
| `nextcloud-talk` | `plugins/nextcloud-talk` | npm + source | medium | channel, account auth, self hosted chat | Official Nextcloud Talk channel package covering self-hosted chat setup, account auth, channel factory metadata, and npm artifact packaging. |
| `nostr` | `plugins/nostr` | npm + source | medium | channel, encrypted dm, http routes | Official Nostr channel package covering encrypted DM channel behavior, HTTP route registration, account auth, and npm artifact packaging. |
| `voice-call` | `plugins/voice-call` | npm + source | medium | tool, gateway method, service | Official voice-call package covering gateway methods, service lifecycle, tool registration, config migration, CLI setup, and npm artifact packaging. |
| `zalo` | `plugins/zalo` | npm + source | medium | channel, account auth, media | Official Zalo channel package covering account auth, media-capable channel metadata, channel factory registration, and npm artifact packaging. |
| `zalouser` | `plugins/zalouser` | npm + source | medium | channel, native integration, account auth | Official Zalo personal account package covering native zca-js integration, channel factory registration, tool contracts, and npm artifact packaging. |
| `feishu` | `plugins/feishu` | npm + source | medium | channel, subagent routing, tool | Official Feishu/Lark channel package covering subagent routing hooks, account auth, tool contracts, and npm artifact packaging. |
| `tlon` | `plugins/tlon` | npm + source | medium | channel, federated network, account auth | Official Tlon/Urbit channel package covering federated-network account setup, channel factory registration, tool contracts, and npm artifact packaging. |
| `twitch` | `plugins/twitch` | npm + source | medium | channel, streaming chat, account auth | Official Twitch channel package covering streaming-chat channel metadata, account auth, message policy, and npm artifact packaging. |
| `mattermost` | `plugins/mattermost` | npm + source | medium | channel, http routes, self hosted chat | Official Mattermost channel package covering self-hosted chat auth, HTTP route registration, channel factory metadata, and npm artifact packaging. |
| `synology-chat` | `plugins/synology-chat` | npm + source | medium | channel, self hosted chat, account auth | Official Synology Chat channel package covering self-hosted chat setup, channel factory registration, account auth, and npm artifact packaging. |
| `brave-plugin` | `plugins/brave-plugin` | npm + source | medium | provider capability, web search provider, external api | Official Brave search package covering web search provider registration, external API/env auth metadata, manifest provider contracts, and npm artifact packaging. |
| `codex` | `plugins/codex` | npm + source | medium | agent harness, provider capability, media understanding | Official Codex package covering agent harness registration, model provider wiring, media understanding, migrations, inbound claims, and npm artifact packaging. |
| `diagnostics-prometheus` | `plugins/diagnostics-prometheus` | npm + source | medium | diagnostics, telemetry, prometheus export | Official Prometheus diagnostics package covering service lifecycle, metrics HTTP routes, telemetry export, and monorepo-backed npm packaging. |
| `google-meet` | `plugins/google-meet` | npm + source | medium | tool, gateway method, node host command | Official Google Meet package covering meeting tools, gateway methods, node host commands, CLI setup, and npm artifact packaging. |
| `diffs` | `plugins/diffs` | npm + source | medium | tool, http routes, prompt mutation | Official diff viewer package covering prompt mutation, HTTP route UI surface, tool registration, manifest tool contracts, and npm artifact packaging. |
| `memory-lancedb` | `plugins/memory-lancedb` | npm + source | medium | memory runtime, prompt mutation, session lifecycle | Official LanceDB memory package covering automatic recall/capture hooks, vector-store lifecycle, service/CLI setup, tool contracts, and npm artifact packaging. |
| `openclaw-qqbot` | `plugins/openclaw-qqbot` | npm + source | medium | channel, command, tool | Official OpenClaw QQ Bot npm package covering command/tool registration, channel manifest metadata, media-capable messaging, and monorepo source mapping without replacing the external QQBot fixture. |
| `whatsapp` | `plugins/whatsapp` | npm + source | medium | channel, account auth, media | Official WhatsApp channel package covering account auth, media-capable channel metadata, message policy, and npm artifact packaging from the monorepo. |
| `nemoclaw` | `plugins/nemoclaw` | git | high | provider capability, runtime context, security policy | NVIDIA OpenShell fixture covering sandbox-aware runtime context injection, managed inference provider registration, slash-command migration/status flows, OpenShell CLI probing, and secret-blocking tool-call policy. |
| `memory-tencentdb` | `plugins/memory-tencentdb` | npm | high | memory runtime, vector store, lifecycle | TencentDB memory fixture covering recall/capture hooks, SQLite/TCVDB storage, cleanup lifecycle, and seed/export CLI commands. |
| `ddingtalk` | `plugins/ddingtalk` | git | high | channel, media, webhook | DingTalk channel fixture covering enterprise IM auth, channel setup, media handling, and webhook-style ingress. |
| `dingtalk-connector` | `plugins/dingtalk-connector` | git | high | channel, streaming, gateway methods | Official DingTalk connector fixture covering Stream-mode ingress, AI Card replies, multi-account access policy, gateway RPC methods, and packaged channel skills. |
| `mocrane-wecom` | `plugins/mocrane-wecom` | git | high | channel, MCP, SDK compat | Latest @mocrane/wecom-backed fixture covering WeCom routing, MCP tooling, skill bundles, HTTP routes, and SDK shims. |
| `yuanbao` | `plugins/yuanbao` | npm | high | channel, command, SDK compat | Yuanbao bot fixture covering auth, media, tools, command queue compatibility, and root SDK imports. |
| `openclaw-weixin` | `plugins/openclaw-weixin` | npm | high | channel, pairing, SDK subpaths | Weixin channel fixture covering scan-login pairing, account isolation, media, and narrow SDK subpath usage. |
| `openclaw-weixin` | `plugins/openclaw-weixin` | npm | high | channel, pairing, SDK subpaths, catalog discovery | Weixin channel fixture covering scan-login pairing, account isolation, media, narrow SDK subpath usage, and npm-installed channel catalog discovery. |
| `lightclawbot` | `plugins/lightclawbot` | npm | medium | channel, cron, bundled deps | Channel fixture covering cron/proactive messaging metadata, upload tooling, bundled Socket.IO dependencies, and JS-only packages. |
| `telnyx-sms` | `plugins/telnyx-sms` | git | medium | channel, HTTP routes, media | Telnyx-owned SMS/MMS channel fixture covering channel setup, multi-account auth, webhook verification, route registration, and auto-exposure flows. |
| `clawrouter` | `plugins/clawrouter` | git | medium | provider capability, proxy, commands | Model-router fixture covering provider registration, generation/search capabilities, sidecar lifecycle, x402 wallet setup, commands, and partner tools. |
| `memu-engine` | `plugins/memu-engine` | git | medium | memory runtime, Python sidecar | Memory tool fixture with a Python sidecar, session ingestion, filesystem storage migration, and local memory data layout assumptions. |
| `secureclaw` | `plugins/secureclaw` | git | medium | security audit, config hardening, gateway lifecycle | Security fixture covering gateway-start scanning, config/credential hardening, filesystem audit behavior, and CLI remediation/reporting. |
| `memos-cloud` | `plugins/memos-cloud` | git | medium | memory runtime, legacy hooks, external API | Cloud memory fixture covering legacy `registerHook`, startup/session-end hooks, config UI, env/config precedence, and MemOS API calls. |
@ -98,6 +132,7 @@ directory: "/plugins/<id>"
6. Add a fixture entry to `crabpot.config.json` with:
- `id`, `name`, `path`, and optional `subdir`
- exactly one of `repo` or `package: { name, tag }`
- optional `source: { repo, path, ref }` for npm packages published from a monorepo
- `priority`
- seam labels
- expected hooks, registrations, or manifest contracts

33
plugins/bluebubbles/package-lock.json generated Normal file
View File

@ -0,0 +1,33 @@
{
"name": "@crabpot/fixture-bluebubbles",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-bluebubbles",
"version": "0.0.0",
"dependencies": {
"@openclaw/bluebubbles": "2026.3.13"
}
},
"node_modules/@openclaw/bluebubbles": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/bluebubbles/-/bluebubbles-2026.3.13.tgz",
"integrity": "sha512-yfLftVZDZFMjJJGbg1SObi4G81lEHXnlNXnT4Ezx0y0UDw3y11NYj21qNMaz+K1DUYNBQomFVLS6NZ6c74RF7g==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"zod": "^4.3.6"
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-bluebubbles",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw BlueBubbles channel plugin.",
"dependencies": {
"@openclaw/bluebubbles": "2026.3.13"
},
"crabpot": {
"fixture": "bluebubbles",
"source": "npm",
"package": "@openclaw/bluebubbles",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/bluebubbles",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

20
plugins/brave-plugin/package-lock.json generated Normal file
View File

@ -0,0 +1,20 @@
{
"name": "@crabpot/fixture-brave-plugin",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-brave-plugin",
"version": "0.0.0",
"dependencies": {
"@openclaw/brave-plugin": "2026.5.1-beta.1"
}
},
"node_modules/@openclaw/brave-plugin": {
"version": "2026.5.1-beta.1",
"resolved": "https://registry.npmjs.org/@openclaw/brave-plugin/-/brave-plugin-2026.5.1-beta.1.tgz",
"integrity": "sha512-lPHMp61vX7+q5k6E+qhzJJaUXh+ZtzP4ummCj7t0lR+x7cRqohezSZxTJLM2GlC3UNsnLSxjf30HpvduloOAhA=="
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-brave-plugin",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Brave plugin.",
"dependencies": {
"@openclaw/brave-plugin": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "brave-plugin",
"source": "npm",
"package": "@openclaw/brave-plugin",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/brave",
"sourceRef": "a22f06504376e7203a2bec8fde094b7cdcb06c02"
}
}

@ -1 +1 @@
Subproject commit b329bb3ed18b651d369bf35321ec58bd47dc33b4
Subproject commit 7b03924c02a50ddb096407e823e48a6d369247a7

1
plugins/clawrouter Submodule

@ -0,0 +1 @@
Subproject commit bb72bddae4da7fd285e4804a5716f2a226a6f103

3720
plugins/codex/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-codex",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Codex harness and model provider plugin.",
"dependencies": {
"@openclaw/codex": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "codex",
"source": "npm",
"package": "@openclaw/codex",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/codex",
"sourceRef": "a22f06504376e7203a2bec8fde094b7cdcb06c02"
}
}

@ -1 +1 @@
Subproject commit 6cd516650168890e9b850064afaaa5fe24df5950
Subproject commit 7a4e2646e914de075435b3837123cc03c3edae36

1464
plugins/diagnostics-otel/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-diagnostics-otel",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw diagnostics OpenTelemetry exporter.",
"dependencies": {
"@openclaw/diagnostics-otel": "2026.3.13"
},
"crabpot": {
"fixture": "diagnostics-otel",
"source": "npm",
"package": "@openclaw/diagnostics-otel",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/diagnostics-otel",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

View File

@ -0,0 +1,20 @@
{
"name": "@crabpot/fixture-diagnostics-prometheus",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-diagnostics-prometheus",
"version": "0.0.0",
"dependencies": {
"@openclaw/diagnostics-prometheus": "2026.5.1-beta.2"
}
},
"node_modules/@openclaw/diagnostics-prometheus": {
"version": "2026.5.1-beta.2",
"resolved": "https://registry.npmjs.org/@openclaw/diagnostics-prometheus/-/diagnostics-prometheus-2026.5.1-beta.2.tgz",
"integrity": "sha512-R0iQAXYT3OFNBDqUxOFnH3TUHVWBvSJqbMC3rZvjdfBJP5q1dEYsoogOJF7wwzACARRaZP3GvOZ9RTwdgqmmdw=="
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-diagnostics-prometheus",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw diagnostics Prometheus exporter.",
"dependencies": {
"@openclaw/diagnostics-prometheus": "2026.5.1-beta.2"
},
"crabpot": {
"fixture": "diagnostics-prometheus",
"source": "npm",
"package": "@openclaw/diagnostics-prometheus",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/diagnostics-prometheus",
"sourceRef": "f4ef1bf04e9637958418428db0ff9e75e6698159"
}
}

657
plugins/diffs/package-lock.json generated Normal file
View File

@ -0,0 +1,657 @@
{
"name": "@crabpot/fixture-diffs",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-diffs",
"version": "0.0.0",
"dependencies": {
"@openclaw/diffs": "2026.5.1-beta.1"
}
},
"node_modules/@openclaw/diffs": {
"version": "2026.5.1-beta.1",
"resolved": "https://registry.npmjs.org/@openclaw/diffs/-/diffs-2026.5.1-beta.1.tgz",
"integrity": "sha512-OSb+QCBJ+vUY/GGjRsiB+UiTi58m02nR/dVdOjlrLKCQkh7Q5rewDzCgACtwMW9gqjvh4TMZH2xRQccwM9FhDw==",
"dependencies": {
"@pierre/diffs": "1.1.20",
"@pierre/theme": "0.0.29",
"playwright-core": "1.59.1",
"typebox": "1.1.37"
}
},
"node_modules/@pierre/diffs": {
"version": "1.1.20",
"resolved": "https://registry.npmjs.org/@pierre/diffs/-/diffs-1.1.20.tgz",
"integrity": "sha512-lLi+3sLCm3QDd5/aLO9pw+WbF6UzhrkWm2oTZ5WZJTGemOyUNRJ4DDhcEKmVusu4C4bXx9Nssh6fF+wQcapb5w==",
"license": "apache-2.0",
"dependencies": {
"@pierre/theme": "0.0.28",
"@shikijs/transformers": "^3.0.0",
"diff": "8.0.3",
"hast-util-to-html": "9.0.5",
"lru_map": "0.4.1",
"shiki": "^3.0.0"
},
"peerDependencies": {
"react": "^18.3.1 || ^19.0.0",
"react-dom": "^18.3.1 || ^19.0.0"
}
},
"node_modules/@pierre/diffs/node_modules/@pierre/theme": {
"version": "0.0.28",
"resolved": "https://registry.npmjs.org/@pierre/theme/-/theme-0.0.28.tgz",
"integrity": "sha512-1j/H/fECBuc9dEvntdWI+l435HZapw+RCJTlqCA6BboQ5TjlnE005j/ROWutXIs8aq5OAc82JI2Kwk4A1WWBgw==",
"license": "MIT",
"engines": {
"vscode": "^1.0.0"
}
},
"node_modules/@pierre/theme": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@pierre/theme/-/theme-0.0.29.tgz",
"integrity": "sha512-ZXce2GikoXHNThHdkaxA2X4ISnzSTL/LmKDYaTwqP1bQqENs+l7B+PheF9RsUWgx4GbphW5GU1i1vO4ttAzCUA==",
"license": "MIT",
"engines": {
"vscode": "^1.0.0"
}
},
"node_modules/@shikijs/core": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz",
"integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==",
"license": "MIT",
"dependencies": {
"@shikijs/types": "3.23.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.5"
}
},
"node_modules/@shikijs/engine-javascript": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz",
"integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==",
"license": "MIT",
"dependencies": {
"@shikijs/types": "3.23.0",
"@shikijs/vscode-textmate": "^10.0.2",
"oniguruma-to-es": "^4.3.4"
}
},
"node_modules/@shikijs/engine-oniguruma": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz",
"integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==",
"license": "MIT",
"dependencies": {
"@shikijs/types": "3.23.0",
"@shikijs/vscode-textmate": "^10.0.2"
}
},
"node_modules/@shikijs/langs": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz",
"integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==",
"license": "MIT",
"dependencies": {
"@shikijs/types": "3.23.0"
}
},
"node_modules/@shikijs/themes": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz",
"integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==",
"license": "MIT",
"dependencies": {
"@shikijs/types": "3.23.0"
}
},
"node_modules/@shikijs/transformers": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.23.0.tgz",
"integrity": "sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==",
"license": "MIT",
"dependencies": {
"@shikijs/core": "3.23.0",
"@shikijs/types": "3.23.0"
}
},
"node_modules/@shikijs/types": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz",
"integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
}
},
"node_modules/@shikijs/vscode-textmate": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
"integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
"license": "MIT"
},
"node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/@types/mdast": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
"integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/@types/unist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
"integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
"license": "MIT"
},
"node_modules/@ungap/structured-clone": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
"license": "ISC"
},
"node_modules/ccount": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/character-entities-html4": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/character-entities-legacy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/devlop": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
"integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
"license": "MIT",
"dependencies": {
"dequal": "^2.0.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/diff": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
"integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/hast-util-to-html": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
"integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"@types/unist": "^3.0.0",
"ccount": "^2.0.0",
"comma-separated-tokens": "^2.0.0",
"hast-util-whitespace": "^3.0.0",
"html-void-elements": "^3.0.0",
"mdast-util-to-hast": "^13.0.0",
"property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0",
"stringify-entities": "^4.0.0",
"zwitch": "^2.0.4"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/hast-util-whitespace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
"integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/html-void-elements": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/lru_map": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz",
"integrity": "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==",
"license": "MIT"
},
"node_modules/mdast-util-to-hast": {
"version": "13.2.1",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
"integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"@types/mdast": "^4.0.0",
"@ungap/structured-clone": "^1.0.0",
"devlop": "^1.0.0",
"micromark-util-sanitize-uri": "^2.0.0",
"trim-lines": "^3.0.0",
"unist-util-position": "^5.0.0",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/micromark-util-character": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
"integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
"node_modules/micromark-util-encode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
"integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"license": "MIT"
},
"node_modules/micromark-util-sanitize-uri": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
"integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^2.0.0",
"micromark-util-encode": "^2.0.0",
"micromark-util-symbol": "^2.0.0"
}
},
"node_modules/micromark-util-symbol": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
"integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"license": "MIT"
},
"node_modules/micromark-util-types": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
"integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"license": "MIT"
},
"node_modules/oniguruma-parser": {
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz",
"integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==",
"license": "MIT"
},
"node_modules/oniguruma-to-es": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz",
"integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==",
"license": "MIT",
"dependencies": {
"oniguruma-parser": "^0.12.2",
"regex": "^6.1.0",
"regex-recursion": "^6.0.2"
}
},
"node_modules/playwright-core": {
"version": "1.59.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz",
"integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==",
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/property-information": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
"integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/react": {
"version": "19.2.5",
"resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
"integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "19.2.5",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
"integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
"license": "MIT",
"peer": true,
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
"react": "^19.2.5"
}
},
"node_modules/regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz",
"integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==",
"license": "MIT",
"dependencies": {
"regex-utilities": "^2.3.0"
}
},
"node_modules/regex-recursion": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
"integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
"license": "MIT",
"dependencies": {
"regex-utilities": "^2.3.0"
}
},
"node_modules/regex-utilities": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
"integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
"license": "MIT"
},
"node_modules/scheduler": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"license": "MIT",
"peer": true
},
"node_modules/shiki": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz",
"integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==",
"license": "MIT",
"dependencies": {
"@shikijs/core": "3.23.0",
"@shikijs/engine-javascript": "3.23.0",
"@shikijs/engine-oniguruma": "3.23.0",
"@shikijs/langs": "3.23.0",
"@shikijs/themes": "3.23.0",
"@shikijs/types": "3.23.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
}
},
"node_modules/space-separated-tokens": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/stringify-entities": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
"integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
"license": "MIT",
"dependencies": {
"character-entities-html4": "^2.0.0",
"character-entities-legacy": "^3.0.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/trim-lines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/typebox": {
"version": "1.1.37",
"resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.37.tgz",
"integrity": "sha512-jb7jp6KvOvvy5sd+11AfJ0/e0F0AS9RcOXd55oGi2ZnRHIGmFvrTaNF+ZidRmGBmmNTkM5KKl0Z37KzxJ+owEQ==",
"license": "MIT"
},
"node_modules/unist-util-is": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
"integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/unist-util-position": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/unist-util-stringify-position": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/unist-util-visit": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
"integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-is": "^6.0.0",
"unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/unist-util-visit-parents": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
"integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-is": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/vfile": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
"integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/vfile-message": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
"integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-stringify-position": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/zwitch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-diffs",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw diff viewer plugin.",
"dependencies": {
"@openclaw/diffs": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "diffs",
"source": "npm",
"package": "@openclaw/diffs",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/diffs",
"sourceRef": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
}
}

@ -0,0 +1 @@
Subproject commit 3441bcffc4dee15936ede406ce001ffcf9e2efc3

21
plugins/discord/package-lock.json generated Normal file
View File

@ -0,0 +1,21 @@
{
"name": "@crabpot/fixture-discord",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-discord",
"version": "0.0.0",
"dependencies": {
"@openclaw/discord": "2026.3.13"
}
},
"node_modules/@openclaw/discord": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/discord/-/discord-2026.3.13.tgz",
"integrity": "sha512-uYCzMmpYVhFPD0TstMmnTNBk9N3Uk/VsZivjr8V/B7g7ajI5HPgsiHBjCLrTmmJZKsVnauo0pAIx/aBcKejYpQ==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later."
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-discord",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Discord channel plugin.",
"dependencies": {
"@openclaw/discord": "2026.3.13"
},
"crabpot": {
"fixture": "discord",
"source": "npm",
"package": "@openclaw/discord",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/discord",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

644
plugins/feishu/package-lock.json generated Normal file
View File

@ -0,0 +1,644 @@
{
"name": "@crabpot/fixture-feishu",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-feishu",
"version": "0.0.0",
"dependencies": {
"@openclaw/feishu": "2026.3.13"
}
},
"node_modules/@larksuiteoapi/node-sdk": {
"version": "1.62.1",
"resolved": "https://registry.npmjs.org/@larksuiteoapi/node-sdk/-/node-sdk-1.62.1.tgz",
"integrity": "sha512-o9oAjv5Ffnp/6iXIJLHrO6N0US/r2ZZy3xmO6ylGegjuVSC05cx0fADA38Dc1h0FV8T9BDK+ariWk84TNMGbKg==",
"license": "MIT",
"dependencies": {
"axios": "~1.13.3",
"lodash.identity": "^3.0.0",
"lodash.merge": "^4.6.2",
"lodash.pickby": "^4.6.0",
"protobufjs": "^7.2.6",
"qs": "^6.14.2",
"ws": "^8.19.0"
}
},
"node_modules/@openclaw/feishu": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/feishu/-/feishu-2026.3.13.tgz",
"integrity": "sha512-D5vPkgGZ9lfCQnDFlGrQN6NCSUYRgYW9k7amW3qlm9zBI4Sp+alRZVqLZ4yZ2eCXHjw9RVp/L75wjJ7NBQyfEw==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@larksuiteoapi/node-sdk": "^1.59.0",
"@sinclair/typebox": "0.34.48",
"https-proxy-agent": "^8.0.0",
"zod": "^4.3.6"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz",
"integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.1.tgz",
"integrity": "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz",
"integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==",
"license": "BSD-3-Clause"
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
},
"node_modules/@types/node": {
"version": "25.6.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
"integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
"license": "MIT",
"dependencies": {
"undici-types": "~7.19.0"
}
},
"node_modules/agent-base": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-8.0.0.tgz",
"integrity": "sha512-QT8i0hCz6C/KQ+KTAbSNwCHDGdmUJl2tp2ZpNlGSWCfhUNVbYG2WLE3MdZGBAgXPV4GAvjGMxo+C1hroyxmZEg==",
"license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/axios": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
"integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.11",
"form-data": "^4.0.5",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/call-bound": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/follow-redirects": {
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
"integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
"integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/https-proxy-agent": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-8.0.0.tgz",
"integrity": "sha512-YYeW+iCnAS3xhvj2dvVoWgsbca3RfQy/IlaNHHOtDmU0jMqPI9euIq3Y9BJETdxk16h9NHHCKqp/KB9nIMStCQ==",
"license": "MIT",
"dependencies": {
"agent-base": "8.0.0",
"debug": "^4.3.4"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/lodash.identity": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-3.0.0.tgz",
"integrity": "sha512-AupTIzdLQxJS5wIYUQlgGyk2XRTfGXA+MCghDHqZk0pzUNYvd3EESS6dkChNauNYVIutcb0dfHw1ri9Q1yPV8Q==",
"license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"license": "MIT"
},
"node_modules/lodash.pickby": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
"integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==",
"license": "MIT"
},
"node_modules/long": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
"integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
"license": "Apache-2.0"
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/protobufjs": {
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.6.tgz",
"integrity": "sha512-M71sTMB146U3u0di3yup8iM+zv8yPRNQVr1KK4tyBitl3qFvEGucq/rGDRShD2rsJhtN02RJaJ7j5X5hmy8SJg==",
"hasInstallScript": true,
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.5",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.1",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/qs": {
"version": "6.15.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz",
"integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
"side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-list": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
"integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.4"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/undici-types": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
"integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
"license": "MIT"
},
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-feishu",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng).",
"dependencies": {
"@openclaw/feishu": "2026.3.13"
},
"crabpot": {
"fixture": "feishu",
"source": "npm",
"package": "@openclaw/feishu",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/feishu",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

47
plugins/google-meet/package-lock.json generated Normal file
View File

@ -0,0 +1,47 @@
{
"name": "@crabpot/fixture-google-meet",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-google-meet",
"version": "0.0.0",
"dependencies": {
"@openclaw/google-meet": "2026.5.1-beta.2"
}
},
"node_modules/@openclaw/google-meet": {
"version": "2026.5.1-beta.2",
"resolved": "https://registry.npmjs.org/@openclaw/google-meet/-/google-meet-2026.5.1-beta.2.tgz",
"integrity": "sha512-Kfd0V4vrjL4T1XqHVJZKgydI2GdQpH+jziF100a/+rirYK6i7DKIkKJK/i0IFNq5gf90edkzUlyKMlWrZIJXsA==",
"dependencies": {
"commander": "^14.0.3",
"typebox": "1.1.37"
},
"peerDependencies": {
"openclaw": ">=2026.4.25"
},
"peerDependenciesMeta": {
"openclaw": {
"optional": true
}
}
},
"node_modules/commander": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"license": "MIT",
"engines": {
"node": ">=20"
}
},
"node_modules/typebox": {
"version": "1.1.37",
"resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.37.tgz",
"integrity": "sha512-jb7jp6KvOvvy5sd+11AfJ0/e0F0AS9RcOXd55oGi2ZnRHIGmFvrTaNF+ZidRmGBmmNTkM5KKl0Z37KzxJ+owEQ==",
"license": "MIT"
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-google-meet",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Google Meet participant plugin.",
"dependencies": {
"@openclaw/google-meet": "2026.5.1-beta.2"
},
"crabpot": {
"fixture": "google-meet",
"source": "npm",
"package": "@openclaw/google-meet",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/google-meet",
"sourceRef": "f4ef1bf04e9637958418428db0ff9e75e6698159"
}
}

@ -1 +1 @@
Subproject commit f1ac095b5d633d463d57c5cc9735547a73ff9199
Subproject commit e9f01452b781d24b38336ef0738f2c97353c541e

1
plugins/kitchen-sink Submodule

@ -0,0 +1 @@
Subproject commit 6995e72caacdcab1aedc74f20d2118465eaf976e

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,9 @@
"dependencies": {
"lightclawbot": "1.1.2"
},
"overrides": {
"@anthropic-ai/sdk": "0.91.1"
},
"crabpot": {
"fixture": "lightclawbot",
"source": "npm",

30
plugins/lobster/package-lock.json generated Normal file
View File

@ -0,0 +1,30 @@
{
"name": "@crabpot/fixture-lobster",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-lobster",
"version": "0.0.0",
"dependencies": {
"@openclaw/lobster": "2026.3.13"
}
},
"node_modules/@openclaw/lobster": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/lobster/-/lobster-2026.3.13.tgz",
"integrity": "sha512-4ezsGiYPANwzEJ0QAZ0TqhaMfhvdBcXupTc4TPqEALk+0lbuO9+y5MQkeDCZKaRGQfKmeX0yhgHhqOWLTdGwww==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@sinclair/typebox": "0.34.48"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-lobster",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for Lobster workflow tool plugin (typed pipelines + resumable approvals).",
"dependencies": {
"@openclaw/lobster": "2026.3.13"
},
"crabpot": {
"fixture": "lobster",
"source": "npm",
"package": "@openclaw/lobster",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/lobster",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

@ -1 +1 @@
Subproject commit 8d634cdf4b7544c9093c2e701fbbe5075d1e3de6
Subproject commit 4fc60c925c1eed730a73c6bb62144f7af905687f

4907
plugins/matrix/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-matrix",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Matrix channel plugin.",
"dependencies": {
"@openclaw/matrix": "2026.3.13"
},
"crabpot": {
"fixture": "matrix",
"source": "npm",
"package": "@openclaw/matrix",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/matrix",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

21
plugins/mattermost/package-lock.json generated Normal file
View File

@ -0,0 +1,21 @@
{
"name": "@crabpot/fixture-mattermost",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-mattermost",
"version": "0.0.0",
"dependencies": {
"@openclaw/mattermost": "2026.2.21"
}
},
"node_modules/@openclaw/mattermost": {
"version": "2026.2.21",
"resolved": "https://registry.npmjs.org/@openclaw/mattermost/-/mattermost-2026.2.21.tgz",
"integrity": "sha512-FUQsyJ3YMRXjFCzjEmtET0hrfUJSDi//GVaAUkixrH6aC0tS/j23rXfaZW4LkT1N+d046jXCl+tmWiieUAa6QA==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later."
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-mattermost",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Mattermost channel plugin.",
"dependencies": {
"@openclaw/mattermost": "2026.2.21"
},
"crabpot": {
"fixture": "mattermost",
"source": "npm",
"package": "@openclaw/mattermost",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/mattermost",
"sourceRef": "35a57bc940833a6c1f594b2308e349e5ee0148db"
}
}

518
plugins/memory-lancedb/package-lock.json generated Normal file
View File

@ -0,0 +1,518 @@
{
"name": "@crabpot/fixture-memory-lancedb",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-memory-lancedb",
"version": "0.0.0",
"dependencies": {
"@openclaw/memory-lancedb": "2026.5.1-beta.1"
}
},
"node_modules/@lancedb/lancedb": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb/-/lancedb-0.27.2.tgz",
"integrity": "sha512-JQpZHV5KzUzDI3flYCjtZcfHlEbL8lM54E0NT+jrRYe29aKYegfavvPsAsuZp0VdcMwFMZcpMkaBhjQMo/fwvg==",
"cpu": [
"x64",
"arm64"
],
"license": "Apache-2.0",
"os": [
"darwin",
"linux",
"win32"
],
"dependencies": {
"reflect-metadata": "^0.2.2"
},
"engines": {
"node": ">= 18"
},
"optionalDependencies": {
"@lancedb/lancedb-darwin-arm64": "0.27.2",
"@lancedb/lancedb-linux-arm64-gnu": "0.27.2",
"@lancedb/lancedb-linux-arm64-musl": "0.27.2",
"@lancedb/lancedb-linux-x64-gnu": "0.27.2",
"@lancedb/lancedb-linux-x64-musl": "0.27.2",
"@lancedb/lancedb-win32-arm64-msvc": "0.27.2",
"@lancedb/lancedb-win32-x64-msvc": "0.27.2"
},
"peerDependencies": {
"apache-arrow": ">=15.0.0 <=18.1.0"
}
},
"node_modules/@lancedb/lancedb-darwin-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.27.2.tgz",
"integrity": "sha512-+XM68V/Rou8kKWDnUeKvg9ChKS0zGeQC2sKAop+06Ty4LwIjEGkeYBYrK0vMhZkBN5EFaOjTOp8E8hGQxdFwXA==",
"cpu": [
"arm64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-arm64-gnu": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.27.2.tgz",
"integrity": "sha512-laiTTDeMUTzm7t+t6ME5nNQMDoERjmkeuWAFWekbXiFdmp62Dqu34Lvf2BvpWnKwxLMZ5JcBJFIw32WS8/8Jnw==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-arm64-musl": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-musl/-/lancedb-linux-arm64-musl-0.27.2.tgz",
"integrity": "sha512-bK5Mc50EvwGZaaiym5CoPu8Y4GNSyEEvTQ0dTC2AUIm83qdQu1rGw6kkYtc/rTH/hbvAvPQot4agHDZfMVxfYw==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-x64-gnu": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.27.2.tgz",
"integrity": "sha512-qe+ML0YmPru0o84f33RBHqoNk6zsHBjiXTLKsEBDiiFYKks/XMsrkKy9NQYcTxShBrg/nx/MLzCzd7dihqgNYw==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-linux-x64-musl": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-musl/-/lancedb-linux-x64-musl-0.27.2.tgz",
"integrity": "sha512-ZpX6Oxn06qvzAdm+D/gNb3SRp/A9lgRAPvPg6nnMmSQk5XamC/hbGO07uK1wwop7nlqXUH/thk4is2y2ieWdTw==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-win32-arm64-msvc": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-arm64-msvc/-/lancedb-win32-arm64-msvc-0.27.2.tgz",
"integrity": "sha512-4ffpFvh49MiUtkdFJOmBytXEbgUPXORphTOuExnJAgT1VAKwQcu4ZzdsgNoK6mumKBaU+pYQU/MedNkgTzx/Lw==",
"cpu": [
"arm64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@lancedb/lancedb-win32-x64-msvc": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.27.2.tgz",
"integrity": "sha512-XlwiI6CK2Gkqq+FFVAStHojao/XjIJpDPTm7Tb9SpLL64IlwGw3yaT2hnWKTm90W4KlSrpfSldPly+s+y4U7JQ==",
"cpu": [
"x64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 18"
}
},
"node_modules/@openclaw/memory-lancedb": {
"version": "2026.5.1-beta.1",
"resolved": "https://registry.npmjs.org/@openclaw/memory-lancedb/-/memory-lancedb-2026.5.1-beta.1.tgz",
"integrity": "sha512-PRnMSgplR5+xdOuCMERxemdaGiMTYTgg7dSHz/uLo8B54mf3BHcuKxFQ60755Tc1QzGtrzA8MqPElf07Pn0JsQ==",
"dependencies": {
"@lancedb/lancedb": "^0.27.2",
"openai": "^6.35.0",
"typebox": "1.1.37"
}
},
"node_modules/@swc/helpers": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz",
"integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"tslib": "^2.8.0"
}
},
"node_modules/@types/command-line-args": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz",
"integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==",
"license": "MIT",
"peer": true
},
"node_modules/@types/command-line-usage": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz",
"integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==",
"license": "MIT",
"peer": true
},
"node_modules/@types/node": {
"version": "20.19.39",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz",
"integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==",
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"peer": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/apache-arrow": {
"version": "18.1.0",
"resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.1.0.tgz",
"integrity": "sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@swc/helpers": "^0.5.11",
"@types/command-line-args": "^5.2.3",
"@types/command-line-usage": "^5.0.4",
"@types/node": "^20.13.0",
"command-line-args": "^5.2.1",
"command-line-usage": "^7.0.1",
"flatbuffers": "^24.3.25",
"json-bignum": "^0.0.3",
"tslib": "^2.6.2"
},
"bin": {
"arrow2csv": "bin/arrow2csv.js"
}
},
"node_modules/array-back": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
"integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"license": "MIT",
"peer": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chalk-template": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
"integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
"license": "MIT",
"peer": true,
"dependencies": {
"chalk": "^4.1.2"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/chalk-template?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT",
"peer": true
},
"node_modules/command-line-args": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
"integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
"license": "MIT",
"peer": true,
"dependencies": {
"array-back": "^3.1.0",
"find-replace": "^3.0.0",
"lodash.camelcase": "^4.3.0",
"typical": "^4.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/command-line-usage": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.4.tgz",
"integrity": "sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==",
"license": "MIT",
"peer": true,
"dependencies": {
"array-back": "^6.2.2",
"chalk-template": "^0.4.0",
"table-layout": "^4.1.1",
"typical": "^7.3.0"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/command-line-usage/node_modules/array-back": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
"integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12.17"
}
},
"node_modules/command-line-usage/node_modules/typical": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
"integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12.17"
}
},
"node_modules/find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
"integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"array-back": "^3.0.1"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/flatbuffers": {
"version": "24.12.23",
"resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.12.23.tgz",
"integrity": "sha512-dLVCAISd5mhls514keQzmEG6QHmUUsNuWsb4tFafIUwvvgDjXhtfAYSKOzt5SWOy+qByV5pbsDZ+Vb7HUOBEdA==",
"license": "Apache-2.0",
"peer": true
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=8"
}
},
"node_modules/json-bignum": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz",
"integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==",
"peer": true,
"engines": {
"node": ">=0.8"
}
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"license": "MIT",
"peer": true
},
"node_modules/openai": {
"version": "6.35.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-6.35.0.tgz",
"integrity": "sha512-L/skwIGnt5xQZHb0UfTu9uAUKbis3ehKypOuJKi20QvG7UStV6C8IC3myGYHcdiF4kms/bAvOJ9UqqNWqi8x/Q==",
"license": "Apache-2.0",
"bin": {
"openai": "bin/cli"
},
"peerDependencies": {
"ws": "^8.18.0",
"zod": "^3.25 || ^4.0"
},
"peerDependenciesMeta": {
"ws": {
"optional": true
},
"zod": {
"optional": true
}
}
},
"node_modules/reflect-metadata": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
"license": "Apache-2.0"
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/table-layout": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz",
"integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==",
"license": "MIT",
"peer": true,
"dependencies": {
"array-back": "^6.2.2",
"wordwrapjs": "^5.1.0"
},
"engines": {
"node": ">=12.17"
}
},
"node_modules/table-layout/node_modules/array-back": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
"integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12.17"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD",
"peer": true
},
"node_modules/typebox": {
"version": "1.1.37",
"resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.37.tgz",
"integrity": "sha512-jb7jp6KvOvvy5sd+11AfJ0/e0F0AS9RcOXd55oGi2ZnRHIGmFvrTaNF+ZidRmGBmmNTkM5KKl0Z37KzxJ+owEQ==",
"license": "MIT"
},
"node_modules/typical": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
"integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=8"
}
},
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"license": "MIT",
"peer": true
},
"node_modules/wordwrapjs": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz",
"integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12.17"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-memory-lancedb",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture.",
"dependencies": {
"@openclaw/memory-lancedb": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "memory-lancedb",
"source": "npm",
"package": "@openclaw/memory-lancedb",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/memory-lancedb",
"sourceRef": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
}
}

@ -1 +1 @@
Subproject commit 03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c
Subproject commit e931499a2589af06ee543ce07df2bdda29ac8085

1404
plugins/msteams/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-msteams",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Microsoft Teams channel plugin.",
"dependencies": {
"@openclaw/msteams": "2026.3.13"
},
"crabpot": {
"fixture": "msteams",
"source": "npm",
"package": "@openclaw/msteams",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/msteams",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

1
plugins/nemoclaw Submodule

@ -0,0 +1 @@
Subproject commit 3351fbdd4eb7d9b80ec471545083956327da2b10

33
plugins/nextcloud-talk/package-lock.json generated Normal file
View File

@ -0,0 +1,33 @@
{
"name": "@crabpot/fixture-nextcloud-talk",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-nextcloud-talk",
"version": "0.0.0",
"dependencies": {
"@openclaw/nextcloud-talk": "2026.3.13"
}
},
"node_modules/@openclaw/nextcloud-talk": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/nextcloud-talk/-/nextcloud-talk-2026.3.13.tgz",
"integrity": "sha512-zw5uy5FZd6PFp2LqrAR9R9Pn610DHHHbk1p5ZlIadCyW5ECuXDYsEpUzJpcL0P7MN5vCMOkVL+5QDbKGB6R4gQ==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"zod": "^4.3.6"
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-nextcloud-talk",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Nextcloud Talk channel plugin.",
"dependencies": {
"@openclaw/nextcloud-talk": "2026.3.13"
},
"crabpot": {
"fixture": "nextcloud-talk",
"source": "npm",
"package": "@openclaw/nextcloud-talk",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/nextcloud-talk",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

138
plugins/nostr/package-lock.json generated Normal file
View File

@ -0,0 +1,138 @@
{
"name": "@crabpot/fixture-nostr",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-nostr",
"version": "0.0.0",
"dependencies": {
"@openclaw/nostr": "2026.3.13"
}
},
"node_modules/@noble/ciphers": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz",
"integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==",
"license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@noble/curves": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz",
"integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==",
"license": "MIT",
"dependencies": {
"@noble/hashes": "2.0.1"
},
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@noble/hashes": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
"integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
"license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@openclaw/nostr": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/nostr/-/nostr-2026.3.13.tgz",
"integrity": "sha512-5KLRCPbQ/K5O7Qk7yFDTr/MeJI73SHYnRN3vA6Te3IbfWiCrcJN8dn3r/ZdZF6IGyZI3McNnmR622xo0AiDs8w==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"nostr-tools": "^2.23.3",
"zod": "^4.3.6"
}
},
"node_modules/@scure/base": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz",
"integrity": "sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==",
"license": "MIT",
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@scure/bip32": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-2.0.1.tgz",
"integrity": "sha512-4Md1NI5BzoVP+bhyJaY3K6yMesEFzNS1sE/cP+9nuvE7p/b0kx9XbpDHHFl8dHtufcbdHRUUQdRqLIPHN/s7yA==",
"license": "MIT",
"dependencies": {
"@noble/curves": "2.0.1",
"@noble/hashes": "2.0.1",
"@scure/base": "2.0.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@scure/bip39": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-2.0.1.tgz",
"integrity": "sha512-PsxdFj/d2AcJcZDX1FXN3dDgitDDTmwf78rKZq1a6c1P1Nan1X/Sxc7667zU3U+AN60g7SxxP0YCVw2H/hBycg==",
"license": "MIT",
"dependencies": {
"@noble/hashes": "2.0.1",
"@scure/base": "2.0.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/nostr-tools": {
"version": "2.23.3",
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.23.3.tgz",
"integrity": "sha512-AALyt9k8xPdF4UV2mlLJ2mgCn4kpTB0DZ8t2r6wjdUh6anfx2cTVBsHUlo9U0EY/cKC5wcNyiMAmRJV5OVEalA==",
"license": "Unlicense",
"dependencies": {
"@noble/ciphers": "2.1.1",
"@noble/curves": "2.0.1",
"@noble/hashes": "2.0.1",
"@scure/base": "2.0.0",
"@scure/bip32": "2.0.1",
"@scure/bip39": "2.0.1",
"nostr-wasm": "0.1.0"
},
"peerDependencies": {
"typescript": ">=5.0.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/nostr-wasm": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz",
"integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==",
"license": "MIT"
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-nostr",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Nostr channel plugin for NIP-04 encrypted DMs.",
"dependencies": {
"@openclaw/nostr": "2026.3.13"
},
"crabpot": {
"fixture": "nostr",
"source": "npm",
"package": "@openclaw/nostr",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/nostr",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

133
plugins/openclaw-qqbot/package-lock.json generated Normal file
View File

@ -0,0 +1,133 @@
{
"name": "@crabpot/fixture-openclaw-qqbot",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-openclaw-qqbot",
"version": "0.0.0",
"dependencies": {
"@openclaw/qqbot": "2026.5.1-beta.1"
}
},
"node_modules/@eshaz/web-worker": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@eshaz/web-worker/-/web-worker-1.2.2.tgz",
"integrity": "sha512-WxXiHFmD9u/owrzempiDlBB1ZYqiLnm9s6aPc8AlFQalq2tKmqdmMr9GXOupDgzXtqnBipj8Un0gkIm7Sjf8mw==",
"license": "Apache-2.0"
},
"node_modules/@openclaw/qqbot": {
"version": "2026.5.1-beta.1",
"resolved": "https://registry.npmjs.org/@openclaw/qqbot/-/qqbot-2026.5.1-beta.1.tgz",
"integrity": "sha512-TNG40RLtcvUIqd397YBIUICugtgZ+8jHVyPHt2homG6d5Ola/uVrurkZFcs9mq4JcB0VFhKyXXqXzLGy+GG/Zw==",
"dependencies": {
"@tencent-connect/qqbot-connector": "^1.1.0",
"mpg123-decoder": "^1.0.3",
"silk-wasm": "^3.7.1",
"ws": "^8.20.0",
"zod": "^4.4.1"
},
"peerDependencies": {
"openclaw": ">=2026.4.27"
},
"peerDependenciesMeta": {
"openclaw": {
"optional": true
}
}
},
"node_modules/@tencent-connect/qqbot-connector": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@tencent-connect/qqbot-connector/-/qqbot-connector-1.1.0.tgz",
"integrity": "sha512-3nQ2mdyzPRKpBHjd3QiKZDwNzw1F7fBN+rSq8Xms2gg+JWZR4SY2Zdf+doqTyXdyVjG4Y0QM7IA4U42zT9xxzw==",
"license": "UNLICENSED",
"dependencies": {
"qrcode-terminal": "^0.12"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@wasm-audio-decoders/common": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/@wasm-audio-decoders/common/-/common-9.0.7.tgz",
"integrity": "sha512-WRaUuWSKV7pkttBygml/a6dIEpatq2nnZGFIoPTc5yPLkxL6Wk4YaslPM98OPQvWacvNZ+Py9xROGDtrFBDzag==",
"license": "MIT",
"dependencies": {
"@eshaz/web-worker": "1.2.2",
"simple-yenc": "^1.0.4"
}
},
"node_modules/mpg123-decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/mpg123-decoder/-/mpg123-decoder-1.0.3.tgz",
"integrity": "sha512-+fjxnWigodWJm3+4pndi+KUg9TBojgn31DPk85zEsim7C6s0X5Ztc/hQYdytXkwuGXH+aB0/aEkG40Emukv6oQ==",
"license": "MIT",
"dependencies": {
"@wasm-audio-decoders/common": "9.0.7"
},
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/eshaz"
}
},
"node_modules/qrcode-terminal": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
"integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
"bin": {
"qrcode-terminal": "bin/qrcode-terminal.js"
}
},
"node_modules/silk-wasm": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/silk-wasm/-/silk-wasm-3.7.1.tgz",
"integrity": "sha512-mXPwLRtZxrYV3TZx41jMAeKc80wvmyrcXIcs8HctFxK15Ahz2OJQENYhNgEPeCEOdI6Mbx1NxQsqxzwc3DKerw==",
"license": "MIT",
"engines": {
"node": ">=16.11.0"
}
},
"node_modules/simple-yenc": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/simple-yenc/-/simple-yenc-1.0.4.tgz",
"integrity": "sha512-5gvxpSd79e9a3V4QDYUqnqxeD4HGlhCakVpb6gMnDD7lexJggSBJRBO5h52y/iJrdXRilX9UCuDaIJhSWm5OWw==",
"license": "MIT",
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/eshaz"
}
},
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-openclaw-qqbot",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw QQ Bot channel plugin.",
"dependencies": {
"@openclaw/qqbot": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "openclaw-qqbot",
"source": "npm",
"package": "@openclaw/qqbot",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/qqbot",
"sourceRef": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
}
}

@ -0,0 +1 @@
Subproject commit 86c2458a0dfe82d639c208c5220396feb9d53c45

View File

@ -8,13 +8,13 @@
"name": "@crabpot/fixture-openclaw-weixin",
"version": "0.0.0",
"dependencies": {
"@tencent-weixin/openclaw-weixin": "2.1.10"
"@tencent-weixin/openclaw-weixin": "2.3.1"
}
},
"node_modules/@tencent-weixin/openclaw-weixin": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.1.10.tgz",
"integrity": "sha512-cEG6Iw5g2qqlA+8/TcmV+E8aFUEX0ruxF0+a5LgVy5wv56/qP07KoapfRa7YTRPzhRW5UDaz6zsZQArt/4ZNnA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.3.1.tgz",
"integrity": "sha512-plOrZq5Oj4YkmP2/yclVnlPuPruUfXxk7BmHfnJFcFPmaXpt9X3gMF1WyQ6ebnEqtCvIpAIsntufgKShZemxCA==",
"license": "MIT",
"dependencies": {
"qrcode-terminal": "0.12.0",

View File

@ -4,7 +4,7 @@
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Weixin.",
"dependencies": {
"@tencent-weixin/openclaw-weixin": "2.1.10"
"@tencent-weixin/openclaw-weixin": "2.3.1"
},
"crabpot": {
"fixture": "openclaw-weixin",

@ -1 +1 @@
Subproject commit f8987269d3f2121f52ace4f60c80629266c0dfd7
Subproject commit 0f62b10688428f288eaff9b99e0ee7a9334137e7

33
plugins/synology-chat/package-lock.json generated Normal file
View File

@ -0,0 +1,33 @@
{
"name": "@crabpot/fixture-synology-chat",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-synology-chat",
"version": "0.0.0",
"dependencies": {
"@openclaw/synology-chat": "2026.2.22"
}
},
"node_modules/@openclaw/synology-chat": {
"version": "2026.2.22",
"resolved": "https://registry.npmjs.org/@openclaw/synology-chat/-/synology-chat-2026.2.22.tgz",
"integrity": "sha512-MtNiSs5wIDoQ1k/5PH6qRBYkydZTzjjhfp/4RpIiI0q1cBLl8l8qUASvXSDwm8iUxsCgLDizirxgYh3CyHBOqw==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"zod": "^4.3.6"
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-synology-chat",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for Synology Chat channel plugin for OpenClaw.",
"dependencies": {
"@openclaw/synology-chat": "2026.2.22"
},
"crabpot": {
"fixture": "synology-chat",
"source": "npm",
"package": "@openclaw/synology-chat",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/synology-chat",
"sourceRef": "b19a6ee62db342d400a233903adcaf17f67246c5"
}
}

1
plugins/telnyx-sms Submodule

@ -0,0 +1 @@
Subproject commit dee567716ca56d49464bf6354393f3656d92a2b3

34
plugins/tlon/package-lock.json generated Normal file
View File

@ -0,0 +1,34 @@
{
"name": "@crabpot/fixture-tlon",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-tlon",
"version": "0.0.0",
"dependencies": {
"@openclaw/tlon": "2026.2.21"
}
},
"node_modules/@openclaw/tlon": {
"version": "2026.2.21",
"resolved": "https://registry.npmjs.org/@openclaw/tlon/-/tlon-2026.2.21.tgz",
"integrity": "sha512-RTm9SFRwabR36jdVm7YZpZcpqf3m+Yu2AsGRsmWLK2qVmz6RLWrv1fWRapirL2LlUYJTEPJkYwanhjrQqssHrg==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@urbit/aura": "^3.0.0"
}
},
"node_modules/@urbit/aura": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@urbit/aura/-/aura-3.0.0.tgz",
"integrity": "sha512-N8/FHc/lmlMDCumMuTXyRHCxlov5KZY6unmJ9QR2GOw+OpROZMBsXYGwE+ZMtvN21ql9+Xb8KhGNBj08IrG3Wg==",
"license": "MIT",
"engines": {
"node": ">=16",
"npm": ">=8"
}
}
}
}

17
plugins/tlon/package.json Normal file
View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-tlon",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Tlon/Urbit channel plugin.",
"dependencies": {
"@openclaw/tlon": "2026.2.21"
},
"crabpot": {
"fixture": "tlon",
"source": "npm",
"package": "@openclaw/tlon",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/tlon",
"sourceRef": "35a57bc940833a6c1f594b2308e349e5ee0148db"
}
}

326
plugins/twitch/package-lock.json generated Normal file
View File

@ -0,0 +1,326 @@
{
"name": "@crabpot/fixture-twitch",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-twitch",
"version": "0.0.0",
"dependencies": {
"@openclaw/twitch": "2026.2.21"
}
},
"node_modules/@d-fischer/cache-decorators": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@d-fischer/cache-decorators/-/cache-decorators-4.0.1.tgz",
"integrity": "sha512-HNYLBLWs/t28GFZZeqdIBqq8f37mqDIFO6xNPof94VjpKvuP6ROqCZGafx88dk5zZUlBfViV9jD8iNNlXfc4CA==",
"license": "MIT",
"dependencies": {
"@d-fischer/shared-utils": "^3.6.3",
"tslib": "^2.6.2"
}
},
"node_modules/@d-fischer/connection": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/@d-fischer/connection/-/connection-10.0.1.tgz",
"integrity": "sha512-CRP/azUPxwWpR4yT8wOQoM9XFliTVWVAJ8h1SlFnVRAgMlPNyg88/vbDEqZ+udtSB5m8uS10XafZxMUcegMBlQ==",
"license": "MIT",
"dependencies": {
"@d-fischer/isomorphic-ws": "^7.0.0",
"@d-fischer/logger": "^4.2.1",
"@d-fischer/shared-utils": "^3.5.0",
"@d-fischer/typed-event-emitter": "^3.3.0",
"@types/node": "^20.19.37",
"@types/ws": "^8.5.4",
"tslib": "^2.4.1",
"ws": "^8.11.0"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@d-fischer/deprecate": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@d-fischer/deprecate/-/deprecate-2.0.2.tgz",
"integrity": "sha512-wlw3HwEanJFJKctwLzhfOM6LKwR70FPfGZGoKOhWBKyOPXk+3a9Cc6S9zhm6tka7xKtpmfxVIReGUwPnMbIaZg==",
"license": "MIT"
},
"node_modules/@d-fischer/detect-node": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@d-fischer/detect-node/-/detect-node-3.0.1.tgz",
"integrity": "sha512-0Rf3XwTzuTh8+oPZW9SfxTIiL+26RRJ0BRPwj5oVjZFyFKmsj9RGfN2zuTRjOuA3FCK/jYm06HOhwNK+8Pfv8w==",
"license": "MIT"
},
"node_modules/@d-fischer/escape-string-regexp": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@d-fischer/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-7eoxnxcto5eVPW5h1T+ePnVFukmI9f/ZR9nlBLh1t3kyzJDUNor2C+YW9H/Terw3YnbZSDgDYrpCJCHtOtAQHw==",
"license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/@d-fischer/isomorphic-ws": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@d-fischer/isomorphic-ws/-/isomorphic-ws-7.0.2.tgz",
"integrity": "sha512-xK+qIJUF0ne3dsjq5Y3BviQ4M+gx9dzkN+dPP7abBMje4YRfow+X9jBgeEoTe5e+Q6+8hI9R0b37Okkk8Vf0hQ==",
"license": "MIT",
"peerDependencies": {
"ws": "^8.2.0"
}
},
"node_modules/@d-fischer/logger": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/@d-fischer/logger/-/logger-4.2.4.tgz",
"integrity": "sha512-TFMZ/SVW8xyQtyJw9Rcuci4betSKy0qbQn2B5+1+72vVXeO8Qb1pYvuwF5qr0vDGundmSWq7W8r19nVPnXXSvA==",
"license": "MIT",
"dependencies": {
"@d-fischer/detect-node": "^3.0.1",
"@d-fischer/shared-utils": "^3.6.1",
"tslib": "^2.5.0"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@d-fischer/rate-limiter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@d-fischer/rate-limiter/-/rate-limiter-1.1.0.tgz",
"integrity": "sha512-O5HgACwApyCZhp4JTEBEtbv/W3eAwEkrARFvgWnEsDmXgCMWjIHwohWoHre5BW6IYXFSHBGsuZB/EvNL3942kQ==",
"license": "MIT",
"dependencies": {
"@d-fischer/logger": "^4.2.3",
"@d-fischer/shared-utils": "^3.6.3",
"tslib": "^2.6.2"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@d-fischer/shared-utils": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/@d-fischer/shared-utils/-/shared-utils-3.6.4.tgz",
"integrity": "sha512-BPkVLHfn2Lbyo/ENDBwtEB8JVQ+9OzkjJhUunLaxkw4k59YFlQxUUwlDBejVSFcpQT0t+D3CQlX+ySZnQj0wxw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.4.1"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@d-fischer/typed-event-emitter": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/@d-fischer/typed-event-emitter/-/typed-event-emitter-3.3.3.tgz",
"integrity": "sha512-OvSEOa8icfdWDqcRtjSEZtgJTFOFNgTjje7zaL0+nAtu2/kZtRCSK5wUMrI/aXtCH8o0Qz2vA8UqkhWUTARFQQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.4.0"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@openclaw/twitch": {
"version": "2026.2.21",
"resolved": "https://registry.npmjs.org/@openclaw/twitch/-/twitch-2026.2.21.tgz",
"integrity": "sha512-uCtkUVUqj08LMwfBF2E6c0S6Pyu/kvLy/kWelsIqrpMJwzUgFrcsAwVb8YuRdmrQxFzQqZ5QQ8KEbYk7R9orPg==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@twurple/api": "^8.0.3",
"@twurple/auth": "^8.0.3",
"@twurple/chat": "^8.0.3",
"zod": "^4.3.6"
}
},
"node_modules/@twurple/api": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@twurple/api/-/api-8.1.3.tgz",
"integrity": "sha512-DTa/VX+h7kciDz3ZBQmrpVy1nPIepRMv4BtldaXKfDERlXRQBt4V2d6KfNn/hdUkRkxJ2Xi8x4PfBFE79VSrBw==",
"license": "MIT",
"dependencies": {
"@d-fischer/cache-decorators": "^4.0.0",
"@d-fischer/detect-node": "^3.0.1",
"@d-fischer/logger": "^4.2.1",
"@d-fischer/rate-limiter": "^1.1.0",
"@d-fischer/shared-utils": "^3.6.1",
"@d-fischer/typed-event-emitter": "^3.3.3",
"@twurple/api-call": "8.1.3",
"@twurple/common": "8.1.3",
"retry": "^0.13.1",
"tslib": "^2.0.3"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
},
"peerDependencies": {
"@twurple/auth": "8.1.3"
}
},
"node_modules/@twurple/api-call": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@twurple/api-call/-/api-call-8.1.3.tgz",
"integrity": "sha512-eKIoIRHyPsyJwCOpofE+/J+C5O+bPnxtq3bPUzMsS4EzZOF268WocbkaKLW1Fh3tepyxj3TvTNxEvKA6jbJr0A==",
"license": "MIT",
"dependencies": {
"@d-fischer/shared-utils": "^3.6.1",
"@twurple/common": "8.1.3",
"tslib": "^2.0.3"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@twurple/auth": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@twurple/auth/-/auth-8.1.3.tgz",
"integrity": "sha512-UklOtXzQUnZskFsvt3h3kmkjXsILqNXe4NCMR1SYPicsYVnVMElS1uMiVI/H5mzJhVR5MFx5wQQyI15b5YtBxw==",
"license": "MIT",
"dependencies": {
"@d-fischer/logger": "^4.2.1",
"@d-fischer/shared-utils": "^3.6.1",
"@d-fischer/typed-event-emitter": "^3.3.3",
"@twurple/api-call": "8.1.3",
"@twurple/common": "8.1.3",
"tslib": "^2.0.3"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@twurple/chat": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@twurple/chat/-/chat-8.1.3.tgz",
"integrity": "sha512-BTamweCTlv8Bdkx1um0dSn0sDXBm3CX4js0GbatWPsX6mrMWljny2pQgIj+PSkTtHfsR4fmGEIayAticEydxnQ==",
"license": "MIT",
"dependencies": {
"@d-fischer/cache-decorators": "^4.0.0",
"@d-fischer/deprecate": "^2.0.2",
"@d-fischer/logger": "^4.2.1",
"@d-fischer/rate-limiter": "^1.1.0",
"@d-fischer/shared-utils": "^3.6.1",
"@d-fischer/typed-event-emitter": "^3.3.3",
"@twurple/common": "8.1.3",
"ircv3": "^0.33.0",
"tslib": "^2.0.3"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
},
"peerDependencies": {
"@twurple/auth": "8.1.3"
}
},
"node_modules/@twurple/common": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@twurple/common/-/common-8.1.3.tgz",
"integrity": "sha512-B2BT42fJAEYqSPGjTd6qyZoUv6kgFzIvUJuTIrOUcBiJxcvZh8tD+WLRd5xfMKhtLbUFgesYlHxdPhmdar8/zw==",
"license": "MIT",
"dependencies": {
"@d-fischer/shared-utils": "^3.6.1",
"klona": "^2.0.4",
"tslib": "^2.0.3"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/@types/node": {
"version": "20.19.39",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz",
"integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@types/ws": {
"version": "8.18.1",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/ircv3": {
"version": "0.33.1",
"resolved": "https://registry.npmjs.org/ircv3/-/ircv3-0.33.1.tgz",
"integrity": "sha512-FPUj/q6zsLgIX6QDdLMjPRBObw0xK+k6eiI62dcTRwdl5aezYV0nuMhpmafyHOD6ZDqfw8DW4ayrvDfmYO65JQ==",
"license": "MIT",
"dependencies": {
"@d-fischer/connection": "^10.0.1",
"@d-fischer/escape-string-regexp": "^5.0.0",
"@d-fischer/logger": "^4.2.1",
"@d-fischer/shared-utils": "^3.5.0",
"@d-fischer/typed-event-emitter": "^3.3.0",
"klona": "^2.0.5",
"tslib": "^2.4.1"
},
"funding": {
"url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/klona": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
"license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/retry": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
"integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"license": "MIT"
},
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-twitch",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Twitch channel plugin.",
"dependencies": {
"@openclaw/twitch": "2026.2.21"
},
"crabpot": {
"fixture": "twitch",
"source": "npm",
"package": "@openclaw/twitch",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/twitch",
"sourceRef": "35a57bc940833a6c1f594b2308e349e5ee0148db"
}
}

72
plugins/voice-call/package-lock.json generated Normal file
View File

@ -0,0 +1,72 @@
{
"name": "@crabpot/fixture-voice-call",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-voice-call",
"version": "0.0.0",
"dependencies": {
"@openclaw/voice-call": "2026.3.13"
}
},
"node_modules/@openclaw/voice-call": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/voice-call/-/voice-call-2026.3.13.tgz",
"integrity": "sha512-AgXSfIn4KnX3b851z9FQ3dMora02CxAL0EJOTmbj1Pxxe8XMHjISORfaR82VEmQ7MLjSUek63QDYL8k6754MdQ==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@sinclair/typebox": "0.34.48",
"commander": "^14.0.3",
"ws": "^8.19.0",
"zod": "^4.3.6"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
},
"node_modules/commander": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"license": "MIT",
"engines": {
"node": ">=20"
}
},
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-voice-call",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw voice-call plugin.",
"dependencies": {
"@openclaw/voice-call": "2026.3.13"
},
"crabpot": {
"fixture": "voice-call",
"source": "npm",
"package": "@openclaw/voice-call",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/voice-call",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

@ -1 +1 @@
Subproject commit 6e4c765cd04eb449c806748c3130793fe0b05e5e
Subproject commit dd3cab6e11f16eaa3fcee0ce67d3a809b155341a

@ -1 +1 @@
Subproject commit b7849ac055c8fa699d01b48e83cf24028907307d
Subproject commit 503a1d5403bc3a57763b9ef17c60a9d5e31b53d9

2068
plugins/whatsapp/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-whatsapp",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw WhatsApp channel plugin.",
"dependencies": {
"@openclaw/whatsapp": "2026.5.1-beta.1"
},
"crabpot": {
"fixture": "whatsapp",
"source": "npm",
"package": "@openclaw/whatsapp",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/whatsapp",
"sourceRef": "355680f1f21af3782c8ffbb5f3cec281dc584af6"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,17 @@
"private": true,
"description": "Crabpot npm fixture shim for Tencent Yuanbao Bot.",
"dependencies": {
"openclaw-plugin-yuanbao": "2.11.0"
"openclaw-plugin-yuanbao": "3.0.1"
},
"overrides": {
"@anthropic-ai/sdk": "0.91.1",
"conf": "10.2.0",
"cos-nodejs-sdk-v5": "2.16.0-beta.8",
"fast-xml-parser": "5.7.2",
"form-data": "4.0.5",
"qs": "6.15.1",
"tough-cookie": "6.0.1",
"uuid": "14.0.0"
},
"crabpot": {
"fixture": "yuanbao",

43
plugins/zalo/package-lock.json generated Normal file
View File

@ -0,0 +1,43 @@
{
"name": "@crabpot/fixture-zalo",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-zalo",
"version": "0.0.0",
"dependencies": {
"@openclaw/zalo": "2026.3.13"
}
},
"node_modules/@openclaw/zalo": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/zalo/-/zalo-2026.3.13.tgz",
"integrity": "sha512-v/NQezfoCpFxIlOpLXJHdT1zkldql1D/E0lccqCfbu2OeldePMNpgOgA7B5TDHsC1FlNMR+M2FR5pU212k+wLw==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"undici": "7.24.1",
"zod": "^4.3.6"
}
},
"node_modules/undici": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.1.tgz",
"integrity": "sha512-5xoBibbmnjlcR3jdqtY2Lnx7WbrD/tHlT01TmvqZUFVc9Q1w4+j5hbnapTqbcXITMH1ovjq/W7BkqBilHiVAaA==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

17
plugins/zalo/package.json Normal file
View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-zalo",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Zalo channel plugin.",
"dependencies": {
"@openclaw/zalo": "2026.3.13"
},
"crabpot": {
"fixture": "zalo",
"source": "npm",
"package": "@openclaw/zalo",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/zalo",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

401
plugins/zalouser/package-lock.json generated Normal file
View File

@ -0,0 +1,401 @@
{
"name": "@crabpot/fixture-zalouser",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@crabpot/fixture-zalouser",
"version": "0.0.0",
"dependencies": {
"@openclaw/zalouser": "2026.3.13"
}
},
"node_modules/@openclaw/zalouser": {
"version": "2026.3.13",
"resolved": "https://registry.npmjs.org/@openclaw/zalouser/-/zalouser-2026.3.13.tgz",
"integrity": "sha512-bhgN94P/LYwD8Xdj7bapG9AfhNz5Y4GPKi9X5prVbwaiP71BXezbs6SRxnLlu9B9KWjUDnyAwoOCFD2cnlTE/w==",
"deprecated": "Deprecated: obsolete OpenClaw plugin package version. Use current OpenClaw bundled/plugin distribution; newer npm releases may return later.",
"dependencies": {
"@sinclair/typebox": "0.34.48",
"zca-js": "2.1.1",
"zod": "^4.3.6"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.34.48",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
"integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
"license": "MIT"
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/bignumber.js": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
"integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"license": "MIT"
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/form-data": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
"integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"license": "MIT",
"dependencies": {
"bignumber.js": "^9.0.0"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/pako": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
"license": "(MIT AND Zlib)"
},
"node_modules/semver": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/spark-md5": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz",
"integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==",
"license": "(WTFPL OR MIT)"
},
"node_modules/tldts": {
"version": "6.1.86",
"resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
"integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
"license": "MIT",
"dependencies": {
"tldts-core": "^6.1.86"
},
"bin": {
"tldts": "bin/cli.js"
}
},
"node_modules/tldts-core": {
"version": "6.1.86",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
"integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
"license": "MIT"
},
"node_modules/tough-cookie": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
"integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
"license": "BSD-3-Clause",
"dependencies": {
"tldts": "^6.1.32"
},
"engines": {
"node": ">=16"
}
},
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/zca-js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/zca-js/-/zca-js-2.1.1.tgz",
"integrity": "sha512-6zCmaIIWg/1eYlvCvO4rVsFt6SQ8MRodro3dCzMkk+LNgB3MyaEMBywBJfsw44WhODmOh8iMlPv4xDTNTMWDWA==",
"license": "MIT",
"dependencies": {
"crypto-js": "^4.2.0",
"form-data": "^4.0.4",
"json-bigint": "^1.0.0",
"pako": "^2.1.0",
"semver": "^7.6.3",
"spark-md5": "^3.0.2",
"tough-cookie": "^5.0.0",
"ws": "^8.18.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/zod": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
"integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "@crabpot/fixture-zalouser",
"version": "0.0.0",
"private": true,
"description": "Crabpot npm fixture shim for OpenClaw Zalo Personal Account plugin via native zca-js integration.",
"dependencies": {
"@openclaw/zalouser": "2026.3.13"
},
"crabpot": {
"fixture": "zalouser",
"source": "npm",
"package": "@openclaw/zalouser",
"sourceRepo": "https://github.com/openclaw/openclaw.git",
"sourcePath": "extensions/zalouser",
"sourceRef": "2ce6b77205187c76ce7cde6cb0913de14d4452fa"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,11 @@
"status": "pass",
"strict": false,
"policy": {
"allowedBlocked": 2,
"allowedBlocked": 6,
"expectedWarnings": 1,
"fixtureSets": [
"build",
"openclaw-beta",
"sdk-alias",
"side-effect-review",
"smoke"
@ -19,41 +20,216 @@
}
},
"summary": {
"checkCount": 9,
"checkCount": 25,
"failCount": 0,
"warnCount": 3,
"warnCount": 19,
"passCount": 6
},
"checks": [
{
"id": "compatibility-report.live-p0-issues",
"id": "execution-results.audit-findings",
"action": "warn",
"message": "2 live P0 issues tracked",
"message": "12 package audit findings",
"evidence": [
"codex-app-server:sdk-export-missing:untracked",
"hyperspell:unknown-hook-name:none"
"clawrouter:12"
]
},
{
"id": "execution-results.blocked.wecom.registerChannel.0",
"id": "execution-results.blocked.clawrouter.registerService.29",
"action": "warn",
"message": "allowed-blocked: captured registration requires includeChannelRuntime=true",
"message": "allowed-blocked: captured registration requires includeLifecycle=true",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerChannel",
"captured registration requires includeChannelRuntime=true",
"channel-runtime-harness"
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerService",
"captured registration requires includeLifecycle=true",
"service-lifecycle-harness"
]
},
{
"id": "execution-results.blocked.wecom.registerTool.2",
"id": "execution-results.blocked.clawrouter.registerTool.10",
"action": "warn",
"message": "expected-warning: captured registration has no object descriptor",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured registration has no object descriptor",
"tool-factory-descriptor"
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.11",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.12",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.13",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.14",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.15",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.16",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.17",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.18",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.19",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.20",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.21",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.5",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.6",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.7",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.8",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.9",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
@ -65,63 +241,73 @@
{
"id": "compatibility-report.deprecation-warnings",
"action": "pass",
"message": "21 deprecated compat seams tracked",
"message": "42 deprecated compat seams tracked",
"evidence": [
"a2a-gateway:legacy-root-sdk-import",
"agentchat:channel-env-vars",
"apify:legacy-root-sdk-import",
"brave-plugin:provider-auth-env-vars",
"codex-app-server:legacy-root-sdk-import",
"composio:legacy-root-sdk-import",
"connectclaw:legacy-before-agent-start",
"connectclaw:legacy-root-sdk-import",
"dingtalk-connector:legacy-root-sdk-import",
"discord:channel-env-vars",
"feishu:channel-env-vars",
"hasdata:provider-auth-env-vars",
"honcho:legacy-before-agent-start",
"honcho:legacy-root-sdk-import",
"hyperspell:legacy-before-agent-start",
"hyperspell:legacy-root-sdk-import",
"inworld-tts:provider-auth-env-vars",
"kitchen-sink:legacy-before-agent-start",
"kitchen-sink:legacy-root-sdk-import",
"llm-trace-phoenix:legacy-root-sdk-import",
"lossless-claw:legacy-root-sdk-import",
"matrix:channel-env-vars",
"mattermost:channel-env-vars",
"memory-tencentdb:legacy-root-sdk-import",
"memos-cloud:legacy-before-agent-start",
"memu-engine:legacy-root-sdk-import",
"mocrane-wecom:legacy-root-sdk-import",
"msteams:channel-env-vars",
"nemoclaw:legacy-before-agent-start",
"nextcloud-talk:channel-env-vars",
"nostr:channel-env-vars",
"openclaw-qqbot:channel-env-vars",
"openclaw-telemetry:legacy-before-agent-start",
"openclaw-telemetry:legacy-root-sdk-import",
"opik-openclaw:legacy-root-sdk-import",
"qqbot:legacy-root-sdk-import",
"yuanbao:legacy-root-sdk-import"
"synology-chat:channel-env-vars",
"telnyx-sms:channel-env-vars",
"twitch:channel-env-vars",
"voice-call:channel-env-vars",
"yuanbao:channel-env-vars",
"zalo:channel-env-vars",
"zalouser:channel-env-vars"
]
},
{
"id": "compatibility-report.inspector-gaps",
"action": "pass",
"message": "97 inspector proof gaps tracked",
"message": "163 inspector proof gaps tracked",
"evidence": [
"a2a-gateway:registration-capture-gap",
"clawmetry:registration-capture-gap",
"codex-app-server:registration-capture-gap",
"connectclaw:registration-capture-gap",
"honcho:conversation-access-hook",
"honcho:registration-capture-gap",
"hyperspell:conversation-access-hook",
"hyperspell:registration-capture-gap",
"lightclawbot:registration-capture-gap",
"kitchen-sink:before-tool-call-probe",
"kitchen-sink:conversation-access-hook",
"llm-trace-phoenix:conversation-access-hook",
"lossless-claw:registration-capture-gap",
"mcp-adapter:registration-capture-gap",
"memory-lancedb:conversation-access-hook",
"memory-tencentdb:conversation-access-hook",
"memos-cloud:conversation-access-hook",
"memos-cloud:registration-capture-gap",
"mocrane-wecom:registration-capture-gap",
"openclaw-weixin:registration-capture-gap",
"nemoclaw:before-tool-call-probe",
"openclaw-telemetry:before-tool-call-probe",
"openclaw-telemetry:conversation-access-hook",
"opik-openclaw:before-tool-call-probe",
"opik-openclaw:conversation-access-hook",
"opik-openclaw:registration-capture-gap",
"qqbot:registration-capture-gap",
"secureclaw:registration-capture-gap",
"wecom:before-tool-call-probe",
"wecom:registration-capture-gap",
"yuanbao:registration-capture-gap",
"a2a-gateway:package-dependency-install-required",
"a2a-gateway:package-typescript-source-entrypoint",
"a2a-gateway:registration-capture-gap",
"a2a-gateway:runtime-tool-capture",
"agentchat:channel-contract-probe",
"agentchat:package-build-artifact-entrypoint",
@ -129,110 +315,176 @@
"apify:package-dependency-install-required",
"apify:package-typescript-source-entrypoint",
"apify:runtime-tool-capture",
"bluebubbles:channel-contract-probe",
"clawmetry:package-build-artifact-entrypoint",
"clawmetry:package-dependency-install-required",
"clawmetry:package-typescript-source-entrypoint",
"clawmetry:registration-capture-gap",
"clawrouter:package-dependency-install-required",
"clawrouter:registration-capture-gap",
"clawrouter:runtime-tool-capture",
"codex:package-dependency-install-required",
"codex:registration-capture-gap",
"codex-app-server:package-dependency-install-required",
"codex-app-server:package-typescript-source-entrypoint",
"codex-app-server:registration-capture-gap",
"composio:package-dependency-install-required",
"composio:package-typescript-source-entrypoint",
"composio:runtime-tool-capture",
"connectclaw:package-dependency-install-required",
"connectclaw:package-typescript-source-entrypoint",
"connectclaw:registration-capture-gap",
"connectclaw:runtime-tool-capture",
"ddingtalk:channel-contract-probe",
"ddingtalk:package-dependency-install-required",
"ddingtalk:package-typescript-source-entrypoint",
"diagnostics-otel:package-dependency-install-required",
"diagnostics-otel:registration-capture-gap",
"diagnostics-prometheus:registration-capture-gap",
"diffs:package-dependency-install-required",
"diffs:registration-capture-gap",
"dingtalk-connector:channel-contract-probe",
"dingtalk-connector:package-build-artifact-entrypoint",
"dingtalk-connector:package-dependency-install-required",
"dingtalk-connector:registration-capture-gap",
"discord:channel-contract-probe",
"discord:package-dependency-install-required",
"feishu:channel-contract-probe",
"feishu:package-dependency-install-required",
"google-meet:package-dependency-install-required",
"google-meet:registration-capture-gap",
"hasdata:package-dependency-install-required",
"hasdata:package-typescript-source-entrypoint",
"honcho:package-build-artifact-entrypoint",
"honcho:package-dependency-install-required",
"honcho:registration-capture-gap",
"honcho:runtime-tool-capture",
"hyperspell:package-dependency-install-required",
"hyperspell:package-typescript-source-entrypoint",
"hyperspell:registration-capture-gap",
"hyperspell:runtime-tool-capture",
"inworld-tts:package-dependency-install-required",
"inworld-tts:package-typescript-source-entrypoint",
"kitchen-sink:channel-contract-probe",
"kitchen-sink:registration-capture-gap",
"lightclawbot:channel-contract-probe",
"lightclawbot:package-dependency-install-required",
"lightclawbot:registration-capture-gap",
"lightclawbot:runtime-tool-capture",
"llm-trace-phoenix:package-typescript-source-entrypoint",
"lobster:package-dependency-install-required",
"lossless-claw:package-build-artifact-entrypoint",
"lossless-claw:package-dependency-install-required",
"lossless-claw:runtime-tool-capture",
"lossless-claw:registration-capture-gap",
"matrix:package-dependency-install-required",
"matrix:package-typescript-source-entrypoint",
"matrix:registration-capture-gap",
"mattermost:channel-contract-probe",
"mattermost:package-dependency-install-required",
"mattermost:package-typescript-source-entrypoint",
"mattermost:registration-capture-gap",
"mcp-adapter:package-dependency-install-required",
"mcp-adapter:package-typescript-source-entrypoint",
"mcp-adapter:registration-capture-gap",
"mcp-adapter:runtime-tool-capture",
"memory-lancedb:package-dependency-install-required",
"memory-lancedb:registration-capture-gap",
"memory-tencentdb:package-dependency-install-required",
"memory-tencentdb:package-typescript-source-entrypoint",
"memory-tencentdb:runtime-tool-capture",
"memory-tencentdb:registration-capture-gap",
"memos-cloud:registration-capture-gap",
"memu-engine:package-typescript-source-entrypoint",
"memu-engine:runtime-tool-capture",
"mocrane-wecom:channel-contract-probe",
"mocrane-wecom:package-dependency-install-required",
"mocrane-wecom:package-typescript-source-entrypoint",
"mocrane-wecom:registration-capture-gap",
"mocrane-wecom:runtime-tool-capture",
"msteams:channel-contract-probe",
"msteams:package-dependency-install-required",
"nemoclaw:package-build-artifact-entrypoint",
"nemoclaw:package-dependency-install-required",
"nemoclaw:registration-capture-gap",
"nextcloud-talk:channel-contract-probe",
"nextcloud-talk:package-dependency-install-required",
"nostr:channel-contract-probe",
"nostr:package-dependency-install-required",
"nostr:registration-capture-gap",
"openclaw-qqbot:package-dependency-install-required",
"openclaw-qqbot:registration-capture-gap",
"openclaw-telemetry:package-typescript-source-entrypoint",
"openclaw-telemetry:registration-capture-gap",
"openclaw-weixin:channel-contract-probe",
"openclaw-weixin:package-dependency-install-required",
"openclaw-weixin:package-typescript-source-entrypoint",
"openclaw-weixin:registration-capture-gap",
"opik-openclaw:package-build-artifact-entrypoint",
"opik-openclaw:package-dependency-install-required",
"opik-openclaw:package-typescript-source-entrypoint",
"opik-openclaw:registration-capture-gap",
"qqbot:channel-contract-probe",
"qqbot:package-dependency-install-required",
"qqbot:registration-capture-gap",
"qqbot:runtime-tool-capture",
"secureclaw:package-build-artifact-entrypoint",
"secureclaw:package-dependency-install-required",
"web-search-plus:package-dependency-install-required",
"secureclaw:registration-capture-gap",
"synology-chat:channel-contract-probe",
"synology-chat:package-dependency-install-required",
"telnyx-sms:channel-contract-probe",
"telnyx-sms:package-build-artifact-entrypoint",
"telnyx-sms:registration-capture-gap",
"tlon:channel-contract-probe",
"tlon:package-dependency-install-required",
"twitch:channel-contract-probe",
"twitch:package-dependency-install-required",
"voice-call:package-dependency-install-required",
"voice-call:registration-capture-gap",
"web-search-plus:package-typescript-source-entrypoint",
"web-search-plus:runtime-tool-capture",
"wecom:channel-contract-probe",
"wecom:package-dependency-install-required",
"wecom:registration-capture-gap",
"wecom:runtime-tool-capture",
"whatsapp:channel-contract-probe",
"whatsapp:package-dependency-install-required",
"yuanbao:channel-contract-probe",
"yuanbao:package-dependency-install-required",
"yuanbao:runtime-tool-capture"
"yuanbao:package-typescript-source-entrypoint",
"yuanbao:registration-capture-gap",
"yuanbao:runtime-tool-capture",
"zalo:channel-contract-probe",
"zalo:package-dependency-install-required",
"zalouser:channel-contract-probe",
"zalouser:package-dependency-install-required"
]
},
{
"id": "compatibility-report.live-p0-issues",
"action": "pass",
"message": "0 live P0 issues tracked",
"evidence": []
},
{
"id": "compatibility-report.p1-issues",
"action": "pass",
"message": "26 P1 issues tracked",
"message": "15 P1 issues tracked",
"evidence": [
"a2a-gateway:registration-capture-gap",
"clawmetry:registration-capture-gap",
"codex-app-server:missing-compat-record",
"codex-app-server:registration-capture-gap",
"connectclaw:registration-capture-gap",
"clawmetry:sdk-export-missing",
"honcho:conversation-access-hook",
"honcho:registration-capture-gap",
"hyperspell:conversation-access-hook",
"hyperspell:registration-capture-gap",
"lightclawbot:registration-capture-gap",
"honcho:sdk-export-missing",
"kitchen-sink:before-tool-call-probe",
"kitchen-sink:conversation-access-hook",
"llm-trace-phoenix:conversation-access-hook",
"lossless-claw:registration-capture-gap",
"mcp-adapter:registration-capture-gap",
"memory-lancedb:conversation-access-hook",
"memory-tencentdb:conversation-access-hook",
"memos-cloud:conversation-access-hook",
"memos-cloud:registration-capture-gap",
"mocrane-wecom:registration-capture-gap",
"openclaw-weixin:registration-capture-gap",
"nemoclaw:before-tool-call-probe",
"openclaw-telemetry:before-tool-call-probe",
"openclaw-telemetry:conversation-access-hook",
"opik-openclaw:before-tool-call-probe",
"opik-openclaw:conversation-access-hook",
"opik-openclaw:registration-capture-gap",
"qqbot:registration-capture-gap",
"secureclaw:registration-capture-gap",
"wecom:before-tool-call-probe",
"wecom:registration-capture-gap",
"yuanbao:registration-capture-gap"
"wecom:before-tool-call-probe"
]
},
{
"id": "execution-results.audit-findings",
"action": "pass",
"message": "0 package audit findings",
"evidence": []
},
{
"id": "execution-results.failures",
"action": "pass",

File diff suppressed because one or more lines are too long

View File

@ -1,95 +1,54 @@
{
"generatedAt": "deterministic",
"mode": "local",
"openclawLabel": "",
"title": "Crabpot CI Summary",
"mode": "dependabot",
"openclawLabel": "openclaw@latest (2026.5.6, c97b9f79ec43)",
"status": "pass",
"summary": {
"breakages": 0,
"warnings": 51,
"suggestions": 92,
"issues": 143,
"p0Issues": 2,
"p1Issues": 26,
"liveIssues": 2,
"liveP0Issues": 2,
"compatGaps": 1,
"deprecationWarnings": 21,
"inspectorGaps": 97,
"upstreamIssues": 22,
"warnings": 126,
"suggestions": 155,
"issues": 281,
"p0Issues": 0,
"p1Issues": 15,
"liveIssues": 0,
"liveP0Issues": 0,
"compatGaps": 2,
"deprecationWarnings": 42,
"inspectorGaps": 163,
"upstreamIssues": 74,
"refDiffFailures": 0,
"refDiffWarnings": 0,
"policyFailures": 0,
"policyWarnings": 3,
"policyWarnings": 19,
"profileFailures": 0,
"profileWarnings": 1,
"executionPass": 6,
"profileWarnings": 2,
"executionPass": 12,
"executionFail": 0,
"executionBlocked": 2,
"platformWindowsRisks": 153,
"platformContainerRisks": 47,
"loaderJitiCandidates": 18,
"importLoopP50Ms": 950,
"importLoopP95Ms": 1023,
"importLoopMaxRssMb": 45.5,
"importLoopMaxCpuMs": 208
"executionBlocked": 18,
"platformWindowsRisks": 14,
"platformContainerRisks": 14,
"loaderJitiCandidates": 25,
"importLoopP50Ms": 2421,
"importLoopP95Ms": 2471,
"importLoopOpenClawLifecycleCount": 3,
"importLoopOpenClawImportP50Ms": 84,
"importLoopOpenClawActivationP50Ms": 0.3,
"importLoopMetricBasis": "baseline-adjusted",
"importLoopMaxRssMb": 13.3,
"importLoopMaxCpuMs": 35,
"importLoopRssSampleCount": 287,
"importLoopCpuSampleCount": 287
},
"topIssues": [
{
"severity": "P0",
"issueClass": "live-issue",
"fixture": "codex-app-server",
"code": "sdk-export-missing",
"title": "codex-app-server: plugin SDK import aliases are missing from target package exports",
"decision": "core-compat-adapter"
},
{
"severity": "P0",
"issueClass": "live-issue",
"fixture": "hyperspell",
"code": "unknown-hook-name",
"title": "hyperspell: fixture uses a hook missing from target OpenClaw",
"decision": "core-compat-adapter"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "a2a-gateway",
"code": "registration-capture-gap",
"title": "a2a-gateway: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "clawmetry",
"code": "registration-capture-gap",
"title": "clawmetry: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "compat-gap",
"fixture": "codex-app-server",
"code": "missing-compat-record",
"title": "codex-app-server: compat-dependent behavior lacks registry coverage",
"fixture": "clawmetry",
"code": "sdk-export-missing",
"title": "clawmetry: plugin SDK import aliases are missing from target package exports",
"decision": "core-compat-adapter"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "codex-app-server",
"code": "registration-capture-gap",
"title": "codex-app-server: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "connectclaw",
"code": "registration-capture-gap",
"title": "connectclaw: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
@ -100,34 +59,26 @@
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"issueClass": "compat-gap",
"fixture": "honcho",
"code": "registration-capture-gap",
"title": "honcho: runtime registrations need capture before contract judgment",
"code": "sdk-export-missing",
"title": "honcho: plugin SDK import aliases are missing from target package exports",
"decision": "core-compat-adapter"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "kitchen-sink",
"code": "before-tool-call-probe",
"title": "kitchen-sink: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "hyperspell",
"fixture": "kitchen-sink",
"code": "conversation-access-hook",
"title": "hyperspell: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "hyperspell",
"code": "registration-capture-gap",
"title": "hyperspell: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "lightclawbot",
"code": "registration-capture-gap",
"title": "lightclawbot: runtime registrations need capture before contract judgment",
"title": "kitchen-sink: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
@ -141,17 +92,9 @@
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "lossless-claw",
"code": "registration-capture-gap",
"title": "lossless-claw: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "mcp-adapter",
"code": "registration-capture-gap",
"title": "mcp-adapter: runtime registrations need capture before contract judgment",
"fixture": "memory-lancedb",
"code": "conversation-access-hook",
"title": "memory-lancedb: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
@ -173,59 +116,258 @@
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "memos-cloud",
"code": "registration-capture-gap",
"title": "memos-cloud: runtime registrations need capture before contract judgment",
"fixture": "nemoclaw",
"code": "before-tool-call-probe",
"title": "nemoclaw: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "mocrane-wecom",
"code": "registration-capture-gap",
"title": "mocrane-wecom: runtime registrations need capture before contract judgment",
"fixture": "openclaw-telemetry",
"code": "before-tool-call-probe",
"title": "openclaw-telemetry: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "openclaw-weixin",
"code": "registration-capture-gap",
"title": "openclaw-weixin: runtime registrations need capture before contract judgment",
"fixture": "openclaw-telemetry",
"code": "conversation-access-hook",
"title": "openclaw-telemetry: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "opik-openclaw",
"code": "before-tool-call-probe",
"title": "opik-openclaw: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "opik-openclaw",
"code": "conversation-access-hook",
"title": "opik-openclaw: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "wecom",
"code": "before-tool-call-probe",
"title": "wecom: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
}
],
"refRegressions": [],
"policyFindings": [
{
"id": "compatibility-report.live-p0-issues",
"id": "execution-results.audit-findings",
"action": "warn",
"message": "2 live P0 issues tracked",
"message": "12 package audit findings",
"evidence": [
"codex-app-server:sdk-export-missing:untracked",
"hyperspell:unknown-hook-name:none"
"clawrouter:12"
]
},
{
"id": "execution-results.blocked.wecom.registerChannel.0",
"id": "execution-results.blocked.clawrouter.registerService.29",
"action": "warn",
"message": "allowed-blocked: captured registration requires includeChannelRuntime=true",
"message": "allowed-blocked: captured registration requires includeLifecycle=true",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerChannel",
"captured registration requires includeChannelRuntime=true",
"channel-runtime-harness"
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerService",
"captured registration requires includeLifecycle=true",
"service-lifecycle-harness"
]
},
{
"id": "execution-results.blocked.wecom.registerTool.2",
"id": "execution-results.blocked.clawrouter.registerTool.10",
"action": "warn",
"message": "expected-warning: captured registration has no object descriptor",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured registration has no object descriptor",
"tool-factory-descriptor"
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.11",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.12",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.13",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.14",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.15",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.16",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.17",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.18",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.19",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.20",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.21",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.5",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.6",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.7",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.8",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
},
{
"id": "execution-results.blocked.clawrouter.registerTool.9",
"action": "warn",
"message": "allowed-blocked: captured tool requires live network access",
"evidence": [
".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"registerTool",
"captured tool requires live network access",
"live-network-tool-probes"
]
}
],
@ -234,11 +376,20 @@
"id": "profile.wall-p95",
"action": "warn",
"metric": "p95WallMs",
"message": "p95WallMs regressed 262.5% over baseline",
"message": "p95WallMs regressed 87.8% over baseline",
"baseline": 1273,
"current": 4615,
"delta": 3342,
"percent": 262.5
"current": 2391,
"delta": 1118,
"percent": 87.8
},
{
"id": "profile.peak-rss",
"action": "warn",
"metric": "maxPeakRssMb",
"message": "maxPeakRssMb regressed 390.29999999999995 over baseline",
"baseline": 65.1,
"current": 455.4,
"delta": 390.29999999999995
}
],
"artifacts": {

View File

@ -1,64 +1,59 @@
# Crabpot CI Summary
Generated: deterministic
Mode: local
OpenClaw: -
Mode: dependabot
OpenClaw: openclaw@latest (2026.5.6, c97b9f79ec43)
Status: PASS
## Counts
| Metric | Value |
| --------------------------- | ------------------------------------------------------- |
| Breakages | 0 |
| Warnings | 51 |
| Suggestions | 92 |
| Issues | 143 |
| P0 issues | 2 |
| P1 issues | 26 |
| Live issues | 2 |
| Live P0 issues | 2 |
| Compat gaps | 1 |
| Deprecation warnings | 21 |
| Inspector gaps | 97 |
| Upstream metadata | 22 |
| Ref diff failures | 0 |
| Ref diff warnings | 0 |
| Policy failures | 0 |
| Policy warnings | 3 |
| Profile failures | 0 |
| Profile warnings | 1 |
| Execution pass | 6 |
| Execution fail | 0 |
| Execution blocked | 2 |
| Windows portability risks | 153 |
| Container portability risks | 47 |
| Jiti loader candidates | 18 |
| Import loop | p50 950 ms / p95 1023 ms / max RSS 45.5 MB / CPU 208 ms |
| Metric | Value |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Breakages | 0 |
| Warnings | 126 |
| Suggestions | 155 |
| Issues | 281 |
| P0 issues | 0 |
| P1 issues | 15 |
| Live issues | 0 |
| Live P0 issues | 0 |
| Compat gaps | 2 |
| Deprecation warnings | 42 |
| Inspector gaps | 163 |
| Upstream metadata | 74 |
| Ref diff failures | 0 |
| Ref diff warnings | 0 |
| Policy failures | 0 |
| Policy warnings | 19 |
| Profile failures | 0 |
| Profile warnings | 2 |
| Execution pass | 12 |
| Execution fail | 0 |
| Execution blocked | 18 |
| Windows portability risks | 14 |
| Container portability risks | 14 |
| Jiti loader candidates | 25 |
| Import loop | p50 2421 ms / p95 2471 ms / plugin delta RSS 13.3 MB / plugin delta CPU 35 ms / OpenClaw import 84 ms / activate 0.3 ms |
## Top Issues
| Severity | Class | Fixture | Code | Decision | Title |
| -------- | ------------- | ----------------- | ------------------------ | ------------------- | ----------------------------------------------------------------------------------- |
| P0 | live-issue | codex-app-server | sdk-export-missing | core-compat-adapter | codex-app-server: plugin SDK import aliases are missing from target package exports |
| P0 | live-issue | hyperspell | unknown-hook-name | core-compat-adapter | hyperspell: fixture uses a hook missing from target OpenClaw |
| P1 | inspector-gap | a2a-gateway | registration-capture-gap | inspector-follow-up | a2a-gateway: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | clawmetry | registration-capture-gap | inspector-follow-up | clawmetry: runtime registrations need capture before contract judgment |
| P1 | compat-gap | codex-app-server | missing-compat-record | core-compat-adapter | codex-app-server: compat-dependent behavior lacks registry coverage |
| P1 | inspector-gap | codex-app-server | registration-capture-gap | inspector-follow-up | codex-app-server: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | connectclaw | registration-capture-gap | inspector-follow-up | connectclaw: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | honcho | conversation-access-hook | inspector-follow-up | honcho: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | honcho | registration-capture-gap | inspector-follow-up | honcho: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | hyperspell | conversation-access-hook | inspector-follow-up | hyperspell: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | hyperspell | registration-capture-gap | inspector-follow-up | hyperspell: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | lightclawbot | registration-capture-gap | inspector-follow-up | lightclawbot: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | llm-trace-phoenix | conversation-access-hook | inspector-follow-up | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | lossless-claw | registration-capture-gap | inspector-follow-up | lossless-claw: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | mcp-adapter | registration-capture-gap | inspector-follow-up | mcp-adapter: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | memory-tencentdb | conversation-access-hook | inspector-follow-up | memory-tencentdb: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | memos-cloud | conversation-access-hook | inspector-follow-up | memos-cloud: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | memos-cloud | registration-capture-gap | inspector-follow-up | memos-cloud: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | mocrane-wecom | registration-capture-gap | inspector-follow-up | mocrane-wecom: runtime registrations need capture before contract judgment |
| P1 | inspector-gap | openclaw-weixin | registration-capture-gap | inspector-follow-up | openclaw-weixin: runtime registrations need capture before contract judgment |
| Severity | Class | Fixture | Code | Decision | Title |
| -------- | ------------- | ------------------ | ------------------------ | ------------------- | ---------------------------------------------------------------------------- |
| P1 | compat-gap | clawmetry | sdk-export-missing | core-compat-adapter | clawmetry: plugin SDK import aliases are missing from target package exports |
| P1 | inspector-gap | honcho | conversation-access-hook | inspector-follow-up | honcho: conversation-access hooks need privacy-boundary probes |
| P1 | compat-gap | honcho | sdk-export-missing | core-compat-adapter | honcho: plugin SDK import aliases are missing from target package exports |
| P1 | inspector-gap | kitchen-sink | before-tool-call-probe | inspector-follow-up | kitchen-sink: before_tool_call needs terminal/block/approval probes |
| P1 | inspector-gap | kitchen-sink | conversation-access-hook | inspector-follow-up | kitchen-sink: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | llm-trace-phoenix | conversation-access-hook | inspector-follow-up | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | memory-lancedb | conversation-access-hook | inspector-follow-up | memory-lancedb: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | memory-tencentdb | conversation-access-hook | inspector-follow-up | memory-tencentdb: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | memos-cloud | conversation-access-hook | inspector-follow-up | memos-cloud: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | nemoclaw | before-tool-call-probe | inspector-follow-up | nemoclaw: before_tool_call needs terminal/block/approval probes |
| P1 | inspector-gap | openclaw-telemetry | before-tool-call-probe | inspector-follow-up | openclaw-telemetry: before_tool_call needs terminal/block/approval probes |
| P1 | inspector-gap | openclaw-telemetry | conversation-access-hook | inspector-follow-up | openclaw-telemetry: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | opik-openclaw | before-tool-call-probe | inspector-follow-up | opik-openclaw: before_tool_call needs terminal/block/approval probes |
| P1 | inspector-gap | opik-openclaw | conversation-access-hook | inspector-follow-up | opik-openclaw: conversation-access hooks need privacy-boundary probes |
| P1 | inspector-gap | wecom | before-tool-call-probe | inspector-follow-up | wecom: before_tool_call needs terminal/block/approval probes |
## Ref Regressions
@ -66,17 +61,34 @@ _none_
## Policy Findings
| Action | ID | Message | Evidence |
| ------ | ------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| warn | compatibility-report.live-p0-issues | 2 live P0 issues tracked | codex-app-server:sdk-export-missing:untracked, hyperspell:unknown-hook-name:none |
| warn | execution-results.blocked.wecom.registerChannel.0 | allowed-blocked: captured registration requires includeChannelRuntime=true | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerChannel, captured registration requires includeChannelRuntime=true, channel-runtime-harness |
| warn | execution-results.blocked.wecom.registerTool.2 | expected-warning: captured registration has no object descriptor | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerTool, captured registration has no object descriptor, tool-factory-descriptor |
| Action | ID | Message | Evidence |
| ------ | ------------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| warn | execution-results.audit-findings | 12 package audit findings | clawrouter:12 |
| warn | execution-results.blocked.clawrouter.registerService.29 | allowed-blocked: captured registration requires includeLifecycle=true | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerService, captured registration requires includeLifecycle=true, service-lifecycle-harness |
| warn | execution-results.blocked.clawrouter.registerTool.10 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.11 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.12 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.13 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.14 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.15 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.16 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.17 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.18 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.19 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.20 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.21 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.5 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.6 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.7 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.8 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
| warn | execution-results.blocked.clawrouter.registerTool.9 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes |
## Profile Findings
| Action | ID | Metric | Baseline | Current | Message |
| ------ | ---------------- | --------- | -------- | ------- | ---------------------------------------- |
| warn | profile.wall-p95 | p95WallMs | 1273 | 4615 | p95WallMs regressed 262.5% over baseline |
| Action | ID | Metric | Baseline | Current | Message |
| ------ | ---------------- | ------------ | -------- | ------- | ------------------------------------------------------- |
| warn | profile.wall-p95 | p95WallMs | 1273 | 2391 | p95WallMs regressed 87.8% over baseline |
| warn | profile.peak-rss | maxPeakRssMb | 65.1 | 455.4 | maxPeakRssMb regressed 390.29999999999995 over baseline |
## Artifacts

File diff suppressed because it is too large Load Diff

View File

@ -6,46 +6,119 @@ Generated: deterministic
| Metric | Value |
| --------------------------- | ----- |
| Fixtures | 27 |
| Entrypoints | 30 |
| Ready | 0 |
| Blocked | 30 |
| TypeScript loader required | 17 |
| Build required | 7 |
| Dependency install required | 20 |
| SDK alias required | 1 |
| Fixtures | 57 |
| Entrypoints | 103 |
| Ready | 6 |
| Blocked | 97 |
| TypeScript loader required | 24 |
| Build required | 9 |
| Dependency install required | 43 |
| SDK alias required | 3 |
## Entrypoints
| Fixture | Kind | Status | Path | Blockers | Assertions |
| ----------------- | ---------------- | --------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| agentchat | extension | build-required | plugins/agentchat/integrations/openclaw-channel/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| agentchat | setupEntry | build-required | plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js | build-required | plugin build or source alias resolution runs before cold import |
| wecom | extension | dependency-install-required | plugins/wecom/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| qqbot | extension | dependency-install-required | plugins/qqbot/preload.cjs | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| a2a-gateway | extension | ts-loader-required | plugins/a2a-gateway/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| hasdata | extension | ts-loader-required | plugins/hasdata/src/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| mcp-adapter | extension | ts-loader-required | plugins/mcp-adapter/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| llm-trace-phoenix | extension | ts-loader-required | plugins/llm-trace-phoenix/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture |
| opik-openclaw | extension | ts-loader-required | plugins/opik-openclaw/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| opik-openclaw | runtimeExtension | build-required | plugins/opik-openclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| lossless-claw | extension | build-required | plugins/lossless-claw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| connectclaw | extension | ts-loader-required | plugins/connectclaw/packages/plugin/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| hyperspell | extension | ts-loader-required | plugins/hyperspell/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| honcho | extension | build-required | plugins/honcho/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| composio | extension | ts-loader-required | plugins/composio/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| memory-tencentdb | extension | ts-loader-required | plugins/memory-tencentdb/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| ddingtalk | extension | ts-loader-required | plugins/ddingtalk/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| mocrane-wecom | extension | ts-loader-required | plugins/mocrane-wecom/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| yuanbao | extension | dependency-install-required | plugins/yuanbao/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| openclaw-weixin | extension | ts-loader-required | plugins/openclaw-weixin/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| lightclawbot | extension | dependency-install-required | plugins/lightclawbot/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| memu-engine | extension | ts-loader-required | plugins/memu-engine/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture |
| secureclaw | extension | build-required | plugins/secureclaw/secureclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| memos-cloud | extension | review-required | plugins/memos-cloud/index.js | top-level-side-effect-review | cold import sandbox blocks network/process side effects before register capture |
| clawmetry | extension | ts-loader-required | plugins/clawmetry/clawhub-plugin/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| clawmetry | runtimeExtension | build-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| codex-app-server | extension | sdk-alias-required | plugins/codex-app-server/index.ts | ts-loader-required, dependency-install-required, sdk-alias-required, sdk-alias-required, sdk-alias-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim; target OpenClaw exports the imported SDK alias or provides a migration shim; target OpenClaw exports the imported SDK alias or provides a migration shim |
| web-search-plus | extension | ts-loader-required | plugins/web-search-plus/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| apify | extension | ts-loader-required | plugins/apify/src/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| inworld-tts | extension | ts-loader-required | plugins/inworld-tts/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| Fixture | Kind | Status | Path | Blockers | Assertions |
| ---------------------- | ---------------- | --------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| agentchat | extension | build-required | plugins/agentchat/integrations/openclaw-channel/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| agentchat | setupEntry | build-required | plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js | build-required | plugin build or source alias resolution runs before cold import |
| wecom | extension | dependency-install-required | plugins/wecom/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| qqbot | extension | dependency-install-required | plugins/qqbot/preload.cjs | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| a2a-gateway | extension | ts-loader-required | plugins/a2a-gateway/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| hasdata | extension | ts-loader-required | plugins/hasdata/src/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| mcp-adapter | extension | ts-loader-required | plugins/mcp-adapter/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| llm-trace-phoenix | extension | ts-loader-required | plugins/llm-trace-phoenix/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture |
| opik-openclaw | extension | ts-loader-required | plugins/opik-openclaw/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| opik-openclaw | runtimeExtension | build-required | plugins/opik-openclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| openclaw-telemetry | extension | ts-loader-required | plugins/openclaw-telemetry/index.ts | ts-loader-required | TypeScript source entrypoint is compiled or loaded before cold import |
| lossless-claw | extension | build-required | plugins/lossless-claw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| connectclaw | extension | ts-loader-required | plugins/connectclaw/packages/plugin/index.ts | ts-loader-required | TypeScript source entrypoint is compiled or loaded before cold import |
| hyperspell | extension | ts-loader-required | plugins/hyperspell/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| honcho | extension | sdk-alias-required | plugins/honcho/dist/index.js | build-required, sdk-alias-required | plugin build or source alias resolution runs before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim |
| composio | extension | ts-loader-required | plugins/composio/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| kitchen-sink | extension | ready | plugins/kitchen-sink/src/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| kitchen-sink | runtimeExtension | ready | plugins/kitchen-sink/src/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| kitchen-sink | setupEntry | ready | plugins/kitchen-sink/src/setup.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| bluebubbles | extension | missing | plugins/bluebubbles/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| bluebubbles | runtimeExtension | ready | plugins/bluebubbles/.crabpot-package/dist/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| bluebubbles | setupEntry | missing | plugins/bluebubbles/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| diagnostics-otel | extension | missing | plugins/diagnostics-otel/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| diagnostics-otel | runtimeExtension | dependency-install-required | plugins/diagnostics-otel/.crabpot-package/dist/index.js | top-level-side-effect-review, dependency-install-required | cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| discord | extension | missing | plugins/discord/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| discord | runtimeExtension | dependency-install-required | plugins/discord/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| discord | setupEntry | missing | plugins/discord/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| lobster | extension | missing | plugins/lobster/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| lobster | runtimeExtension | dependency-install-required | plugins/lobster/.crabpot-package/dist/index.js | top-level-side-effect-review, dependency-install-required | cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| matrix | extension | ts-loader-required | plugins/matrix/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| matrix | setupEntry | ts-loader-required | plugins/matrix/.crabpot-package/setup-entry.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| msteams | extension | missing | plugins/msteams/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| msteams | runtimeExtension | dependency-install-required | plugins/msteams/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| msteams | setupEntry | missing | plugins/msteams/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| nextcloud-talk | extension | missing | plugins/nextcloud-talk/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| nextcloud-talk | runtimeExtension | dependency-install-required | plugins/nextcloud-talk/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| nextcloud-talk | setupEntry | missing | plugins/nextcloud-talk/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| nostr | extension | missing | plugins/nostr/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| nostr | runtimeExtension | dependency-install-required | plugins/nostr/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| nostr | setupEntry | missing | plugins/nostr/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| voice-call | extension | missing | plugins/voice-call/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| voice-call | runtimeExtension | dependency-install-required | plugins/voice-call/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| zalo | extension | missing | plugins/zalo/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| zalo | runtimeExtension | dependency-install-required | plugins/zalo/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| zalo | setupEntry | missing | plugins/zalo/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| zalouser | extension | missing | plugins/zalouser/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| zalouser | runtimeExtension | dependency-install-required | plugins/zalouser/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| zalouser | setupEntry | missing | plugins/zalouser/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| feishu | extension | missing | plugins/feishu/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| feishu | runtimeExtension | dependency-install-required | plugins/feishu/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| feishu | setupEntry | missing | plugins/feishu/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| tlon | extension | missing | plugins/tlon/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| tlon | runtimeExtension | dependency-install-required | plugins/tlon/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| tlon | setupEntry | missing | plugins/tlon/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| twitch | extension | missing | plugins/twitch/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| twitch | runtimeExtension | dependency-install-required | plugins/twitch/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| twitch | setupEntry | missing | plugins/twitch/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| mattermost | extension | ts-loader-required | plugins/mattermost/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| mattermost | setupEntry | ts-loader-required | plugins/mattermost/.crabpot-package/setup-entry.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| synology-chat | extension | missing | plugins/synology-chat/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| synology-chat | runtimeExtension | dependency-install-required | plugins/synology-chat/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| synology-chat | setupEntry | missing | plugins/synology-chat/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| brave-plugin | extension | missing | plugins/brave-plugin/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| brave-plugin | runtimeExtension | ready | plugins/brave-plugin/.crabpot-package/dist/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| codex | extension | missing | plugins/codex/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| codex | runtimeExtension | dependency-install-required | plugins/codex/.crabpot-package/dist/index.js | top-level-side-effect-review, dependency-install-required | cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| diagnostics-prometheus | extension | missing | plugins/diagnostics-prometheus/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| diagnostics-prometheus | runtimeExtension | ready | plugins/diagnostics-prometheus/.crabpot-package/dist/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations |
| google-meet | extension | missing | plugins/google-meet/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| google-meet | runtimeExtension | dependency-install-required | plugins/google-meet/.crabpot-package/dist/index.js | top-level-side-effect-review, dependency-install-required | cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| diffs | extension | missing | plugins/diffs/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| diffs | runtimeExtension | dependency-install-required | plugins/diffs/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| memory-lancedb | extension | missing | plugins/memory-lancedb/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| memory-lancedb | runtimeExtension | dependency-install-required | plugins/memory-lancedb/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| openclaw-qqbot | extension | missing | plugins/openclaw-qqbot/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| openclaw-qqbot | runtimeExtension | dependency-install-required | plugins/openclaw-qqbot/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| openclaw-qqbot | setupEntry | missing | plugins/openclaw-qqbot/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| whatsapp | extension | missing | plugins/whatsapp/.crabpot-package/index.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| whatsapp | runtimeExtension | dependency-install-required | plugins/whatsapp/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| whatsapp | setupEntry | missing | plugins/whatsapp/.crabpot-package/setup-entry.ts | missing-entrypoint | plugin package metadata points at an existing OpenClaw entrypoint |
| nemoclaw | extension | build-required | plugins/nemoclaw/nemoclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| memory-tencentdb | extension | ts-loader-required | plugins/memory-tencentdb/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| ddingtalk | extension | ts-loader-required | plugins/ddingtalk/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| dingtalk-connector | extension | build-required | plugins/dingtalk-connector/dist/index.mjs | build-required | plugin build or source alias resolution runs before cold import |
| mocrane-wecom | extension | ts-loader-required | plugins/mocrane-wecom/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| yuanbao | extension | ts-loader-required | plugins/yuanbao/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| yuanbao | setupEntry | ts-loader-required | plugins/yuanbao/.crabpot-package/setup-entry.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| openclaw-weixin | extension | ts-loader-required | plugins/openclaw-weixin/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| openclaw-weixin | runtimeExtension | dependency-install-required | plugins/openclaw-weixin/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| lightclawbot | extension | dependency-install-required | plugins/lightclawbot/.crabpot-package/dist/index.js | dependency-install-required | fixture dependencies are installed in an isolated workspace before cold import |
| telnyx-sms | extension | build-required | plugins/telnyx-sms/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| telnyx-sms | setupEntry | build-required | plugins/telnyx-sms/dist/setup-entry.js | build-required | plugin build or source alias resolution runs before cold import |
| clawrouter | extension | dependency-install-required | plugins/clawrouter/dist/index.js | top-level-side-effect-review, dependency-install-required | cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| memu-engine | extension | ts-loader-required | plugins/memu-engine/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture |
| secureclaw | extension | build-required | plugins/secureclaw/secureclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| memos-cloud | extension | review-required | plugins/memos-cloud/index.js | top-level-side-effect-review | cold import sandbox blocks network/process side effects before register capture |
| clawmetry | extension | sdk-alias-required | plugins/clawmetry/clawhub-plugin/index.ts | ts-loader-required, dependency-install-required, sdk-alias-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim |
| clawmetry | runtimeExtension | sdk-alias-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build-required, sdk-alias-required | plugin build or source alias resolution runs before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim |
| codex-app-server | extension | ts-loader-required | plugins/codex-app-server/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| web-search-plus | extension | ts-loader-required | plugins/web-search-plus/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture |
| web-search-plus | runtimeExtension | review-required | plugins/web-search-plus/dist/index.js | top-level-side-effect-review | cold import sandbox blocks network/process side effects before register capture |
| apify | extension | ts-loader-required | plugins/apify/src/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import |
| inworld-tts | extension | ts-loader-required | plugins/inworld-tts/index.ts | ts-loader-required | TypeScript source entrypoint is compiled or loaded before cold import |

View File

@ -0,0 +1,169 @@
{
"schemaVersion": 1,
"generatedAt": "2026-05-07T09:32:17Z",
"runUrl": "https://github.com/openclaw/crabpot/actions/runs/25487512981",
"mode": "dependabot",
"openclawLabel": "openclaw@latest (2026.5.6, c97b9f79ec43)",
"status": "pass",
"metrics": {
"fixtures": 57,
"hardBreakages": 0,
"warnings": 126,
"suggestions": 155,
"issues": 281,
"p0Issues": 0,
"p1Issues": 15,
"liveIssues": 0,
"liveP0Issues": 0,
"compatGaps": 2,
"deprecationWarnings": 42,
"inspectorGaps": 163,
"upstreamIssues": 74,
"contractProbes": 277,
"policyFailures": 0,
"policyWarnings": 19,
"refDiffFailures": 0,
"profileFailures": 0,
"executionPass": 12,
"executionFail": 0,
"executionBlocked": 18,
"syntheticReady": 434,
"syntheticBlocked": 0,
"syntheticTotal": 434,
"coldReady": 6,
"coldBlocked": 97,
"coldTotal": 103,
"workspaceEntrypoints": 103,
"workspaceInstalls": 43,
"workspaceBuilds": 11,
"platformWindowsRisks": 14,
"platformContainerRisks": 14,
"loaderJitiCandidates": 25,
"importLoopP50Ms": 2421,
"importLoopP95Ms": 2471,
"importLoopOpenClawLifecycleCount": 3,
"importLoopOpenClawImportP50Ms": 84,
"importLoopOpenClawImportP95Ms": 88.6,
"importLoopOpenClawActivationP50Ms": 0.3,
"importLoopOpenClawActivationP95Ms": 1.2,
"importLoopMetricBasis": "baseline-adjusted",
"importLoopMaxRssMb": 13.3,
"importLoopMaxCpuMs": 35,
"importLoopRssSampleCount": 287,
"importLoopCpuSampleCount": 287,
"runtimeP50Ms": 2337,
"runtimeP95Ms": 2391,
"runtimeMaxRssMb": 455.4,
"runtimeRssSampleCount": 1993,
"runtimeCpuSampleCount": 1993,
"runtimeSamplesPerCommand": 3,
"runtimeWallTimeBasis": "command-median-p95"
},
"baseline": null,
"topIssues": [
{
"id": "CRABPOT-54E8B3D1",
"severity": "P1",
"issueClass": "compat-gap",
"fixture": "clawmetry",
"code": "sdk-export-missing",
"decision": "core-compat-adapter",
"title": "clawmetry: plugin SDK import aliases are missing from target package exports"
},
{
"id": "CRABPOT-2D165A73",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "honcho",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "honcho: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-85AD745B",
"severity": "P1",
"issueClass": "compat-gap",
"fixture": "honcho",
"code": "sdk-export-missing",
"decision": "core-compat-adapter",
"title": "honcho: plugin SDK import aliases are missing from target package exports"
},
{
"id": "CRABPOT-66F07BB5",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "kitchen-sink",
"code": "before-tool-call-probe",
"decision": "inspector-follow-up",
"title": "kitchen-sink: before_tool_call needs terminal/block/approval probes"
},
{
"id": "CRABPOT-ADFE9067",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "kitchen-sink",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "kitchen-sink: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-5D9C0F25",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "llm-trace-phoenix",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "llm-trace-phoenix: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-0C34E538",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "memory-lancedb",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "memory-lancedb: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-5072796E",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "memory-tencentdb",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "memory-tencentdb: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-A1A9B1D2",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "memos-cloud",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"title": "memos-cloud: conversation-access hooks need privacy-boundary probes"
},
{
"id": "CRABPOT-120FF1E0",
"severity": "P1",
"issueClass": "inspector-gap",
"fixture": "nemoclaw",
"code": "before-tool-call-probe",
"decision": "inspector-follow-up",
"title": "nemoclaw: before_tool_call needs terminal/block/approval probes"
}
],
"artifactPaths": {
"compatibility": "reports/crabpot-report.json",
"ciSummary": "reports/crabpot-ci-summary.json",
"synthetic": "reports/crabpot-synthetic-probes.json",
"coldImport": "reports/crabpot-cold-import.json",
"workspace": "reports/crabpot-workspace-plan.json",
"platform": "reports/crabpot-platform-probes.json",
"importLoop": "reports/crabpot-import-loop-profile.json",
"execution": "reports/crabpot-execution-results.json",
"runtimeProfile": "reports/crabpot-runtime-profile.json",
"refDiff": "reports/crabpot-ref-diff.json",
"profileDiff": "reports/crabpot-profile-diff.json",
"ciPolicy": "reports/crabpot-ci-policy.json"
}
}

View File

@ -2,64 +2,362 @@
"generatedAt": "deterministic",
"resultsDir": ".crabpot/results",
"summary": {
"artifactCount": 2,
"artifactCount": 4,
"captureArtifactCount": 1,
"syntheticArtifactCount": 1,
"capturedRegistrationCount": 8,
"passCount": 6,
"auditArtifactCount": 1,
"profileArtifactCount": 1,
"capturedRegistrationCount": 30,
"auditFindingCount": 12,
"executionWallMs": 27807,
"maxPeakRssMb": 1123.9,
"maxCpuMsEstimate": 17790,
"passCount": 12,
"failCount": 0,
"blockedCount": 2
"blockedCount": 18
},
"artifacts": [
{
"artifactPath": ".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json",
"fixture": "wecom",
"artifactPath": ".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.capture.json",
"fixture": "clawrouter",
"kind": "capture",
"entrypoint": ".crabpot/workspaces/wecom/index.js",
"entrypoint": ".crabpot/workspaces/clawrouter/dist/index.js",
"status": "captured",
"capturedCount": 8,
"capturedCount": 30,
"captured": [
"registration:registerChannel",
"registration:registerProvider",
"registration:registerImageGenerationProvider",
"registration:registerMusicGenerationProvider",
"registration:registerVideoGenerationProvider",
"registration:registerWebSearchProvider",
"registration:registerTool",
"registration:registerTool",
"hook:before_prompt_build",
"hook:subagent_delivery_target",
"hook:subagent_spawned",
"hook:subagent_ended",
"hook:before_tool_call"
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerTool",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerCommand",
"registration:registerService"
]
},
{
"artifactPath": ".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"fixture": "wecom",
"artifactPath": ".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"fixture": "clawrouter",
"kind": "synthetic",
"entrypoint": ".crabpot/workspaces/wecom/index.js",
"entrypoint": ".crabpot/workspaces/clawrouter/dist/index.js",
"status": "captured",
"summary": {
"probeCount": 8,
"passCount": 6,
"probeCount": 30,
"passCount": 12,
"failCount": 0,
"blockedCount": 2
"blockedCount": 18
},
"failures": [],
"blocked": [
{
"captureIndex": 0,
"kind": "registration",
"seam": "registerChannel",
"label": "registerChannel",
"status": "blocked",
"reason": "captured registration requires includeChannelRuntime=true"
},
{
"captureIndex": 2,
"captureIndex": 5,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"reason": "captured registration has no object descriptor"
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 6,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 7,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 8,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 9,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 10,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 11,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 12,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 13,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 14,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 15,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 16,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 17,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 18,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 19,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 20,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 21,
"kind": "registration",
"seam": "registerTool",
"label": "registerTool.execute",
"status": "blocked",
"error": "fetch failed",
"reason": "captured tool requires live network access",
"blockedBy": "clawrouter-live-network-tools"
},
{
"captureIndex": 29,
"kind": "registration",
"seam": "registerService",
"label": "registerService",
"status": "blocked",
"reason": "captured registration requires includeLifecycle=true"
}
]
},
{
"artifactPath": ".crabpot/results/clawrouter/execution-profile.json",
"fixture": "clawrouter",
"kind": "profile",
"entrypoint": "-",
"status": "pass",
"summary": {
"stepCount": 7,
"failCount": 0,
"totalWallMs": 27807,
"maxPeakRssMb": 1123.9,
"maxCpuMsEstimate": 17790
},
"slowestSteps": [
{
"fixture": "clawrouter",
"entrypoint": "cold-import.extension:clawrouter:plugins-clawrouter-dist-index-js",
"packagePath": "plugins/clawrouter/package.json",
"status": "dependency-install-required",
"kind": "synthetic-probe",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"cwd": ".crabpot/workspaces/clawrouter",
"artifactPath": ".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json",
"exitCode": 0,
"wallMs": 12125,
"peakRssMb": 139,
"peakCpuPercent": 42.3,
"cpuMsEstimate": 593
},
{
"fixture": "clawrouter",
"entrypoint": "cold-import.extension:clawrouter:plugins-clawrouter-dist-index-js",
"packagePath": "plugins/clawrouter/package.json",
"status": "dependency-install-required",
"kind": "install",
"command": "npm install --ignore-scripts",
"cwd": ".crabpot/workspaces/clawrouter",
"artifactPath": null,
"exitCode": 0,
"wallMs": 7565,
"peakRssMb": 1123.9,
"peakCpuPercent": 349.6,
"cpuMsEstimate": 17790
},
{
"fixture": "clawrouter",
"entrypoint": "cold-import.extension:clawrouter:plugins-clawrouter-dist-index-js",
"packagePath": "plugins/clawrouter/package.json",
"status": "dependency-install-required",
"kind": "prepare",
"command": "mkdir -p .crabpot/workspaces/clawrouter && rsync -a --delete plugins/clawrouter/ .crabpot/workspaces/clawrouter/",
"cwd": ".",
"artifactPath": null,
"exitCode": 0,
"wallMs": 4427,
"peakRssMb": 0,
"peakCpuPercent": 0,
"cpuMsEstimate": 0
},
{
"fixture": "clawrouter",
"entrypoint": "cold-import.extension:clawrouter:plugins-clawrouter-dist-index-js",
"packagePath": "plugins/clawrouter/package.json",
"status": "dependency-install-required",
"kind": "audit",
"command": "npm audit --json > ../../results/clawrouter/package-audit.json || true",
"cwd": ".crabpot/workspaces/clawrouter",
"artifactPath": ".crabpot/results/clawrouter/package-audit.json",
"exitCode": 0,
"rawExitCode": 1,
"wallMs": 1526,
"peakRssMb": 110.3,
"peakCpuPercent": 40.8,
"cpuMsEstimate": 477
},
{
"fixture": "clawrouter",
"entrypoint": "cold-import.extension:clawrouter:plugins-clawrouter-dist-index-js",
"packagePath": "plugins/clawrouter/package.json",
"status": "dependency-install-required",
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.capture.json",
"cwd": ".crabpot/workspaces/clawrouter",
"artifactPath": ".crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.capture.json",
"exitCode": 0,
"wallMs": 1225,
"peakRssMb": 78.7,
"peakCpuPercent": 16.8,
"cpuMsEstimate": 145
}
]
},
{
"artifactPath": ".crabpot/results/clawrouter/package-audit.json",
"fixture": "clawrouter",
"kind": "audit",
"entrypoint": "-",
"status": "warning",
"findingCount": 12,
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 11,
"high": 1,
"critical": 0,
"total": 12
}
}
]
}

View File

@ -5,30 +5,70 @@ Results dir: .crabpot/results
## Summary
| Metric | Value |
| ---------------------------- | ----- |
| Artifacts | 2 |
| Capture artifacts | 1 |
| Synthetic artifacts | 1 |
| Captured registrations/hooks | 8 |
| Pass | 6 |
| Fail | 0 |
| Blocked | 2 |
| Metric | Value |
| ---------------------------- | --------- |
| Artifacts | 4 |
| Capture artifacts | 1 |
| Synthetic artifacts | 1 |
| Audit artifacts | 1 |
| Profile artifacts | 1 |
| Captured registrations/hooks | 30 |
| Audit findings | 12 |
| Execution wall | 27807 ms |
| Max peak RSS | 1123.9 MB |
| Max CPU estimate | 17790 ms |
| Pass | 12 |
| Fail | 0 |
| Blocked | 18 |
## Artifacts
| Fixture | Kind | Status | Entrypoint | Result | Artifact |
| ------- | --------- | -------- | ---------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------- |
| wecom | capture | captured | .crabpot/workspaces/wecom/index.js | 8 captured | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json |
| wecom | synthetic | captured | .crabpot/workspaces/wecom/index.js | 6 pass / 0 fail / 2 blocked | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json |
| Fixture | Kind | Status | Entrypoint | Result | Artifact |
| ---------- | --------- | -------- | -------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| clawrouter | capture | captured | .crabpot/workspaces/clawrouter/dist/index.js | 30 captured | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.capture.json |
| clawrouter | synthetic | captured | .crabpot/workspaces/clawrouter/dist/index.js | 12 pass / 0 fail / 18 blocked | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | profile | pass | - | 7 steps / 27807 ms / 1123.9 MB | .crabpot/results/clawrouter/execution-profile.json |
| clawrouter | audit | warning | - | 12 audit findings | .crabpot/results/clawrouter/package-audit.json |
## Blocked Synthetic Probes
| Fixture | Kind | Seam | Label | Reason | Artifact |
| ------- | ------------ | --------------- | --------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| wecom | registration | registerChannel | registerChannel | captured registration requires includeChannelRuntime=true | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json |
| wecom | registration | registerTool | registerTool | captured registration has no object descriptor | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json |
| Fixture | Kind | Seam | Label | Reason | Artifact |
| ---------- | ------------ | --------------- | -------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerTool | registerTool.execute | captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | registration | registerService | registerService | captured registration requires includeLifecycle=true | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
## Failed Synthetic Probes
_none_
## Dependency Audit Artifacts
| Fixture | Findings | Vulnerabilities | Artifact |
| ---------- | -------- | ----------------------------------------------------------------- | ---------------------------------------------- |
| clawrouter | 12 | {"info":0,"low":0,"moderate":11,"high":1,"critical":0,"total":12} | .crabpot/results/clawrouter/package-audit.json |
## Execution Profiles
| Fixture | Step | Wall | Peak RSS | CPU Estimate | Command |
| ---------- | --------------- | -------- | --------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| clawrouter | synthetic-probe | 12125 ms | 139 MB | 593 ms | CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json |
| clawrouter | install | 7565 ms | 1123.9 MB | 17790 ms | npm install --ignore-scripts |
| clawrouter | prepare | 4427 ms | 0 MB | 0 ms | mkdir -p .crabpot/workspaces/clawrouter && rsync -a --delete plugins/clawrouter/ .crabpot/workspaces/clawrouter/ |
| clawrouter | audit | 1526 ms | 110.3 MB | 477 ms | npm audit --json > ../../results/clawrouter/package-audit.json || true |
| clawrouter | capture | 1225 ms | 78.7 MB | 145 ms | CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.capture.json |

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
# Crabpot Generated Surface Fixture
Generated: 2026-05-05T03:26:53.567Z
Status: PASS
## Summary
| Metric | Value |
| --------------------------- | ----- |
| Expected hooks | 35 |
| Expected registrars | 49 |
| Expected direct callbacks | 1 |
| Expected SDK exports | 296 |
| Expected manifest contracts | 17 |
| Static hooks | 35 |
| Static registrars | 49 |
| Static SDK imports | 296 |
| Static manifest contracts | 17 |
| Runtime hooks | 35 |
| Runtime registrars | 49 |
| Runtime direct callbacks | 1 |
| Missing static surface | 0 |
| Missing runtime surface | 0 |
## Missing Static Surface
_none_
## Missing Runtime Surface
_none_
## Errors
_none_

View File

@ -1,13 +1,162 @@
{
"generatedAt": "deterministic",
"mode": "subprocess-cold-import-loop",
"mode": "openclaw-loader-lifecycle-profile",
"entrypoint": "test/fixtures/lazy-import-plugin.mjs",
"baseline": {
"mode": "minimal-plugin-capture",
"runs": 3,
"entrypoint": ".crabpot/import-loop/baseline-plugin.mjs",
"reference": {
"wallMs": 2442,
"peakRssMb": 334.6,
"cpuMsEstimate": 4745
},
"max": {
"wallMs": 2958,
"peakRssMb": 347.9,
"cpuMsEstimate": 5384
},
"statSampleCount": 306,
"rssSampleCount": 306,
"cpuSampleCount": 306,
"failCount": 0,
"samples": [
{
"index": 0,
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 84.8,
"activationMs": 0.3,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 84.8,
"source": "/tmp/crabpot-openclaw-plugin-g9AntI/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 0.3,
"source": "/tmp/crabpot-openclaw-plugin-g9AntI/index.mjs"
}
]
},
"wallMs": 2958,
"peakRssMb": 334.6,
"peakCpuPercent": 201,
"cpuMsEstimate": 5384,
"statSampleCount": 116,
"rssSampleCount": 116,
"cpuSampleCount": 116,
"stderrPreview": ""
},
{
"index": 1,
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 80.5,
"activationMs": 0.3,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 80.5,
"source": "/tmp/crabpot-openclaw-plugin-xTmlDT/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 0.3,
"source": "/tmp/crabpot-openclaw-plugin-xTmlDT/index.mjs"
}
]
},
"wallMs": 2384,
"peakRssMb": 323.7,
"peakCpuPercent": 223,
"cpuMsEstimate": 4656,
"statSampleCount": 94,
"rssSampleCount": 94,
"cpuSampleCount": 94,
"stderrPreview": ""
},
{
"index": 2,
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 93,
"activationMs": 0.4,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 93,
"source": "/tmp/crabpot-openclaw-plugin-AFW5fW/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 0.4,
"source": "/tmp/crabpot-openclaw-plugin-AFW5fW/index.mjs"
}
]
},
"wallMs": 2442,
"peakRssMb": 347.9,
"peakCpuPercent": 223,
"cpuMsEstimate": 4745,
"statSampleCount": 96,
"rssSampleCount": 96,
"cpuSampleCount": 96,
"stderrPreview": ""
}
]
},
"summary": {
"runs": 3,
"p50WallMs": 950,
"p95WallMs": 1023,
"maxPeakRssMb": 45.5,
"maxCpuMsEstimate": 208,
"baselineRuns": 3,
"baselineFailCount": 0,
"p50WallMs": 2421,
"p95WallMs": 2471,
"p50PluginWallDeltaMs": 0,
"p95PluginWallDeltaMs": 29,
"openClawLifecycleCount": 3,
"p50OpenClawImportMs": 84,
"p95OpenClawImportMs": 88.6,
"p50OpenClawActivationMs": 0.3,
"p95OpenClawActivationMs": 1.2,
"maxPeakRssMb": 347.9,
"maxCpuMsEstimate": 4780,
"maxPluginPeakRssDeltaMb": 13.3,
"maxPluginCpuDeltaMsEstimate": 35,
"baselineReferenceWallMs": 2442,
"baselineReferencePeakRssMb": 334.6,
"baselineReferenceCpuMsEstimate": 4745,
"statSampleCount": 287,
"rssSampleCount": 287,
"cpuSampleCount": 287,
"capturedCount": 6,
"failCount": 0
},
@ -17,33 +166,120 @@
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"wallMs": 950,
"peakRssMb": 44.2,
"peakCpuPercent": 21.9,
"cpuMsEstimate": 208,
"stderrPreview": ""
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 84,
"activationMs": 0.3,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 84,
"source": "/tmp/crabpot-openclaw-plugin-3UJxq3/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 0.3,
"source": "/tmp/crabpot-openclaw-plugin-3UJxq3/index.mjs"
}
]
},
"wallMs": 2471,
"peakRssMb": 342.6,
"peakCpuPercent": 220,
"cpuMsEstimate": 4780,
"statSampleCount": 97,
"rssSampleCount": 97,
"cpuSampleCount": 97,
"stderrPreview": "",
"pluginWallDeltaMs": 29,
"pluginPeakRssDeltaMb": 8,
"pluginCpuDeltaMsEstimate": 35
},
{
"index": 1,
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"wallMs": 1023,
"peakRssMb": 11.7,
"peakCpuPercent": 1.6,
"cpuMsEstimate": 16,
"stderrPreview": ""
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 81.8,
"activationMs": 0.3,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 81.8,
"source": "/tmp/crabpot-openclaw-plugin-gwHDg0/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 0.3,
"source": "/tmp/crabpot-openclaw-plugin-gwHDg0/index.mjs"
}
]
},
"wallMs": 2421,
"peakRssMb": 333.8,
"peakCpuPercent": 225,
"cpuMsEstimate": 4743,
"statSampleCount": 96,
"rssSampleCount": 96,
"cpuSampleCount": 96,
"stderrPreview": "",
"pluginWallDeltaMs": 0,
"pluginPeakRssDeltaMb": 0,
"pluginCpuDeltaMsEstimate": 0
},
{
"index": 2,
"exitCode": 0,
"status": "captured",
"capturedCount": 2,
"wallMs": 740,
"peakRssMb": 45.5,
"peakCpuPercent": 24.8,
"cpuMsEstimate": 184,
"stderrPreview": ""
"openClawLifecycle": {
"status": "loaded",
"pluginId": "crabpot-lifecycle-probe",
"importPhase": "full",
"activationPhase": "full:register",
"importMs": 88.6,
"activationMs": 1.2,
"openclawPath": "/home/runner/work/crabpot/crabpot/openclaw",
"phases": [
{
"phase": "full",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 88.6,
"source": "/tmp/crabpot-openclaw-plugin-78B9Ov/index.mjs"
},
{
"phase": "full:register",
"pluginId": "crabpot-lifecycle-probe",
"elapsedMs": 1.2,
"source": "/tmp/crabpot-openclaw-plugin-78B9Ov/index.mjs"
}
]
},
"wallMs": 2392,
"peakRssMb": 347.9,
"peakCpuPercent": 220,
"cpuMsEstimate": 4639,
"statSampleCount": 94,
"rssSampleCount": 94,
"cpuSampleCount": 94,
"stderrPreview": "",
"pluginWallDeltaMs": 0,
"pluginPeakRssDeltaMb": 13.3,
"pluginCpuDeltaMsEstimate": 0
}
]
}

View File

@ -1,25 +1,58 @@
# Crabpot Import Loop Profile
Generated: deterministic
Mode: subprocess-cold-import-loop
Mode: openclaw-loader-lifecycle-profile
Entrypoint: test/fixtures/lazy-import-plugin.mjs
## Summary
| Metric | Value |
| ---------------- | ----- |
| runs | 3 |
| p50WallMs | 950 |
| p95WallMs | 1023 |
| maxPeakRssMb | 45.5 |
| maxCpuMsEstimate | 208 |
| capturedCount | 6 |
| failCount | 0 |
| Metric | Value |
| ------------------------------ | -------- |
| runs | 3 |
| baselineRuns | 3 |
| baselineFailCount | 0 |
| p50WallMs | 2421 |
| p95WallMs | 2471 |
| p50PluginWallDeltaMs | 0 |
| p95PluginWallDeltaMs | 29 |
| maxPluginPeakRssDeltaMb | 13.3 MB |
| maxPluginCpuDeltaMsEstimate | 35 ms |
| openClawLifecycleCount | 3 |
| p50OpenClawImportMs | 84 ms |
| p95OpenClawImportMs | 88.6 ms |
| p50OpenClawActivationMs | 0.3 ms |
| p95OpenClawActivationMs | 1.2 ms |
| maxPeakRssMb | 347.9 MB |
| maxCpuMsEstimate | 4780 ms |
| baselineReferenceWallMs | 2442 ms |
| baselineReferencePeakRssMb | 334.6 MB |
| baselineReferenceCpuMsEstimate | 4745 ms |
| statSampleCount | 287 |
| rssSampleCount | 287 |
| cpuSampleCount | 287 |
| capturedCount | 6 |
| failCount | 0 |
## Harness Baseline
| Metric | Value |
| ---------------------- | ---------------------------------------- |
| mode | minimal-plugin-capture |
| runs | 3 |
| entrypoint | .crabpot/import-loop/baseline-plugin.mjs |
| referenceWallMs | 2442 ms |
| referencePeakRssMb | 334.6 MB |
| referenceCpuMsEstimate | 4745 ms |
| maxWallMs | 2958 ms |
| maxPeakRssMb | 347.9 MB |
| maxCpuMsEstimate | 5384 ms |
| statSampleCount | 306 |
| failCount | 0 |
## Samples
| Run | Status | Captured | Wall | Peak RSS | CPU Estimate | Exit |
| --- | -------- | -------- | ------- | -------- | ------------ | ---- |
| 0 | captured | 2 | 950 ms | 44.2 MB | 208 ms | 0 |
| 1 | captured | 2 | 1023 ms | 11.7 MB | 16 ms | 0 |
| 2 | captured | 2 | 740 ms | 45.5 MB | 184 ms | 0 |
| Run | Status | Captured | OpenClaw Import | OpenClaw Activate | Plugin Wall Delta | Plugin RSS Delta | Plugin CPU Delta | Raw Wall | Raw Peak RSS | Raw CPU Estimate | RSS/CPU samples | Exit |
| --- | -------- | -------- | --------------- | ----------------- | ----------------- | ---------------- | ---------------- | -------- | ------------ | ---------------- | --------------- | ---- |
| 0 | captured | 2 | 84 ms | 0.3 ms | 29 ms | 8 MB | 35 ms | 2471 ms | 342.6 MB | 4780 ms | 97/97 | 0 |
| 1 | captured | 2 | 81.8 ms | 0.3 ms | 0 ms | 0 MB | 0 ms | 2421 ms | 333.8 MB | 4743 ms | 96/96 | 0 |
| 2 | captured | 2 | 88.6 ms | 1.2 ms | 0 ms | 13.3 MB | 0 ms | 2392 ms | 347.9 MB | 4639 ms | 94/94 | 0 |

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More