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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +140 -0
  3. package/bin/xitto-kernel.js +3 -0
  4. package/docs/01-architecture.md +105 -0
  5. package/docs/02-domain-pack-spec.md +109 -0
  6. package/docs/03-kernel-contract.md +79 -0
  7. package/docs/04-migration-from-xitto-code.md +70 -0
  8. package/docs/05-example-packs.md +95 -0
  9. package/docs/06-authoring-a-pack.md +86 -0
  10. package/package.json +55 -0
  11. package/src/app/cli.js +243 -0
  12. package/src/app/index.js +5 -0
  13. package/src/app/main.js +87 -0
  14. package/src/app/markdown.js +36 -0
  15. package/src/app/providers.js +39 -0
  16. package/src/app/scaffold.js +40 -0
  17. package/src/app/templates/README.md.tmpl +32 -0
  18. package/src/app/templates/gitignore.tmpl +4 -0
  19. package/src/app/templates/index.js.tmpl +7 -0
  20. package/src/app/templates/pack.js.tmpl +32 -0
  21. package/src/app/templates/package.json.tmpl +12 -0
  22. package/src/index.js +15 -0
  23. package/src/kernel/agent-loop.js +285 -0
  24. package/src/kernel/compaction.js +65 -0
  25. package/src/kernel/guard-chain.js +42 -0
  26. package/src/kernel/hooks.js +47 -0
  27. package/src/kernel/index.js +291 -0
  28. package/src/kernel/mcp.js +54 -0
  29. package/src/kernel/memory.js +45 -0
  30. package/src/kernel/pack-loader.js +45 -0
  31. package/src/kernel/provider.js +20 -0
  32. package/src/kernel/security/allow.js +41 -0
  33. package/src/kernel/security/danger.js +37 -0
  34. package/src/kernel/security/permission-step.js +63 -0
  35. package/src/kernel/security/sandbox.js +111 -0
  36. package/src/kernel/session.js +36 -0
  37. package/src/kernel/skills.js +37 -0
  38. package/src/kernel/subagent.js +46 -0
  39. package/src/kernel/tool-registry.js +45 -0
  40. package/src/packs/coding/index.js +157 -0
  41. package/src/packs/data-query/index.js +67 -0
  42. package/src/packs/notes/index.js +79 -0
  43. 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 {}; // 純型別模組