@ai-setting/roy-plugin-task-show 0.6.11 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -1
- package/dist/cli-tasks-adapter.d.ts +142 -0
- package/dist/cli-tasks-adapter.d.ts.map +1 -0
- package/dist/cli-tasks-adapter.js +379 -0
- package/dist/cli-tasks-adapter.js.map +1 -0
- package/dist/cli-tasks-tree-adapter.d.ts +143 -0
- package/dist/cli-tasks-tree-adapter.d.ts.map +1 -0
- package/dist/cli-tasks-tree-adapter.js +400 -0
- package/dist/cli-tasks-tree-adapter.js.map +1 -0
- package/dist/operations-cache.d.ts +44 -0
- package/dist/operations-cache.d.ts.map +1 -0
- package/dist/operations-cache.js +103 -0
- package/dist/operations-cache.js.map +1 -0
- package/dist/plugin.d.ts +14 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +82 -0
- package/dist/plugin.js.map +1 -1
- package/dist/server.d.ts +30 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +289 -89
- package/dist/server.js.map +1 -1
- package/dist/task-detail-mermaid.d.ts +171 -0
- package/dist/task-detail-mermaid.d.ts.map +1 -0
- package/dist/task-detail-mermaid.js +697 -0
- package/dist/task-detail-mermaid.js.map +1 -0
- package/dist/task-operations-html.d.ts +50 -0
- package/dist/task-operations-html.d.ts.map +1 -0
- package/dist/task-operations-html.js +187 -0
- package/dist/task-operations-html.js.map +1 -0
- package/dist/tasks-tree-cache.d.ts +44 -0
- package/dist/tasks-tree-cache.d.ts.map +1 -0
- package/dist/tasks-tree-cache.js +111 -0
- package/dist/tasks-tree-cache.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +6 -1
- package/plugin.json +2 -2
- package/public/app.js +534 -34
- package/public/index.html +54 -21
- package/public/style.css +697 -1
- package/public/task-operations.js +290 -0
- package/public/tasks-tree.js +449 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-detail-mermaid.js","sourceRoot":"","sources":["../src/task-detail-mermaid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HTML rendering for the "Task lifecycle pipeline" section.
|
|
3
|
+
*
|
|
4
|
+
* Pure function — no I/O, no DOM, no globals. Easy to unit-test and to
|
|
5
|
+
* inject into the existing server-rendered task page.
|
|
6
|
+
*
|
|
7
|
+
* Output is HTML-escaped; no user content reaches the page unescaped.
|
|
8
|
+
*/
|
|
9
|
+
import type { CanonicalMilestoneType } from "./cli-tasks-adapter.js";
|
|
10
|
+
/** View model that the page actually consumes. */
|
|
11
|
+
export interface OperationViewModel {
|
|
12
|
+
id: number;
|
|
13
|
+
sequence: number;
|
|
14
|
+
milestoneType: CanonicalMilestoneType;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
processDescription: string;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
sessionShort: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RenderPipelineInput {
|
|
22
|
+
operations?: OperationViewModel[];
|
|
23
|
+
/** When set, renders the error state with a retry button. */
|
|
24
|
+
error?: string;
|
|
25
|
+
/** Whether the data is from a stale cache (active task polling). */
|
|
26
|
+
stale?: boolean;
|
|
27
|
+
/** Optional task title for the section header. */
|
|
28
|
+
taskTitle?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Numeric task id for this pipeline. When set, the rendered
|
|
31
|
+
* `<section data-pipeline-root>` carries `data-task-id="<id>"` so the
|
|
32
|
+
* client-side `boot()` in `public/task-operations.js` can read it and
|
|
33
|
+
* instantiate the PipelineController. Without this attribute the
|
|
34
|
+
* controller silently bails (intentional defence against
|
|
35
|
+
* accidentally hydrating on the index page).
|
|
36
|
+
*
|
|
37
|
+
* Must be a positive integer; non-numeric values are ignored (the
|
|
38
|
+
* attribute is simply omitted) so a bad input can never break HTML
|
|
39
|
+
* escaping or attribute quoting.
|
|
40
|
+
*/
|
|
41
|
+
taskId?: number;
|
|
42
|
+
}
|
|
43
|
+
/** Map canonical milestone type → CSS class for color-coding. */
|
|
44
|
+
export declare function statusClass(type: CanonicalMilestoneType | string): string;
|
|
45
|
+
/** Human-friendly label for a milestone type. */
|
|
46
|
+
export declare function statusLabel(type: CanonicalMilestoneType | string): string;
|
|
47
|
+
/** Format an ISO timestamp as a short, locale-friendly string. */
|
|
48
|
+
export declare function fmtTs(ts: string): string;
|
|
49
|
+
export declare function renderOperationsPipeline(input: RenderPipelineInput): string;
|
|
50
|
+
//# sourceMappingURL=task-operations-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-operations-html.d.ts","sourceRoot":"","sources":["../src/task-operations-html.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,sBAAsB,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,CAezE;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,CAqBzE;AAED,kEAAkE;AAClE,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKxC;AAoGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAqC3E"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HTML rendering for the "Task lifecycle pipeline" section.
|
|
3
|
+
*
|
|
4
|
+
* Pure function — no I/O, no DOM, no globals. Easy to unit-test and to
|
|
5
|
+
* inject into the existing server-rendered task page.
|
|
6
|
+
*
|
|
7
|
+
* Output is HTML-escaped; no user content reaches the page unescaped.
|
|
8
|
+
*/
|
|
9
|
+
/** Map canonical milestone type → CSS class for color-coding. */
|
|
10
|
+
export function statusClass(type) {
|
|
11
|
+
// Coerce unknown values to "unknown" so the CSS class is always one of
|
|
12
|
+
// the eight we ship styles for.
|
|
13
|
+
const known = [
|
|
14
|
+
"create",
|
|
15
|
+
"progress",
|
|
16
|
+
"milestone",
|
|
17
|
+
"problem",
|
|
18
|
+
"solution",
|
|
19
|
+
"decision",
|
|
20
|
+
"review",
|
|
21
|
+
"completed",
|
|
22
|
+
];
|
|
23
|
+
const t = known.includes(type) ? type : "unknown";
|
|
24
|
+
return `op-status-${t}`;
|
|
25
|
+
}
|
|
26
|
+
/** Human-friendly label for a milestone type. */
|
|
27
|
+
export function statusLabel(type) {
|
|
28
|
+
switch (type) {
|
|
29
|
+
case "create":
|
|
30
|
+
return "Created";
|
|
31
|
+
case "progress":
|
|
32
|
+
return "In progress";
|
|
33
|
+
case "milestone":
|
|
34
|
+
return "Milestone";
|
|
35
|
+
case "problem":
|
|
36
|
+
return "Problem";
|
|
37
|
+
case "solution":
|
|
38
|
+
return "Solution";
|
|
39
|
+
case "decision":
|
|
40
|
+
return "Decision";
|
|
41
|
+
case "review":
|
|
42
|
+
return "Review";
|
|
43
|
+
case "completed":
|
|
44
|
+
return "Completed";
|
|
45
|
+
default:
|
|
46
|
+
return "Unknown";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Format an ISO timestamp as a short, locale-friendly string. */
|
|
50
|
+
export function fmtTs(ts) {
|
|
51
|
+
if (!ts)
|
|
52
|
+
return "—";
|
|
53
|
+
const d = new Date(ts);
|
|
54
|
+
if (isNaN(d.getTime()))
|
|
55
|
+
return ts;
|
|
56
|
+
return d.toISOString().replace("T", " ").replace(/\.\d+Z$/, "Z");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Tiny HTML escape. We deliberately don't use any library here — the
|
|
60
|
+
* server already has zero runtime deps.
|
|
61
|
+
*/
|
|
62
|
+
function esc(s) {
|
|
63
|
+
return String(s ?? "")
|
|
64
|
+
.replace(/&/g, "&")
|
|
65
|
+
.replace(/</g, "<")
|
|
66
|
+
.replace(/>/g, ">")
|
|
67
|
+
.replace(/"/g, """)
|
|
68
|
+
.replace(/'/g, "'");
|
|
69
|
+
}
|
|
70
|
+
/** Deduplicate by operation id while preserving the first occurrence. */
|
|
71
|
+
function dedupeById(ops) {
|
|
72
|
+
const seen = new Set();
|
|
73
|
+
const out = [];
|
|
74
|
+
for (const o of ops) {
|
|
75
|
+
if (seen.has(o.id))
|
|
76
|
+
continue;
|
|
77
|
+
seen.add(o.id);
|
|
78
|
+
out.push(o);
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/** Render a single node.
|
|
83
|
+
*
|
|
84
|
+
* v0.8.0+ always renders the description + process description blocks
|
|
85
|
+
* inline (no longer collapsed inside a `<details>`). This is the user
|
|
86
|
+
* contract: `description` is the "what happened" and `processDescription`
|
|
87
|
+
* is the "how we got there" — both should be visible at a glance. The
|
|
88
|
+
* legacy `<details>` fallback is kept as a safety net for very long
|
|
89
|
+
* descriptions (> 600 chars) so the panel does not explode vertically.
|
|
90
|
+
*/
|
|
91
|
+
function renderNode(op) {
|
|
92
|
+
const label = statusLabel(op.milestoneType);
|
|
93
|
+
const klass = statusClass(op.milestoneType);
|
|
94
|
+
const ts = fmtTs(op.timestamp);
|
|
95
|
+
const title = op.title || label;
|
|
96
|
+
// Per-field rendering. Empty string still gets a placeholder so the
|
|
97
|
+
// visual rhythm of the panel stays consistent (every op has the same
|
|
98
|
+
// two-block layout: status desc + process desc).
|
|
99
|
+
const descHtml = op.description
|
|
100
|
+
? `<div class="op-desc">${esc(op.description)}</div>`
|
|
101
|
+
: `<div class="op-desc op-desc-empty">(无状态描述)</div>`;
|
|
102
|
+
const procHtml = op.processDescription
|
|
103
|
+
? `<div class="op-proc-body">${esc(op.processDescription)}</div>`
|
|
104
|
+
: `<div class="op-proc-body op-proc-empty">(未填写)</div>`;
|
|
105
|
+
// Long description fallback: wrap the always-visible blocks in a
|
|
106
|
+
// <details> if either field is huge, so the page stays compact.
|
|
107
|
+
const long = (op.description?.length ?? 0) + (op.processDescription?.length ?? 0) > 600;
|
|
108
|
+
const blocks = `
|
|
109
|
+
<div class="op-desc-block">
|
|
110
|
+
<div class="op-block-label">📋 状态描述</div>
|
|
111
|
+
${descHtml}
|
|
112
|
+
</div>
|
|
113
|
+
<div class="op-proc-block">
|
|
114
|
+
<div class="op-proc-label">⚙️ 过程描述</div>
|
|
115
|
+
${procHtml}
|
|
116
|
+
</div>`;
|
|
117
|
+
return `
|
|
118
|
+
<li class="op-node ${klass}" data-op-id="${op.id}" data-sequence="${op.sequence}">
|
|
119
|
+
<div class="op-bullet" aria-hidden="true"></div>
|
|
120
|
+
<div class="op-body">
|
|
121
|
+
<div class="op-row1">
|
|
122
|
+
<span class="op-seq">#${op.sequence}</span>
|
|
123
|
+
<span class="op-badge ${klass}">${esc(label)}</span>
|
|
124
|
+
<span class="op-title">${esc(title)}</span>
|
|
125
|
+
<span class="op-time" title="${esc(op.timestamp)}">${esc(ts)}</span>
|
|
126
|
+
</div>
|
|
127
|
+
${long ? `<details class="op-details"><summary>Details (long)</summary>${blocks}</details>` : blocks}
|
|
128
|
+
</div>
|
|
129
|
+
</li>`;
|
|
130
|
+
}
|
|
131
|
+
/** Tiny HTML escape — see server-side `htmlEscape` for the same routine. */
|
|
132
|
+
function escAttr(s) {
|
|
133
|
+
return String(s ?? "")
|
|
134
|
+
.replace(/&/g, "&")
|
|
135
|
+
.replace(/</g, "<")
|
|
136
|
+
.replace(/>/g, ">")
|
|
137
|
+
.replace(/"/g, """)
|
|
138
|
+
.replace(/'/g, "'");
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build the `data-task-id="..."` attribute string for the pipeline
|
|
142
|
+
* root. Returns `""` when the supplied id is missing or invalid so the
|
|
143
|
+
* caller can safely concatenate without producing dangling attributes.
|
|
144
|
+
*/
|
|
145
|
+
function taskIdAttr(taskId) {
|
|
146
|
+
if (typeof taskId !== "number")
|
|
147
|
+
return "";
|
|
148
|
+
if (!Number.isFinite(taskId) || !Number.isInteger(taskId) || taskId <= 0)
|
|
149
|
+
return "";
|
|
150
|
+
return ` data-task-id="${escAttr(taskId)}"`;
|
|
151
|
+
}
|
|
152
|
+
export function renderOperationsPipeline(input) {
|
|
153
|
+
const ops = input.operations ? dedupeById(input.operations) : [];
|
|
154
|
+
const staleBadge = input.stale
|
|
155
|
+
? ` <span class="pipeline-stale" data-pipeline-stale>stale</span>`
|
|
156
|
+
: "";
|
|
157
|
+
const idAttr = taskIdAttr(input.taskId);
|
|
158
|
+
// Error state
|
|
159
|
+
if (input.error) {
|
|
160
|
+
return `
|
|
161
|
+
<section class="panel panel-pipeline"${idAttr} data-pipeline-error="${esc(input.error)}" data-pipeline-root>
|
|
162
|
+
<h2>Task lifecycle pipeline${staleBadge}</h2>
|
|
163
|
+
<div class="pipeline-error">
|
|
164
|
+
<p>Could not load operations: <code>${esc(input.error)}</code></p>
|
|
165
|
+
<button type="button" class="btn btn-retry" data-pipeline-retry>Retry</button>
|
|
166
|
+
</div>
|
|
167
|
+
</section>`;
|
|
168
|
+
}
|
|
169
|
+
// Empty state
|
|
170
|
+
if (ops.length === 0) {
|
|
171
|
+
return `
|
|
172
|
+
<section class="panel panel-pipeline"${idAttr} data-pipeline-root>
|
|
173
|
+
<h2>Task lifecycle pipeline${staleBadge}</h2>
|
|
174
|
+
<p class="empty">No operations recorded yet.</p>
|
|
175
|
+
</section>`;
|
|
176
|
+
}
|
|
177
|
+
// Happy path
|
|
178
|
+
const nodes = ops.map(renderNode).join("");
|
|
179
|
+
return `
|
|
180
|
+
<section class="panel panel-pipeline"${idAttr} data-pipeline-root>
|
|
181
|
+
<h2>Task lifecycle pipeline${staleBadge}</h2>
|
|
182
|
+
<ol class="op-timeline" role="list">
|
|
183
|
+
${nodes}
|
|
184
|
+
</ol>
|
|
185
|
+
</section>`;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=task-operations-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-operations-html.js","sourceRoot":"","sources":["../src/task-operations-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview TTL cache for parsed `roy-agent tasks tree` envelopes.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `operations-cache.ts`:
|
|
5
|
+
* 1. Don't spawn the host CLI on every page request.
|
|
6
|
+
* 2. Coalesce concurrent requests for the same filter combination.
|
|
7
|
+
* 3. Return past-TTL data while a background refresh runs (for live
|
|
8
|
+
* UIs that want to display something fast).
|
|
9
|
+
*
|
|
10
|
+
* Cache keys are derived from the `TasksTreeFilter` object via a stable
|
|
11
|
+
* JSON.stringify so functionally-equal filters (e.g. `{ status: undefined,
|
|
12
|
+
* priority: "high" }` vs `{ priority: "high" }`) hit the same entry.
|
|
13
|
+
*/
|
|
14
|
+
import type { TasksTreeEnvelope, TasksTreeFilter, TasksTreeSource } from "./cli-tasks-tree-adapter.js";
|
|
15
|
+
type SourceFn = (filter: TasksTreeFilter) => Promise<TasksTreeEnvelope>;
|
|
16
|
+
export interface TasksTreeCacheOptions {
|
|
17
|
+
source: SourceFn | TasksTreeSource;
|
|
18
|
+
/** Time-to-live in milliseconds. Default 5000. */
|
|
19
|
+
ttlMs?: number;
|
|
20
|
+
/** Optional: clock for tests. */
|
|
21
|
+
now?: () => number;
|
|
22
|
+
}
|
|
23
|
+
export declare class TasksTreeCache {
|
|
24
|
+
private readonly entries;
|
|
25
|
+
private readonly ttlMs;
|
|
26
|
+
private readonly source;
|
|
27
|
+
private readonly now;
|
|
28
|
+
constructor(opts: TasksTreeCacheOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Fetch (or read from cache). Concurrent calls for the same filter
|
|
31
|
+
* coalesce. `allowStale: true` returns the cached value past TTL but
|
|
32
|
+
* triggers a background refresh.
|
|
33
|
+
*/
|
|
34
|
+
get(filter: TasksTreeFilter, opts?: {
|
|
35
|
+
allowStale?: boolean;
|
|
36
|
+
}): Promise<TasksTreeEnvelope>;
|
|
37
|
+
/** Drop every entry. */
|
|
38
|
+
clear(): void;
|
|
39
|
+
/** Number of cached entries (test introspection). */
|
|
40
|
+
size(): number;
|
|
41
|
+
private refresh;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=tasks-tree-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks-tree-cache.d.ts","sourceRoot":"","sources":["../src/tasks-tree-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAErC,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAQxE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,QAAQ,GAAG,eAAe,CAAC;IACnC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,qBAAqB;IAavC;;;;OAIG;IACG,GAAG,CACP,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,OAAO,CAAC,iBAAiB,CAAC;IAyC7B,wBAAwB;IACxB,KAAK,IAAI,IAAI;IAIb,qDAAqD;IACrD,IAAI,IAAI,MAAM;YAIA,OAAO;CActB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview TTL cache for parsed `roy-agent tasks tree` envelopes.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `operations-cache.ts`:
|
|
5
|
+
* 1. Don't spawn the host CLI on every page request.
|
|
6
|
+
* 2. Coalesce concurrent requests for the same filter combination.
|
|
7
|
+
* 3. Return past-TTL data while a background refresh runs (for live
|
|
8
|
+
* UIs that want to display something fast).
|
|
9
|
+
*
|
|
10
|
+
* Cache keys are derived from the `TasksTreeFilter` object via a stable
|
|
11
|
+
* JSON.stringify so functionally-equal filters (e.g. `{ status: undefined,
|
|
12
|
+
* priority: "high" }` vs `{ priority: "high" }`) hit the same entry.
|
|
13
|
+
*/
|
|
14
|
+
export class TasksTreeCache {
|
|
15
|
+
entries = new Map();
|
|
16
|
+
ttlMs;
|
|
17
|
+
source;
|
|
18
|
+
now;
|
|
19
|
+
constructor(opts) {
|
|
20
|
+
this.ttlMs = opts.ttlMs ?? 5000;
|
|
21
|
+
this.now = opts.now ?? (() => Date.now());
|
|
22
|
+
const src = opts.source;
|
|
23
|
+
if (typeof src === "function") {
|
|
24
|
+
this.source = src;
|
|
25
|
+
}
|
|
26
|
+
else if (src && typeof src.getTasksTree === "function") {
|
|
27
|
+
this.source = (f) => src.getTasksTree(f);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new TypeError("TasksTreeCache: source must be a function or { getTasksTree }");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fetch (or read from cache). Concurrent calls for the same filter
|
|
35
|
+
* coalesce. `allowStale: true` returns the cached value past TTL but
|
|
36
|
+
* triggers a background refresh.
|
|
37
|
+
*/
|
|
38
|
+
async get(filter, opts = {}) {
|
|
39
|
+
const key = cacheKey(filter);
|
|
40
|
+
const existing = this.entries.get(key);
|
|
41
|
+
const now = this.now();
|
|
42
|
+
if (existing && existing.fetchedAtMs > 0 && now - existing.fetchedAtMs < this.ttlMs) {
|
|
43
|
+
existing.envelope.stale = false;
|
|
44
|
+
return existing.envelope;
|
|
45
|
+
}
|
|
46
|
+
if (existing && existing.fetchedAtMs > 0 && opts.allowStale) {
|
|
47
|
+
existing.envelope.stale = true;
|
|
48
|
+
if (!existing.inflight) {
|
|
49
|
+
existing.inflight = this.refresh(filter).finally(() => {
|
|
50
|
+
existing.inflight = undefined;
|
|
51
|
+
});
|
|
52
|
+
existing.inflight.catch(() => { });
|
|
53
|
+
}
|
|
54
|
+
return existing.envelope;
|
|
55
|
+
}
|
|
56
|
+
if (existing?.inflight) {
|
|
57
|
+
return existing.inflight;
|
|
58
|
+
}
|
|
59
|
+
const entry = existing ?? {
|
|
60
|
+
envelope: {
|
|
61
|
+
total: 0,
|
|
62
|
+
rootCount: 0,
|
|
63
|
+
tree: [],
|
|
64
|
+
fetchedAt: new Date(now).toISOString(),
|
|
65
|
+
stale: false,
|
|
66
|
+
},
|
|
67
|
+
fetchedAtMs: 0,
|
|
68
|
+
};
|
|
69
|
+
entry.inflight = this.refresh(filter).finally(() => {
|
|
70
|
+
entry.inflight = undefined;
|
|
71
|
+
});
|
|
72
|
+
this.entries.set(key, entry);
|
|
73
|
+
return entry.inflight;
|
|
74
|
+
}
|
|
75
|
+
/** Drop every entry. */
|
|
76
|
+
clear() {
|
|
77
|
+
this.entries.clear();
|
|
78
|
+
}
|
|
79
|
+
/** Number of cached entries (test introspection). */
|
|
80
|
+
size() {
|
|
81
|
+
return this.entries.size;
|
|
82
|
+
}
|
|
83
|
+
async refresh(filter) {
|
|
84
|
+
const envelope = await this.source(filter);
|
|
85
|
+
const now = this.now();
|
|
86
|
+
const cached = {
|
|
87
|
+
...envelope,
|
|
88
|
+
fetchedAt: new Date(now).toISOString(),
|
|
89
|
+
stale: false,
|
|
90
|
+
};
|
|
91
|
+
this.entries.set(cacheKey(filter), {
|
|
92
|
+
envelope: cached,
|
|
93
|
+
fetchedAtMs: now,
|
|
94
|
+
});
|
|
95
|
+
return cached;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Stable key for a filter combination. Sorting the keys makes equivalent
|
|
100
|
+
* filters collide on the same entry. `undefined` values are dropped.
|
|
101
|
+
*/
|
|
102
|
+
function cacheKey(filter) {
|
|
103
|
+
const keys = Object.keys(filter)
|
|
104
|
+
.filter((k) => filter[k] !== undefined)
|
|
105
|
+
.sort();
|
|
106
|
+
const normalized = {};
|
|
107
|
+
for (const k of keys)
|
|
108
|
+
normalized[k] = filter[k];
|
|
109
|
+
return JSON.stringify(normalized);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=tasks-tree-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks-tree-cache.js","sourceRoot":"","sources":["../src/tasks-tree-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -93,6 +93,22 @@ export interface TaskShowConfig {
|
|
|
93
93
|
* to allow your dev/test fixtures to be previewed. Use with care.
|
|
94
94
|
*/
|
|
95
95
|
fileSandboxPaths?: string[];
|
|
96
|
+
/**
|
|
97
|
+
* v0.7.0+: Absolute path to the `roy-agent` executable used by the
|
|
98
|
+
* "Task lifecycle pipeline" feature. Default is `<repo>/packages/cli/dist/bin/roy-agent.js`
|
|
99
|
+
* (the local CLI build). Tests typically override this with a mock runner.
|
|
100
|
+
*/
|
|
101
|
+
royAgentCliPath?: string;
|
|
102
|
+
/** v0.7.0+: How long (ms) to cache parsed CLI envelopes. Default 5000. */
|
|
103
|
+
operationsCacheTtlMs?: number;
|
|
104
|
+
/** v0.7.0+: Hard cap on operations returned per task (newest first). Default 200. */
|
|
105
|
+
maxOperations?: number;
|
|
106
|
+
/** v0.7.0+: Maximum characters kept per description. Default 2000. */
|
|
107
|
+
maxDescriptionChars?: number;
|
|
108
|
+
/** v0.7.0+: Wall-clock timeout for the CLI spawn. Default 5000 ms. */
|
|
109
|
+
cliTimeoutMs?: number;
|
|
110
|
+
/** v0.7.0+: Maximum stdout bytes accepted from the CLI. Default 1 MiB. */
|
|
111
|
+
cliMaxBytes?: number;
|
|
96
112
|
}
|
|
97
113
|
/**
|
|
98
114
|
* Default configuration. Keeping these as a single source of truth simplifies
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uGAAuG;IACvG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChF,kCAAkC;IAClC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACvD,KAAK,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACtC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+GH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,EAAE;IAClB,SAAS,EAAE,QAAQ;CACpB,CAAC;AAgFF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-setting/roy-plugin-task-show",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "roy-agent plugin: visualize task solving process via tool call flow on a local web service",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,8 +39,13 @@
|
|
|
39
39
|
"dependencies": {},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/bun": "latest",
|
|
42
|
+
"@types/jsdom": "^28.0.3",
|
|
42
43
|
"@types/node": "^20.0.0",
|
|
44
|
+
"dompurify": "^3.4.12",
|
|
43
45
|
"happy-dom": "^20.11.1",
|
|
46
|
+
"jsdom": "^29.1.1",
|
|
47
|
+
"mermaid": "10.9.1",
|
|
48
|
+
"playwright": "^1.62.0",
|
|
44
49
|
"typescript": "^5.4.0"
|
|
45
50
|
},
|
|
46
51
|
"peerDependencies": {
|
package/plugin.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-setting/roy-plugin-task-show",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"type": "tool-plugin",
|
|
5
|
-
"description": "Visualize the tool call chain of a task on a local web service with real-time SSE updates. v0.5.0+: page refreshes stream over GET /api/events (Server-Sent Events). Subscribes to tool:before.execute, tool:after.execute, task:before.create, task:after.create, task:after.complete (preferred, 2026-07-10+), and task:after.update (legacy fallback). v0.6.11: Mermaid re-rendering is delegated to a self-contained controller (public/mermaid-renderer.js) that prevents the SVG→raw-source regression on async updates and surfaces recoverable .mermaid-error states.",
|
|
5
|
+
"description": "Visualize the tool call chain of a task on a local web service with real-time SSE updates. v0.5.0+: page refreshes stream over GET /api/events (Server-Sent Events). Subscribes to tool:before.execute, tool:after.execute, task:before.create, task:after.create, task:after.complete (preferred, 2026-07-10+), and task:after.update (legacy fallback). v0.6.11: Mermaid re-rendering is delegated to a self-contained controller (public/mermaid-renderer.js) that prevents the SVG→raw-source regression on async updates and surfaces recoverable .mermaid-error states. v0.6.12: Task lifecycle pipeline (operations timeline) server now emits data-task-id on the pipeline section; client preserves it on swap, so the page actually fetches /api/tasks/<id>/operations and renders the 7-op timeline (previously silently bailed). v0.7.0: Home page redesigned as a hierarchical task tree (driven by `roy-agent tasks tree --json`); new /api/tasks/tree endpoint with status / priority / type / root-id filters, expand/collapse UI, search, and live 30s polling. v0.8.0: per-task page Mermaid area now renders the hierarchical 'Task lifecycle + tools' view — each operation record owns a subgraph that nests its tool calls, with click callbacks (`window.__toolClick`) that scroll-into-view + highlight + auto-expand the matching row in the tool-call table below. Operation record descriptions (`description` + `processDescription`) are now always rendered inline (no `<details>` collapse) so the user sees the lifecycle state at a glance; a fallback `<details>` kicks in only for descriptions longer than 600 chars. v0.8.1: hotfix for two pre-existing bugs in v0.8.0 (browser smoke test surfaced after merge). (a) Mermaid click directives were emitted as `click t1 __toolClick(1)` (missing `call` keyword) — Mermaid 10's parser rejects this with `got 'PS'`. Fixed to `click t1 call __toolClick(1)` (the v10 grammar requires `call` to invoke a callback with arguments). (b) `buildMermaidSource` lived inside the `attachTaskPageTimeline` IIFE but was also called from a listener in the `attachToolClickBridge` IIFE — sibling IIFEs cannot see each other's locals, so the listener threw `ReferenceError: buildMermaidSource is not defined` and the Mermaid diagram silently failed to re-render after `task-show:lifecycle-ops-loaded`. Fixed by hoisting the function (and its three helpers) to script top-level so both IIFEs can see it via the script-wide closure; the function is also exposed on `window.buildMermaidSource` for tests + tooling. v0.8.3: tree-display fix (Task #2426). The home page used to look like a flat list of root tasks because `autoExpandFirstLevels(..., 2)` only opened the first 2 levels — 30/47 roots were leaf nodes and the remaining 17 collapsed to one level so grandchildren were never visible. Default expand depth is now 3 (root + child + grandchild + great-grandchild are visible on first paint), the summary line now shows per-depth count pills (root / child / grandchild / great-grandchild / level-N), each `tree-row` carries a `data-depth` attribute so CSS can paint coloured left rails per level, and the duplicated 'Live tool-call sessions (legacy view)' panel that made the page look like both a flat table AND a tree is now hidden behind `#legacy-sessions[hidden]` (kept for future debug-toggle restoration).",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"hooks": [
|
|
8
8
|
{
|