xitto-kernel 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +140 -0
- package/bin/xitto-kernel.js +3 -0
- package/docs/01-architecture.md +105 -0
- package/docs/02-domain-pack-spec.md +109 -0
- package/docs/03-kernel-contract.md +79 -0
- package/docs/04-migration-from-xitto-code.md +70 -0
- package/docs/05-example-packs.md +95 -0
- package/docs/06-authoring-a-pack.md +86 -0
- package/package.json +55 -0
- package/src/app/cli.js +243 -0
- package/src/app/index.js +5 -0
- package/src/app/main.js +87 -0
- package/src/app/markdown.js +36 -0
- package/src/app/providers.js +39 -0
- package/src/app/scaffold.js +40 -0
- package/src/app/templates/README.md.tmpl +32 -0
- package/src/app/templates/gitignore.tmpl +4 -0
- package/src/app/templates/index.js.tmpl +7 -0
- package/src/app/templates/pack.js.tmpl +32 -0
- package/src/app/templates/package.json.tmpl +12 -0
- package/src/index.js +15 -0
- package/src/kernel/agent-loop.js +285 -0
- package/src/kernel/compaction.js +65 -0
- package/src/kernel/guard-chain.js +42 -0
- package/src/kernel/hooks.js +47 -0
- package/src/kernel/index.js +291 -0
- package/src/kernel/mcp.js +54 -0
- package/src/kernel/memory.js +45 -0
- package/src/kernel/pack-loader.js +45 -0
- package/src/kernel/provider.js +20 -0
- package/src/kernel/security/allow.js +41 -0
- package/src/kernel/security/danger.js +37 -0
- package/src/kernel/security/permission-step.js +63 -0
- package/src/kernel/security/sandbox.js +111 -0
- package/src/kernel/session.js +36 -0
- package/src/kernel/skills.js +37 -0
- package/src/kernel/subagent.js +46 -0
- package/src/kernel/tool-registry.js +45 -0
- package/src/packs/coding/index.js +157 -0
- package/src/packs/data-query/index.js +67 -0
- package/src/packs/notes/index.js +79 -0
- package/src/types.js +79 -0
package/src/types.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// 核心型別(JSDoc,設計即文件;本檔無 runtime 程式碼,只給編輯器/讀者型別參考)。
|
|
2
|
+
// 對應設計文件 docs/02-domain-pack-spec.md 與 docs/03-kernel-contract.md。
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* kernel 的通用工具原語。kernel 不在乎工具做什麼,只在乎這個形狀。
|
|
6
|
+
* 這就是 xitto-code 既有的工具形狀,故現有工具不改即可用。
|
|
7
|
+
* @typedef {Object} Tool
|
|
8
|
+
* @property {string} name
|
|
9
|
+
* @property {string} label UI 顯示用短名
|
|
10
|
+
* @property {string} description 給模型看的用途
|
|
11
|
+
* @property {object} parameters JSON Schema
|
|
12
|
+
* @property {(id: string, params: object, signal?: AbortSignal, onUpdate?: Function, ctx?: object) => Promise<ToolResult>} execute
|
|
13
|
+
* @property {boolean} [mutating] 是否會改動狀態(預設 false)。kernel 據此推導 mutatingTools。
|
|
14
|
+
* @property {boolean} [readOnly] 是否唯讀(唯讀工具 kernel 自動放行、不問權限)。
|
|
15
|
+
* @property {boolean} [sandboxable] 執行可否被沙箱包裹(走 shell 的工具)。預設 false。
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {Object} ToolResult
|
|
20
|
+
* @property {Array<{type: string, text?: string, data?: string, mimeType?: string}>} content
|
|
21
|
+
* @property {object} [details]
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 守衛/工具可拿到的 kernel 服務(依賴注入,便於 fake kernel 單測)。
|
|
26
|
+
* 皆為領域無關能力。詳見 docs/03-kernel-contract.md。
|
|
27
|
+
* @typedef {Object} KernelServices
|
|
28
|
+
* @property {string} cwd
|
|
29
|
+
* @property {{ save: Function, list: Function }} [memory]
|
|
30
|
+
* @property {Function} [spawn] 派唯讀子 agent 做聚焦調查
|
|
31
|
+
* @property {Function} [ask] 向使用者提問
|
|
32
|
+
* @property {Function} [notify] 推訊息到 transcript
|
|
33
|
+
* @property {object} [model] 當前模型(provider 無關)
|
|
34
|
+
* @property {{ isOn: Function, wrap: Function }} [sandbox]
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 守衛決策:undefined = 放行;{block:true,reason} = 擋下並把 reason 餵回模型。
|
|
39
|
+
* @typedef {undefined | { block: true, reason: string }} PolicyDecision
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 工具前領域守衛(守衛鏈第 3 格;pack 唯一能插的位置)。
|
|
44
|
+
* @typedef {Object} PreToolPolicy
|
|
45
|
+
* @property {(ctx: object, services: KernelServices) => PolicyDecision | Promise<PolicyDecision>} check
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 每輪收尾的領域自我驗收。
|
|
50
|
+
* @typedef {Object} VerifyPolicy
|
|
51
|
+
* @property {(ctx: object) => Promise<{ ok: boolean, output?: string }>} run
|
|
52
|
+
* @property {(ctx: object) => boolean} [shouldRun] 是否該跑(編碼:本輪有改動才跑)
|
|
53
|
+
* @property {number} [maxRounds] 回灌修正上限(預設 2)
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 領域的權限/沙箱預設(會被使用者 settings.json 覆蓋)。
|
|
58
|
+
* @typedef {Object} PermissionPolicy
|
|
59
|
+
* @property {'default'|'acceptEdits'|'plan'} [defaultMode]
|
|
60
|
+
* @property {boolean|object} [sandbox]
|
|
61
|
+
* @property {string[]} [allow]
|
|
62
|
+
* @property {string[]} [deny]
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 一個領域 = 一份注入 kernel 的 DomainPack。必填三欄、選填六欄。
|
|
67
|
+
* @typedef {Object} DomainPack
|
|
68
|
+
* @property {string} name
|
|
69
|
+
* @property {() => Tool[]} tools
|
|
70
|
+
* @property {string} systemPrompt
|
|
71
|
+
* @property {string[]} [contextFiles]
|
|
72
|
+
* @property {string[]} [mutatingTools]
|
|
73
|
+
* @property {VerifyPolicy} [verify]
|
|
74
|
+
* @property {PreToolPolicy} [preToolPolicy]
|
|
75
|
+
* @property {PermissionPolicy} [permissionPolicy]
|
|
76
|
+
* @property {string} [memoryGuide]
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
export {}; // 純型別模組
|