@sireai/optimus 0.1.1
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/.env.example +16 -0
- package/LICENSE +21 -0
- package/README.md +104 -0
- package/dist/cli/optimus.d.ts +2 -0
- package/dist/cli/optimus.js +2951 -0
- package/dist/cli/optimus.js.map +1 -0
- package/dist/cli/self-update.d.ts +49 -0
- package/dist/cli/self-update.js +264 -0
- package/dist/cli/self-update.js.map +1 -0
- package/dist/config/load-config.d.ts +3 -0
- package/dist/config/load-config.js +321 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/optimus-paths.d.ts +13 -0
- package/dist/config/optimus-paths.js +44 -0
- package/dist/config/optimus-paths.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/jira/jira-cli.d.ts +1 -0
- package/dist/integrations/jira/jira-cli.js +278 -0
- package/dist/integrations/jira/jira-cli.js.map +1 -0
- package/dist/integrations/jira/jira-client.d.ts +99 -0
- package/dist/integrations/jira/jira-client.js +521 -0
- package/dist/integrations/jira/jira-client.js.map +1 -0
- package/dist/integrations/jira/jira-submit.d.ts +71 -0
- package/dist/integrations/jira/jira-submit.js +351 -0
- package/dist/integrations/jira/jira-submit.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-auth-resolver.d.ts +23 -0
- package/dist/problem-solving-core/codex/codex-auth-resolver.js +136 -0
- package/dist/problem-solving-core/codex/codex-auth-resolver.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-connectivity-checks.d.ts +6 -0
- package/dist/problem-solving-core/codex/codex-connectivity-checks.js +81 -0
- package/dist/problem-solving-core/codex/codex-connectivity-checks.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-failure-classifier.d.ts +2 -0
- package/dist/problem-solving-core/codex/codex-failure-classifier.js +49 -0
- package/dist/problem-solving-core/codex/codex-failure-classifier.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-global-config.d.ts +17 -0
- package/dist/problem-solving-core/codex/codex-global-config.js +100 -0
- package/dist/problem-solving-core/codex/codex-global-config.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-preflight.d.ts +13 -0
- package/dist/problem-solving-core/codex/codex-preflight.js +142 -0
- package/dist/problem-solving-core/codex/codex-preflight.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-provider-profile.d.ts +14 -0
- package/dist/problem-solving-core/codex/codex-provider-profile.js +68 -0
- package/dist/problem-solving-core/codex/codex-provider-profile.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-required-env.d.ts +3 -0
- package/dist/problem-solving-core/codex/codex-required-env.js +21 -0
- package/dist/problem-solving-core/codex/codex-required-env.js.map +1 -0
- package/dist/problem-solving-core/codex/codex-runner.d.ts +37 -0
- package/dist/problem-solving-core/codex/codex-runner.js +926 -0
- package/dist/problem-solving-core/codex/codex-runner.js.map +1 -0
- package/dist/problem-solving-core/codex/evolution-skill-guard.d.ts +36 -0
- package/dist/problem-solving-core/codex/evolution-skill-guard.js +143 -0
- package/dist/problem-solving-core/codex/evolution-skill-guard.js.map +1 -0
- package/dist/problem-solving-core/codex/repo-memory-service.d.ts +24 -0
- package/dist/problem-solving-core/codex/repo-memory-service.js +114 -0
- package/dist/problem-solving-core/codex/repo-memory-service.js.map +1 -0
- package/dist/problem-solving-core/codex/skill-sync-service.d.ts +35 -0
- package/dist/problem-solving-core/codex/skill-sync-service.js +280 -0
- package/dist/problem-solving-core/codex/skill-sync-service.js.map +1 -0
- package/dist/task-environment/cancellation/task-abort-registry.d.ts +17 -0
- package/dist/task-environment/cancellation/task-abort-registry.js +51 -0
- package/dist/task-environment/cancellation/task-abort-registry.js.map +1 -0
- package/dist/task-environment/cancellation/task-cancellation-service.d.ts +25 -0
- package/dist/task-environment/cancellation/task-cancellation-service.js +54 -0
- package/dist/task-environment/cancellation/task-cancellation-service.js.map +1 -0
- package/dist/task-environment/cancellation/task-cleanup-service.d.ts +22 -0
- package/dist/task-environment/cancellation/task-cleanup-service.js +67 -0
- package/dist/task-environment/cancellation/task-cleanup-service.js.map +1 -0
- package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.d.ts +13 -0
- package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.js +83 -0
- package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.js.map +1 -0
- package/dist/task-environment/delivery/commit-message/commit-message-builder.d.ts +6 -0
- package/dist/task-environment/delivery/commit-message/commit-message-builder.js +15 -0
- package/dist/task-environment/delivery/commit-message/commit-message-builder.js.map +1 -0
- package/dist/task-environment/delivery/commit-message/commit-message-template-types.d.ts +16 -0
- package/dist/task-environment/delivery/commit-message/commit-message-template-types.js +2 -0
- package/dist/task-environment/delivery/commit-message/commit-message-template-types.js.map +1 -0
- package/dist/task-environment/delivery/feishu-analysis-doc-service.d.ts +50 -0
- package/dist/task-environment/delivery/feishu-analysis-doc-service.js +454 -0
- package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -0
- package/dist/task-environment/delivery/feishu-card-renderer.d.ts +38 -0
- package/dist/task-environment/delivery/feishu-card-renderer.js +449 -0
- package/dist/task-environment/delivery/feishu-card-renderer.js.map +1 -0
- package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.d.ts +34 -0
- package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.js +201 -0
- package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.js.map +1 -0
- package/dist/task-environment/delivery/feishu-content/feishu-copy-config.d.ts +27 -0
- package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js +74 -0
- package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js.map +1 -0
- package/dist/task-environment/delivery/feishu-notifier.d.ts +45 -0
- package/dist/task-environment/delivery/feishu-notifier.js +250 -0
- package/dist/task-environment/delivery/feishu-notifier.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/analysis-message-template.d.ts +6 -0
- package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js +39 -0
- package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.d.ts +6 -0
- package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.js +40 -0
- package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/default-message-template.d.ts +6 -0
- package/dist/task-environment/delivery/feishu-templates/default-message-template.js +33 -0
- package/dist/task-environment/delivery/feishu-templates/default-message-template.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/patch-message-template.d.ts +6 -0
- package/dist/task-environment/delivery/feishu-templates/patch-message-template.js +40 -0
- package/dist/task-environment/delivery/feishu-templates/patch-message-template.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/template-registry.d.ts +2 -0
- package/dist/task-environment/delivery/feishu-templates/template-registry.js +11 -0
- package/dist/task-environment/delivery/feishu-templates/template-registry.js.map +1 -0
- package/dist/task-environment/delivery/feishu-templates/template-types.d.ts +20 -0
- package/dist/task-environment/delivery/feishu-templates/template-types.js +2 -0
- package/dist/task-environment/delivery/feishu-templates/template-types.js.map +1 -0
- package/dist/task-environment/delivery/task-delivery-dispatcher.d.ts +14 -0
- package/dist/task-environment/delivery/task-delivery-dispatcher.js +109 -0
- package/dist/task-environment/delivery/task-delivery-dispatcher.js.map +1 -0
- package/dist/task-environment/delivery/task-delivery-service.d.ts +33 -0
- package/dist/task-environment/delivery/task-delivery-service.js +432 -0
- package/dist/task-environment/delivery/task-delivery-service.js.map +1 -0
- package/dist/task-environment/delivery/task-publication-service.d.ts +97 -0
- package/dist/task-environment/delivery/task-publication-service.js +1369 -0
- package/dist/task-environment/delivery/task-publication-service.js.map +1 -0
- package/dist/task-environment/execution-addresses.d.ts +40 -0
- package/dist/task-environment/execution-addresses.js +63 -0
- package/dist/task-environment/execution-addresses.js.map +1 -0
- package/dist/task-environment/intake/cli-file-intake.d.ts +12 -0
- package/dist/task-environment/intake/cli-file-intake.js +56 -0
- package/dist/task-environment/intake/cli-file-intake.js.map +1 -0
- package/dist/task-environment/intake/manual-problem-intake.d.ts +3 -0
- package/dist/task-environment/intake/manual-problem-intake.js +57 -0
- package/dist/task-environment/intake/manual-problem-intake.js.map +1 -0
- package/dist/task-environment/intake/polling-problem-intake.d.ts +14 -0
- package/dist/task-environment/intake/polling-problem-intake.js +232 -0
- package/dist/task-environment/intake/polling-problem-intake.js.map +1 -0
- package/dist/task-environment/observability/logger.d.ts +76 -0
- package/dist/task-environment/observability/logger.js +604 -0
- package/dist/task-environment/observability/logger.js.map +1 -0
- package/dist/task-environment/observability/runtime-panel.d.ts +82 -0
- package/dist/task-environment/observability/runtime-panel.js +1008 -0
- package/dist/task-environment/observability/runtime-panel.js.map +1 -0
- package/dist/task-environment/observability/sound-notifier.d.ts +18 -0
- package/dist/task-environment/observability/sound-notifier.js +71 -0
- package/dist/task-environment/observability/sound-notifier.js.map +1 -0
- package/dist/task-environment/orchestration/execution-context-assembler.d.ts +41 -0
- package/dist/task-environment/orchestration/execution-context-assembler.js +464 -0
- package/dist/task-environment/orchestration/execution-context-assembler.js.map +1 -0
- package/dist/task-environment/orchestration/git-change-classifier.d.ts +19 -0
- package/dist/task-environment/orchestration/git-change-classifier.js +106 -0
- package/dist/task-environment/orchestration/git-change-classifier.js.map +1 -0
- package/dist/task-environment/orchestration/harness-registry.d.ts +27 -0
- package/dist/task-environment/orchestration/harness-registry.js +116 -0
- package/dist/task-environment/orchestration/harness-registry.js.map +1 -0
- package/dist/task-environment/orchestration/harness-resolver.d.ts +8 -0
- package/dist/task-environment/orchestration/harness-resolver.js +39 -0
- package/dist/task-environment/orchestration/harness-resolver.js.map +1 -0
- package/dist/task-environment/orchestration/task-orchestrator.d.ts +45 -0
- package/dist/task-environment/orchestration/task-orchestrator.js +1122 -0
- package/dist/task-environment/orchestration/task-orchestrator.js.map +1 -0
- package/dist/task-environment/orchestration/task-package-assembler.d.ts +4 -0
- package/dist/task-environment/orchestration/task-package-assembler.js +10 -0
- package/dist/task-environment/orchestration/task-package-assembler.js.map +1 -0
- package/dist/task-environment/orchestration/triage-agent.d.ts +54 -0
- package/dist/task-environment/orchestration/triage-agent.js +636 -0
- package/dist/task-environment/orchestration/triage-agent.js.map +1 -0
- package/dist/task-environment/orchestration/triage-runner.d.ts +65 -0
- package/dist/task-environment/orchestration/triage-runner.js +655 -0
- package/dist/task-environment/orchestration/triage-runner.js.map +1 -0
- package/dist/task-environment/publication-target.d.ts +12 -0
- package/dist/task-environment/publication-target.js +174 -0
- package/dist/task-environment/publication-target.js.map +1 -0
- package/dist/task-environment/runtime/blocking-event-queue.d.ts +7 -0
- package/dist/task-environment/runtime/blocking-event-queue.js +27 -0
- package/dist/task-environment/runtime/blocking-event-queue.js.map +1 -0
- package/dist/task-environment/runtime/optimus-runtime.d.ts +69 -0
- package/dist/task-environment/runtime/optimus-runtime.js +751 -0
- package/dist/task-environment/runtime/optimus-runtime.js.map +1 -0
- package/dist/task-environment/storage/sqlite-event-store.d.ts +52 -0
- package/dist/task-environment/storage/sqlite-event-store.js +288 -0
- package/dist/task-environment/storage/sqlite-event-store.js.map +1 -0
- package/dist/task-environment/storage/sqlite-task-store.d.ts +122 -0
- package/dist/task-environment/storage/sqlite-task-store.js +1182 -0
- package/dist/task-environment/storage/sqlite-task-store.js.map +1 -0
- package/dist/types.d.ts +629 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/embedded-skills/shared/repo-inspection/SKILL.md +9 -0
- package/embedded-skills/shared/repo-inspection/skill.json +5 -0
- package/embedded-skills/task/bugfix/android-debug-protocol/SKILL.md +10 -0
- package/embedded-skills/task/bugfix/android-debug-protocol/skill.json +6 -0
- package/harness/AGENTS.md +30 -0
- package/harness/CHECKLIST.md +44 -0
- package/harness/CONSTRAINTS.md +60 -0
- package/harness/FRAMEWORK.md +28 -0
- package/harness/GOAL.md +28 -0
- package/harness/HANDOFF.md +45 -0
- package/harness/TASK_PLAN.md +79 -0
- package/optimus.config.template.json +34 -0
- package/package.json +109 -0
- package/task-harnesses/bugfix/ACCEPT.md +47 -0
- package/task-harnesses/bugfix/CONSTRAINTS.md +46 -0
- package/task-harnesses/bugfix/CONTEXT.md +29 -0
- package/task-harnesses/bugfix/EVOLUTION.md +82 -0
- package/task-harnesses/bugfix/ROLE.md +29 -0
- package/task-harnesses/bugfix/STANDARD.md +250 -0
- package/task-harnesses/bugfix/manifest.json +13 -0
- package/task-harnesses/registry.json +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bugfix-commit-message-template.js","sourceRoot":"","sources":["../../../../src/task-environment/delivery/commit-message/bugfix-commit-message-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CommitMessageTemplate, CommitMessageTemplateContext } from "./commit-message-template-types.js";
|
|
2
|
+
export declare class CommitMessageBuilder {
|
|
3
|
+
private readonly templates;
|
|
4
|
+
constructor(templates?: CommitMessageTemplate[]);
|
|
5
|
+
build(context: CommitMessageTemplateContext): string;
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BugfixCommitMessageTemplate } from "./bugfix-commit-message-template.js";
|
|
2
|
+
export class CommitMessageBuilder {
|
|
3
|
+
templates;
|
|
4
|
+
constructor(templates = [new BugfixCommitMessageTemplate()]) {
|
|
5
|
+
this.templates = templates;
|
|
6
|
+
}
|
|
7
|
+
build(context) {
|
|
8
|
+
const template = this.templates.find((entry) => entry.supports(context));
|
|
9
|
+
if (!template) {
|
|
10
|
+
throw new Error(`No commit message template is registered for task type ${context.bundle.taskType}.`);
|
|
11
|
+
}
|
|
12
|
+
return template.render(context);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=commit-message-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-message-builder.js","sourceRoot":"","sources":["../../../../src/task-environment/delivery/commit-message/commit-message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAGlF,MAAM,OAAO,oBAAoB;IAEZ;IADnB,YACmB,YAAqC,CAAC,IAAI,2BAA2B,EAAE,CAAC;QAAxE,cAAS,GAAT,SAAS,CAA+D;IACxF,CAAC;IAEG,KAAK,CAAC,OAAqC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0DAA0D,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TaskDeliveryBundle, TaskPublicationReviewSystem } from "../../../types.js";
|
|
2
|
+
export interface CommitMessageTarget {
|
|
3
|
+
projectPath: string;
|
|
4
|
+
repoDir: string;
|
|
5
|
+
targetBranch?: string;
|
|
6
|
+
reviewSystem: TaskPublicationReviewSystem;
|
|
7
|
+
}
|
|
8
|
+
export interface CommitMessageTemplateContext {
|
|
9
|
+
bundle: TaskDeliveryBundle;
|
|
10
|
+
target: CommitMessageTarget;
|
|
11
|
+
changedPaths: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface CommitMessageTemplate {
|
|
14
|
+
supports(context: CommitMessageTemplateContext): boolean;
|
|
15
|
+
render(context: CommitMessageTemplateContext): string;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-message-template-types.js","sourceRoot":"","sources":["../../../../src/task-environment/delivery/commit-message/commit-message-template-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { TaskDeliveryBundle } from "../../types.js";
|
|
2
|
+
export interface FeishuAnalysisDocPublishResult {
|
|
3
|
+
bundle: TaskDeliveryBundle;
|
|
4
|
+
status: "skipped" | "uploaded" | "failed";
|
|
5
|
+
url?: string;
|
|
6
|
+
reason?: string;
|
|
7
|
+
}
|
|
8
|
+
interface FeishuExecResult {
|
|
9
|
+
stdout: string;
|
|
10
|
+
stderr: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FeishuAnalysisDocRefStore {
|
|
13
|
+
getRuntimeExternalRef<T>(key: string): Promise<T | undefined>;
|
|
14
|
+
setRuntimeExternalRef(key: string, value: unknown): Promise<void>;
|
|
15
|
+
deleteRuntimeExternalRef(key: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface FeishuAnalysisDocServiceOptions {
|
|
18
|
+
execFileImpl?: (file: string, args: readonly string[], options?: {
|
|
19
|
+
encoding?: BufferEncoding;
|
|
20
|
+
maxBuffer?: number;
|
|
21
|
+
signal?: AbortSignal;
|
|
22
|
+
}) => Promise<FeishuExecResult>;
|
|
23
|
+
refStore?: FeishuAnalysisDocRefStore;
|
|
24
|
+
}
|
|
25
|
+
export declare class FeishuAnalysisDocService {
|
|
26
|
+
private readonly execFileImpl;
|
|
27
|
+
private readonly refStore;
|
|
28
|
+
constructor(options?: FeishuAnalysisDocServiceOptions);
|
|
29
|
+
publishIfNeeded(bundle: TaskDeliveryBundle): Promise<FeishuAnalysisDocPublishResult>;
|
|
30
|
+
private buildTitle;
|
|
31
|
+
private ensureAnalysisParentNode;
|
|
32
|
+
private validateAnalysisParentNode;
|
|
33
|
+
private findExistingAnalysisParentNode;
|
|
34
|
+
private createAnalysisParentNode;
|
|
35
|
+
private runBestEffortPostCreateCommand;
|
|
36
|
+
private execFeishuCommand;
|
|
37
|
+
private withTimeout;
|
|
38
|
+
private extractDocumentUrl;
|
|
39
|
+
private extractDocumentToken;
|
|
40
|
+
private extractUrlFromText;
|
|
41
|
+
private extractTokenFromUrl;
|
|
42
|
+
private extractWikiNodeTokenFromUrl;
|
|
43
|
+
private parseJsonPayload;
|
|
44
|
+
private findStringValue;
|
|
45
|
+
private findDocumentTokenInValue;
|
|
46
|
+
private extractWikiNodeToken;
|
|
47
|
+
private extractSpaceId;
|
|
48
|
+
private readString;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
const EXEC_MAX_BUFFER = 4 * 1024 * 1024;
|
|
5
|
+
const FEISHU_DOC_URL_PATTERN = /https?:\/\/[^\s"'`<>]+\/(?:docx|wiki)\/[^\s"'`<>]+/gu;
|
|
6
|
+
const FEISHU_DOC_TOKEN_PATTERN = /\/docx\/([A-Za-z0-9]+)/u;
|
|
7
|
+
const FEISHU_WIKI_NODE_PATTERN = /\/wiki\/([A-Za-z0-9]+)/u;
|
|
8
|
+
const FEISHU_ANALYSIS_PARENT_REF_KEY = "feishu.analysis_parent_node";
|
|
9
|
+
const FEISHU_ANALYSIS_PARENT_TITLE = "Optimus";
|
|
10
|
+
const FEISHU_ANALYSIS_PARENT_SPACE = "my_library";
|
|
11
|
+
const FEISHU_COMMAND_TIMEOUT_MS = 30_000;
|
|
12
|
+
const FEISHU_PUBLISH_TIMEOUT_MS = 30_000;
|
|
13
|
+
export class FeishuAnalysisDocService {
|
|
14
|
+
execFileImpl;
|
|
15
|
+
refStore;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.refStore = options.refStore;
|
|
18
|
+
this.execFileImpl = options.execFileImpl ?? (async (file, args, execOptions) => {
|
|
19
|
+
const result = await execFileAsync(file, args, {
|
|
20
|
+
encoding: "utf8",
|
|
21
|
+
...execOptions
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
stdout: String(result.stdout),
|
|
25
|
+
stderr: String(result.stderr)
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async publishIfNeeded(bundle) {
|
|
30
|
+
if (bundle.outcome !== "analysis_only") {
|
|
31
|
+
return { bundle, status: "skipped", reason: "not_analysis_only" };
|
|
32
|
+
}
|
|
33
|
+
if (bundle.summary.analysisDocUrl?.trim()) {
|
|
34
|
+
return { bundle, status: "skipped", reason: "analysis_doc_already_present" };
|
|
35
|
+
}
|
|
36
|
+
const resultMdPath = bundle.artifacts.resultMd?.trim();
|
|
37
|
+
if (!resultMdPath) {
|
|
38
|
+
return { bundle, status: "skipped", reason: "result_md_missing" };
|
|
39
|
+
}
|
|
40
|
+
const title = this.buildTitle(bundle);
|
|
41
|
+
try {
|
|
42
|
+
return await this.withTimeout(async () => {
|
|
43
|
+
const parentNode = await this.ensureAnalysisParentNode();
|
|
44
|
+
const createArgs = ["docx", "create", title, "--file", resultMdPath];
|
|
45
|
+
if (parentNode?.nodeToken) {
|
|
46
|
+
createArgs.push("--wiki-node", parentNode.nodeToken);
|
|
47
|
+
}
|
|
48
|
+
const response = await this.execFeishuCommand("feishu", createArgs, { encoding: "utf8", maxBuffer: EXEC_MAX_BUFFER });
|
|
49
|
+
const token = this.extractDocumentToken(response.stdout, response.stderr);
|
|
50
|
+
const url = this.extractDocumentUrl(response.stdout, response.stderr);
|
|
51
|
+
if (!token && !url) {
|
|
52
|
+
return {
|
|
53
|
+
bundle,
|
|
54
|
+
status: "failed",
|
|
55
|
+
reason: "feishu_doc_created_but_identifier_missing"
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const documentToken = token ?? this.extractTokenFromUrl(url);
|
|
59
|
+
const updateTarget = url?.trim() || documentToken;
|
|
60
|
+
if (updateTarget) {
|
|
61
|
+
await this.runBestEffortPostCreateCommand("feishu", ["docx", "update", updateTarget, "--title", title]);
|
|
62
|
+
}
|
|
63
|
+
const finalUrl = url ?? (documentToken ? `https://mi.feishu.cn/docx/${documentToken}` : undefined);
|
|
64
|
+
if (!finalUrl) {
|
|
65
|
+
return {
|
|
66
|
+
bundle,
|
|
67
|
+
status: "failed",
|
|
68
|
+
reason: "feishu_doc_created_but_url_missing"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
bundle: {
|
|
73
|
+
...bundle,
|
|
74
|
+
summary: {
|
|
75
|
+
...bundle.summary,
|
|
76
|
+
analysisDocUrl: finalUrl
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
status: "uploaded",
|
|
80
|
+
url: finalUrl
|
|
81
|
+
};
|
|
82
|
+
}, FEISHU_PUBLISH_TIMEOUT_MS, "analysis_doc_publish_timeout");
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return {
|
|
86
|
+
bundle,
|
|
87
|
+
status: "failed",
|
|
88
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
buildTitle(bundle) {
|
|
93
|
+
const rawTitle = bundle.summary.title?.trim() || bundle.taskId;
|
|
94
|
+
const normalizedTitle = rawTitle.replace(/\s+/gu, " ").trim();
|
|
95
|
+
const compactTitle = normalizedTitle.length > 80 ? `${normalizedTitle.slice(0, 77)}...` : normalizedTitle;
|
|
96
|
+
return `Optimus 分析|${compactTitle}`;
|
|
97
|
+
}
|
|
98
|
+
async ensureAnalysisParentNode() {
|
|
99
|
+
if (!this.refStore) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const persisted = await this.refStore.getRuntimeExternalRef(FEISHU_ANALYSIS_PARENT_REF_KEY);
|
|
103
|
+
if (persisted) {
|
|
104
|
+
const validated = await this.validateAnalysisParentNode(persisted);
|
|
105
|
+
if (validated) {
|
|
106
|
+
await this.refStore.setRuntimeExternalRef(FEISHU_ANALYSIS_PARENT_REF_KEY, validated);
|
|
107
|
+
return validated;
|
|
108
|
+
}
|
|
109
|
+
await this.refStore.deleteRuntimeExternalRef(FEISHU_ANALYSIS_PARENT_REF_KEY);
|
|
110
|
+
}
|
|
111
|
+
const discovered = await this.findExistingAnalysisParentNode();
|
|
112
|
+
if (discovered) {
|
|
113
|
+
await this.refStore.setRuntimeExternalRef(FEISHU_ANALYSIS_PARENT_REF_KEY, discovered);
|
|
114
|
+
return discovered;
|
|
115
|
+
}
|
|
116
|
+
const created = await this.createAnalysisParentNode();
|
|
117
|
+
if (created) {
|
|
118
|
+
await this.refStore.setRuntimeExternalRef(FEISHU_ANALYSIS_PARENT_REF_KEY, created);
|
|
119
|
+
}
|
|
120
|
+
return created;
|
|
121
|
+
}
|
|
122
|
+
async validateAnalysisParentNode(ref) {
|
|
123
|
+
try {
|
|
124
|
+
const response = await this.execFeishuCommand("feishu", ["wiki", "get", ref.nodeToken], { encoding: "utf8", maxBuffer: EXEC_MAX_BUFFER });
|
|
125
|
+
const payload = this.parseJsonPayload(response.stdout) ?? this.parseJsonPayload(response.stderr);
|
|
126
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const candidate = payload;
|
|
130
|
+
const nodeToken = this.readString(candidate, ["node_token", "nodeToken"]);
|
|
131
|
+
const title = this.readString(candidate, ["title"]);
|
|
132
|
+
if (!nodeToken || title !== FEISHU_ANALYSIS_PARENT_TITLE) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
const spaceId = this.readString(candidate, ["space_id", "spaceId"]);
|
|
136
|
+
return {
|
|
137
|
+
nodeToken,
|
|
138
|
+
title,
|
|
139
|
+
...(spaceId ? { spaceId } : {}),
|
|
140
|
+
...(ref.url ? { url: ref.url } : {})
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async findExistingAnalysisParentNode() {
|
|
148
|
+
try {
|
|
149
|
+
const response = await this.execFeishuCommand("feishu", ["wiki", "nodes", FEISHU_ANALYSIS_PARENT_SPACE], { encoding: "utf8", maxBuffer: EXEC_MAX_BUFFER });
|
|
150
|
+
const payload = this.parseJsonPayload(response.stdout) ?? this.parseJsonPayload(response.stderr);
|
|
151
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
const nodes = payload.nodes;
|
|
155
|
+
if (!Array.isArray(nodes)) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
const matches = nodes.flatMap((entry) => {
|
|
159
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
const candidate = entry;
|
|
163
|
+
const nodeToken = this.readString(candidate, ["node_token", "nodeToken"]);
|
|
164
|
+
const title = this.readString(candidate, ["title"]);
|
|
165
|
+
if (!nodeToken || title !== FEISHU_ANALYSIS_PARENT_TITLE) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
return [{
|
|
169
|
+
nodeToken,
|
|
170
|
+
title
|
|
171
|
+
}];
|
|
172
|
+
});
|
|
173
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async createAnalysisParentNode() {
|
|
180
|
+
const response = await this.execFeishuCommand("feishu", ["docx", "create", FEISHU_ANALYSIS_PARENT_TITLE], { encoding: "utf8", maxBuffer: EXEC_MAX_BUFFER });
|
|
181
|
+
const url = this.extractDocumentUrl(response.stdout, response.stderr);
|
|
182
|
+
const payload = this.parseJsonPayload(response.stdout) ?? this.parseJsonPayload(response.stderr);
|
|
183
|
+
const nodeToken = this.extractWikiNodeToken(payload) ?? this.extractWikiNodeTokenFromUrl(url);
|
|
184
|
+
if (!nodeToken) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
const extractedSpaceId = this.extractSpaceId(payload);
|
|
188
|
+
return {
|
|
189
|
+
nodeToken,
|
|
190
|
+
title: FEISHU_ANALYSIS_PARENT_TITLE,
|
|
191
|
+
...(extractedSpaceId ? { spaceId: extractedSpaceId } : {}),
|
|
192
|
+
...(url ? { url } : {})
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
async runBestEffortPostCreateCommand(file, args) {
|
|
196
|
+
try {
|
|
197
|
+
await this.execFeishuCommand(file, args, { encoding: "utf8", maxBuffer: EXEC_MAX_BUFFER });
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Post-create title correction should not hide a successfully created analysis doc url.
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async execFeishuCommand(file, args, options) {
|
|
204
|
+
const abortController = new AbortController();
|
|
205
|
+
const timeout = setTimeout(() => {
|
|
206
|
+
abortController.abort(new Error(`feishu_command_timeout: ${file} ${args.join(" ")}`));
|
|
207
|
+
}, FEISHU_COMMAND_TIMEOUT_MS);
|
|
208
|
+
try {
|
|
209
|
+
return await this.execFileImpl(file, args, {
|
|
210
|
+
...options,
|
|
211
|
+
signal: abortController.signal
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (abortController.signal.aborted) {
|
|
216
|
+
throw abortController.signal.reason instanceof Error
|
|
217
|
+
? abortController.signal.reason
|
|
218
|
+
: new Error(String(abortController.signal.reason));
|
|
219
|
+
}
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
clearTimeout(timeout);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async withTimeout(operation, timeoutMs, reason) {
|
|
227
|
+
return await new Promise((resolve, reject) => {
|
|
228
|
+
const timeout = setTimeout(() => {
|
|
229
|
+
reject(new Error(reason));
|
|
230
|
+
}, timeoutMs);
|
|
231
|
+
void operation()
|
|
232
|
+
.then((value) => {
|
|
233
|
+
clearTimeout(timeout);
|
|
234
|
+
resolve(value);
|
|
235
|
+
})
|
|
236
|
+
.catch((error) => {
|
|
237
|
+
clearTimeout(timeout);
|
|
238
|
+
reject(error);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
extractDocumentUrl(...outputs) {
|
|
243
|
+
for (const output of outputs) {
|
|
244
|
+
const directUrl = this.extractUrlFromText(output);
|
|
245
|
+
if (directUrl) {
|
|
246
|
+
return directUrl;
|
|
247
|
+
}
|
|
248
|
+
const payload = this.parseJsonPayload(output);
|
|
249
|
+
if (!payload) {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const nestedUrl = this.findStringValue(payload, (value) => {
|
|
253
|
+
FEISHU_DOC_URL_PATTERN.lastIndex = 0;
|
|
254
|
+
return FEISHU_DOC_URL_PATTERN.test(value);
|
|
255
|
+
});
|
|
256
|
+
if (nestedUrl) {
|
|
257
|
+
FEISHU_DOC_URL_PATTERN.lastIndex = 0;
|
|
258
|
+
const [firstMatch] = nestedUrl.match(FEISHU_DOC_URL_PATTERN) ?? [];
|
|
259
|
+
if (firstMatch) {
|
|
260
|
+
FEISHU_DOC_URL_PATTERN.lastIndex = 0;
|
|
261
|
+
return firstMatch;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
extractDocumentToken(...outputs) {
|
|
268
|
+
for (const output of outputs) {
|
|
269
|
+
const directUrl = this.extractUrlFromText(output);
|
|
270
|
+
const tokenFromUrl = this.extractTokenFromUrl(directUrl);
|
|
271
|
+
if (tokenFromUrl) {
|
|
272
|
+
return tokenFromUrl;
|
|
273
|
+
}
|
|
274
|
+
const payload = this.parseJsonPayload(output);
|
|
275
|
+
if (!payload) {
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
const token = this.findDocumentTokenInValue(payload);
|
|
279
|
+
if (token) {
|
|
280
|
+
return token;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
extractUrlFromText(text) {
|
|
286
|
+
if (!text) {
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
FEISHU_DOC_URL_PATTERN.lastIndex = 0;
|
|
290
|
+
const [firstMatch] = text.match(FEISHU_DOC_URL_PATTERN) ?? [];
|
|
291
|
+
FEISHU_DOC_URL_PATTERN.lastIndex = 0;
|
|
292
|
+
return firstMatch;
|
|
293
|
+
}
|
|
294
|
+
extractTokenFromUrl(url) {
|
|
295
|
+
const normalized = url?.trim();
|
|
296
|
+
if (!normalized) {
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
299
|
+
const matched = normalized.match(FEISHU_DOC_TOKEN_PATTERN);
|
|
300
|
+
return matched?.[1];
|
|
301
|
+
}
|
|
302
|
+
extractWikiNodeTokenFromUrl(url) {
|
|
303
|
+
const normalized = url?.trim();
|
|
304
|
+
if (!normalized) {
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
const matched = normalized.match(FEISHU_WIKI_NODE_PATTERN);
|
|
308
|
+
return matched?.[1];
|
|
309
|
+
}
|
|
310
|
+
parseJsonPayload(text) {
|
|
311
|
+
const normalized = text?.trim();
|
|
312
|
+
if (!normalized) {
|
|
313
|
+
return undefined;
|
|
314
|
+
}
|
|
315
|
+
try {
|
|
316
|
+
return JSON.parse(normalized);
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
const candidates = normalized
|
|
320
|
+
.split(/\r?\n/u)
|
|
321
|
+
.map((line) => line.trim())
|
|
322
|
+
.filter((line) => line.startsWith("{") || line.startsWith("["));
|
|
323
|
+
for (let index = candidates.length - 1; index >= 0; index -= 1) {
|
|
324
|
+
const candidate = candidates[index];
|
|
325
|
+
if (!candidate) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
return JSON.parse(candidate);
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
findStringValue(value, predicate) {
|
|
339
|
+
if (typeof value === "string") {
|
|
340
|
+
return predicate(value) ? value : undefined;
|
|
341
|
+
}
|
|
342
|
+
if (Array.isArray(value)) {
|
|
343
|
+
for (const entry of value) {
|
|
344
|
+
const matched = this.findStringValue(entry, predicate);
|
|
345
|
+
if (matched) {
|
|
346
|
+
return matched;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return undefined;
|
|
350
|
+
}
|
|
351
|
+
if (!value || typeof value !== "object") {
|
|
352
|
+
return undefined;
|
|
353
|
+
}
|
|
354
|
+
for (const entry of Object.values(value)) {
|
|
355
|
+
const matched = this.findStringValue(entry, predicate);
|
|
356
|
+
if (matched) {
|
|
357
|
+
return matched;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
findDocumentTokenInValue(value) {
|
|
363
|
+
if (typeof value === "string") {
|
|
364
|
+
return this.extractTokenFromUrl(value);
|
|
365
|
+
}
|
|
366
|
+
if (Array.isArray(value)) {
|
|
367
|
+
for (const entry of value) {
|
|
368
|
+
const matched = this.findDocumentTokenInValue(entry);
|
|
369
|
+
if (matched) {
|
|
370
|
+
return matched;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return undefined;
|
|
374
|
+
}
|
|
375
|
+
if (!value || typeof value !== "object") {
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
378
|
+
const candidate = value;
|
|
379
|
+
const type = this.readString(candidate, ["type", "obj_type", "objType"]);
|
|
380
|
+
const token = this.readString(candidate, ["token", "doc_token", "docToken", "file_token", "fileToken"]);
|
|
381
|
+
if (token && (!type || type === "docx")) {
|
|
382
|
+
return token;
|
|
383
|
+
}
|
|
384
|
+
for (const entry of Object.values(candidate)) {
|
|
385
|
+
const matched = this.findDocumentTokenInValue(entry);
|
|
386
|
+
if (matched) {
|
|
387
|
+
return matched;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return undefined;
|
|
391
|
+
}
|
|
392
|
+
extractWikiNodeToken(value) {
|
|
393
|
+
if (Array.isArray(value)) {
|
|
394
|
+
for (const entry of value) {
|
|
395
|
+
const matched = this.extractWikiNodeToken(entry);
|
|
396
|
+
if (matched) {
|
|
397
|
+
return matched;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
if (!value || typeof value !== "object") {
|
|
403
|
+
return undefined;
|
|
404
|
+
}
|
|
405
|
+
const candidate = value;
|
|
406
|
+
const nodeToken = this.readString(candidate, ["node_token", "nodeToken"]);
|
|
407
|
+
if (nodeToken) {
|
|
408
|
+
return nodeToken;
|
|
409
|
+
}
|
|
410
|
+
for (const entry of Object.values(candidate)) {
|
|
411
|
+
const matched = this.extractWikiNodeToken(entry);
|
|
412
|
+
if (matched) {
|
|
413
|
+
return matched;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return undefined;
|
|
417
|
+
}
|
|
418
|
+
extractSpaceId(value) {
|
|
419
|
+
if (Array.isArray(value)) {
|
|
420
|
+
for (const entry of value) {
|
|
421
|
+
const matched = this.extractSpaceId(entry);
|
|
422
|
+
if (matched) {
|
|
423
|
+
return matched;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return undefined;
|
|
427
|
+
}
|
|
428
|
+
if (!value || typeof value !== "object") {
|
|
429
|
+
return undefined;
|
|
430
|
+
}
|
|
431
|
+
const candidate = value;
|
|
432
|
+
const direct = this.readString(candidate, ["space_id", "spaceId"]);
|
|
433
|
+
if (direct) {
|
|
434
|
+
return direct;
|
|
435
|
+
}
|
|
436
|
+
for (const entry of Object.values(candidate)) {
|
|
437
|
+
const matched = this.extractSpaceId(entry);
|
|
438
|
+
if (matched) {
|
|
439
|
+
return matched;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
readString(candidate, keys) {
|
|
445
|
+
for (const key of keys) {
|
|
446
|
+
const value = candidate[key];
|
|
447
|
+
if (typeof value === "string" && value.trim()) {
|
|
448
|
+
return value.trim();
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
return undefined;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=feishu-analysis-doc-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feishu-analysis-doc-service.js","sourceRoot":"","sources":["../../../src/task-environment/delivery/feishu-analysis-doc-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TaskDeliveryBundle, TaskPublicationAttempt } from "../../types.js";
|
|
2
|
+
export declare class FeishuCardRenderer {
|
|
3
|
+
private readonly publicationAttempts;
|
|
4
|
+
private readonly contentRenderer;
|
|
5
|
+
constructor(publicationAttempts?: TaskPublicationAttempt[]);
|
|
6
|
+
render(bundle: TaskDeliveryBundle): Record<string, unknown>;
|
|
7
|
+
private buildAnalysisElements;
|
|
8
|
+
private buildPatchElements;
|
|
9
|
+
private buildHeadlineBlock;
|
|
10
|
+
private buildInlineRowBlock;
|
|
11
|
+
private buildMetadataFields;
|
|
12
|
+
private buildField;
|
|
13
|
+
private buildHintBlock;
|
|
14
|
+
private buildFailureLogBlock;
|
|
15
|
+
private renderIssueValue;
|
|
16
|
+
private renderQAssigneeValue;
|
|
17
|
+
private renderRepositorySummary;
|
|
18
|
+
private renderRepositoryContext;
|
|
19
|
+
private renderBranchSummary;
|
|
20
|
+
private renderDeliveryValue;
|
|
21
|
+
private renderContextHint;
|
|
22
|
+
private shouldEmphasizeNextAction;
|
|
23
|
+
private renderHeadlineText;
|
|
24
|
+
private resolveHeadlinePrefix;
|
|
25
|
+
private shouldIncludeBranchInDelivery;
|
|
26
|
+
private buildActions;
|
|
27
|
+
private resolveReviewButtonLabel;
|
|
28
|
+
private resolveReviewLabel;
|
|
29
|
+
private resolvePrimaryReviewUrl;
|
|
30
|
+
private resolveProjectLabel;
|
|
31
|
+
private normalizeBranchName;
|
|
32
|
+
private resolveHeaderTemplate;
|
|
33
|
+
private resolveOutcomeTone;
|
|
34
|
+
private resolveToneTextColor;
|
|
35
|
+
private escapeLinkLabel;
|
|
36
|
+
private escapeAttribute;
|
|
37
|
+
private escapeMarkdown;
|
|
38
|
+
}
|