dsh-hams 0.1.2 → 0.1.4

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 (49) hide show
  1. package/README.md +4 -0
  2. package/dist/index.js +11335 -0
  3. package/package.json +9 -5
  4. package/src/domain/check.ts +0 -193
  5. package/src/domain/errors.ts +0 -59
  6. package/src/domain/evidence.ts +0 -134
  7. package/src/domain/ids.ts +0 -31
  8. package/src/host/chat-runtime.ts +0 -489
  9. package/src/host/dsh-adapter.ts +0 -867
  10. package/src/host/session-adapter.ts +0 -276
  11. package/src/http/handler.ts +0 -1132
  12. package/src/index.js +0 -53
  13. package/src/service/audit.ts +0 -92
  14. package/src/service/chat.ts +0 -1100
  15. package/src/service/contracts.ts +0 -193
  16. package/src/service/defaults.ts +0 -182
  17. package/src/service/deliverables.ts +0 -240
  18. package/src/service/hams.ts +0 -3103
  19. package/src/service/knowledge.ts +0 -940
  20. package/src/service/member-config.ts +0 -39
  21. package/src/service/members.ts +0 -506
  22. package/src/service/memory.ts +0 -375
  23. package/src/service/permissions.ts +0 -118
  24. package/src/service/project-lifecycle.ts +0 -233
  25. package/src/service/projects.ts +0 -840
  26. package/src/service/receipts.ts +0 -63
  27. package/src/service/templates.ts +0 -140
  28. package/src/service/tick.ts +0 -751
  29. package/src/service/tools.ts +0 -711
  30. package/src/service/types.ts +0 -219
  31. package/src/service/work-item-create.ts +0 -159
  32. package/src/service/workspace-profile.ts +0 -443
  33. package/src/store/backup.ts +0 -239
  34. package/src/store/bootstrap.ts +0 -225
  35. package/src/store/db.ts +0 -179
  36. package/src/store/lock.ts +0 -194
  37. package/src/store/migrations.ts +0 -211
  38. package/src/store/schema/001_p1.sql +0 -846
  39. package/src/store/schema/001_p1.sql.ts +0 -865
  40. package/src/store/schema/002_knowledge.sql +0 -54
  41. package/src/store/schema/002_knowledge.sql.ts +0 -68
  42. package/src/store/schema/003_projects.sql.ts +0 -3
  43. package/src/store/schema/004_team.sql.ts +0 -50
  44. package/src/store/schema/005_target_check.sql.ts +0 -22
  45. package/src/store/schema/006_target_flow.sql.ts +0 -19
  46. package/src/store/schema/007_project_delete.sql.ts +0 -17
  47. package/src/store/schema/008_memory.sql.ts +0 -47
  48. package/src/store/schema/generate-projects.mjs +0 -16
  49. package/src/store/seed.ts +0 -114
