feat(n8n): KBDB community node 薄殼——對照表 那半的八個動作

leo 2026-08-15「有效才正式開發」下一格:紙上考卷驗過的動作集做成真的 n8n 節點。
詞彙照定案(sheet/field/record,InkStoneCo system-dev/wiki/kbdb-詞彙表.md)。

- 動作 ↔ API 映射收斂在 nodes/Kbdb/actions.ts(純函式),20 個 vitest 釘死
  ——就是動作對照表  那半的機器版;🔴/◐ 的動作刻意不存在,呼叫丟
  「沒有這個能力」(07-thin-shell §3.1:API 沒有的能力不拼裝)
- 對外走 cypher-executor /kbdb/* proxy(X-Arcrun-API-Key),不直連 kbdb worker
- Add a field 不掛:proxy 無 PATCH /kbdb/templates(實測 404);base 端
  PATCH /templates/:id 語意是 slots 整組覆蓋(本地實測),不是加一欄

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-08-15 19:33:55 +08:00
parent 576afa2364
commit 87f6de7c9f
9 changed files with 3504 additions and 0 deletions
@@ -0,0 +1,56 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
/**
* KBDB 憑證=「哪一台 Arcrun 實例(cypher-executor)+哪個 namespace」。
* 認證走 X-Arcrun-API-Key headercypher 的 /kbdb/* proxy 以它當租戶 owner_id)。
* 薄殼:這裡只描述連線,不含任何業務邏輯。
*/
export class KbdbApi implements ICredentialType {
name = 'kbdbApi';
displayName = 'KBDB API';
documentationUrl = 'https://arcrun.dev';
properties: INodeProperties[] = [
{
displayName: 'Base URL',
name: 'baseUrl',
type: 'string',
default: '',
placeholder: 'https://arcrun-cypher-executor.<your-subdomain>.workers.dev',
description: '你的 Arcrun 實例(cypher-executor)網址——KBDB 的對外入口',
required: true,
},
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
default: '',
description: 'Arcrun API keynamespace)。你的資料只在這個 namespace 裡,別人看不到',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-Arcrun-API-Key': '={{$credentials.apiKey}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials.baseUrl}}',
url: '/kbdb/templates',
},
};
}