@overlordai/server 1.0.112 → 1.0.114
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/database/migrations/003-chat-bindings-project-key-index.sql +1 -0
- package/database/migrations/004-drop-agent-command.sql +2 -0
- package/dist/adapters/command-parser.utils.d.ts +45 -0
- package/dist/adapters/command-parser.utils.d.ts.map +1 -0
- package/dist/adapters/command-parser.utils.js +144 -0
- package/dist/adapters/command-parser.utils.js.map +1 -0
- package/dist/adapters/help-text.d.ts +2 -0
- package/dist/adapters/help-text.d.ts.map +1 -0
- package/dist/adapters/help-text.js +24 -0
- package/dist/adapters/help-text.js.map +1 -0
- package/dist/adapters/lark/lark-message.parser.d.ts +7 -30
- package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -1
- package/dist/adapters/lark/lark-message.parser.js +26 -138
- package/dist/adapters/lark/lark-message.parser.js.map +1 -1
- package/dist/adapters/lark/lark.adapter.d.ts +12 -0
- package/dist/adapters/lark/lark.adapter.d.ts.map +1 -1
- package/dist/adapters/lark/lark.adapter.js +83 -17
- package/dist/adapters/lark/lark.adapter.js.map +1 -1
- package/dist/adapters/slack/slack-message.parser.d.ts +2 -9
- package/dist/adapters/slack/slack-message.parser.d.ts.map +1 -1
- package/dist/adapters/slack/slack-message.parser.js +21 -113
- package/dist/adapters/slack/slack-message.parser.js.map +1 -1
- package/dist/adapters/slack/slack.adapter.d.ts +4 -0
- package/dist/adapters/slack/slack.adapter.d.ts.map +1 -1
- package/dist/adapters/slack/slack.adapter.js +78 -20
- package/dist/adapters/slack/slack.adapter.js.map +1 -1
- package/dist/adapters/slack/slack.controller.d.ts.map +1 -1
- package/dist/adapters/slack/slack.controller.js +5 -2
- package/dist/adapters/slack/slack.controller.js.map +1 -1
- package/dist/common/project-validation.d.ts +1 -1
- package/dist/common/project-validation.d.ts.map +1 -1
- package/dist/common/project-validation.js +1 -9
- package/dist/common/project-validation.js.map +1 -1
- package/dist/database/repositories/bot.repository.d.ts +4 -0
- package/dist/database/repositories/bot.repository.d.ts.map +1 -1
- package/dist/database/repositories/bot.repository.js +15 -0
- package/dist/database/repositories/bot.repository.js.map +1 -1
- package/dist/database/repositories/project.repository.d.ts.map +1 -1
- package/dist/database/repositories/project.repository.js +0 -2
- package/dist/database/repositories/project.repository.js.map +1 -1
- package/dist/database/repositories/task.repository.d.ts +1 -1
- package/dist/database/repositories/task.repository.d.ts.map +1 -1
- package/dist/database/repositories/task.repository.js +4 -1
- package/dist/database/repositories/task.repository.js.map +1 -1
- package/dist/dispatcher/cleanup.service.d.ts +5 -0
- package/dist/dispatcher/cleanup.service.d.ts.map +1 -1
- package/dist/dispatcher/cleanup.service.js +19 -0
- package/dist/dispatcher/cleanup.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.module.js +2 -0
- package/dist/dispatcher/dispatcher.module.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +12 -4
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +150 -40
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.types.d.ts +1 -0
- package/dist/dispatcher/dispatcher.types.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.js +13 -2
- package/dist/dispatcher/scheduler.service.js.map +1 -1
- package/dist/dispatcher/task-creation.service.d.ts.map +1 -1
- package/dist/dispatcher/task-creation.service.js +16 -1
- package/dist/dispatcher/task-creation.service.js.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.d.ts +2 -2
- package/dist/dispatcher/task-lifecycle.service.d.ts.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.js +16 -8
- package/dist/dispatcher/task-lifecycle.service.js.map +1 -1
- package/dist/events/event-types.d.ts +1 -0
- package/dist/events/event-types.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.d.ts +18 -1
- package/dist/notifier/notification-consumer.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.js +91 -4
- package/dist/notifier/notification-consumer.js.map +1 -1
- package/dist/notifier/template.service.d.ts +2 -0
- package/dist/notifier/template.service.d.ts.map +1 -1
- package/dist/notifier/template.service.js +20 -0
- package/dist/notifier/template.service.js.map +1 -1
- package/dist/web/dashboard.controller.d.ts +1 -1
- package/dist/web/dashboard.controller.d.ts.map +1 -1
- package/dist/web/dashboard.controller.js +12 -4
- package/dist/web/dashboard.controller.js.map +1 -1
- package/dist/web/dashboard.service.d.ts +18 -0
- package/dist/web/dashboard.service.d.ts.map +1 -1
- package/dist/web/dashboard.service.js +78 -8
- package/dist/web/dashboard.service.js.map +1 -1
- package/dist/web/frame-handlers/progress.handler.d.ts +3 -1
- package/dist/web/frame-handlers/progress.handler.d.ts.map +1 -1
- package/dist/web/frame-handlers/progress.handler.js +22 -3
- package/dist/web/frame-handlers/progress.handler.js.map +1 -1
- package/dist/web/project.controller.d.ts +0 -2
- package/dist/web/project.controller.d.ts.map +1 -1
- package/dist/web/task.controller.d.ts +3 -1
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +7 -5
- package/dist/web/task.controller.js.map +1 -1
- package/dist/web/web-event.service.d.ts.map +1 -1
- package/dist/web/web-event.service.js +1 -0
- package/dist/web/web-event.service.js.map +1 -1
- package/dist/web/worker-channel.gateway.d.ts.map +1 -1
- package/dist/web/worker-channel.gateway.js +1 -1
- package/dist/web/worker-channel.gateway.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-B37kGOg-.js → AccessTokensPage-B2zkZtaB.js} +1 -1
- package/public/assets/{AdminPage-Jz5wJYYo.js → AdminPage-B-n-9yUY.js} +1 -1
- package/public/assets/{ApiReferencePage-3HCao2I-.js → ApiReferencePage-Dcik4fBN.js} +1 -1
- package/public/assets/{ArchitecturePage-Dkq4OMH4.js → ArchitecturePage-CDgB6NL0.js} +1 -1
- package/public/assets/{AuditLogPage-CBPpYMF3.js → AuditLogPage-CmxGpu8q.js} +1 -1
- package/public/assets/{BindPlatformPage-U0OoNP9F.js → BindPlatformPage-D-7wxMjF.js} +1 -1
- package/public/assets/{BotIntegrationPage-HMlGzxip.js → BotIntegrationPage-DoD5KbmU.js} +1 -1
- package/public/assets/BotManage-DSe8d-gZ.js +6 -0
- package/public/assets/{BotSetupPage-DZh6oQoQ.js → BotSetupPage-BkNF3ug4.js} +1 -1
- package/public/assets/{ChangelogPage-DKgK8Zi9.js → ChangelogPage-BUAm5LN6.js} +1 -1
- package/public/assets/{CliReferencePage-DPdhWACA.js → CliReferencePage-B6-2m7YU.js} +1 -1
- package/public/assets/{DeploymentPage-4VuP4mnX.js → DeploymentPage-cW2JDGd0.js} +1 -1
- package/public/assets/{DevWorkflowPage-CQ1hJ7Or.js → DevWorkflowPage-BbNK1Bmy.js} +1 -1
- package/public/assets/{DeveloperManage-Kco6t4om.js → DeveloperManage-BVkSw-WE.js} +2 -2
- package/public/assets/{DeveloperSetupPage-mRrbH5xe.js → DeveloperSetupPage-Cf8ehfWm.js} +1 -1
- package/public/assets/{DocsIndexPage-DYjwjEE0.js → DocsIndexPage-BEMGBIkx.js} +1 -1
- package/public/assets/{DocsLayout-CrX-ApPM.js → DocsLayout-BLcuuadd.js} +1 -1
- package/public/assets/{DocsPrimitives-DeUTjHq6.js → DocsPrimitives-BEIQH4P7.js} +1 -1
- package/public/assets/EditProjectPage-RsYg77Bf.js +2 -0
- package/public/assets/{EmptyState-Cuv36Xt4.js → EmptyState-D8UwaoPs.js} +1 -1
- package/public/assets/{EnvVariablesPage-CvHe4Xig.js → EnvVariablesPage-krKQsNzw.js} +1 -1
- package/public/assets/HomePage-vhKQtyLw.js +1 -0
- package/public/assets/{InfoRow-DeNySRbP.js → InfoRow-BbQYGWPd.js} +1 -1
- package/public/assets/{InstallationPage-BCGJORc8.js → InstallationPage-blIErVXZ.js} +1 -1
- package/public/assets/{LandingPage-CTroZzhm.js → LandingPage-CL2eVc3w.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-BXM4MX2P.js → LocalDevelopmentPage-CNfZtynN.js} +1 -1
- package/public/assets/{LoginPage-A75sAGVu.js → LoginPage-C_jpU4-N.js} +1 -1
- package/public/assets/{MetricBar-BDEzd1N4.js → MetricBar-CCL5kOaE.js} +1 -1
- package/public/assets/{NotFoundPage-C8Kh0_3v.js → NotFoundPage-DiQ3T_pE.js} +1 -1
- package/public/assets/{OnboardingGuide-_2H21YWa.js → OnboardingGuide-xVUtEvVm.js} +1 -1
- package/public/assets/{PermissionsPage-2rL23RBw.js → PermissionsPage-CE5Yc52w.js} +1 -1
- package/public/assets/{PipelineConfigPage-B1idgNZD.js → PipelineConfigPage-BG_LWoNZ.js} +1 -1
- package/public/assets/{PipelineEditorPage-BePXaiIA.js → PipelineEditorPage-BR9ozDOr.js} +1 -1
- package/public/assets/{ProfilePage-Bsb-yYFk.js → ProfilePage-kUKBviJg.js} +1 -1
- package/public/assets/{ProjectDetailPage-CJ5e4NOa.js → ProjectDetailPage-VE0081wk.js} +3 -3
- package/public/assets/ProjectListPage-DZoCY4RY.js +6 -0
- package/public/assets/{PtyTerminal-DaKz0vK4.js → PtyTerminal-DY7uY9Y-.js} +7 -7
- package/public/assets/{QuickAuth-B7dl4f3-.js → QuickAuth-DbURb8Mn.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-2dHwvxlc.js → RemoveMemberConfirmDialog-WvwPPSjT.js} +1 -1
- package/public/assets/{Select-Ddvq-p-d.js → Select-B_UE_NDL.js} +1 -1
- package/public/assets/{SettingsPage-CBdcZRG8.js → SettingsPage-DpJ00PdY.js} +1 -1
- package/public/assets/{Skeleton-DobWAlna.js → Skeleton-CqLLWdXS.js} +1 -1
- package/public/assets/{SkillPage-B8K73UoR.js → SkillPage-D5a41yA5.js} +1 -1
- package/public/assets/TaskDetailPage-Dt3Hj-nd.js +21 -0
- package/public/assets/TaskListPage-CbmW-VAl.js +1 -0
- package/public/assets/{TaskStatusBadge-DEvQC-u6.js → TaskStatusBadge-DzeMf5Ey.js} +1 -1
- package/public/assets/TerminalHomePage-D7aNN02N.js +11 -0
- package/public/assets/{TokenManage-pe5Gl1xB.js → TokenManage-BCVRHkhz.js} +1 -1
- package/public/assets/Tooltip-BWRiD768.js +1 -0
- package/public/assets/{TotpSetupPage-Cg2eJ4tj.js → TotpSetupPage-D4T0gS9_.js} +1 -1
- package/public/assets/WorkerDetailPage-D9ZTWwot.js +1 -0
- package/public/assets/{WorkerListPage-ikzre6x3.js → WorkerListPage-4qQGHwbV.js} +2 -2
- package/public/assets/{WorkerOperationsPage-CZTm_7Iw.js → WorkerOperationsPage-DKPUYRDJ.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-DOoDjnsh.js → WorkerSetupGuidePage-B4B-DkyO.js} +1 -1
- package/public/assets/{WorkerSetupPage-CKBix5Q1.js → WorkerSetupPage-frqVW4Ll.js} +1 -1
- package/public/assets/{arrow-left-JxQLehNu.js → arrow-left-DEORM5c1.js} +1 -1
- package/public/assets/{arrow-right-B9MMPq7r.js → arrow-right-B0qrrCV_.js} +1 -1
- package/public/assets/{bot-D4XAIZpg.js → bot-B_Wtzq9W.js} +1 -1
- package/public/assets/{chevron-right-BnrKn_TK.js → chevron-right-CURI3LO_.js} +1 -1
- package/public/assets/{copy-BMk275-C.js → copy-4UTzTyXv.js} +1 -1
- package/public/assets/{download-CDL9H3k4.js → download-Dq5jLFci.js} +1 -1
- package/public/assets/{external-link-w9HXli2Y.js → external-link-Cj283ZgT.js} +1 -1
- package/public/assets/index-BiItJ2NI.css +1 -0
- package/public/assets/{index-BQnGxJp6.js → index-C5MJg1oC.js} +48 -48
- package/public/assets/{key-D2RcZwqu.js → key-BKBK0Uc2.js} +1 -1
- package/public/assets/{loader-circle-WkHSZw6i.js → loader-circle-B71q4Dz7.js} +1 -1
- package/public/assets/{pencil-DhRHGJdQ.js → pencil-DG3Q-41a.js} +1 -1
- package/public/assets/{plus-DjrYpu3Y.js → plus-CQjC8fgx.js} +1 -1
- package/public/assets/{rotate-ccw-BQIvBc59.js → rotate-ccw-CQh0kfDP.js} +1 -1
- package/public/assets/{scroll-text-CYw22M6v.js → scroll-text-DF3DMVZk.js} +1 -1
- package/public/assets/{settings-BnLpYMUh.js → settings-C_K0CJNU.js} +1 -1
- package/public/assets/{status-colors-BctY6ntj.js → status-colors-BnNRsWp0.js} +1 -1
- package/public/assets/{task-constants-Q3KTzg_P.js → task-constants-D_2_U6qL.js} +1 -1
- package/public/assets/{trash-2-CKUpgjbq.js → trash-2-DsQUbmfY.js} +1 -1
- package/public/assets/{useFetch-B2mQfB2A.js → useFetch-C8LjfJUm.js} +1 -1
- package/public/assets/{users-Bs898oaT.js → users-BWaNs7Vz.js} +1 -1
- package/public/assets/{wifi-sZC7YCLF.js → wifi-0ZLwtMKj.js} +1 -1
- package/public/assets/{workflow-aMBoiSG2.js → workflow-B0yaOIwg.js} +1 -1
- package/public/index.html +2 -2
- package/public/sw.js +1 -1
- package/public/assets/BotManage-VXqJlXLc.js +0 -6
- package/public/assets/EditProjectPage-Df1ZAe44.js +0 -2
- package/public/assets/HomePage-BMuwtC-M.js +0 -1
- package/public/assets/ProjectListPage-DpivjBfJ.js +0 -6
- package/public/assets/TaskDetailPage-iKtR7IDt.js +0 -21
- package/public/assets/TaskListPage-CdOI_dWD.js +0 -1
- package/public/assets/TerminalHomePage-BMIZMlee.js +0 -11
- package/public/assets/WorkerDetailPage-ChkCQsSd.js +0 -1
- package/public/assets/index-DrlMKbMb.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CREATE INDEX IF NOT EXISTS idx_chat_bindings_project_key ON chat_bindings(project_key);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CommandType } from '@overlordai/protocol';
|
|
2
|
+
/**
|
|
3
|
+
* Parsed command extracted from an @bot message.
|
|
4
|
+
*/
|
|
5
|
+
export interface ParsedCommand {
|
|
6
|
+
type: CommandType | 'help';
|
|
7
|
+
args: {
|
|
8
|
+
description?: string;
|
|
9
|
+
project?: string;
|
|
10
|
+
worker?: string;
|
|
11
|
+
taskId?: number;
|
|
12
|
+
taskType?: string;
|
|
13
|
+
query?: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Tokenize input text, respecting single and double-quoted strings.
|
|
18
|
+
* Quotes are stripped from the resulting tokens.
|
|
19
|
+
*/
|
|
20
|
+
export declare function tokenize(text: string): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Extract a task ID from tokens. Recognises `#42` or bare `42`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractTaskId(tokens: string[]): number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a command that accepts an optional task ID.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseWithOptionalTaskId(type: CommandType, tokens: string[]): ParsedCommand;
|
|
29
|
+
/**
|
|
30
|
+
* Parse a command that requires a task ID; returns help if missing.
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseWithRequiredTaskId(type: CommandType, tokens: string[]): ParsedCommand;
|
|
33
|
+
/**
|
|
34
|
+
* Parse a "develop" command with description, --project, and --on flags.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseDevelop(tokens: string[]): ParsedCommand;
|
|
37
|
+
/**
|
|
38
|
+
* Parse a "list" command with optional --project flag.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseList(tokens: string[]): ParsedCommand;
|
|
41
|
+
/**
|
|
42
|
+
* Parse a "search" command — all tokens joined as the query.
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseSearch(tokens: string[]): ParsedCommand;
|
|
45
|
+
//# sourceMappingURL=command-parser.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parser.utils.d.ts","sourceRoot":"","sources":["../../src/adapters/command-parser.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE;QACJ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAe/C;AAKD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAQlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EAAE,GACf,aAAa,CAMf;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EAAE,GACf,aAAa,CAMf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAmD5D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAmBzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAM3D"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tokenize = tokenize;
|
|
4
|
+
exports.extractTaskId = extractTaskId;
|
|
5
|
+
exports.parseWithOptionalTaskId = parseWithOptionalTaskId;
|
|
6
|
+
exports.parseWithRequiredTaskId = parseWithRequiredTaskId;
|
|
7
|
+
exports.parseDevelop = parseDevelop;
|
|
8
|
+
exports.parseList = parseList;
|
|
9
|
+
exports.parseSearch = parseSearch;
|
|
10
|
+
const protocol_1 = require("@overlordai/protocol");
|
|
11
|
+
/**
|
|
12
|
+
* Tokenize input text, respecting single and double-quoted strings.
|
|
13
|
+
* Quotes are stripped from the resulting tokens.
|
|
14
|
+
*/
|
|
15
|
+
function tokenize(text) {
|
|
16
|
+
const tokens = [];
|
|
17
|
+
// /g regex — must be created fresh each call to avoid stale lastIndex
|
|
18
|
+
const regex = /(?:"([^"]*)")|(?:'([^']*)')|(\S+)/g;
|
|
19
|
+
let match;
|
|
20
|
+
while ((match = regex.exec(text)) !== null) {
|
|
21
|
+
// match[1] = double-quoted content, match[2] = single-quoted, match[3] = unquoted
|
|
22
|
+
const value = match[1] ?? match[2] ?? match[3];
|
|
23
|
+
if (value !== undefined) {
|
|
24
|
+
tokens.push(value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return tokens;
|
|
28
|
+
}
|
|
29
|
+
/** Module-level regex for extracting task IDs (no /g flag, safe to reuse). */
|
|
30
|
+
const TASK_ID_RE = /^#?(\d+)$/;
|
|
31
|
+
/**
|
|
32
|
+
* Extract a task ID from tokens. Recognises `#42` or bare `42`.
|
|
33
|
+
*/
|
|
34
|
+
function extractTaskId(tokens) {
|
|
35
|
+
for (const token of tokens) {
|
|
36
|
+
const match = TASK_ID_RE.exec(token);
|
|
37
|
+
if (match) {
|
|
38
|
+
return parseInt(match[1], 10);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parse a command that accepts an optional task ID.
|
|
45
|
+
*/
|
|
46
|
+
function parseWithOptionalTaskId(type, tokens) {
|
|
47
|
+
const taskId = extractTaskId(tokens);
|
|
48
|
+
return {
|
|
49
|
+
type,
|
|
50
|
+
args: taskId !== undefined ? { taskId } : {},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parse a command that requires a task ID; returns help if missing.
|
|
55
|
+
*/
|
|
56
|
+
function parseWithRequiredTaskId(type, tokens) {
|
|
57
|
+
const taskId = extractTaskId(tokens);
|
|
58
|
+
if (taskId === undefined) {
|
|
59
|
+
return { type: 'help', args: {} };
|
|
60
|
+
}
|
|
61
|
+
return { type, args: { taskId } };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse a "develop" command with description, --project, and --on flags.
|
|
65
|
+
*/
|
|
66
|
+
function parseDevelop(tokens) {
|
|
67
|
+
let description;
|
|
68
|
+
let project;
|
|
69
|
+
let worker;
|
|
70
|
+
let i = 0;
|
|
71
|
+
while (i < tokens.length) {
|
|
72
|
+
const token = tokens[i];
|
|
73
|
+
if (token === '--project' || token === '-p') {
|
|
74
|
+
i++;
|
|
75
|
+
if (i < tokens.length)
|
|
76
|
+
project = tokens[i];
|
|
77
|
+
i++;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (token === '--on') {
|
|
81
|
+
i++;
|
|
82
|
+
if (i < tokens.length)
|
|
83
|
+
worker = tokens[i];
|
|
84
|
+
i++;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// First non-flag token is the description
|
|
88
|
+
if (description === undefined) {
|
|
89
|
+
description = token;
|
|
90
|
+
}
|
|
91
|
+
i++;
|
|
92
|
+
}
|
|
93
|
+
if (!description) {
|
|
94
|
+
return { type: 'help', args: {} };
|
|
95
|
+
}
|
|
96
|
+
let taskType;
|
|
97
|
+
const typeMatch = description.match(/^(feat|fix|refactor|docs|chore):\s*/i);
|
|
98
|
+
if (typeMatch) {
|
|
99
|
+
taskType = typeMatch[1].toLowerCase();
|
|
100
|
+
description = description.slice(typeMatch[0].length).trim();
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
type: protocol_1.CommandType.DEVELOP,
|
|
104
|
+
args: {
|
|
105
|
+
description: description.trim(),
|
|
106
|
+
...(project ? { project } : {}),
|
|
107
|
+
...(worker ? { worker } : {}),
|
|
108
|
+
...(taskType ? { taskType } : {}),
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Parse a "list" command with optional --project flag.
|
|
114
|
+
*/
|
|
115
|
+
function parseList(tokens) {
|
|
116
|
+
let project;
|
|
117
|
+
let i = 0;
|
|
118
|
+
while (i < tokens.length) {
|
|
119
|
+
const token = tokens[i];
|
|
120
|
+
if (token === '--project' || token === '-p') {
|
|
121
|
+
i++;
|
|
122
|
+
if (i < tokens.length)
|
|
123
|
+
project = tokens[i];
|
|
124
|
+
i++;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
i++;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
type: protocol_1.CommandType.LIST,
|
|
131
|
+
args: project ? { project } : {},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Parse a "search" command — all tokens joined as the query.
|
|
136
|
+
*/
|
|
137
|
+
function parseSearch(tokens) {
|
|
138
|
+
const query = tokens.join(' ').trim();
|
|
139
|
+
if (!query) {
|
|
140
|
+
return { type: 'help', args: {} };
|
|
141
|
+
}
|
|
142
|
+
return { type: protocol_1.CommandType.SEARCH, args: { query } };
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=command-parser.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parser.utils.js","sourceRoot":"","sources":["../../src/adapters/command-parser.utils.ts"],"names":[],"mappings":";;AAqBA,4BAeC;AAQD,sCAQC;AAKD,0DASC;AAKD,0DASC;AAKD,oCAmDC;AAKD,8BAmBC;AAKD,kCAMC;AA3KD,mDAAmD;AAiBnD;;;GAGG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,sEAAsE;IACtE,MAAM,KAAK,GAAG,oCAAoC,CAAC;IACnD,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,kFAAkF;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B;;GAEG;AACH,SAAgB,aAAa,CAAC,MAAgB;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,IAAiB,EACjB,MAAgB;IAEhB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,IAAiB,EACjB,MAAgB;IAEhB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAgB;IAC3C,IAAI,WAA+B,CAAC;IACpC,IAAI,OAA2B,CAAC;IAChC,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC5C,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;gBAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;gBAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,QAA4B,CAAC;IACjC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5E,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,EAAE,sBAAW,CAAC,OAAO;QACzB,IAAI,EAAE;YACJ,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;YAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAgB;IACxC,IAAI,OAA2B,CAAC;IAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC5C,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;gBAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO;QACL,IAAI,EAAE,sBAAW,CAAC,IAAI;QACtB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,MAAgB;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,sBAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-text.d.ts","sourceRoot":"","sources":["../../src/adapters/help-text.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBtD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildHelpText = buildHelpText;
|
|
4
|
+
function buildHelpText(platform) {
|
|
5
|
+
return [
|
|
6
|
+
'Available commands:',
|
|
7
|
+
' develop "description" [--project key] [--on worker]',
|
|
8
|
+
' progress [#taskId]',
|
|
9
|
+
' cancel #taskId',
|
|
10
|
+
' retry #taskId',
|
|
11
|
+
' list [--project key]',
|
|
12
|
+
' workspace #taskId',
|
|
13
|
+
' logs #taskId',
|
|
14
|
+
' confirm #taskId',
|
|
15
|
+
' projects — list your projects',
|
|
16
|
+
' status — show cluster status',
|
|
17
|
+
' show #taskId — show task details',
|
|
18
|
+
' workers — list all workers',
|
|
19
|
+
' search <query> — search tasks, workers, projects',
|
|
20
|
+
` bind — link your ${platform} account to Overlord`,
|
|
21
|
+
' info — show chat and user info for this channel',
|
|
22
|
+
].join('\n');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=help-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-text.js","sourceRoot":"","sources":["../../src/adapters/help-text.ts"],"names":[],"mappings":";;AAAA,sCAmBC;AAnBD,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO;QACL,qBAAqB;QACrB,uDAAuD;QACvD,sBAAsB;QACtB,kBAAkB;QAClB,iBAAiB;QACjB,wBAAwB;QACxB,qBAAqB;QACrB,gBAAgB;QAChB,mBAAmB;QACnB,iCAAiC;QACjC,gCAAgC;QAChC,oCAAoC;QACpC,8BAA8B;QAC9B,oDAAoD;QACpD,sBAAsB,QAAQ,sBAAsB;QACpD,mDAAmD;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Parsed command extracted from a Lark @bot message.
|
|
4
|
-
*/
|
|
5
|
-
export interface ParsedCommand {
|
|
6
|
-
type: CommandType | 'help';
|
|
7
|
-
args: {
|
|
8
|
-
description?: string;
|
|
9
|
-
project?: string;
|
|
10
|
-
worker?: string;
|
|
11
|
-
taskId?: number;
|
|
12
|
-
taskType?: string;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
1
|
+
export type { ParsedCommand } from '../command-parser.utils';
|
|
2
|
+
import type { ParsedCommand } from '../command-parser.utils';
|
|
15
3
|
/**
|
|
16
4
|
* Parses Lark @bot message text into structured commands.
|
|
17
5
|
*
|
|
@@ -24,8 +12,11 @@ export interface ParsedCommand {
|
|
|
24
12
|
* @bot workspace #42
|
|
25
13
|
* @bot logs #42
|
|
26
14
|
* @bot confirm #42
|
|
27
|
-
* @bot
|
|
28
|
-
* @bot
|
|
15
|
+
* @bot projects
|
|
16
|
+
* @bot status
|
|
17
|
+
* @bot show #42
|
|
18
|
+
* @bot workers
|
|
19
|
+
* @bot search keyword
|
|
29
20
|
*/
|
|
30
21
|
export declare class LarkMessageParser {
|
|
31
22
|
/**
|
|
@@ -34,19 +25,5 @@ export declare class LarkMessageParser {
|
|
|
34
25
|
* @returns Parsed command, or a help command if unrecognised.
|
|
35
26
|
*/
|
|
36
27
|
parse(text: string): ParsedCommand;
|
|
37
|
-
private parseDevelop;
|
|
38
|
-
private parseWithOptionalTaskId;
|
|
39
|
-
private parseWithRequiredTaskId;
|
|
40
|
-
private parseList;
|
|
41
|
-
private parseWorkerCommand;
|
|
42
|
-
/**
|
|
43
|
-
* Extract a task ID from tokens. Recognises `#42` or bare `42`.
|
|
44
|
-
*/
|
|
45
|
-
private extractTaskId;
|
|
46
|
-
/**
|
|
47
|
-
* Tokenize input text, respecting single and double-quoted strings.
|
|
48
|
-
* Quotes are stripped from the resulting tokens.
|
|
49
|
-
*/
|
|
50
|
-
private tokenize;
|
|
51
28
|
}
|
|
52
29
|
//# sourceMappingURL=lark-message.parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lark-message.parser.d.ts","sourceRoot":"","sources":["../../../src/adapters/lark/lark-message.parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lark-message.parser.d.ts","sourceRoot":"","sources":["../../../src/adapters/lark/lark-message.parser.ts"],"names":[],"mappings":"AAWA,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,iBAAiB;IAC5B;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAsEnC"}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.LarkMessageParser = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const protocol_1 = require("@overlordai/protocol");
|
|
12
|
+
const command_parser_utils_1 = require("../command-parser.utils");
|
|
12
13
|
/**
|
|
13
14
|
* Parses Lark @bot message text into structured commands.
|
|
14
15
|
*
|
|
@@ -21,8 +22,11 @@ const protocol_1 = require("@overlordai/protocol");
|
|
|
21
22
|
* @bot workspace #42
|
|
22
23
|
* @bot logs #42
|
|
23
24
|
* @bot confirm #42
|
|
24
|
-
* @bot
|
|
25
|
-
* @bot
|
|
25
|
+
* @bot projects
|
|
26
|
+
* @bot status
|
|
27
|
+
* @bot show #42
|
|
28
|
+
* @bot workers
|
|
29
|
+
* @bot search keyword
|
|
26
30
|
*/
|
|
27
31
|
let LarkMessageParser = class LarkMessageParser {
|
|
28
32
|
/**
|
|
@@ -36,7 +40,7 @@ let LarkMessageParser = class LarkMessageParser {
|
|
|
36
40
|
return { type: 'help', args: {} };
|
|
37
41
|
}
|
|
38
42
|
// Split into tokens, but respect quoted strings
|
|
39
|
-
const tokens =
|
|
43
|
+
const tokens = (0, command_parser_utils_1.tokenize)(trimmed);
|
|
40
44
|
if (tokens.length === 0) {
|
|
41
45
|
return { type: 'help', args: {} };
|
|
42
46
|
}
|
|
@@ -44,28 +48,35 @@ let LarkMessageParser = class LarkMessageParser {
|
|
|
44
48
|
switch (commandName) {
|
|
45
49
|
case 'develop':
|
|
46
50
|
case 'dev':
|
|
47
|
-
return
|
|
51
|
+
return (0, command_parser_utils_1.parseDevelop)(tokens.slice(1));
|
|
48
52
|
case 'progress':
|
|
49
|
-
return
|
|
53
|
+
return (0, command_parser_utils_1.parseWithOptionalTaskId)(protocol_1.CommandType.PROGRESS, tokens.slice(1));
|
|
50
54
|
case 'cancel':
|
|
51
|
-
return
|
|
55
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.CANCEL, tokens.slice(1));
|
|
52
56
|
case 'retry':
|
|
53
|
-
return
|
|
57
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.RETRY, tokens.slice(1));
|
|
54
58
|
case 'list':
|
|
55
59
|
case 'ls':
|
|
56
|
-
return
|
|
60
|
+
return (0, command_parser_utils_1.parseList)(tokens.slice(1));
|
|
57
61
|
case 'workspace':
|
|
58
62
|
case 'ws':
|
|
59
|
-
return
|
|
63
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.WORKSPACE, tokens.slice(1));
|
|
60
64
|
case 'logs':
|
|
61
65
|
case 'log':
|
|
62
|
-
return
|
|
66
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.LOGS, tokens.slice(1));
|
|
63
67
|
case 'confirm':
|
|
64
|
-
return
|
|
65
|
-
case '
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.CONFIRM, tokens.slice(1));
|
|
69
|
+
case 'projects':
|
|
70
|
+
case 'proj':
|
|
71
|
+
return { type: protocol_1.CommandType.PROJECTS, args: {} };
|
|
72
|
+
case 'status':
|
|
73
|
+
return { type: protocol_1.CommandType.STATUS, args: {} };
|
|
74
|
+
case 'show':
|
|
75
|
+
return (0, command_parser_utils_1.parseWithRequiredTaskId)(protocol_1.CommandType.SHOW, tokens.slice(1));
|
|
76
|
+
case 'workers':
|
|
77
|
+
return { type: protocol_1.CommandType.WORKERS, args: {} };
|
|
78
|
+
case 'search':
|
|
79
|
+
return (0, command_parser_utils_1.parseSearch)(tokens.slice(1));
|
|
69
80
|
case 'bind':
|
|
70
81
|
return { type: protocol_1.CommandType.BIND, args: {} };
|
|
71
82
|
case 'info':
|
|
@@ -74,129 +85,6 @@ let LarkMessageParser = class LarkMessageParser {
|
|
|
74
85
|
return { type: 'help', args: {} };
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
// Sub-parsers
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
parseDevelop(tokens) {
|
|
81
|
-
let description;
|
|
82
|
-
let project;
|
|
83
|
-
let worker;
|
|
84
|
-
let i = 0;
|
|
85
|
-
while (i < tokens.length) {
|
|
86
|
-
const token = tokens[i];
|
|
87
|
-
if (token === '--project' || token === '-p') {
|
|
88
|
-
i++;
|
|
89
|
-
if (i < tokens.length)
|
|
90
|
-
project = tokens[i];
|
|
91
|
-
i++;
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
if (token === '--on') {
|
|
95
|
-
i++;
|
|
96
|
-
if (i < tokens.length)
|
|
97
|
-
worker = tokens[i];
|
|
98
|
-
i++;
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
// First non-flag token is the description
|
|
102
|
-
if (description === undefined) {
|
|
103
|
-
description = token;
|
|
104
|
-
}
|
|
105
|
-
i++;
|
|
106
|
-
}
|
|
107
|
-
if (!description) {
|
|
108
|
-
return { type: 'help', args: {} };
|
|
109
|
-
}
|
|
110
|
-
let taskType;
|
|
111
|
-
if (description) {
|
|
112
|
-
const typeMatch = description.match(/^(feat|fix|refactor|docs|chore):\s*/i);
|
|
113
|
-
if (typeMatch) {
|
|
114
|
-
taskType = typeMatch[1].toLowerCase();
|
|
115
|
-
description = description.slice(typeMatch[0].length).trim();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return {
|
|
119
|
-
type: protocol_1.CommandType.DEVELOP,
|
|
120
|
-
args: {
|
|
121
|
-
description: description.trim(),
|
|
122
|
-
...(project ? { project } : {}),
|
|
123
|
-
...(worker ? { worker } : {}),
|
|
124
|
-
...(taskType ? { taskType } : {}),
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
parseWithOptionalTaskId(type, tokens) {
|
|
129
|
-
const taskId = this.extractTaskId(tokens);
|
|
130
|
-
return {
|
|
131
|
-
type,
|
|
132
|
-
args: taskId !== undefined ? { taskId } : {},
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
parseWithRequiredTaskId(type, tokens) {
|
|
136
|
-
const taskId = this.extractTaskId(tokens);
|
|
137
|
-
if (taskId === undefined) {
|
|
138
|
-
return { type: 'help', args: {} };
|
|
139
|
-
}
|
|
140
|
-
return { type, args: { taskId } };
|
|
141
|
-
}
|
|
142
|
-
parseList(tokens) {
|
|
143
|
-
let project;
|
|
144
|
-
let i = 0;
|
|
145
|
-
while (i < tokens.length) {
|
|
146
|
-
const token = tokens[i];
|
|
147
|
-
if (token === '--project' || token === '-p') {
|
|
148
|
-
i++;
|
|
149
|
-
if (i < tokens.length)
|
|
150
|
-
project = tokens[i];
|
|
151
|
-
i++;
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
i++;
|
|
155
|
-
}
|
|
156
|
-
return {
|
|
157
|
-
type: protocol_1.CommandType.LIST,
|
|
158
|
-
args: project ? { project } : {},
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
parseWorkerCommand(type, tokens) {
|
|
162
|
-
const workerName = tokens[0];
|
|
163
|
-
if (!workerName) {
|
|
164
|
-
return { type: 'help', args: {} };
|
|
165
|
-
}
|
|
166
|
-
return { type, args: { worker: workerName } };
|
|
167
|
-
}
|
|
168
|
-
// ---------------------------------------------------------------------------
|
|
169
|
-
// Helpers
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
/**
|
|
172
|
-
* Extract a task ID from tokens. Recognises `#42` or bare `42`.
|
|
173
|
-
*/
|
|
174
|
-
extractTaskId(tokens) {
|
|
175
|
-
for (const token of tokens) {
|
|
176
|
-
const match = /^#?(\d+)$/.exec(token);
|
|
177
|
-
if (match) {
|
|
178
|
-
return parseInt(match[1], 10);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return undefined;
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Tokenize input text, respecting single and double-quoted strings.
|
|
185
|
-
* Quotes are stripped from the resulting tokens.
|
|
186
|
-
*/
|
|
187
|
-
tokenize(text) {
|
|
188
|
-
const tokens = [];
|
|
189
|
-
const regex = /(?:"([^"]*)")|(?:'([^']*)')|(\S+)/g;
|
|
190
|
-
let match;
|
|
191
|
-
while ((match = regex.exec(text)) !== null) {
|
|
192
|
-
// match[1] = double-quoted content, match[2] = single-quoted, match[3] = unquoted
|
|
193
|
-
const value = match[1] ?? match[2] ?? match[3];
|
|
194
|
-
if (value !== undefined) {
|
|
195
|
-
tokens.push(value);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return tokens;
|
|
199
|
-
}
|
|
200
88
|
};
|
|
201
89
|
exports.LarkMessageParser = LarkMessageParser;
|
|
202
90
|
exports.LarkMessageParser = LarkMessageParser = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lark-message.parser.js","sourceRoot":"","sources":["../../../src/adapters/lark/lark-message.parser.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,mDAAmD;
|
|
1
|
+
{"version":3,"file":"lark-message.parser.js","sourceRoot":"","sources":["../../../src/adapters/lark/lark-message.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,18 @@ export declare class LarkAdapter implements IMessageAdapter {
|
|
|
62
62
|
* Send a plain text message (internal helper).
|
|
63
63
|
*/
|
|
64
64
|
private sendTextMessage;
|
|
65
|
+
/**
|
|
66
|
+
* Fetch the text content of a quoted (parent) message.
|
|
67
|
+
* Returns null if the message is not text or cannot be fetched.
|
|
68
|
+
*/
|
|
69
|
+
private fetchQuotedContent;
|
|
70
|
+
/**
|
|
71
|
+
* Resolve a @mentioned developer from the mentions array.
|
|
72
|
+
* Filters out the sender's own mention. The first mention is assumed to be
|
|
73
|
+
* the bot. If a second mention resolves to a registered developer, returns
|
|
74
|
+
* their id and name. If unresolved, returns the unregistered name.
|
|
75
|
+
*/
|
|
76
|
+
private resolveDeveloperMention;
|
|
65
77
|
/**
|
|
66
78
|
* Send a help message listing available commands.
|
|
67
79
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lark.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/lark/lark.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"lark.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/lark/lark.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAoDtD;;;GAGG;AACH,qBACa,WAAY,YAAW,eAAe;IAa/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAErC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IApBhC,QAAQ,CAAC,QAAQ,SAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiE;IAEzF,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAG5B,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,mBAAmB,EAClC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,eAAe,EAC5B,oBAAoB,EAAE,oBAAoB,EAE1C,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,aAAa;IAOzC,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YA6C5C,aAAa;YA+Lb,gBAAgB;IA+CxB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAqDrE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCpF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQvE;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;YACW,eAAe;IA0B7B;;;OAGG;YACW,kBAAkB;IAYhC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;OAEG;YACW,eAAe;CAG9B"}
|