package/src/index.js DELETED
@@ -1,53 +0,0 @@
1
- /**
2
- * dsh-hams 插件入口(Cordis)。
3
- *
4
- * 这一层只做三件事:声明插件名/注入的服务、可选的配置 schema、把上下文交给
5
- * `registerHams`(宿主适配器)。业务逻辑全在 src/service 与 src/store,入口保持薄。
6
- *
7
- * 说明:本文件是纯 JS,避免依赖构建链;它 import 的 `.ts` 模块由宿主 Node 24 的
8
- * 类型剥离直接执行(本机 Node 24.21 已跑通全量自测)。
9
- */
10
- import { applyHams } from './host/dsh-adapter.ts'
11
-
12
- let z = null
13
- try {
14
- ({ default: z } = await import('@deepseek-ai/schemastery'))
15
- } catch (error) {
16
- // 解析不到共享包不能让插件启动失败:配置校验退化为「按默认值」。
17
- console.error('[hams] 无法导入 @deepseek-ai/schemastery,跳过配置校验:', error?.message ?? error)
18
- }
19
-
20
- export const name = 'hams'
21
- export const inject = ['tools', 'webServer']
22
-
23
- export const Config = z
24
- ? z.object({
25
- /** 数据目录;空 = $DSH_HOME/hams */
26
- dataDir: z.string().default(''),
27
- /** tick 周期(毫秒) */
28
- tickMs: z.number().default(5000),
29
- /** 本机操作者 member id;空 = 查 hams_user(auth_source='local_host') */
30
- localPrincipalId: z.string().default(''),
31
- /** 首次认领时线程尚未建立,用它兜底(P1 单 bot) */
32
- defaultBotMemberId: z.string().default(''),
33
- /** 排障用:关掉工具或 tick */
34
- toolsEnabled: z.boolean().default(true),
35
- /** bot 运行时:单聊/群聊会话与工作项派发;默认开 */
36
- botRuntime: z.boolean().default(true),
37
- tickEnabled: z.boolean().default(true),
38
- /** 升级前备份保留份数 */
39
- backupKeep: z.number().default(3),
40
- /** 浏览器会话校验:auto = 宿主有 connection 就用它;require = 没有就拒绝;off = 只给测试 */
41
- hostSession: z.union([z.const('auto'), z.const('require'), z.const('off')]).default('auto'),
42
- /** 知识屏扫描的真实技能目录;空 = $DSH_HOME/skills */
43
- knowledgeSkillDirs: z.array(z.string()).default([]),
44
- /** 工作区画像文件;空 = $DSH_HOME/hams/workspace-profile.json */
45
- workspaceProfileFile: z.string().default(''),
46
- /** 画像里相对路径的根;空 = 读画像里的 workspaceRoot */
47
- workspaceRoot: z.string().default(''),
48
- })
49
- : undefined
50
-
51
- export function apply(ctx, config = {}) {
52
- return applyHams(ctx, config ?? {})
53
- }
@@ -1,92 +0,0 @@
1
- /**
2
- * 审计、时间线与变更游标。
3
- *
4
- * 三者都只追加:`audit_log` 与 `work_item_event` 有触发器禁止 UPDATE;`change_log`
5
- * 靠自增 seq 生成界面游标。任何写命令都应当在这三张表里留下痕迹——顺序固定:
6
- * 先改业务行,再写事件 / 变更 / 审计(同一事务内,失败一起回滚)。
7
- */
8
- import type { DatabaseSync } from 'node:sqlite'
9
- import type { Channel, MemberKind } from './types.ts'
10
-
11
- export interface AuditEntry {
12
- actorId: string
13
- actorKind: MemberKind
14
- onBehalfOf?: string | null
15
- channel: Channel
16
- authSubject?: string | null
17
- hostPreset?: string | null
18
- action: string
19
- subjectKind: string
20
- subjectId: string
21
- before?: unknown
22
- after?: unknown
23
- correlationId: string
24
- at: number
25
- }
26
-
27
- export function writeAudit(db: DatabaseSync, id: string, entry: AuditEntry): void {
28
- db.prepare(
29
- `INSERT INTO audit_log
30
- (id, actor_id, actor_kind, on_behalf_of, channel, auth_subject, host_preset,
31
- action, subject_kind, subject_id, before_json, after_json, correlation_id, created_at)
32
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
33
- ).run(
34
- id,
35
- entry.actorId,
36
- entry.actorKind,
37
- entry.onBehalfOf ?? null,
38
- entry.channel,
39
- entry.authSubject ?? null,
40
- entry.hostPreset ?? null,
41
- entry.action,
42
- entry.subjectKind,
43
- entry.subjectId,
44
- entry.before === undefined ? null : JSON.stringify(entry.before),
45
- entry.after === undefined ? null : JSON.stringify(entry.after),
46
- entry.correlationId,
47
- entry.at,
48
- )
49
- }
50
-
51
- export interface EventEntry {
52
- workItemId: string
53
- kind: string
54
- actorId: string
55
- actorKind: MemberKind
56
- payload?: Record<string, unknown>
57
- revision: number
58
- executionEpoch: number
59
- at: number
60
- }
61
-
62
- export function writeEvent(db: DatabaseSync, id: string, entry: EventEntry): void {
63
- db.prepare(
64
- `INSERT INTO work_item_event
65
- (id, work_item_id, kind, actor_id, actor_kind, payload_json, revision, execution_epoch, created_at)
66
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
67
- ).run(
68
- id,
69
- entry.workItemId,
70
- entry.kind,
71
- entry.actorId,
72
- entry.actorKind,
73
- JSON.stringify(entry.payload ?? {}),
74
- entry.revision,
75
- entry.executionEpoch,
76
- entry.at,
77
- )
78
- }
79
-
80
- export interface ChangeEntry {
81
- objectKind: string
82
- objectId: string
83
- revision: number
84
- changeKind: string
85
- at: number
86
- }
87
-
88
- export function writeChange(db: DatabaseSync, entry: ChangeEntry): void {
89
- db.prepare(
90
- `INSERT INTO change_log (object_kind, object_id, revision, change_kind, created_at) VALUES (?, ?, ?, ?, ?)`,
91
- ).run(entry.objectKind, entry.objectId, entry.revision, entry.changeKind, entry.at)
92
- }