opclawtm 1.4.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/README.md +136 -0
- package/dist/bin/team-manager.d.ts +6 -0
- package/dist/bin/team-manager.d.ts.map +1 -0
- package/dist/bin/team-manager.js +36 -0
- package/dist/bin/team-manager.js.map +1 -0
- package/dist/bin/team-setup.d.ts +7 -0
- package/dist/bin/team-setup.d.ts.map +1 -0
- package/dist/bin/team-setup.js +66 -0
- package/dist/bin/team-setup.js.map +1 -0
- package/dist/bin/team-uninstall.d.ts +6 -0
- package/dist/bin/team-uninstall.d.ts.map +1 -0
- package/dist/bin/team-uninstall.js +91 -0
- package/dist/bin/team-uninstall.js.map +1 -0
- package/dist/cli/commands/agent.command.d.ts +43 -0
- package/dist/cli/commands/agent.command.d.ts.map +1 -0
- package/dist/cli/commands/agent.command.js +223 -0
- package/dist/cli/commands/agent.command.js.map +1 -0
- package/dist/cli/commands/checklist.command.d.ts +35 -0
- package/dist/cli/commands/checklist.command.d.ts.map +1 -0
- package/dist/cli/commands/checklist.command.js +77 -0
- package/dist/cli/commands/checklist.command.js.map +1 -0
- package/dist/cli/commands/dept.command.d.ts +32 -0
- package/dist/cli/commands/dept.command.d.ts.map +1 -0
- package/dist/cli/commands/dept.command.js +92 -0
- package/dist/cli/commands/dept.command.js.map +1 -0
- package/dist/cli/commands/document.command.d.ts +37 -0
- package/dist/cli/commands/document.command.d.ts.map +1 -0
- package/dist/cli/commands/document.command.js +146 -0
- package/dist/cli/commands/document.command.js.map +1 -0
- package/dist/cli/commands/domain.command.d.ts +36 -0
- package/dist/cli/commands/domain.command.d.ts.map +1 -0
- package/dist/cli/commands/domain.command.js +97 -0
- package/dist/cli/commands/domain.command.js.map +1 -0
- package/dist/cli/commands/feishu.command.d.ts +63 -0
- package/dist/cli/commands/feishu.command.d.ts.map +1 -0
- package/dist/cli/commands/feishu.command.js +433 -0
- package/dist/cli/commands/feishu.command.js.map +1 -0
- package/dist/cli/commands/job.command.d.ts +39 -0
- package/dist/cli/commands/job.command.d.ts.map +1 -0
- package/dist/cli/commands/job.command.js +168 -0
- package/dist/cli/commands/job.command.js.map +1 -0
- package/dist/cli/commands/license.command.d.ts +22 -0
- package/dist/cli/commands/license.command.d.ts.map +1 -0
- package/dist/cli/commands/license.command.js +68 -0
- package/dist/cli/commands/license.command.js.map +1 -0
- package/dist/cli/commands/message-failure.command.d.ts +44 -0
- package/dist/cli/commands/message-failure.command.d.ts.map +1 -0
- package/dist/cli/commands/message-failure.command.js +137 -0
- package/dist/cli/commands/message-failure.command.js.map +1 -0
- package/dist/cli/commands/message.command.d.ts +47 -0
- package/dist/cli/commands/message.command.d.ts.map +1 -0
- package/dist/cli/commands/message.command.js +129 -0
- package/dist/cli/commands/message.command.js.map +1 -0
- package/dist/cli/commands/node.command.d.ts +76 -0
- package/dist/cli/commands/node.command.d.ts.map +1 -0
- package/dist/cli/commands/node.command.js +251 -0
- package/dist/cli/commands/node.command.js.map +1 -0
- package/dist/cli/commands/role-flow.command.d.ts +12 -0
- package/dist/cli/commands/role-flow.command.d.ts.map +1 -0
- package/dist/cli/commands/role-flow.command.js +54 -0
- package/dist/cli/commands/role-flow.command.js.map +1 -0
- package/dist/cli/commands/skill-pack.command.d.ts +41 -0
- package/dist/cli/commands/skill-pack.command.d.ts.map +1 -0
- package/dist/cli/commands/skill-pack.command.js +137 -0
- package/dist/cli/commands/skill-pack.command.js.map +1 -0
- package/dist/cli/commands/status.command.d.ts +8 -0
- package/dist/cli/commands/status.command.d.ts.map +1 -0
- package/dist/cli/commands/status.command.js +61 -0
- package/dist/cli/commands/status.command.js.map +1 -0
- package/dist/cli/commands/task.command.d.ts +105 -0
- package/dist/cli/commands/task.command.d.ts.map +1 -0
- package/dist/cli/commands/task.command.js +402 -0
- package/dist/cli/commands/task.command.js.map +1 -0
- package/dist/cli/commands/user.command.d.ts +43 -0
- package/dist/cli/commands/user.command.d.ts.map +1 -0
- package/dist/cli/commands/user.command.js +134 -0
- package/dist/cli/commands/user.command.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +863 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/tui/index.d.ts +45 -0
- package/dist/cli/tui/index.d.ts.map +1 -0
- package/dist/cli/tui/index.js +470 -0
- package/dist/cli/tui/index.js.map +1 -0
- package/dist/cli/tui/menus/agent-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/agent-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/agent-manage.menu.js +614 -0
- package/dist/cli/tui/menus/agent-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/dept-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/dept-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/dept-manage.menu.js +299 -0
- package/dist/cli/tui/menus/dept-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/domain-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/domain-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/domain-manage.menu.js +208 -0
- package/dist/cli/tui/menus/domain-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/feishu.menu.d.ts +8 -0
- package/dist/cli/tui/menus/feishu.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/feishu.menu.js +1727 -0
- package/dist/cli/tui/menus/feishu.menu.js.map +1 -0
- package/dist/cli/tui/menus/job-manage.menu.d.ts +16 -0
- package/dist/cli/tui/menus/job-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/job-manage.menu.js +734 -0
- package/dist/cli/tui/menus/job-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/license.menu.d.ts +12 -0
- package/dist/cli/tui/menus/license.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/license.menu.js +164 -0
- package/dist/cli/tui/menus/license.menu.js.map +1 -0
- package/dist/cli/tui/menus/main.menu.d.ts +10 -0
- package/dist/cli/tui/menus/main.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/main.menu.js +94 -0
- package/dist/cli/tui/menus/main.menu.js.map +1 -0
- package/dist/cli/tui/menus/reset.menu.d.ts +10 -0
- package/dist/cli/tui/menus/reset.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/reset.menu.js +767 -0
- package/dist/cli/tui/menus/reset.menu.js.map +1 -0
- package/dist/cli/tui/menus/status.menu.d.ts +8 -0
- package/dist/cli/tui/menus/status.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/status.menu.js +123 -0
- package/dist/cli/tui/menus/status.menu.js.map +1 -0
- package/dist/cli/tui/menus/task-manage.menu.d.ts +11 -0
- package/dist/cli/tui/menus/task-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/task-manage.menu.js +129 -0
- package/dist/cli/tui/menus/task-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/team-create.menu.d.ts +8 -0
- package/dist/cli/tui/menus/team-create.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/team-create.menu.js +353 -0
- package/dist/cli/tui/menus/team-create.menu.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/core/auth/index.d.ts +6 -0
- package/dist/core/auth/index.d.ts.map +1 -0
- package/dist/core/auth/index.js +22 -0
- package/dist/core/auth/index.js.map +1 -0
- package/dist/core/auth/middleware.d.ts +73 -0
- package/dist/core/auth/middleware.d.ts.map +1 -0
- package/dist/core/auth/middleware.js +456 -0
- package/dist/core/auth/middleware.js.map +1 -0
- package/dist/core/auth/storage.d.ts +38 -0
- package/dist/core/auth/storage.d.ts.map +1 -0
- package/dist/core/auth/storage.js +280 -0
- package/dist/core/auth/storage.js.map +1 -0
- package/dist/core/keys/public.pem +9 -0
- package/dist/core/models/types.d.ts +426 -0
- package/dist/core/models/types.d.ts.map +1 -0
- package/dist/core/models/types.js +9 -0
- package/dist/core/models/types.js.map +1 -0
- package/dist/core/services/agent-template.service.d.ts +49 -0
- package/dist/core/services/agent-template.service.d.ts.map +1 -0
- package/dist/core/services/agent-template.service.js +88 -0
- package/dist/core/services/agent-template.service.js.map +1 -0
- package/dist/core/services/agent.service.d.ts +120 -0
- package/dist/core/services/agent.service.d.ts.map +1 -0
- package/dist/core/services/agent.service.js +381 -0
- package/dist/core/services/agent.service.js.map +1 -0
- package/dist/core/services/auth-profiles.service.d.ts +93 -0
- package/dist/core/services/auth-profiles.service.d.ts.map +1 -0
- package/dist/core/services/auth-profiles.service.js +220 -0
- package/dist/core/services/auth-profiles.service.js.map +1 -0
- package/dist/core/services/checklist.service.d.ts +58 -0
- package/dist/core/services/checklist.service.d.ts.map +1 -0
- package/dist/core/services/checklist.service.js +240 -0
- package/dist/core/services/checklist.service.js.map +1 -0
- package/dist/core/services/config-tracker.service.d.ts +119 -0
- package/dist/core/services/config-tracker.service.d.ts.map +1 -0
- package/dist/core/services/config-tracker.service.js +1093 -0
- package/dist/core/services/config-tracker.service.js.map +1 -0
- package/dist/core/services/crypto.service.d.ts +102 -0
- package/dist/core/services/crypto.service.d.ts.map +1 -0
- package/dist/core/services/crypto.service.js +377 -0
- package/dist/core/services/crypto.service.js.map +1 -0
- package/dist/core/services/dept.service.d.ts +92 -0
- package/dist/core/services/dept.service.d.ts.map +1 -0
- package/dist/core/services/dept.service.js +260 -0
- package/dist/core/services/dept.service.js.map +1 -0
- package/dist/core/services/document.service.d.ts +131 -0
- package/dist/core/services/document.service.d.ts.map +1 -0
- package/dist/core/services/document.service.js +368 -0
- package/dist/core/services/document.service.js.map +1 -0
- package/dist/core/services/domain.service.d.ts +50 -0
- package/dist/core/services/domain.service.d.ts.map +1 -0
- package/dist/core/services/domain.service.js +98 -0
- package/dist/core/services/domain.service.js.map +1 -0
- package/dist/core/services/feishu.service.d.ts +124 -0
- package/dist/core/services/feishu.service.d.ts.map +1 -0
- package/dist/core/services/feishu.service.js +165 -0
- package/dist/core/services/feishu.service.js.map +1 -0
- package/dist/core/services/index.d.ts +27 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +89 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/job.service.d.ts +60 -0
- package/dist/core/services/job.service.d.ts.map +1 -0
- package/dist/core/services/job.service.js +190 -0
- package/dist/core/services/job.service.js.map +1 -0
- package/dist/core/services/log.service.d.ts +111 -0
- package/dist/core/services/log.service.d.ts.map +1 -0
- package/dist/core/services/log.service.js +237 -0
- package/dist/core/services/log.service.js.map +1 -0
- package/dist/core/services/message-failure.service.d.ts +65 -0
- package/dist/core/services/message-failure.service.d.ts.map +1 -0
- package/dist/core/services/message-failure.service.js +112 -0
- package/dist/core/services/message-failure.service.js.map +1 -0
- package/dist/core/services/message.service.d.ts +122 -0
- package/dist/core/services/message.service.d.ts.map +1 -0
- package/dist/core/services/message.service.js +374 -0
- package/dist/core/services/message.service.js.map +1 -0
- package/dist/core/services/node.service.d.ts +150 -0
- package/dist/core/services/node.service.d.ts.map +1 -0
- package/dist/core/services/node.service.js +257 -0
- package/dist/core/services/node.service.js.map +1 -0
- package/dist/core/services/openclaw-config.service.d.ts +187 -0
- package/dist/core/services/openclaw-config.service.d.ts.map +1 -0
- package/dist/core/services/openclaw-config.service.js +268 -0
- package/dist/core/services/openclaw-config.service.js.map +1 -0
- package/dist/core/services/preset-loader.service.d.ts +80 -0
- package/dist/core/services/preset-loader.service.d.ts.map +1 -0
- package/dist/core/services/preset-loader.service.js +379 -0
- package/dist/core/services/preset-loader.service.js.map +1 -0
- package/dist/core/services/role-flow.service.d.ts +21 -0
- package/dist/core/services/role-flow.service.d.ts.map +1 -0
- package/dist/core/services/role-flow.service.js +47 -0
- package/dist/core/services/role-flow.service.js.map +1 -0
- package/dist/core/services/setup.service.d.ts +46 -0
- package/dist/core/services/setup.service.d.ts.map +1 -0
- package/dist/core/services/setup.service.js +336 -0
- package/dist/core/services/setup.service.js.map +1 -0
- package/dist/core/services/skill-pack.service.d.ts +56 -0
- package/dist/core/services/skill-pack.service.d.ts.map +1 -0
- package/dist/core/services/skill-pack.service.js +113 -0
- package/dist/core/services/skill-pack.service.js.map +1 -0
- package/dist/core/services/task.service.d.ts +177 -0
- package/dist/core/services/task.service.d.ts.map +1 -0
- package/dist/core/services/task.service.js +397 -0
- package/dist/core/services/task.service.js.map +1 -0
- package/dist/core/services/template.service.d.ts +51 -0
- package/dist/core/services/template.service.d.ts.map +1 -0
- package/dist/core/services/template.service.js +88 -0
- package/dist/core/services/template.service.js.map +1 -0
- package/dist/core/services/user.service.d.ts +50 -0
- package/dist/core/services/user.service.d.ts.map +1 -0
- package/dist/core/services/user.service.js +111 -0
- package/dist/core/services/user.service.js.map +1 -0
- package/dist/core/utils/agent-guide-generator.d.ts +38 -0
- package/dist/core/utils/agent-guide-generator.d.ts.map +1 -0
- package/dist/core/utils/agent-guide-generator.js +187 -0
- package/dist/core/utils/agent-guide-generator.js.map +1 -0
- package/dist/core/utils/credentials-cleanup.d.ts +81 -0
- package/dist/core/utils/credentials-cleanup.d.ts.map +1 -0
- package/dist/core/utils/credentials-cleanup.js +256 -0
- package/dist/core/utils/credentials-cleanup.js.map +1 -0
- package/dist/core/utils/index.d.ts +215 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +462 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/openclaw-helper.d.ts +250 -0
- package/dist/core/utils/openclaw-helper.d.ts.map +1 -0
- package/dist/core/utils/openclaw-helper.js +1629 -0
- package/dist/core/utils/openclaw-helper.js.map +1 -0
- package/dist/core/utils/template-generator.d.ts +67 -0
- package/dist/core/utils/template-generator.d.ts.map +1 -0
- package/dist/core/utils/template-generator.js +170 -0
- package/dist/core/utils/template-generator.js.map +1 -0
- package/dist/db/index.d.ts +54 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +403 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories/agent-template.repo.d.ts +47 -0
- package/dist/db/repositories/agent-template.repo.d.ts.map +1 -0
- package/dist/db/repositories/agent-template.repo.js +108 -0
- package/dist/db/repositories/agent-template.repo.js.map +1 -0
- package/dist/db/repositories/agent.repo.d.ts +64 -0
- package/dist/db/repositories/agent.repo.d.ts.map +1 -0
- package/dist/db/repositories/agent.repo.js +103 -0
- package/dist/db/repositories/agent.repo.js.map +1 -0
- package/dist/db/repositories/base.repository.d.ts +51 -0
- package/dist/db/repositories/base.repository.d.ts.map +1 -0
- package/dist/db/repositories/base.repository.js +107 -0
- package/dist/db/repositories/base.repository.js.map +1 -0
- package/dist/db/repositories/company.repo.d.ts +18 -0
- package/dist/db/repositories/company.repo.d.ts.map +1 -0
- package/dist/db/repositories/company.repo.js +33 -0
- package/dist/db/repositories/company.repo.js.map +1 -0
- package/dist/db/repositories/config-change.repo.d.ts +65 -0
- package/dist/db/repositories/config-change.repo.d.ts.map +1 -0
- package/dist/db/repositories/config-change.repo.js +119 -0
- package/dist/db/repositories/config-change.repo.js.map +1 -0
- package/dist/db/repositories/dept.repo.d.ts +37 -0
- package/dist/db/repositories/dept.repo.d.ts.map +1 -0
- package/dist/db/repositories/dept.repo.js +66 -0
- package/dist/db/repositories/dept.repo.js.map +1 -0
- package/dist/db/repositories/document.repo.d.ts +25 -0
- package/dist/db/repositories/document.repo.d.ts.map +1 -0
- package/dist/db/repositories/document.repo.js +51 -0
- package/dist/db/repositories/document.repo.js.map +1 -0
- package/dist/db/repositories/domain.repo.d.ts +42 -0
- package/dist/db/repositories/domain.repo.d.ts.map +1 -0
- package/dist/db/repositories/domain.repo.js +79 -0
- package/dist/db/repositories/domain.repo.js.map +1 -0
- package/dist/db/repositories/index.d.ts +24 -0
- package/dist/db/repositories/index.d.ts.map +1 -0
- package/dist/db/repositories/index.js +81 -0
- package/dist/db/repositories/index.js.map +1 -0
- package/dist/db/repositories/init-session.repo.d.ts +38 -0
- package/dist/db/repositories/init-session.repo.d.ts.map +1 -0
- package/dist/db/repositories/init-session.repo.js +112 -0
- package/dist/db/repositories/init-session.repo.js.map +1 -0
- package/dist/db/repositories/job.repo.d.ts +54 -0
- package/dist/db/repositories/job.repo.d.ts.map +1 -0
- package/dist/db/repositories/job.repo.js +119 -0
- package/dist/db/repositories/job.repo.js.map +1 -0
- package/dist/db/repositories/message-failure.repo.d.ts +92 -0
- package/dist/db/repositories/message-failure.repo.d.ts.map +1 -0
- package/dist/db/repositories/message-failure.repo.js +141 -0
- package/dist/db/repositories/message-failure.repo.js.map +1 -0
- package/dist/db/repositories/message-log.repo.d.ts +36 -0
- package/dist/db/repositories/message-log.repo.d.ts.map +1 -0
- package/dist/db/repositories/message-log.repo.js +64 -0
- package/dist/db/repositories/message-log.repo.js.map +1 -0
- package/dist/db/repositories/node.repo.d.ts +107 -0
- package/dist/db/repositories/node.repo.d.ts.map +1 -0
- package/dist/db/repositories/node.repo.js +276 -0
- package/dist/db/repositories/node.repo.js.map +1 -0
- package/dist/db/repositories/role-flow.repo.d.ts +43 -0
- package/dist/db/repositories/role-flow.repo.d.ts.map +1 -0
- package/dist/db/repositories/role-flow.repo.js +83 -0
- package/dist/db/repositories/role-flow.repo.js.map +1 -0
- package/dist/db/repositories/skill-pack.repo.d.ts +45 -0
- package/dist/db/repositories/skill-pack.repo.d.ts.map +1 -0
- package/dist/db/repositories/skill-pack.repo.js +149 -0
- package/dist/db/repositories/skill-pack.repo.js.map +1 -0
- package/dist/db/repositories/task.repo.d.ts +168 -0
- package/dist/db/repositories/task.repo.d.ts.map +1 -0
- package/dist/db/repositories/task.repo.js +381 -0
- package/dist/db/repositories/task.repo.js.map +1 -0
- package/dist/db/repositories/template.repo.d.ts +40 -0
- package/dist/db/repositories/template.repo.d.ts.map +1 -0
- package/dist/db/repositories/template.repo.js +66 -0
- package/dist/db/repositories/template.repo.js.map +1 -0
- package/dist/db/repositories/user.repo.d.ts +46 -0
- package/dist/db/repositories/user.repo.d.ts.map +1 -0
- package/dist/db/repositories/user.repo.js +75 -0
- package/dist/db/repositories/user.repo.js.map +1 -0
- package/dist/db/schema.sql +364 -0
- package/package.json +90 -0
- package/resources/preset-data-hash.enc +1 -0
- package/resources/preset-data.enc +1 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Task Node Repository
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.taskNodeRepository = exports.TaskNodeRepository = void 0;
|
|
7
|
+
const base_repository_1 = require("./base.repository");
|
|
8
|
+
const utils_1 = require("../../core/utils");
|
|
9
|
+
class TaskNodeRepository extends base_repository_1.BaseRepository {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('task_nodes', 'id');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create node
|
|
15
|
+
*/
|
|
16
|
+
create(data) {
|
|
17
|
+
const now = new Date().toISOString();
|
|
18
|
+
this.insert({
|
|
19
|
+
id: data.id,
|
|
20
|
+
task_id: data.task_id,
|
|
21
|
+
node_name: data.name,
|
|
22
|
+
agent_id: data.agent_id,
|
|
23
|
+
reviewer_id: data.reviewer_id || null, // v1.1.8
|
|
24
|
+
status: 'pending',
|
|
25
|
+
sequence: data.sequence,
|
|
26
|
+
timeout: data.timeout || 24,
|
|
27
|
+
rework_history: null,
|
|
28
|
+
failure_history: null,
|
|
29
|
+
review_comment: null,
|
|
30
|
+
created_at: now,
|
|
31
|
+
started_at: null,
|
|
32
|
+
completed_at: null
|
|
33
|
+
});
|
|
34
|
+
return this.findById(data.id);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update node status
|
|
38
|
+
*/
|
|
39
|
+
updateStatus(id, status) {
|
|
40
|
+
const updateData = { status };
|
|
41
|
+
// Record started_at when status becomes in_progress
|
|
42
|
+
if (status === 'in_progress') {
|
|
43
|
+
updateData.started_at = new Date().toISOString();
|
|
44
|
+
}
|
|
45
|
+
// Record completed_at when status becomes completed
|
|
46
|
+
if (status === 'completed') {
|
|
47
|
+
updateData.completed_at = new Date().toISOString();
|
|
48
|
+
}
|
|
49
|
+
this.update(id, updateData);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Update node (including rework issues)
|
|
53
|
+
*/
|
|
54
|
+
updateNode(id, data) {
|
|
55
|
+
const updateData = {};
|
|
56
|
+
if (data.status !== undefined) {
|
|
57
|
+
updateData.status = data.status;
|
|
58
|
+
if (data.status === 'in_progress') {
|
|
59
|
+
updateData.started_at = new Date().toISOString();
|
|
60
|
+
}
|
|
61
|
+
if (data.status === 'completed') {
|
|
62
|
+
updateData.completed_at = new Date().toISOString();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (data.review_comment !== undefined)
|
|
66
|
+
updateData.review_comment = data.review_comment;
|
|
67
|
+
// Handle issues (append to rework_history)
|
|
68
|
+
if (data.issues && data.issues.length > 0) {
|
|
69
|
+
const node = this.findById(id);
|
|
70
|
+
if (node) {
|
|
71
|
+
const reworkHistory = (0, utils_1.safeJsonParse)(node.rework_history, []);
|
|
72
|
+
const newRecord = {
|
|
73
|
+
issue: data.issues.join('; '),
|
|
74
|
+
reviewer_id: data.reviewer_id || '',
|
|
75
|
+
timestamp: new Date().toISOString()
|
|
76
|
+
};
|
|
77
|
+
reworkHistory.push(newRecord);
|
|
78
|
+
updateData.rework_history = (0, utils_1.safeJsonStringify)(reworkHistory);
|
|
79
|
+
updateData.status = data.status || 'pending';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Handle timeout
|
|
83
|
+
if (data.timeout !== undefined) {
|
|
84
|
+
updateData.timeout = data.timeout;
|
|
85
|
+
}
|
|
86
|
+
// Handle extend_timeout (append)
|
|
87
|
+
if (data.extend_timeout !== undefined) {
|
|
88
|
+
const node = this.findById(id);
|
|
89
|
+
if (node) {
|
|
90
|
+
updateData.timeout = node.timeout + data.extend_timeout;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (Object.keys(updateData).length > 0) {
|
|
94
|
+
this.update(id, updateData);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Add rework record
|
|
99
|
+
*/
|
|
100
|
+
addReworkRecord(id, issues, reviewerId) {
|
|
101
|
+
const node = this.findById(id);
|
|
102
|
+
if (!node)
|
|
103
|
+
return 0;
|
|
104
|
+
const reworkHistory = (0, utils_1.safeJsonParse)(node.rework_history, []);
|
|
105
|
+
reworkHistory.push({
|
|
106
|
+
issue: issues.join('; '),
|
|
107
|
+
reviewer_id: reviewerId,
|
|
108
|
+
timestamp: new Date().toISOString()
|
|
109
|
+
});
|
|
110
|
+
this.update(id, {
|
|
111
|
+
rework_history: (0, utils_1.safeJsonStringify)(reworkHistory),
|
|
112
|
+
status: 'pending'
|
|
113
|
+
});
|
|
114
|
+
return reworkHistory.length;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add failure record
|
|
118
|
+
*/
|
|
119
|
+
addFailureRecord(id, reason) {
|
|
120
|
+
const node = this.findById(id);
|
|
121
|
+
if (!node)
|
|
122
|
+
return 0;
|
|
123
|
+
const failureHistory = (0, utils_1.safeJsonParse)(node.failure_history, []);
|
|
124
|
+
failureHistory.push({
|
|
125
|
+
reason,
|
|
126
|
+
timestamp: new Date().toISOString()
|
|
127
|
+
});
|
|
128
|
+
this.update(id, {
|
|
129
|
+
failure_history: (0, utils_1.safeJsonStringify)(failureHistory),
|
|
130
|
+
status: 'failed'
|
|
131
|
+
});
|
|
132
|
+
return failureHistory.length;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Find by task
|
|
136
|
+
*/
|
|
137
|
+
findByTask(taskId) {
|
|
138
|
+
const sql = `SELECT * FROM task_nodes WHERE task_id = ? ORDER BY sequence`;
|
|
139
|
+
return this.db.prepare(sql).all(taskId);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Find by task and sequence greater than
|
|
143
|
+
*/
|
|
144
|
+
findByTaskAndSequenceGt(taskId, sequence) {
|
|
145
|
+
const sql = `SELECT * FROM task_nodes WHERE task_id = ? AND sequence > ? ORDER BY sequence`;
|
|
146
|
+
return this.db.prepare(sql).all(taskId, sequence);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Find by task and status
|
|
150
|
+
*/
|
|
151
|
+
findByTaskAndStatus(taskId, status) {
|
|
152
|
+
return this.findWhere({ task_id: taskId, status });
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get next pending node for task
|
|
156
|
+
*/
|
|
157
|
+
getNextPendingNode(taskId) {
|
|
158
|
+
const sql = `SELECT * FROM task_nodes WHERE task_id = ? AND status = 'pending' ORDER BY sequence LIMIT 1`;
|
|
159
|
+
return this.db.prepare(sql).get(taskId);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get rework count
|
|
163
|
+
*/
|
|
164
|
+
getReworkCount(id) {
|
|
165
|
+
const node = this.findById(id);
|
|
166
|
+
if (!node)
|
|
167
|
+
return 0;
|
|
168
|
+
const reworkHistory = (0, utils_1.safeJsonParse)(node.rework_history, []);
|
|
169
|
+
return reworkHistory.length;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get failure count
|
|
173
|
+
*/
|
|
174
|
+
getFailureCount(id) {
|
|
175
|
+
const node = this.findById(id);
|
|
176
|
+
if (!node)
|
|
177
|
+
return 0;
|
|
178
|
+
const failureHistory = (0, utils_1.safeJsonParse)(node.failure_history, []);
|
|
179
|
+
return failureHistory.length;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Find by status
|
|
183
|
+
*/
|
|
184
|
+
findByStatus(status) {
|
|
185
|
+
return this.findWhere({ status });
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Find by agent and status
|
|
189
|
+
*/
|
|
190
|
+
findByAgentAndStatus(agentId, status) {
|
|
191
|
+
return this.findWhere({ agent_id: agentId, status });
|
|
192
|
+
}
|
|
193
|
+
// ============================================
|
|
194
|
+
// Heartbeat Methods (v1.1.1)
|
|
195
|
+
// ============================================
|
|
196
|
+
/**
|
|
197
|
+
* Update executor's heartbeat
|
|
198
|
+
* Called when executor is actively working on a node
|
|
199
|
+
*/
|
|
200
|
+
updateHeartbeat(nodeId) {
|
|
201
|
+
const sql = `UPDATE task_nodes SET last_heartbeat_at = ? WHERE id = ?`;
|
|
202
|
+
this.db.prepare(sql).run(new Date().toISOString(), nodeId);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Update reviewer's heartbeat
|
|
206
|
+
* Called when reviewer is actively reviewing a node
|
|
207
|
+
*/
|
|
208
|
+
updateReviewHeartbeat(nodeId, reviewerId) {
|
|
209
|
+
const sql = `
|
|
210
|
+
UPDATE task_nodes
|
|
211
|
+
SET last_review_heartbeat_at = ?
|
|
212
|
+
WHERE id = ?
|
|
213
|
+
`;
|
|
214
|
+
this.db.prepare(sql).run(new Date().toISOString(), nodeId);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Find stalled execution nodes (executor timeout)
|
|
218
|
+
* Returns nodes where executor hasn't updated heartbeat for a while
|
|
219
|
+
* @param timeoutMinutes - Timeout threshold in minutes (default: 10)
|
|
220
|
+
*/
|
|
221
|
+
findStalledExecutionNodes(timeoutMinutes = 10) {
|
|
222
|
+
const sql = `
|
|
223
|
+
SELECT * FROM task_nodes
|
|
224
|
+
WHERE status = 'in_progress'
|
|
225
|
+
AND last_heartbeat_at IS NOT NULL
|
|
226
|
+
AND datetime(last_heartbeat_at) < datetime('now', '-' || ? || ' minutes')
|
|
227
|
+
ORDER BY last_heartbeat_at ASC
|
|
228
|
+
`;
|
|
229
|
+
return this.db.prepare(sql).all(timeoutMinutes);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Find stalled review nodes (reviewer timeout)
|
|
233
|
+
* Returns nodes where reviewer hasn't updated heartbeat for a while
|
|
234
|
+
* @param timeoutMinutes - Timeout threshold in minutes (default: 10)
|
|
235
|
+
*/
|
|
236
|
+
findStalledReviewNodes(timeoutMinutes = 10) {
|
|
237
|
+
const sql = `
|
|
238
|
+
SELECT * FROM task_nodes
|
|
239
|
+
WHERE status = 'pending_review'
|
|
240
|
+
AND last_review_heartbeat_at IS NOT NULL
|
|
241
|
+
AND datetime(last_review_heartbeat_at) < datetime('now', '-' || ? || ' minutes')
|
|
242
|
+
ORDER BY last_review_heartbeat_at ASC
|
|
243
|
+
`;
|
|
244
|
+
return this.db.prepare(sql).all(timeoutMinutes);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get nodes with heartbeat status
|
|
248
|
+
* For debugging and monitoring
|
|
249
|
+
*/
|
|
250
|
+
getNodesWithHeartbeatStatus(taskId) {
|
|
251
|
+
let sql = `
|
|
252
|
+
SELECT
|
|
253
|
+
*,
|
|
254
|
+
CASE
|
|
255
|
+
WHEN last_heartbeat_at IS NOT NULL
|
|
256
|
+
THEN CAST((julianday('now') - julianday(last_heartbeat_at)) * 24 * 60 AS INTEGER)
|
|
257
|
+
ELSE NULL
|
|
258
|
+
END as heartbeat_age_minutes,
|
|
259
|
+
CASE
|
|
260
|
+
WHEN last_review_heartbeat_at IS NOT NULL
|
|
261
|
+
THEN CAST((julianday('now') - julianday(last_review_heartbeat_at)) * 24 * 60 AS INTEGER)
|
|
262
|
+
ELSE NULL
|
|
263
|
+
END as review_heartbeat_age_minutes
|
|
264
|
+
FROM task_nodes
|
|
265
|
+
`;
|
|
266
|
+
if (taskId) {
|
|
267
|
+
sql += ` WHERE task_id = ?`;
|
|
268
|
+
return this.db.prepare(sql).all(taskId);
|
|
269
|
+
}
|
|
270
|
+
sql += ` ORDER BY created_at DESC`;
|
|
271
|
+
return this.db.prepare(sql).all();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.TaskNodeRepository = TaskNodeRepository;
|
|
275
|
+
exports.taskNodeRepository = new TaskNodeRepository();
|
|
276
|
+
//# sourceMappingURL=node.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.repo.js","sourceRoot":"","sources":["../../../src/db/repositories/node.repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 角色约束流程 Repository
|
|
3
|
+
*/
|
|
4
|
+
import { BaseRepository } from './base.repository';
|
|
5
|
+
import { RoleFlow } from '../../core/models/types';
|
|
6
|
+
export declare class RoleFlowRepository extends BaseRepository<RoleFlow> {
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* 创建角色流程
|
|
10
|
+
*/
|
|
11
|
+
createRoleFlow(data: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
content: string;
|
|
15
|
+
is_preset?: number;
|
|
16
|
+
}): RoleFlow;
|
|
17
|
+
/**
|
|
18
|
+
* 更新角色流程
|
|
19
|
+
*/
|
|
20
|
+
updateRoleFlow(id: string, data: {
|
|
21
|
+
name?: string;
|
|
22
|
+
content?: string;
|
|
23
|
+
}): void;
|
|
24
|
+
/**
|
|
25
|
+
* 获取所有预置角色流程
|
|
26
|
+
*/
|
|
27
|
+
findPreset(): RoleFlow[];
|
|
28
|
+
/**
|
|
29
|
+
* 检查是否为预置数据
|
|
30
|
+
*/
|
|
31
|
+
isPreset(id: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 按角色类型获取流程
|
|
34
|
+
* v1.1.7: 新增 assistant 支持
|
|
35
|
+
*/
|
|
36
|
+
findByRole(role: 'assistant' | 'manager' | 'executor' | 'reviewer'): RoleFlow | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* 获取解密后的流程内容
|
|
39
|
+
*/
|
|
40
|
+
getContent(id: string): string | null;
|
|
41
|
+
}
|
|
42
|
+
export declare const roleFlowRepository: RoleFlowRepository;
|
|
43
|
+
//# sourceMappingURL=role-flow.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-flow.repo.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/role-flow.repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,QAAQ,CAAC;;IAK9D;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,QAAQ;IAeZ;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAWR;;OAEG;IACH,UAAU,IAAI,QAAQ,EAAE;IAIxB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK7B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS;IAIzF;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAetC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 角色约束流程 Repository
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.roleFlowRepository = exports.RoleFlowRepository = void 0;
|
|
7
|
+
const base_repository_1 = require("./base.repository");
|
|
8
|
+
const crypto_service_1 = require("../../core/services/crypto.service");
|
|
9
|
+
class RoleFlowRepository extends base_repository_1.BaseRepository {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('role_flows', 'id');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 创建角色流程
|
|
15
|
+
*/
|
|
16
|
+
createRoleFlow(data) {
|
|
17
|
+
const now = new Date().toISOString();
|
|
18
|
+
this.insert({
|
|
19
|
+
id: data.id,
|
|
20
|
+
name: data.name,
|
|
21
|
+
content: data.content,
|
|
22
|
+
is_preset: data.is_preset ?? 1,
|
|
23
|
+
created_at: now,
|
|
24
|
+
updated_at: now
|
|
25
|
+
});
|
|
26
|
+
return this.findById(data.id);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 更新角色流程
|
|
30
|
+
*/
|
|
31
|
+
updateRoleFlow(id, data) {
|
|
32
|
+
const updateData = {};
|
|
33
|
+
if (data.name !== undefined)
|
|
34
|
+
updateData.name = data.name;
|
|
35
|
+
if (data.content !== undefined)
|
|
36
|
+
updateData.content = data.content;
|
|
37
|
+
if (Object.keys(updateData).length > 0) {
|
|
38
|
+
updateData.updated_at = new Date().toISOString();
|
|
39
|
+
this.update(id, updateData);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 获取所有预置角色流程
|
|
44
|
+
*/
|
|
45
|
+
findPreset() {
|
|
46
|
+
return this.findWhere({ is_preset: 1 });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 检查是否为预置数据
|
|
50
|
+
*/
|
|
51
|
+
isPreset(id) {
|
|
52
|
+
const flow = this.findById(id);
|
|
53
|
+
return flow ? flow.is_preset === 1 : false;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 按角色类型获取流程
|
|
57
|
+
* v1.1.7: 新增 assistant 支持
|
|
58
|
+
*/
|
|
59
|
+
findByRole(role) {
|
|
60
|
+
return this.findById(`${role}_flow`);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 获取解密后的流程内容
|
|
64
|
+
*/
|
|
65
|
+
getContent(id) {
|
|
66
|
+
const flow = this.findById(id);
|
|
67
|
+
if (!flow || !flow.content)
|
|
68
|
+
return null;
|
|
69
|
+
if ((0, crypto_service_1.isEncrypted)(flow.content)) {
|
|
70
|
+
try {
|
|
71
|
+
return (0, crypto_service_1.decryptSync)(flow.content);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error(`[RoleFlow] 解密失败: ${id}`, error);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return flow.content;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.RoleFlowRepository = RoleFlowRepository;
|
|
82
|
+
exports.roleFlowRepository = new RoleFlowRepository();
|
|
83
|
+
//# sourceMappingURL=role-flow.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-flow.repo.js","sourceRoot":"","sources":["../../../src/db/repositories/role-flow.repo.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAmD;AAEnD,uEAA8E;AAE9E,MAAa,kBAAmB,SAAQ,gCAAwB;IAC9D;QACE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAKd;QACC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YAC9B,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU,EAAE,IAG1B;QACC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAElE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAU;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAuD;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAExC,IAAI,IAAA,4BAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAA,4BAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAtFD,gDAsFC;AAEY,QAAA,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 技能包 Repository
|
|
3
|
+
*/
|
|
4
|
+
import { BaseRepository } from './base.repository';
|
|
5
|
+
import { SkillPack, SkillPackContent } from '../../core/models/types';
|
|
6
|
+
export declare class SkillPackRepository extends BaseRepository<SkillPack> {
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* 创建技能包
|
|
10
|
+
*/
|
|
11
|
+
create(data: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
content: string;
|
|
16
|
+
is_preset?: number;
|
|
17
|
+
}): SkillPack;
|
|
18
|
+
/**
|
|
19
|
+
* 更新技能包
|
|
20
|
+
*/
|
|
21
|
+
updateSkillPack(id: string, data: {
|
|
22
|
+
name?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
content?: string;
|
|
25
|
+
version?: string;
|
|
26
|
+
}): void;
|
|
27
|
+
/**
|
|
28
|
+
* 获取技能包内容(支持JSON和Markdown格式,支持加密数据)
|
|
29
|
+
*/
|
|
30
|
+
getContent(id: string): SkillPackContent | null;
|
|
31
|
+
/**
|
|
32
|
+
* 获取所有预置技能包
|
|
33
|
+
*/
|
|
34
|
+
findPreset(): SkillPack[];
|
|
35
|
+
/**
|
|
36
|
+
* 获取所有用户自定义技能包
|
|
37
|
+
*/
|
|
38
|
+
findCustom(): SkillPack[];
|
|
39
|
+
/**
|
|
40
|
+
* 检查是否为预置数据
|
|
41
|
+
*/
|
|
42
|
+
isPreset(id: string): boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare const skillPackRepository: SkillPackRepository;
|
|
45
|
+
//# sourceMappingURL=skill-pack.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-pack.repo.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/skill-pack.repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,SAAS,CAAC;;IAKhE;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,SAAS;IAiBb;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAaR;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAgF/C;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE;IAIzB;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE;IAIzB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAI9B;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 技能包 Repository
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.skillPackRepository = exports.SkillPackRepository = void 0;
|
|
7
|
+
const base_repository_1 = require("./base.repository");
|
|
8
|
+
const crypto_service_1 = require("../../core/services/crypto.service");
|
|
9
|
+
class SkillPackRepository extends base_repository_1.BaseRepository {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('skill_packs', 'id');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 创建技能包
|
|
15
|
+
*/
|
|
16
|
+
create(data) {
|
|
17
|
+
const now = new Date().toISOString();
|
|
18
|
+
this.insert({
|
|
19
|
+
id: data.id,
|
|
20
|
+
name: data.name,
|
|
21
|
+
description: data.description,
|
|
22
|
+
content: data.content,
|
|
23
|
+
is_preset: data.is_preset ?? 0,
|
|
24
|
+
version: '1.0.0',
|
|
25
|
+
created_at: now,
|
|
26
|
+
updated_at: now
|
|
27
|
+
});
|
|
28
|
+
return this.findById(data.id);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 更新技能包
|
|
32
|
+
*/
|
|
33
|
+
updateSkillPack(id, data) {
|
|
34
|
+
const updateData = {};
|
|
35
|
+
if (data.name !== undefined)
|
|
36
|
+
updateData.name = data.name;
|
|
37
|
+
if (data.description !== undefined)
|
|
38
|
+
updateData.description = data.description;
|
|
39
|
+
if (data.content !== undefined)
|
|
40
|
+
updateData.content = data.content;
|
|
41
|
+
if (data.version !== undefined)
|
|
42
|
+
updateData.version = data.version;
|
|
43
|
+
if (Object.keys(updateData).length > 0) {
|
|
44
|
+
updateData.updated_at = new Date().toISOString();
|
|
45
|
+
this.update(id, updateData);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 获取技能包内容(支持JSON和Markdown格式,支持加密数据)
|
|
50
|
+
*/
|
|
51
|
+
getContent(id) {
|
|
52
|
+
const skillPack = this.findById(id);
|
|
53
|
+
if (!skillPack || !skillPack.content)
|
|
54
|
+
return null;
|
|
55
|
+
try {
|
|
56
|
+
// 先解密(如果是加密的)
|
|
57
|
+
let content = skillPack.content;
|
|
58
|
+
if ((0, crypto_service_1.isEncrypted)(content)) {
|
|
59
|
+
content = (0, crypto_service_1.decryptSync)(content);
|
|
60
|
+
}
|
|
61
|
+
// 尝试解析为 JSON
|
|
62
|
+
try {
|
|
63
|
+
const parsed = JSON.parse(content);
|
|
64
|
+
return {
|
|
65
|
+
skill_pack_id: skillPack.id,
|
|
66
|
+
name: skillPack.name,
|
|
67
|
+
version: skillPack.version,
|
|
68
|
+
description: skillPack.description || '',
|
|
69
|
+
...parsed
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// JSON 解析失败,作为 Markdown 处理
|
|
74
|
+
// 解析 Markdown 格式的技能包
|
|
75
|
+
const lines = content.split('\n');
|
|
76
|
+
let description = '';
|
|
77
|
+
const sections = [];
|
|
78
|
+
let currentSection = null;
|
|
79
|
+
for (const line of lines) {
|
|
80
|
+
// 检测标题行(如 "名称:xxx")
|
|
81
|
+
if (line.startsWith('名称:') || line.startsWith('名称:')) {
|
|
82
|
+
// 名称已经在 skillPack.name 中
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
// 检测章节标题(如 "目标:"、"方法:"等)
|
|
86
|
+
const sectionMatch = line.match(/^([^\n::]+)[::]\s*$/);
|
|
87
|
+
if (sectionMatch) {
|
|
88
|
+
// 保存上一个章节
|
|
89
|
+
if (currentSection) {
|
|
90
|
+
sections.push(currentSection);
|
|
91
|
+
}
|
|
92
|
+
currentSection = {
|
|
93
|
+
title: sectionMatch[1].trim(),
|
|
94
|
+
content: ''
|
|
95
|
+
};
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// 添加到当前章节
|
|
99
|
+
if (currentSection) {
|
|
100
|
+
currentSection.content += line + '\n';
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// 没有章节时,作为描述
|
|
104
|
+
if (line.trim() && !line.startsWith('适用')) {
|
|
105
|
+
description += line + '\n';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// 保存最后一个章节
|
|
110
|
+
if (currentSection) {
|
|
111
|
+
sections.push(currentSection);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
skill_pack_id: skillPack.id,
|
|
115
|
+
name: skillPack.name,
|
|
116
|
+
version: skillPack.version,
|
|
117
|
+
description: skillPack.description || description.trim(),
|
|
118
|
+
sections
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error(`[SkillPack] 解析内容失败: ${id}`, error);
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 获取所有预置技能包
|
|
129
|
+
*/
|
|
130
|
+
findPreset() {
|
|
131
|
+
return this.findWhere({ is_preset: 1 });
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 获取所有用户自定义技能包
|
|
135
|
+
*/
|
|
136
|
+
findCustom() {
|
|
137
|
+
return this.findWhere({ is_preset: 0 });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 检查是否为预置数据
|
|
141
|
+
*/
|
|
142
|
+
isPreset(id) {
|
|
143
|
+
const skillPack = this.findById(id);
|
|
144
|
+
return skillPack ? skillPack.is_preset === 1 : false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.SkillPackRepository = SkillPackRepository;
|
|
148
|
+
exports.skillPackRepository = new SkillPackRepository();
|
|
149
|
+
//# sourceMappingURL=skill-pack.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-pack.repo.js","sourceRoot":"","sources":["../../../src/db/repositories/skill-pack.repo.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAmD;AAEnD,uEAA8E;AAE9E,MAAa,mBAAoB,SAAQ,gCAAyB;IAChE;QACE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAMN;QACC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YAC9B,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,EAAU,EAAE,IAK3B;QACC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9E,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAElE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAElD,IAAI,CAAC;YACH,cAAc;YACd,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAChC,IAAI,IAAA,4BAAW,EAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,GAAG,IAAA,4BAAW,EAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YAED,aAAa;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,OAAO;oBACL,aAAa,EAAE,SAAS,CAAC,EAAE;oBAC3B,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;oBACxC,GAAG,MAAM;iBACV,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;gBAC3B,qBAAqB;gBACrB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAA8C,EAAE,CAAC;gBAC/D,IAAI,cAAc,GAA8C,IAAI,CAAC;gBAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,oBAAoB;oBACpB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrD,yBAAyB;wBACzB,SAAS;oBACX,CAAC;oBAED,yBAAyB;oBACzB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACvD,IAAI,YAAY,EAAE,CAAC;wBACjB,UAAU;wBACV,IAAI,cAAc,EAAE,CAAC;4BACnB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAChC,CAAC;wBACD,cAAc,GAAG;4BACf,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BAC7B,OAAO,EAAE,EAAE;yBACZ,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,UAAU;oBACV,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,aAAa;wBACb,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1C,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,WAAW;gBACX,IAAI,cAAc,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChC,CAAC;gBAED,OAAO;oBACL,aAAa,EAAE,SAAS,CAAC,EAAE;oBAC3B,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;oBACxD,QAAQ;iBACT,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAU;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;CACF;AA5JD,kDA4JC;AAEY,QAAA,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
|