@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.
Files changed (43) hide show
  1. package/README.md +121 -1
  2. package/dist/cli-tasks-adapter.d.ts +142 -0
  3. package/dist/cli-tasks-adapter.d.ts.map +1 -0
  4. package/dist/cli-tasks-adapter.js +379 -0
  5. package/dist/cli-tasks-adapter.js.map +1 -0
  6. package/dist/cli-tasks-tree-adapter.d.ts +143 -0
  7. package/dist/cli-tasks-tree-adapter.d.ts.map +1 -0
  8. package/dist/cli-tasks-tree-adapter.js +400 -0
  9. package/dist/cli-tasks-tree-adapter.js.map +1 -0
  10. package/dist/operations-cache.d.ts +44 -0
  11. package/dist/operations-cache.d.ts.map +1 -0
  12. package/dist/operations-cache.js +103 -0
  13. package/dist/operations-cache.js.map +1 -0
  14. package/dist/plugin.d.ts +14 -0
  15. package/dist/plugin.d.ts.map +1 -1
  16. package/dist/plugin.js +82 -0
  17. package/dist/plugin.js.map +1 -1
  18. package/dist/server.d.ts +30 -0
  19. package/dist/server.d.ts.map +1 -1
  20. package/dist/server.js +289 -89
  21. package/dist/server.js.map +1 -1
  22. package/dist/task-detail-mermaid.d.ts +171 -0
  23. package/dist/task-detail-mermaid.d.ts.map +1 -0
  24. package/dist/task-detail-mermaid.js +697 -0
  25. package/dist/task-detail-mermaid.js.map +1 -0
  26. package/dist/task-operations-html.d.ts +50 -0
  27. package/dist/task-operations-html.d.ts.map +1 -0
  28. package/dist/task-operations-html.js +187 -0
  29. package/dist/task-operations-html.js.map +1 -0
  30. package/dist/tasks-tree-cache.d.ts +44 -0
  31. package/dist/tasks-tree-cache.d.ts.map +1 -0
  32. package/dist/tasks-tree-cache.js +111 -0
  33. package/dist/tasks-tree-cache.js.map +1 -0
  34. package/dist/types.d.ts +16 -0
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js.map +1 -1
  37. package/package.json +6 -1
  38. package/plugin.json +2 -2
  39. package/public/app.js +534 -34
  40. package/public/index.html +54 -21
  41. package/public/style.css +697 -1
  42. package/public/task-operations.js +290 -0
  43. 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, "&amp;")
65
+ .replace(/</g, "&lt;")
66
+ .replace(/>/g, "&gt;")
67
+ .replace(/"/g, "&quot;")
68
+ .replace(/'/g, "&#39;");
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, "&amp;")
135
+ .replace(/</g, "&lt;")
136
+ .replace(/>/g, "&gt;")
137
+ .replace(/"/g, "&quot;")
138
+ .replace(/'/g, "&#39;");
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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+FH;;;;;;;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"}
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.6.11",
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.6.11",
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
  {