@sireai/optimus 0.1.42 → 0.1.43
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/dist/cli/optimus.js +57 -39
- package/dist/cli/optimus.js.map +1 -1
- package/dist/integrations/feishu/feishu-doc-service.d.ts +14 -2
- package/dist/integrations/feishu/feishu-doc-service.js +33 -12
- package/dist/integrations/feishu/feishu-doc-service.js.map +1 -1
- package/dist/integrations/feishu/feishu-document-reader.d.ts +33 -0
- package/dist/integrations/feishu/feishu-document-reader.js +597 -0
- package/dist/integrations/feishu/feishu-document-reader.js.map +1 -0
- package/dist/task-environment/delivery/delivery-warning-copy.d.ts +2 -0
- package/dist/task-environment/delivery/delivery-warning-copy.js +24 -0
- package/dist/task-environment/delivery/delivery-warning-copy.js.map +1 -0
- package/dist/task-environment/delivery/feishu-analysis-doc-service.d.ts +32 -2
- package/dist/task-environment/delivery/feishu-analysis-doc-service.js +343 -17
- package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -1
- package/dist/task-environment/delivery/feishu-card-primitives.d.ts +33 -0
- package/dist/task-environment/delivery/feishu-card-primitives.js +95 -0
- package/dist/task-environment/delivery/feishu-card-primitives.js.map +1 -0
- package/dist/task-environment/delivery/feishu-card-renderer.d.ts +1 -0
- package/dist/task-environment/delivery/feishu-card-renderer.js +34 -71
- package/dist/task-environment/delivery/feishu-card-renderer.js.map +1 -1
- package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js +1 -0
- package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js.map +1 -1
- package/dist/task-environment/delivery/feishu-notifier.js +4 -0
- package/dist/task-environment/delivery/feishu-notifier.js.map +1 -1
- package/dist/task-environment/delivery/pm-feishu-card-renderer.d.ts +19 -0
- package/dist/task-environment/delivery/pm-feishu-card-renderer.js +177 -0
- package/dist/task-environment/delivery/pm-feishu-card-renderer.js.map +1 -0
- package/dist/task-environment/delivery/sentry-feishu-card-renderer.d.ts +1 -0
- package/dist/task-environment/delivery/sentry-feishu-card-renderer.js +33 -70
- package/dist/task-environment/delivery/sentry-feishu-card-renderer.js.map +1 -1
- package/dist/task-environment/delivery/task-delivery-service.d.ts +6 -1
- package/dist/task-environment/delivery/task-delivery-service.js +136 -8
- package/dist/task-environment/delivery/task-delivery-service.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
- package/task-harnesses/bugfix/ACCEPT.md +3 -2
- package/task-harnesses/bugfix/CONSTRAINTS.md +10 -4
- package/task-harnesses/bugfix/EVOLUTION.md +2 -8
- package/task-harnesses/bugfix/ROLE.md +7 -11
- package/task-harnesses/bugfix/STANDARD.md +81 -0
- package/task-harnesses/pm/ACCEPT.md +27 -57
- package/task-harnesses/pm/CONSTRAINTS.md +40 -36
- package/task-harnesses/pm/CONTEXT.md +32 -37
- package/task-harnesses/pm/EVOLUTION.md +61 -27
- package/task-harnesses/pm/ROLE.md +25 -27
- package/task-harnesses/pm/STANDARD.md +426 -129
- package/task-harnesses/pm/ANNOTATION_PATTERN.md +0 -58
package/dist/cli/optimus.js
CHANGED
|
@@ -26,9 +26,11 @@ import { buildTaskExecutionMetrics, formatExecutionMetricsCompact } from "../tas
|
|
|
26
26
|
import { FeishuNotifier } from "../task-environment/delivery/feishu-notifier.js";
|
|
27
27
|
import { TaskDeliveryDispatcher } from "../task-environment/delivery/task-delivery-dispatcher.js";
|
|
28
28
|
import { TaskDeliveryService } from "../task-environment/delivery/task-delivery-service.js";
|
|
29
|
+
import { formatDeliveryWarningsWithDescriptions } from "../task-environment/delivery/delivery-warning-copy.js";
|
|
29
30
|
import { FeishuAnalysisDocService } from "../task-environment/delivery/feishu-analysis-doc-service.js";
|
|
30
31
|
import { TaskPublicationService } from "../task-environment/delivery/task-publication-service.js";
|
|
31
32
|
import { FeishuClient } from "../integrations/feishu/feishu-client.js";
|
|
33
|
+
import { FeishuDocumentReader, mergeFeishuReferenceMaterials } from "../integrations/feishu/feishu-document-reader.js";
|
|
32
34
|
import { FeishuUserService } from "../integrations/feishu/feishu-user-service.js";
|
|
33
35
|
import { createFeedbackReport } from "./feedback.js";
|
|
34
36
|
import { DEFAULT_FEEDBACK_RECIPIENT_EMAIL, FeishuFeedbackDeliveryService, persistFeedbackDeliveryResult, resolveDefaultFeedbackRecipientFallbackOpenId } from "./feedback-delivery.js";
|
|
@@ -2172,6 +2174,8 @@ function mergeReplayBundle(rebuilt, existing) {
|
|
|
2172
2174
|
...existing.summary,
|
|
2173
2175
|
...rebuilt.summary,
|
|
2174
2176
|
...(rebuilt.summary.analysisDocUrl ? {} : existing.summary.analysisDocUrl ? { analysisDocUrl: existing.summary.analysisDocUrl } : {}),
|
|
2177
|
+
...(rebuilt.summary.prototypePreviewUrl ? {} : existing.summary.prototypePreviewUrl ? { prototypePreviewUrl: existing.summary.prototypePreviewUrl } : {}),
|
|
2178
|
+
...(rebuilt.summary.prototypeDownloadUrl ? {} : existing.summary.prototypeDownloadUrl ? { prototypeDownloadUrl: existing.summary.prototypeDownloadUrl } : {}),
|
|
2175
2179
|
...(rebuilt.summary.repo ? {} : existing.summary.repo ? { repo: existing.summary.repo } : {}),
|
|
2176
2180
|
...(rebuilt.summary.sourceSystem ? {} : existing.summary.sourceSystem ? { sourceSystem: existing.summary.sourceSystem } : {}),
|
|
2177
2181
|
...(rebuilt.summary.sourceRef ? {} : existing.summary.sourceRef ? { sourceRef: existing.summary.sourceRef } : {}),
|
|
@@ -2543,46 +2547,60 @@ async function resolveTaskTextFromUrl(url) {
|
|
|
2543
2547
|
if (!isFeishuDocumentUrl(trimmedUrl)) {
|
|
2544
2548
|
throw new Error("submit currently supports document URLs from Feishu/Lark only.");
|
|
2545
2549
|
}
|
|
2546
|
-
|
|
2550
|
+
const reader = new FeishuDocumentReader();
|
|
2547
2551
|
try {
|
|
2548
|
-
const
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
+
const resolved = await reader.readFromUrl(trimmedUrl);
|
|
2553
|
+
const referenceMaterials = mergeFeishuReferenceMaterials(extractFeishuReferenceMaterials(resolved.content, undefined, trimmedUrl), resolved.referenceMaterials);
|
|
2554
|
+
return {
|
|
2555
|
+
content: resolved.content,
|
|
2556
|
+
...(resolved.title ? { title: resolved.title } : {}),
|
|
2557
|
+
sourceType: resolved.sourceType,
|
|
2558
|
+
...(resolved.sourceDocumentType ? { sourceDocumentType: resolved.sourceDocumentType } : {}),
|
|
2559
|
+
...(referenceMaterials ? { referenceMaterials } : {})
|
|
2560
|
+
};
|
|
2552
2561
|
}
|
|
2553
|
-
catch (
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2562
|
+
catch (builtinError) {
|
|
2563
|
+
let stdout;
|
|
2564
|
+
try {
|
|
2565
|
+
const result = await execFileAsync("feishu", ["fetch", trimmedUrl], {
|
|
2566
|
+
maxBuffer: 10 * 1024 * 1024
|
|
2567
|
+
});
|
|
2568
|
+
stdout = result.stdout;
|
|
2557
2569
|
}
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2570
|
+
catch (error) {
|
|
2571
|
+
const execError = error;
|
|
2572
|
+
const cliDetail = execError?.code === "ENOENT"
|
|
2573
|
+
? "the `feishu` CLI is not installed or not on PATH"
|
|
2574
|
+
: execError?.stderr?.trim() || execError?.stdout?.trim() || execError?.message || "unknown error";
|
|
2575
|
+
const builtinDetail = builtinError instanceof Error ? builtinError.message : String(builtinError);
|
|
2576
|
+
throw new Error(`submit could not fetch the Feishu document via built-in app (${builtinDetail}) or via \`feishu fetch\` (${cliDetail}).`);
|
|
2577
|
+
}
|
|
2578
|
+
let payload;
|
|
2579
|
+
try {
|
|
2580
|
+
payload = JSON.parse(stdout);
|
|
2581
|
+
}
|
|
2582
|
+
catch {
|
|
2583
|
+
throw new Error("submit received non-JSON output from `feishu fetch`.");
|
|
2584
|
+
}
|
|
2585
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
2586
|
+
throw new Error("submit received an invalid response from `feishu fetch`.");
|
|
2587
|
+
}
|
|
2588
|
+
const record = payload;
|
|
2589
|
+
const markdown = typeof record.markdown === "string" ? record.markdown.trim() : "";
|
|
2590
|
+
const title = (typeof record.title === "string" ? record.title.trim() : "") || extractTitleFromMarkdown(markdown);
|
|
2591
|
+
const sourceDocumentType = typeof record.type === "string" ? record.type.trim() : undefined;
|
|
2592
|
+
const referenceMaterials = extractFeishuReferenceMaterials(markdown, record.media, trimmedUrl);
|
|
2593
|
+
if (!markdown) {
|
|
2594
|
+
throw new Error("submit fetched the document URL, but it did not return readable markdown content.");
|
|
2595
|
+
}
|
|
2596
|
+
return {
|
|
2597
|
+
content: markdown,
|
|
2598
|
+
...(title ? { title } : {}),
|
|
2599
|
+
sourceType: "feishu_doc",
|
|
2600
|
+
...(sourceDocumentType ? { sourceDocumentType } : {}),
|
|
2601
|
+
...(referenceMaterials ? { referenceMaterials } : {})
|
|
2602
|
+
};
|
|
2578
2603
|
}
|
|
2579
|
-
return {
|
|
2580
|
-
content: markdown,
|
|
2581
|
-
...(title ? { title } : {}),
|
|
2582
|
-
sourceType: "feishu_doc",
|
|
2583
|
-
...(sourceDocumentType ? { sourceDocumentType } : {}),
|
|
2584
|
-
...(referenceMaterials ? { referenceMaterials } : {})
|
|
2585
|
-
};
|
|
2586
2604
|
}
|
|
2587
2605
|
async function main() {
|
|
2588
2606
|
const argv = process.argv.slice(2);
|
|
@@ -2799,7 +2817,7 @@ async function main() {
|
|
|
2799
2817
|
}
|
|
2800
2818
|
else {
|
|
2801
2819
|
try {
|
|
2802
|
-
const remote = await resolveTaskTextFromUrl(url);
|
|
2820
|
+
const remote = await runWithTerminalLoading("Resolving remote requirement document", async () => await resolveTaskTextFromUrl(url));
|
|
2803
2821
|
description = remote.content;
|
|
2804
2822
|
resolvedTitle = resolvedTitle || remote.title;
|
|
2805
2823
|
remoteSourceType = remote.sourceType;
|
|
@@ -4031,7 +4049,7 @@ function renderTaskResultReport(input) {
|
|
|
4031
4049
|
lines.push(`Metrics: ${metrics}`);
|
|
4032
4050
|
}
|
|
4033
4051
|
if (input.deliveryBundle.warnings?.length) {
|
|
4034
|
-
lines.push(`Warnings: ${input.deliveryBundle.warnings
|
|
4052
|
+
lines.push(`Warnings: ${formatDeliveryWarningsWithDescriptions(input.deliveryBundle.warnings)}`);
|
|
4035
4053
|
}
|
|
4036
4054
|
if (input.deliveryBundle.publication) {
|
|
4037
4055
|
lines.push(`Publication: ${input.deliveryBundle.publication.action}${input.deliveryBundle.publication.reason ? ` (${input.deliveryBundle.publication.reason})` : ""}`);
|
|
@@ -4144,7 +4162,7 @@ function renderDeliveryStatusReport(input) {
|
|
|
4144
4162
|
lines.push(`Decision: ${input.deliveryBundle.summary.decision}`);
|
|
4145
4163
|
lines.push(`Created At: ${input.deliveryBundle.createdAt}`);
|
|
4146
4164
|
if (input.deliveryBundle.warnings?.length) {
|
|
4147
|
-
lines.push(`Warnings: ${input.deliveryBundle.warnings
|
|
4165
|
+
lines.push(`Warnings: ${formatDeliveryWarningsWithDescriptions(input.deliveryBundle.warnings)}`);
|
|
4148
4166
|
}
|
|
4149
4167
|
}
|
|
4150
4168
|
else {
|