mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 09:39:25 +00:00
## What Problem This Solves
Doctor silently copies LINE direct-message permissions into group access when an operator runs `doctor --fix` with no group allowlist.
## Scope and existing permissions
- Doctor no longer creates a LINE group allowlist from the direct-message allowlist.
- Existing `groupAllowFrom` values remain unchanged. Doctor cannot tell whether an earlier value was copied by maintenance or deliberately configured by the operator.
- The capability flag uses the existing plugin manifest contract. This change adds no configuration key, schema, migration, protocol, or SDK contract.
- Supersedes #146171 by @edenfunf and preserves the contributor's three commits and authorship. The original report is #146169.
## Validation status
- The retained main reproduction shows `doctor --fix` adding the DM-only sender to group access.
- Candidate CLI evidence shows the key remains absent, repeated repair preserves that result, and an existing group list remains unchanged.
- All six committed CLI cases pass for permission separation, normalized-empty sender entries, shadowed group/room aliases, and reference-backed lists. References now receive checking guidance without false working or blocked claims; saved permissions remain unchanged.
- Fresh merge `2af5aed7630e584ef8533d60bbb339b188e385b9`, with candidate parent `88496f01eb4541446bb9d2599f1ce06a1843d6d6` and main parent `3d8e779759`, passed 1,093 tests: 1,039 LINE, 48 Doctor discovery/migration/shared-warning, and six CLI cases.
- The final commit only moves the unchanged CLI regression to `test/e2e`. Both routing regressions and all six CLI cases pass at the new path. CI run [34767626917](https://github.com/openclaw/openclaw/actions/runs/34767626917) is green at `e5235e0fa5b7243903e708ba36a21b9d41e68e03`.
- The generated channel catalog matches its owner script's output.
```sh
OPENCLAW_E2E_USE_PREBUILT_DIST=1 node scripts/run-vitest.mjs run test/e2e/line-doctor-group-allowlist.built-cli.e2e.test.ts
OPENCLAW_E2E_USE_PREBUILT_DIST=1 node scripts/run-vitest.mjs run test/scripts/test-projects.test.ts -t 'chunks.*broad shell helper'
```
## Consumers
Doctor’s metadata resolver, fallback repair, and warning scanner consume the LINE declaration and adapter. LINE admission, explicit allowlist editing, directory reads, and account inheritance keep their existing contracts. Metadata uses its existing process and refresh lifecycle.
## Limits
- Empty wildcard overrides over a nonempty `groupAllowFrom` and per-group empty lists under `groupPolicy: "open"` remain outside this change.
- The evidence covers Doctor configuration and warning behavior. It does not claim a live LINE message round trip.
Co-authored-by: xuyuanhao <aa9736195201@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
138 lines
3.4 KiB
JSON
138 lines
3.4 KiB
JSON
{
|
|
"name": "@openclaw/line",
|
|
"version": "2026.9.4",
|
|
"description": "OpenClaw LINE channel plugin for LINE Bot API chats.",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/openclaw/openclaw"
|
|
},
|
|
"type": "module",
|
|
"dependencies": {
|
|
"@line/bot-sdk": "11.2.0",
|
|
"typebox": "1.3.27",
|
|
"zod": "4.5.4"
|
|
},
|
|
"devDependencies": {
|
|
"@openclaw/plugin-sdk": "workspace:*",
|
|
"openclaw": "workspace:*"
|
|
},
|
|
"peerDependencies": {
|
|
"openclaw": ">=2026.9.4"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"openclaw": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"openclaw": {
|
|
"extensions": [
|
|
"./index.ts"
|
|
],
|
|
"setupEntry": "./setup-entry.ts",
|
|
"setupFeatures": {
|
|
"configPromotion": true
|
|
},
|
|
"channel": {
|
|
"id": "line",
|
|
"configuredState": {
|
|
"env": {
|
|
"allOf": [
|
|
"LINE_CHANNEL_ACCESS_TOKEN",
|
|
"LINE_CHANNEL_SECRET"
|
|
]
|
|
}
|
|
},
|
|
"label": "LINE",
|
|
"selectionLabel": "LINE (Messaging API)",
|
|
"detailLabel": "LINE Bot",
|
|
"docsPath": "/channels/line",
|
|
"docsLabel": "line",
|
|
"blurb": "LINE Messaging API webhook bot.",
|
|
"systemImage": "message",
|
|
"order": 75,
|
|
"quickstartAllowFrom": true,
|
|
"doctorCapabilities": {
|
|
"dmAllowFromMode": "topOnly",
|
|
"groupModel": "sender",
|
|
"groupAllowFromFallbackToAllowFrom": false,
|
|
"warnOnEmptyGroupSenderAllowlist": true
|
|
},
|
|
"setup": {
|
|
"fields": [
|
|
{
|
|
"key": "channelAccessToken",
|
|
"kind": "string",
|
|
"sensitive": true,
|
|
"cli": {
|
|
"flags": "--channel-access-token <token>",
|
|
"description": "LINE channel access token"
|
|
}
|
|
},
|
|
{
|
|
"key": "token",
|
|
"kind": "string",
|
|
"sensitive": true,
|
|
"cli": {
|
|
"flags": "--token <token>",
|
|
"description": "LINE channel access token (alias)"
|
|
}
|
|
},
|
|
{
|
|
"key": "channelSecret",
|
|
"kind": "string",
|
|
"sensitive": true,
|
|
"cli": {
|
|
"flags": "--channel-secret <secret>",
|
|
"description": "LINE channel secret"
|
|
}
|
|
},
|
|
{
|
|
"key": "tokenFile",
|
|
"kind": "string",
|
|
"sensitive": true,
|
|
"cli": {
|
|
"flags": "--token-file <path>",
|
|
"description": "LINE access token file"
|
|
}
|
|
},
|
|
{
|
|
"key": "secretFile",
|
|
"kind": "string",
|
|
"sensitive": true,
|
|
"cli": {
|
|
"flags": "--secret-file <path>",
|
|
"description": "LINE channel secret file"
|
|
}
|
|
},
|
|
{
|
|
"key": "useEnv",
|
|
"kind": "boolean",
|
|
"cli": {
|
|
"flags": "--use-env",
|
|
"description": "Use LINE environment credentials"
|
|
},
|
|
"envVars": [
|
|
"LINE_CHANNEL_ACCESS_TOKEN",
|
|
"LINE_CHANNEL_SECRET"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"install": {
|
|
"npmSpec": "@openclaw/line",
|
|
"defaultChoice": "npm",
|
|
"minHostVersion": ">=2026.4.10"
|
|
},
|
|
"compat": {
|
|
"pluginApi": ">=2026.9.4"
|
|
},
|
|
"build": {
|
|
"openclawVersion": "2026.9.4"
|
|
},
|
|
"release": {
|
|
"publishToClawHub": true,
|
|
"publishToNpm": true
|
|
}
|
|
}
|
|
}
|