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.
- package/README.md +4 -0
- package/dist/index.js +11335 -0
- package/package.json +9 -5
- package/src/domain/check.ts +0 -193
- package/src/domain/errors.ts +0 -59
- package/src/domain/evidence.ts +0 -134
- package/src/domain/ids.ts +0 -31
- package/src/host/chat-runtime.ts +0 -489
- package/src/host/dsh-adapter.ts +0 -867
- package/src/host/session-adapter.ts +0 -276
- package/src/http/handler.ts +0 -1132
- package/src/index.js +0 -53
- package/src/service/audit.ts +0 -92
- package/src/service/chat.ts +0 -1100
- package/src/service/contracts.ts +0 -193
- package/src/service/defaults.ts +0 -182
- package/src/service/deliverables.ts +0 -240
- package/src/service/hams.ts +0 -3103
- package/src/service/knowledge.ts +0 -940
- package/src/service/member-config.ts +0 -39
- package/src/service/members.ts +0 -506
- package/src/service/memory.ts +0 -375
- package/src/service/permissions.ts +0 -118
- package/src/service/project-lifecycle.ts +0 -233
- package/src/service/projects.ts +0 -840
- package/src/service/receipts.ts +0 -63
- package/src/service/templates.ts +0 -140
- package/src/service/tick.ts +0 -751
- package/src/service/tools.ts +0 -711
- package/src/service/types.ts +0 -219
- package/src/service/work-item-create.ts +0 -159
- package/src/service/workspace-profile.ts +0 -443
- package/src/store/backup.ts +0 -239
- package/src/store/bootstrap.ts +0 -225
- package/src/store/db.ts +0 -179
- package/src/store/lock.ts +0 -194
- package/src/store/migrations.ts +0 -211
- package/src/store/schema/001_p1.sql +0 -846
- package/src/store/schema/001_p1.sql.ts +0 -865
- package/src/store/schema/002_knowledge.sql +0 -54
- package/src/store/schema/002_knowledge.sql.ts +0 -68
- package/src/store/schema/003_projects.sql.ts +0 -3
- package/src/store/schema/004_team.sql.ts +0 -50
- package/src/store/schema/005_target_check.sql.ts +0 -22
- package/src/store/schema/006_target_flow.sql.ts +0 -19
- package/src/store/schema/007_project_delete.sql.ts +0 -17
- package/src/store/schema/008_memory.sql.ts +0 -47
- package/src/store/schema/generate-projects.mjs +0 -16
- 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
|
-
}
|
package/src/service/audit.ts
DELETED
|
@@ -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
|
-
}
|