87f6de7c9f
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>
57 lines
1.3 KiB
TypeScript
57 lines
1.3 KiB
TypeScript
import type {
|
||
IAuthenticateGeneric,
|
||
ICredentialTestRequest,
|
||
ICredentialType,
|
||
INodeProperties,
|
||
} from 'n8n-workflow';
|
||
|
||
/**
|
||
* KBDB 憑證=「哪一台 Arcrun 實例(cypher-executor)+哪個 namespace」。
|
||
* 認證走 X-Arcrun-API-Key header(cypher 的 /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 key(namespace)。你的資料只在這個 namespace 裡,別人看不到',
|
||
required: true,
|
||
},
|
||
];
|
||
|
||
authenticate: IAuthenticateGeneric = {
|
||
type: 'generic',
|
||
properties: {
|
||
headers: {
|
||
'X-Arcrun-API-Key': '={{$credentials.apiKey}}',
|
||
},
|
||
},
|
||
};
|
||
|
||
test: ICredentialTestRequest = {
|
||
request: {
|
||
baseURL: '={{$credentials.baseUrl}}',
|
||
url: '/kbdb/templates',
|
||
},
|
||
};
|
||
}
|