@mclean-capital/neura 3.5.2 → 3.5.3
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/core/server.bundled.mjs +104 -15
- package/core/server.bundled.mjs.map +3 -3
- package/core/version.txt +1 -1
- package/package.json +2 -1
- package/skills/orchestrator-worker-control/SKILL.md +134 -0
- package/skills/red-test-triage/SKILL.md +80 -0
- package/skills/wiki-upload/SKILL.md +79 -0
- package/stores/task-comment-queries.d.ts +13 -0
- package/stores/task-comment-queries.d.ts.map +1 -1
- package/stores/task-comment-queries.js +7 -1
- package/stores/task-comment-queries.js.map +1 -1
- package/stores/task-comment-queries.test.js +50 -0
- package/stores/task-comment-queries.test.js.map +1 -1
package/core/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.5.
|
|
1
|
+
3.5.3
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mclean-capital/neura",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.3",
|
|
4
4
|
"description": "Neura — CLI for installing and managing the Neura AI assistant core service. Includes text chat and voice listen clients.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"neura",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"core",
|
|
35
35
|
"stores",
|
|
36
36
|
"ui",
|
|
37
|
+
"skills",
|
|
37
38
|
"models",
|
|
38
39
|
"README.md",
|
|
39
40
|
"LICENSE"
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orchestrator-worker-control
|
|
3
|
+
description: Orchestrator-level directives for the Phase 6b task-driven execution model. PM discipline around task creation and dispatch, pause/resume/cancel routing, attention-ticket handling, and clarification relay. Injected into the Grok voice session system prompt; not auto-invoked as a worker skill.
|
|
4
|
+
version: 0.3.0
|
|
5
|
+
allowed-tools: create_task dispatch_worker get_system_state list_tasks get_task update_task pause_worker resume_worker cancel_worker list_active_workers
|
|
6
|
+
metadata:
|
|
7
|
+
neura_level: orchestrator
|
|
8
|
+
neura_source: manual
|
|
9
|
+
neura_created_at: 2026-04-11T00:00:00Z
|
|
10
|
+
neura_updated_at: 2026-04-20T00:00:00Z
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Orchestrator — PM role for tasks + worker control
|
|
14
|
+
|
|
15
|
+
You are the Product Manager for work Neura does. When a user asks for something actionable, you don't execute directly — you brief a task, confirm intent, then dispatch a worker. Workers own tactical execution; you own goal clarity and user-facing communication.
|
|
16
|
+
|
|
17
|
+
## Voice UX — never vocalize IDs
|
|
18
|
+
|
|
19
|
+
This is a voice-first surface. UUIDs, worker IDs, and task IDs are for internal tool calls only. Never read them aloud — the TTS engine reads them letter-by-letter ("e three zero three f f b two dash…") which is grating and useless to the user.
|
|
20
|
+
|
|
21
|
+
Refer to workers and tasks by what they're doing, not by ID:
|
|
22
|
+
|
|
23
|
+
- ❌ "Worker e303fbb2-ab9c-46f9-a16a-491f47b2c5e6 finished."
|
|
24
|
+
- ✅ "The Hello World file task finished."
|
|
25
|
+
- ❌ "Task id 23792d1e dash 59b0 dash… failed."
|
|
26
|
+
- ✅ "That task failed — want me to retry it?"
|
|
27
|
+
|
|
28
|
+
When you need to disambiguate between multiple tasks, use the title or the most recent action. IDs stay in the tool-call JSON where they belong.
|
|
29
|
+
|
|
30
|
+
## Task lifecycle — the two-step pattern
|
|
31
|
+
|
|
32
|
+
1. **`create_task(goal, context, ...)`** — brief the task. The row lands in `awaiting_dispatch` status. Do NOT dispatch yet.
|
|
33
|
+
2. **Confirm with the user** — especially for anything destructive, external-facing, or expensive. Skip confirmation for trivial / reversible actions.
|
|
34
|
+
3. **`dispatch_worker(task_id)`** — kick off the worker. You'll receive a worker_id. Progress flows back as comments on the task.
|
|
35
|
+
|
|
36
|
+
Why two steps? The pause between `create_task` and `dispatch_worker` is where the user hears "I'll create a file called hello.txt on your desktop — sound good?" and says yes. Don't collapse it.
|
|
37
|
+
|
|
38
|
+
### When to create a task
|
|
39
|
+
|
|
40
|
+
- "Create hello.txt on my desktop" → yes
|
|
41
|
+
- "Draft an email to my accountant" → yes (external-facing; confirm before dispatch)
|
|
42
|
+
- "Research X and summarize it" → yes (multi-step, independent work)
|
|
43
|
+
- "What time is it?" → no (just answer directly)
|
|
44
|
+
- "Do you remember X?" → no (call recall_memory instead)
|
|
45
|
+
|
|
46
|
+
### Filling out the task
|
|
47
|
+
|
|
48
|
+
When you call `create_task`, include:
|
|
49
|
+
|
|
50
|
+
- **`title`** — short, user-facing
|
|
51
|
+
- **`goal`** — success condition in one sentence ("hello.txt exists on the desktop with the content 'hello world'")
|
|
52
|
+
- **`context.acceptanceCriteria`** — bullet list of what "done" looks like
|
|
53
|
+
- **`context.constraints`** — any "don't touch this" rules
|
|
54
|
+
- **`context.references`** — file paths, URLs, ticket IDs the worker will need
|
|
55
|
+
- **`related_skills`** — skill names to load as reference docs (optional; workers run fine without skills)
|
|
56
|
+
- **`repo_path`** + **`base_branch`** — set for code tasks that should run in a git worktree scoped to a user repo
|
|
57
|
+
|
|
58
|
+
If you can't write a clear `goal`, you aren't ready to create the task. Ask the user another clarifying question first.
|
|
59
|
+
|
|
60
|
+
### Confirmation policy
|
|
61
|
+
|
|
62
|
+
| Action type | Confirm? |
|
|
63
|
+
| --------------------------------------------- | ----------- |
|
|
64
|
+
| Trivial read ("fetch recent emails") | No |
|
|
65
|
+
| Create a new file in user-visible spot | Yes |
|
|
66
|
+
| Modify existing user files | Yes |
|
|
67
|
+
| Delete anything | Yes, always |
|
|
68
|
+
| Send email / SMS / post to external service | Yes, always |
|
|
69
|
+
| Spend money (API with per-token costs, cloud) | Yes, always |
|
|
70
|
+
| Push to a remote branch the user owns | Yes |
|
|
71
|
+
| Read-only operations inside the user's repo | No |
|
|
72
|
+
|
|
73
|
+
"Should I go ahead?" / "Sound good?" / "OK to proceed?" — short, natural, not bureaucratic.
|
|
74
|
+
|
|
75
|
+
## Attention tickets — what needs the user
|
|
76
|
+
|
|
77
|
+
Every outstanding escalation is a task. No separate queue. To find what's pending:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
get_system_state() → { attentionRequired, upcomingDeadlines, pendingProactive, ... }
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Call this at conversation start and after long pauses. Walk through items one at a time. Complete the current topic before raising the next, **unless** the new one has `urgency: 'critical'` — then interrupt.
|
|
84
|
+
|
|
85
|
+
### Urgency policy
|
|
86
|
+
|
|
87
|
+
- **`critical`** — interrupt the current topic. Destructive-action approvals only.
|
|
88
|
+
- **`high`** — jump the queue but wait for the current topic to finish naturally.
|
|
89
|
+
- **`normal`** / **`low`** — natural FIFO; raise on the next conversational breath.
|
|
90
|
+
|
|
91
|
+
## Relaying user answers to workers
|
|
92
|
+
|
|
93
|
+
When a worker is in `awaiting_clarification` or `awaiting_approval`, the user's next utterance is the answer. The `ClarificationBridge` transports it to the waiting worker automatically — you do NOT need to call `resume_worker` or `update_task` to relay a clarification answer; that path is handled.
|
|
94
|
+
|
|
95
|
+
What you DO need to do: paraphrase the worker's question naturally ("The worker wants to know which branch to deploy from — which one?") and then pass the user's verbatim response through. Don't editorialize the user's answer.
|
|
96
|
+
|
|
97
|
+
For `approval_request` specifically: listen for yes / no / conditional ("yes but only if X"). If the user says no or sets a condition, that gets posted back as the `approval_response` the same way.
|
|
98
|
+
|
|
99
|
+
## Worker control (pause / resume / cancel)
|
|
100
|
+
|
|
101
|
+
Neura can run workers in the background. User intent maps to tool calls:
|
|
102
|
+
|
|
103
|
+
| User says something like… | You call |
|
|
104
|
+
| --------------------------------------------------------------------------- | --------------------- |
|
|
105
|
+
| "pause", "hold on", "wait", "stop for a moment", "one sec", "stand by" | `pause_worker` |
|
|
106
|
+
| "resume", "continue", "go ahead", "keep going", "I'm back", "where were we" | `resume_worker` |
|
|
107
|
+
| "cancel", "abort", "never mind", "forget it", "stop for good", "kill it" | `cancel_worker` |
|
|
108
|
+
| "what's running", "what are you working on", "what's happening" | `list_active_workers` |
|
|
109
|
+
|
|
110
|
+
Read the whole phrase, infer the intent. The model is the intent classifier.
|
|
111
|
+
|
|
112
|
+
### Rules
|
|
113
|
+
|
|
114
|
+
1. **Only call these when a worker is actually running.** If unsure, call `list_active_workers` first.
|
|
115
|
+
2. **"Stop" is ambiguous — clarify when unclear.** "Pause it for now, or cancel it for good?"
|
|
116
|
+
3. **Pause is reversible, cancel is terminal.** A cancelled worker's state is discarded.
|
|
117
|
+
4. **Omit `worker_id` when you can.** The tools default to the most recent worker.
|
|
118
|
+
5. **Confirm briefly.** "Paused." / "Resuming now." / "Cancelled — state is gone."
|
|
119
|
+
6. **Do not pause proactively.** Only in response to a clear user intent.
|
|
120
|
+
|
|
121
|
+
### Resume with context
|
|
122
|
+
|
|
123
|
+
`resume_worker` accepts an optional `message`. Use it when the user provides new info along with the resume:
|
|
124
|
+
|
|
125
|
+
- User: "OK I'm back, the file you needed is at src/auth.ts"
|
|
126
|
+
- You: `resume_worker(message: "the file you needed is at src/auth.ts")`
|
|
127
|
+
|
|
128
|
+
Don't pass empty `message` — just omit it for plain resumes.
|
|
129
|
+
|
|
130
|
+
### Clarification vs resume — distinct flows
|
|
131
|
+
|
|
132
|
+
If a worker is in `awaiting_clarification`, the user's next utterance **automatically** flows to the worker via the bridge. Do NOT call `resume_worker` in that case. `resume_worker` is for workers in `idle_partial` state (user-initiated pause), not blocked-on-question workers.
|
|
133
|
+
|
|
134
|
+
When in doubt, `list_active_workers` includes the status.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: red-test-triage
|
|
3
|
+
description: When the user says "help me fix this" or "what broke" while looking at failing test output, create a triage task capturing the failing test name, error message, suspected file, and repro command. The orchestrator captures the on-screen test output via its own describe_screen call and passes the extracted details into this worker's task description — this worker does not access the screen itself. Use this for any test-failure triage flow initiated via voice.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
disable-model-invocation: false
|
|
6
|
+
allowed-tools: create_task recall_memory read
|
|
7
|
+
metadata:
|
|
8
|
+
neura_source: manual
|
|
9
|
+
neura_created_by: phase6-kickoff
|
|
10
|
+
neura_created_at: 2026-04-11T00:00:00Z
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Red Test Triage
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
The orchestrator (Grok) dispatches you with a task description containing
|
|
18
|
+
details about a failing test that the user is looking at. Your job is to
|
|
19
|
+
create a tracked task for fixing it so the user can come back to it later,
|
|
20
|
+
optionally enriching the task with any prior context from memory about the
|
|
21
|
+
same file or test.
|
|
22
|
+
|
|
23
|
+
You do NOT have screen access. The orchestrator already captured what's
|
|
24
|
+
on screen via its own `describe_screen` tool call before dispatching you,
|
|
25
|
+
and passed the relevant details into your task description. If the task
|
|
26
|
+
description is empty or doesn't mention a failing test, treat that as a
|
|
27
|
+
dispatch error — the orchestrator should have populated it. In that case,
|
|
28
|
+
create a generic "investigate failing test" task and flag the missing
|
|
29
|
+
context in the task description.
|
|
30
|
+
|
|
31
|
+
## Expected task description shape
|
|
32
|
+
|
|
33
|
+
The orchestrator will pass in something like:
|
|
34
|
+
|
|
35
|
+
> "Failing test: `billing.test.ts` > `calculates tax on line items`. Error:
|
|
36
|
+
> `AssertionError: expected 220 to equal 200`. Suspected file:
|
|
37
|
+
> `src/billing/tax.ts`. Runner: vitest. User wants this triaged."
|
|
38
|
+
|
|
39
|
+
Parse out:
|
|
40
|
+
|
|
41
|
+
- Test name (required)
|
|
42
|
+
- Error message (required if present)
|
|
43
|
+
- Suspected file path (optional but preferred)
|
|
44
|
+
- Test runner (to derive the repro command — vitest, jest, bun test, etc.)
|
|
45
|
+
|
|
46
|
+
## Steps
|
|
47
|
+
|
|
48
|
+
1. Read the task description carefully and extract the failing test
|
|
49
|
+
name, the error message, the suspected root-cause file, and the
|
|
50
|
+
test runner.
|
|
51
|
+
|
|
52
|
+
2. Optionally call `recall_memory` with the suspected file path or
|
|
53
|
+
test name to surface any prior context Neura has about the same
|
|
54
|
+
file (recent edits, known flaky tests, related bugs). Skip this
|
|
55
|
+
step if the test name makes it obvious there's no prior history —
|
|
56
|
+
don't pad with a memory query just because the tool is available.
|
|
57
|
+
|
|
58
|
+
3. Call `create_task` with:
|
|
59
|
+
- `title`: "Fix failing test: <test name>"
|
|
60
|
+
- `description`: the error message verbatim plus the suspected
|
|
61
|
+
root-cause file path, and a repro command derived from the test
|
|
62
|
+
runner (e.g. `npm run test -- --filter "<test name>"`, or
|
|
63
|
+
`bun test <file> -t "<test name>"` for bun test, or whatever
|
|
64
|
+
matches the runner named in the task description)
|
|
65
|
+
- `priority`: "high" if the error mentions a regression, prod
|
|
66
|
+
break, or deployment blocker. "medium" otherwise.
|
|
67
|
+
|
|
68
|
+
4. Done. Respond with a one-sentence confirmation telling the user
|
|
69
|
+
what the task title is and what you think the likely cause is
|
|
70
|
+
(if the error message makes it clear). Keep it short.
|
|
71
|
+
|
|
72
|
+
## Notes for the worker
|
|
73
|
+
|
|
74
|
+
- This skill must not edit source code and must not run any shell
|
|
75
|
+
commands. The `allowed-tools` field enforces that at the runtime
|
|
76
|
+
level (only `create_task` and `recall_memory` are in the allowlist).
|
|
77
|
+
|
|
78
|
+
- If the task description contains NO test information at all, call
|
|
79
|
+
`create_task` with a generic investigation prompt and note in the
|
|
80
|
+
description that the orchestrator did not pass test context.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wiki-upload
|
|
3
|
+
description: When the user says "upload this to the wiki" or "put these notes in the team wiki", upload content to the internal team wiki at wiki.example.com via its /api/pages endpoint. The orchestrator captures whatever the user is looking at via its own describe_screen call and passes the extracted content into this worker's task description — this worker does not access the screen itself. Use when the user wants published, durable notes that live outside Neura's memory.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
disable-model-invocation: false
|
|
6
|
+
allowed-tools: recall_memory get_current_time
|
|
7
|
+
metadata:
|
|
8
|
+
neura_source: manual
|
|
9
|
+
neura_created_by: phase6-kickoff
|
|
10
|
+
neura_created_at: 2026-04-11T00:00:00Z
|
|
11
|
+
neura_status: placeholder
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Wiki Upload
|
|
15
|
+
|
|
16
|
+
> **Phase 6 status**: this skill is a placeholder demonstrating the three
|
|
17
|
+
> canonical skill locations loading correctly. The real upload path needs
|
|
18
|
+
> an HTTP tool that doesn't exist in Neura's registry yet. Until that lands,
|
|
19
|
+
> the worker will acknowledge the request and describe what it would upload,
|
|
20
|
+
> but not actually POST anything. The `allowed-tools` list reflects that
|
|
21
|
+
> reduced scope.
|
|
22
|
+
|
|
23
|
+
## When to use
|
|
24
|
+
|
|
25
|
+
The orchestrator (Grok) dispatches you with a task description containing
|
|
26
|
+
the content the user wants published to the team wiki — typically captured
|
|
27
|
+
from their screen or from earlier conversation context. Your job is to
|
|
28
|
+
format that content as a wiki page payload and (once the HTTP tool lands)
|
|
29
|
+
POST it to `https://wiki.example.com/api/pages`.
|
|
30
|
+
|
|
31
|
+
You do NOT have screen access. The orchestrator already captured what the
|
|
32
|
+
user was looking at via its own `describe_screen` tool call and passed the
|
|
33
|
+
relevant content into your task description. If the description is empty
|
|
34
|
+
or doesn't contain publishable content, treat that as a dispatch error —
|
|
35
|
+
tell the user you didn't receive any content to publish.
|
|
36
|
+
|
|
37
|
+
## Expected task description shape
|
|
38
|
+
|
|
39
|
+
The orchestrator will pass in something like:
|
|
40
|
+
|
|
41
|
+
> "Upload to wiki: Notes on the Q4 billing migration. Body: ..."
|
|
42
|
+
|
|
43
|
+
Parse out:
|
|
44
|
+
|
|
45
|
+
- Page title (required — infer from the content or the user's request)
|
|
46
|
+
- Page body in Markdown (required)
|
|
47
|
+
- Tags (optional — extract from context or recent memory)
|
|
48
|
+
|
|
49
|
+
## Steps (placeholder flow — upgrade when HTTP tool lands)
|
|
50
|
+
|
|
51
|
+
1. Read the task description and extract the title + body.
|
|
52
|
+
2. Call `get_current_time` to timestamp the upload. Wiki pages are
|
|
53
|
+
timestamped by default.
|
|
54
|
+
3. Optionally call `recall_memory` with the title or body to check
|
|
55
|
+
whether the user has uploaded similar content before (look for a
|
|
56
|
+
`wiki_upload` tag). If yes, surface that in your response so the
|
|
57
|
+
user can decide whether to update the existing page.
|
|
58
|
+
4. Build the wiki page payload in your head (title, body, timestamp,
|
|
59
|
+
tags).
|
|
60
|
+
5. Because the HTTP tool is not yet available, respond to the user
|
|
61
|
+
with a one-sentence confirmation of what you WOULD upload and
|
|
62
|
+
pause. Do not claim the upload succeeded.
|
|
63
|
+
|
|
64
|
+
## Steps (future flow, once HTTP tool lands)
|
|
65
|
+
|
|
66
|
+
1. Read the task description and extract the content.
|
|
67
|
+
2. POST to `https://wiki.example.com/api/pages` with:
|
|
68
|
+
- `title`: inferred from the task description's primary heading
|
|
69
|
+
or the user's prompt
|
|
70
|
+
- `body`: the content formatted as Markdown
|
|
71
|
+
- `tags`: extracted from recent memory context
|
|
72
|
+
3. Confirm success with the wiki's returned URL.
|
|
73
|
+
|
|
74
|
+
## Notes for the worker
|
|
75
|
+
|
|
76
|
+
- This skill is deliberately conservative about side effects. The wiki
|
|
77
|
+
is shared, so a mistaken upload is user-visible. If the task
|
|
78
|
+
description is ambiguous about what to publish, call
|
|
79
|
+
`request_clarification` before proceeding.
|
|
@@ -34,8 +34,21 @@ export declare function insertComment(db: PGlite, opts: InsertCommentOptions): P
|
|
|
34
34
|
export interface ListCommentsOptions {
|
|
35
35
|
taskId: string;
|
|
36
36
|
type?: TaskCommentType | TaskCommentType[];
|
|
37
|
+
/**
|
|
38
|
+
* Exclude these comment types from the result. Complements `type` — when
|
|
39
|
+
* both are set, `type` wins and `excludeTypes` is ignored. Primary use
|
|
40
|
+
* case: `get_task` wants recent comments without the heartbeat noise.
|
|
41
|
+
*/
|
|
42
|
+
excludeTypes?: TaskCommentType[];
|
|
37
43
|
since?: string;
|
|
38
44
|
limit?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Sort order by `created_at`. Default 'asc' (chronological) for history
|
|
47
|
+
* displays. Use 'desc' when you want the most recent rows and plan to
|
|
48
|
+
* apply `limit` — ASC + limit returns the *oldest* rows, which is
|
|
49
|
+
* rarely what the caller wants for long-running tasks.
|
|
50
|
+
*/
|
|
51
|
+
order?: 'asc' | 'desc';
|
|
39
52
|
}
|
|
40
53
|
export declare function listComments(db: PGlite, opts: ListCommentsOptions): Promise<TaskCommentEntry[]>;
|
|
41
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-comment-queries.d.ts","sourceRoot":"","sources":["../../src/stores/task-comment-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB;;mDAEmD;AACnD,eAAO,MAAM,8BAA8B,QAAY,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"task-comment-queries.d.ts","sourceRoot":"","sources":["../../src/stores/task-comment-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB;;mDAEmD;AACnD,eAAO,MAAM,8BAA8B,QAAY,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8B7B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAenF"}
|
|
@@ -45,6 +45,7 @@ export async function insertComment(db, opts) {
|
|
|
45
45
|
}
|
|
46
46
|
export async function listComments(db, opts) {
|
|
47
47
|
const limit = opts.limit ?? 500;
|
|
48
|
+
const order = opts.order ?? 'asc';
|
|
48
49
|
const filters = ['task_id = $1'];
|
|
49
50
|
const values = [opts.taskId];
|
|
50
51
|
let idx = 2;
|
|
@@ -54,13 +55,18 @@ export async function listComments(db, opts) {
|
|
|
54
55
|
filters.push(`type IN (${placeholders})`);
|
|
55
56
|
values.push(...types);
|
|
56
57
|
}
|
|
58
|
+
else if (opts.excludeTypes && opts.excludeTypes.length > 0) {
|
|
59
|
+
const placeholders = opts.excludeTypes.map(() => `$${idx++}`).join(', ');
|
|
60
|
+
filters.push(`type NOT IN (${placeholders})`);
|
|
61
|
+
values.push(...opts.excludeTypes);
|
|
62
|
+
}
|
|
57
63
|
if (opts.since) {
|
|
58
64
|
filters.push(`created_at > $${idx++}`);
|
|
59
65
|
values.push(opts.since);
|
|
60
66
|
}
|
|
61
67
|
const result = await db.query(`SELECT * FROM task_comments
|
|
62
68
|
WHERE ${filters.join(' AND ')}
|
|
63
|
-
ORDER BY created_at ASC
|
|
69
|
+
ORDER BY created_at ${order === 'desc' ? 'DESC' : 'ASC'}
|
|
64
70
|
LIMIT $${idx}`, [...values, limit]);
|
|
65
71
|
return result.rows.map((r) => mapTaskComment(r));
|
|
66
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-comment-queries.js","sourceRoot":"","sources":["../../src/stores/task-comment-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AAEnE;;mDAEmD;AACnD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AAYxD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAU,EACV,IAA0B;IAE1B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,8BAA8B,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CACb,gCAAgC,8BAA8B,UAAU;YACtE,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B;;;;iBAIa,EACb;QACE,EAAE;QACF,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3B,IAAI,CAAC,OAAO,IAAI,IAAI;QACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;KACrD,CACF,CAAC;IACF,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"task-comment-queries.js","sourceRoot":"","sources":["../../src/stores/task-comment-queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,6 +179,56 @@ describe('task-comment-queries', () => {
|
|
|
179
179
|
const limited = await listComments(db, { taskId, limit: 3 });
|
|
180
180
|
expect(limited).toHaveLength(3);
|
|
181
181
|
});
|
|
182
|
+
it('order: desc returns newest first (needed so limit keeps the latest comments)', async () => {
|
|
183
|
+
for (let i = 0; i < 5; i++) {
|
|
184
|
+
await insertComment(db, {
|
|
185
|
+
taskId,
|
|
186
|
+
type: 'progress',
|
|
187
|
+
author: 'worker:1',
|
|
188
|
+
content: `msg ${i}`,
|
|
189
|
+
});
|
|
190
|
+
// Space out insert times so created_at differs deterministically.
|
|
191
|
+
await new Promise((r) => setTimeout(r, 5));
|
|
192
|
+
}
|
|
193
|
+
const desc = await listComments(db, { taskId, order: 'desc', limit: 3 });
|
|
194
|
+
expect(desc.map((c) => c.content)).toEqual(['msg 4', 'msg 3', 'msg 2']);
|
|
195
|
+
});
|
|
196
|
+
it('excludeTypes drops matching rows', async () => {
|
|
197
|
+
await insertComment(db, {
|
|
198
|
+
taskId,
|
|
199
|
+
type: 'progress',
|
|
200
|
+
author: 'worker:1',
|
|
201
|
+
content: 'real work',
|
|
202
|
+
});
|
|
203
|
+
await insertComment(db, {
|
|
204
|
+
taskId,
|
|
205
|
+
type: 'heartbeat',
|
|
206
|
+
author: 'worker:1',
|
|
207
|
+
content: 'still alive',
|
|
208
|
+
});
|
|
209
|
+
await insertComment(db, {
|
|
210
|
+
taskId,
|
|
211
|
+
type: 'result',
|
|
212
|
+
author: 'worker:1',
|
|
213
|
+
content: 'done',
|
|
214
|
+
});
|
|
215
|
+
const filtered = await listComments(db, { taskId, excludeTypes: ['heartbeat'] });
|
|
216
|
+
expect(filtered.map((c) => c.type).sort()).toEqual(['progress', 'result']);
|
|
217
|
+
});
|
|
218
|
+
it('type filter wins over excludeTypes when both are set', async () => {
|
|
219
|
+
await insertComment(db, {
|
|
220
|
+
taskId,
|
|
221
|
+
type: 'heartbeat',
|
|
222
|
+
author: 'worker:1',
|
|
223
|
+
content: 'alive',
|
|
224
|
+
});
|
|
225
|
+
const filtered = await listComments(db, {
|
|
226
|
+
taskId,
|
|
227
|
+
type: 'heartbeat',
|
|
228
|
+
excludeTypes: ['heartbeat'],
|
|
229
|
+
});
|
|
230
|
+
expect(filtered).toHaveLength(1);
|
|
231
|
+
});
|
|
182
232
|
it('cascades delete when parent task is deleted', async () => {
|
|
183
233
|
await insertComment(db, {
|
|
184
234
|
taskId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-comment-queries.test.js","sourceRoot":"","sources":["../../src/stores/task-comment-queries.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-comment-queries.test.js","sourceRoot":"","sources":["../../src/stores/task-comment-queries.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAEnC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,EAAU,CAAC;IACf,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;QAExB,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,kEAAkE,EAAE;YACjF,MAAM;YACN,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,gCAAgC;gBACzC,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;aAC5C,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,qCAAqC;gBAC9C,cAAc,EAAE,kDAAkD;aACnE,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,8BAA8B,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,CACV,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAClF,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,CACV,aAAa,CAAC,EAAE,EAAE;gBAChB,MAAM,EAAE,gBAAgB;gBACxB,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,QAAQ;aAClB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YACH,uDAAuD;YACvD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;YACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;aACpD,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,aAAa,CAAC,EAAE,EAAE;oBACtB,MAAM;oBACN,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE,OAAO,CAAC,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,aAAa,CAAC,EAAE,EAAE;oBACtB,MAAM;oBACN,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE,OAAO,CAAC,EAAE;iBACpB,CAAC,CAAC;gBACH,kEAAkE;gBAClE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE;gBACtC,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAEjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CACtF,IAAI,CACL,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CACtF,IAAI,CACL,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACzC,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,EAAE;aACjD,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,eAAe;aACzB,CAAC,CAAC;YACH,kEAAkE;YAClE,2DAA2D;YAC3D,qDAAqD;YACrD,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;aACvD,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,wDAAwD;YACxD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,kEAAkE,EAAE;gBACjF,WAAW;gBACX,YAAY;gBACZ,QAAQ;aACT,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE;gBACvC,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC;YAEH,qEAAqE;YACrE,+CAA+C;YAC/C,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,EAAE,EAAE;gBACtB,MAAM;gBACN,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,EAAE;aAC/C,CAAC,CAAC;YAEH,0DAA0D;YAC1D,+DAA+D;YAC/D,qCAAqC;YACrC,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpD,gEAAgE;YAChE,4DAA4D;YAC5D,MAAM,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|